Commit Graph

364 Commits

Author SHA1 Message Date
85549fce49 configure.ac: Require sdbus-c++ when building with D-Bus support.
This is a follow-up commit to
3dd5f4ebfd ("dbus: use sdbus-c++ for
dbus communications").  The build should abort if the sdbus-c++ module
is missing (it's "required" on the CMake side, so why shouldn't it be
on the Autotools one?).

* configure.ac: Fail when sdbus-c++ is not found.  Quote the
sdbus-c++-xml2cpp command.

Change-Id: I8268abec10ba5be0eb8b520988affc9c0345a4fb
2023-09-07 09:23:27 -04:00
81f43b901b misc: fix DBUS build
Change-Id: Ia6d43b818b705c13da979d90920ff2df585f5cec
2023-08-28 10:21:36 -03:00
1085874379 New API for connection monitoring
GitLab: #851
Change-Id: I3bbb529eccb3dbb6389621dbfc38f5cf081a98ad
2023-08-15 15:41:47 -04:00
25f6415265 switch to dhtnet
Change-Id: Ib53b7e170df59f873fbd85f6e7d4bf338d04cb9c
2023-07-27 12:51:32 -04:00
3dd5f4ebfd dbus: use sdbus-c++ for dbus communications
Change-Id: If10740b4fd192a1043c5f83adc9072fe67df7862
2023-05-29 11:57:03 -04:00
32415a8327 contrib: update msgpack-cxx to 6.0.0
Change-Id: I94da5dedff8f29e38f7aa517cf2212f5142d8f29
2023-04-26 14:39:33 -04:00
a9b373ae39 nat-pmp: use same rule for define and conditional
If we add the define, we must also build the file.

Change-Id: Id336770ed7f7df02e26074b01aed25bad75f9288
2023-03-06 12:54:35 -05:00
82907de866 build: fix flags for Fedora packages
Change-Id: I35d51deb450a265fd7541bad2735b8dd4ca465c5
2023-03-04 13:39:40 -05:00
2c07879455 build: support arm64
Change-Id: I77ac99c455f4f903bb9c48b02eacdbedc5faf066
2023-02-28 09:18:26 -05:00
62e735d73c misc: Use 'Savoir-faire Linux Inc.' more consistently
Change-Id: Idfd2a086847f9665c57e83a8184c20957fec9664
2023-02-06 01:46:53 -05:00
4166137736 misc: Update copyright years to 2023
Change-Id: Ia80fc12ba65b1abd516af205e6664261ae2e33fe
2023-02-06 01:46:45 -05:00
8960936221 swarm: add call support
This patch introduces the ability to start calls and extends the
usage of rendezvous points to swarm with multiple participants.

When starting a call in a swarm with multiple participats, one device
will work as the host of the conference, and the caller will
immediately start the call alone.
Other peers will receive a commit and a notification to be able
to join the active call. To join a call, users needs to call
rdv:uri/device/convId/confId to be added (if authorized) to the conf.

There are some majors differences in the process.
First, every conversation will be able to decide a default host
for conferences. This still needs some design and will be
introduced in another patch. For now, the caller is the host.
Then, because all members of the call may not be interested to join
a call, or they may want to get several calls at the same time, the
system must be able to manage more than one active calls (e.g. a
company with multiple projects can do several standups at the same
time).
Finally, in the conversation, two commits will be generated to be
able to know what active calls are available. The first is
announcing that a conference started, the second announces that
the conference stopped (the host closed the call).
However, this introduces a difficulty. The host may crash and not
commit the end of the call in time. In this case, hostedCalls are
stored in a file and the conversation is updated during the init
of the daemon.

Change-Id: I081a4920edb3773bbed884ae50f34e476ad42094
Documentation: https://docs.jami.net/technical/swarm.html#call-in-swarm
GitLab: #312
2022-11-17 08:10:17 -05:00
d54a84ec0b Replace DRing for libjami
It's not possible to replace the DRing namespace for jami because of conflicts
with namespaces and classes defined under the jami namespace.  Thus, use libjami
as the namespace.

Script to reproduce:

 rg -l DRing | sort | uniq | awk '$0 !~ /NEWS/' | xargs sed -i -e 's|DRing|libjami|g'
 rg -l DRING_ | sort | uniq | xargs sed -i -e 's|DRING_|LIBJAMI_|g'
 sed -i -e 's|dring|jami|g' src/jami/CMakeLists.txt
 sed -i -e 's|dring|jami|g' src/jami/def.h

Change-Id: I80e8c8b58a7586527a016bbef850bab07869c473
2022-10-29 16:49:27 -04:00
0f6b74b194 conversation: add support for message edition
For now, only be able to edit messages from our-self and with the
text/plain type

Change-Id: I20c6ed7dad3892f0fa655812242b9ca6e77e69b3
GitLab: #316
2022-10-24 14:29:19 -04:00
e186d925c4 fmt: fix minimum version detection
FMT_COMPILE is needed

Change-Id: Ic7f7948d2816dc0017f9b780046e4ce9f31b4c9c
2022-10-17 15:51:22 -04:00
a4ff4abe70 swarm: add method to save user's preferences
This store user's preferences per conversation into
conversation_data/<convId>/preferences
In this way, the daemon is able to sync this file across devices
and remove preferences at the same time we remove the conversation.

For now, only support "color" and "ignoreNotifications"

The preferences are synced via partial SyncMsg sent across devices.

Change-Id: I8fe74cc06733ad61d45d721e0264b1941d4cf122
2022-10-06 14:47:30 -04:00
5c55f5efa8 Add jami.pc
Change-Id: If13a246aa50953c99d72937daeb7866de2d82e8d
2022-09-22 10:08:37 -04:00
ea327ff28e Rename libring to libjami
Change-Id: Id123f733759d6147f0f8fb9975b21fd8b0f1e558
2022-09-22 10:08:36 -04:00
76226044f5 Revert "fileutils: migrate to boost::nowide"
Causes issues with yaml-cpp. Reverting temporarily until we fix the issue.

Change-Id: I2df0823554ad87880bc965bdff4f4707a6129789
2022-09-08 14:23:55 -04:00
05ff5b3bfe fileutils: migrate to boost::nowide
Change-Id: Iceae2a19ce3febce62f7916af8b4242e06a7e1d4
2022-09-08 13:13:13 -04:00
7509c5c311 misc: fix tests build
Change-Id: I238f452f77e10c16ebc5f69bef1b768f44e57e2e
2022-09-07 15:41:23 -04:00
e16ded663a test/sip: Nuke it
These tests were never run on the CI and are not even in the build of Meson.

Change-Id: I0109633de2fd03b8589734d92c039b34d5b729bc
2022-09-06 11:39:55 -04:00
d831a64146 logger: Only include <fmt/std.h> on Windows
Change-Id: I561e60a14a363bb8a1658eb7f740bd67a85c2d99
2022-08-04 17:25:54 -04:00
3e029a9b04 misc: fix unit tests
+ Bump deamon version to enable multistream
+ use signal for recorder to check if file stopped
+ answerMediaChangeRequest pass isRemote for tests

Change-Id: I396b8246264cb7826350f75e74f20f05b864f384
2022-07-14 13:31:35 -04:00
0222d86148 build: disable deprecated warnings
Change-Id: Idffdb3f6669398db165cbec9607af7ed2c56fb21
2022-07-13 14:37:22 -04:00
f773e24851 webview: add initial WebView support to the daemon
Change-Id: Id6967f8fd0976caae81e4c951d0d5dc9901b23d3
2022-06-27 16:08:53 -04:00
fa7fb8beb0 build: use ifdef instead of `if for various defines
Change-Id: I386bd1adddf403ff450e5d22688337b7d6d7c1f6
2022-06-22 23:14:41 -04:00
fb7d9b4db6 agent/scenarios/bulk-calls: Setup scenario for CI
Change-Id: I06a7f8da672946b20c353e4b5d3a3aaa499203fb
2022-06-17 14:59:18 -04:00
15460298ab agent: Add pre-inst-env script
The agent requires Jami's bindings to correctly run scenario.  This
can only be done if Guile can find the correct scripts.  Thus, the
pre-inst-env script can be used to setup the correct environment for
running the agent before its installation.

Change-Id: I474ef204bb33fd2098eee44b5b99c00f120c4536
2022-06-17 14:59:18 -04:00
ea2e2e4dbc conference: improve conference protocol for multi stream
The current design got some limitations. It's not possible to
control informations per shared media. This means that we can't
got several active sinks for example.
The goal of this patch here is to update the conferences orders
to be able to control the state of each sink individually and for
the client to be able to handle conferences with accounts connected
via several devices with several medias per devices.
So each orders is sent with a different level (account/device/media)

For example, we will be able to send a moderator order for an account,
to hangup a device or to set a media active.

To support those orders, both sides MUST be patched. Else, the old
protocol will be used. The version of the protocol supported is sent
in the conferences informations to notify the peer what version to use.

Finally, this patch changes some APIs to support multisteam:
+ Some APIs now takes the deviceId or the sinkId when necessary

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429
Doc: https://git.jami.net/savoirfairelinux/jami-project/-/wikis/technical/6.1.-Conference-Protocol
Change-Id: Ieedd6055fd43b2a09b2cc8b253dcd6a3bf260a39
2022-06-17 10:07:43 -04:00
b0cfb1e8dd configure.ac: Emit ENABLE_TRACEPOINTS in config.h
Change-Id: I988bc6600228168d13cd9121bff739d4b0add1ec
2022-05-20 16:32:31 -04:00
2e8b701f0b configure.ac: Add check of cxxabi.h
Change-Id: Ifa8984d43ef51bf0c3432e6f8643107b60d7d372
2022-05-20 14:29:08 -04:00
67fa5a3437 configure.ac: Add LTTng tracepoints feature
Change-Id: I192ff24448a6454c8d504febd7ab2df2ccf88272
2022-05-20 11:15:10 -04:00
4af0279fa2 video API: unify SinkTarget and AVSinkTarget
Change-Id: I6cbbdc1ec6953c1c9ec47a57acf8ac4d8995468d
2022-03-21 16:56:54 -04:00
4f426634a3 build: hide verbose warning
This warning is caused by ASIO, is harmless, and likely won't be fixed for a while.
Mute it for now.

Change-Id: Ib387aec8138ebed9dc45449ffd19d8ad340044c6
2022-03-04 12:31:01 -05:00
f26f20d567 video interface: homogenize decoding signal names
Change-Id: Ica925c83e44e2326417708768566e33102365ce9
2022-03-03 17:35:14 -05:00
775aa2f803 Build system: No '--disable-shared'
The agent and unit tests can now be compiled without requiring
`--disable-shared' at configuration time.

The agent requires the logger functions to have default visibility instead of
hidden.  Thus, `jami::logger::[v]log' can be considered part of the public API.

The unit tests however require hidden symbols.  Thus, we link the tests against
a static version of libjami instead.

Change-Id: I59d9e67679766e0310a19f9a879c06a31c5124c4
2022-03-03 17:10:21 -05:00
f6bf52ea15 re-invite: bump Daemon version to 11.0.2
Bump Daemon version to 11.0.2 to enable re-invite without ICE
renegotiation.

Gitlab: #671

Change-Id: I287a034b0fb6b6fde77c091ac3543978e533c56a
2022-02-24 13:56:11 -05:00
d1bc939090 jamiaccount: add test for migrations
Accounts can see their certificates expire. When it's the case, a
migration is needed. However, several regressions can happen, because
this behaviour can be tricky to test correctly. In this patch, a
test is added to validate that the migration is done whenever the
certificate expires.

+ OpenDHT needs to be bumped in order to be able to change the validity
period of a certificate.
+ In ArchiveAccountManager, a method is added to change the validity
of a certificate in the chain.
+ This patch also fixes a crash when a migration occurs directly on
the archive (info_ was null causing a segfault).
+ Finally, cleanup some signatures unused in JamiAccount.

GitLab: #684 (this is some preparative work)
Change-Id: I901bc67fd63ce2ab26ded64662f8333d3a0eed50
2022-01-26 15:18:07 -05:00
70a2a65086 SIP call: re-invite without ice re-negotiation
When muting/un-muting the video, a re-invite is performed
leading to a full media renegotiation and restart,  including
ICE session if used.
With these changes, the mute/unmute video will still require
a re-invite (a new SDP to indicate the new media directions), but
the ICE session is re-used and only the video is stopped/started
accordingly.
The behavior improves the UX by avoiding unnecessary audio disruptions
and is more compliant with SIP/ICE specs (see RFC-5245 section 9.1.1.1
for example)

Gitlab: #671

Change-Id: I13caf9a965af1d76e922fe5f6b86d5332b3296d6
2022-01-25 10:09:13 -05:00
5018565239 misc: update copyright date to 2022
Change-Id: I795e3f2f69c07349bf84c87dbcafb502dc8490f8
2022-01-05 16:21:58 -05:00
3466f1a2af build: lower minimum required version for webrtc-audio-processing to 0.3
This allows us to build with webrtc-audio-processing distro packages
currently available across supported Debian releases.

Change-Id: I25584a0564ceb78e8eefec78e5e903356c37ddab
2021-12-06 13:55:04 -05:00
01cb294c44 callmanager: add accountId to identify calls, conferences
This starts the work to move calls and conference per account,
cleaning up the API and start future re-factorization.

Change-Id: I2a3a2c77e9ba78b1a280bdf8dca7eeaabb72f3fd
2021-11-16 15:59:41 -05:00
6ba2ce016a build: disable SHM if DBUS is not used
As libwrap is used by default, HAVE_SHM should only be true
if directrenderer is not used to avoid useless work

Change-Id: I9f819a7c06c667ccf08066f70104dcd3667f8546
2021-11-09 12:34:34 -05:00
b297c89c1b build: Use non-recursive Automake.
Change-Id: I8d5eaf4c90cb425e8f96eaac25e727b6a6aae24f
2021-09-13 09:43:33 -04:00
a6ce32567a contrib: Add Guile 3.0.7
Change-Id: I5340a0215512be416a618c526f8a0962c8401087
2021-07-23 09:39:23 -04:00
9727bd5768 autoconf: Use libtool, not dolt replacement.
Dolt doesn't provide the performance benefits it promises, so drop it
to simplify the moving parts of the Autotools build system.

Also remove unused M4 modules.

* m4/dolt.m4: Delete file.
* m4/ax_boost_base.m4: Likewise.
* configure.ac: Do not call DOLT.

Change-Id: I58d286457005ad82129e089679c52933989c59a8
2021-07-16 16:37:36 -04:00
ba3a411ca3 daemon: Rename dring occurrences in code and file names to jamid.
Automated using the following commands:

  $ mv src/{dring,jami}
  $ git grep -l src/dring | xargs sed -i 's,src/dring,src/jami,g'
  $ git grep -l '#include "dring/' | \
    xargs sed -i 's,#include "dring/,#include "jami/,g'
  $ git grep -l 'dring.h' | xargs sed -i 's,dring.h,jami.h,g'

And finally,

  $ git grep -l 'dring' | xargs sed -i 's,dring,jami,g'

  $ files=$(find -name '*dring*' | sort)
  $ for f in $files; do mkdir -p "$(dirname "$f")"; \
      mv "$f" "$(echo $f | sed 's/dring/jami/g')"; done

To resolve a bad renaming favorably:

  $ git grep -l -i AlsaCarjami | \
    xargs sed -i -E 's/([Aa])lsaCarjami/\1lsaCardRingtone/g'

The above renaming command is not perfect, so some hand-tuning was
required to complete it.

* src/manager.cpp (Manager::ManagerPimpl::retrieveConfigPath):
Preserve the dring.yml configuration file name, until we add something
to migrate (rename) it to jami.yml.
* man/dring.pod: Delete.
* bin/dbus/jamid.pod: Move to ...
* man/jamid.pod: here.
* bin/dbus/meson.build (jamid_targets): Normalize man section to the
pre-existing 1 and adjust accordingly.
* src/jami/def.h (dring_EXPORTS): Rename to ...
(jami_EXPORTS): ... this.

change-Id: I9828be6da9c711ab2f22c4d1b9539fea89d7b6fb
2021-07-15 10:57:26 -04:00
7ed35a6eb6 agent: Initial agent with simple behavior tree
Change-Id: I67825b04f1fead3d4267564e4c366cb54037c593
2021-07-02 11:25:50 -04:00
459ee469fd autotools: make fuzzing optional
Change-Id: Iaa11c6880858316336f5e5b5e1fc6f55597d24d0
2021-06-28 15:21:08 -04:00