383 Commits

Author SHA1 Message Date
3fa3f7bad9 update sdbus-cpp to 2.1.0 and adjust daemon for breaking changes
Change-Id: I94835a8edead6e9a3b22a5a47b8605afc7bad286
2025-08-01 11:44:58 -04:00
0920927895 Revert "update sdbus-cpp to 2.1.0 and adjust daemon for breaking changes"
This reverts commit 4a99991086.

Reason for revert: temporary revert since this breaks the build on most distros that we currently support, including Ubuntu 24.04, and sdbus-cpp 2.0 is not backward compatible with older systemd versions.

GitLab: #1141
Change-Id: I3d50c0a433bd63d7dc76a2659258cf9e38bbbc29
2025-08-01 11:21:31 -04:00
e849123c2b configure.ac: fix sdbus-c++-xml2cpp check
AC_PATH_PROG's third argument is a fallback value, not a fallback action.

Change-Id: I8859049e3ed17028334aa707cced24a9d2d1cba4
2025-07-22 15:38:19 -04:00
4a99991086 update sdbus-cpp to 2.1.0 and adjust daemon for breaking changes
The daemon sources were adjusted via the ChatGPT-provided sed snippet:

find . -name '*.cpp' -o -name '*.hpp' | while read -r file; do
  sed -i \
    -e 's/\(AdaptorInterfaces([^,]*,\) *"\([^"]*\)"/\1 sdbus::ObjectPath("\2")/' \
    -e 's/\(createSessionBusConnection(\) *"\([^"]*\)"/\1 sdbus::ServiceName("\2")/' \
    -e 's/\(createSystemBusConnection(\) *"\([^"]*\)"/\1 sdbus::ServiceName("\2")/' \
    "$file"
done

Fixes: #1141
Change-Id: I9d7b75814c66cdd8a12432c349f5df7b3e6796cd
2025-07-22 15:35:28 -04:00
348ee92764 configure.ac: Expand AC_CONFIG_FILES to fix a race.
The commands apparently run for each file listed, or something
similar, leading to:

  configure: creating ./config.status
  config.status: creating test/agent/Makefile
  chmod: cannot access 'test/agent/pre-inst-env': No such file or directory
  chmod: cannot access 'test/agent/scenarios/bulk-calls/run-scenario': No such file or directory
  config.status: creating test/agent/pre-inst-env
  chmod: cannot access 'test/agent/scenarios/bulk-calls/run-scenario': No such file or directory

* configure.ac [ENABLE_AGENT]: Separate AC_CONFIG_FILES uses per file.

Change-Id: Ib283955b73540248e09bf31ef44ef3d178b216fa
2025-07-21 08:49:13 -04:00
86d3bb6644 ArchiveAccountManager: add support for p2p account import
Gitlab: #930
Change-Id: I76f07a81c4887d0dc127d74bc6c4de2e9f4f2ee8
2025-03-06 12:19:47 -05:00
c96ea3eea7 configure.ac: cleanup
Change-Id: I553a183700ecdd3b5a8740cb962169a3037e3696
2025-01-31 11:18:07 -05:00
ad5b6cbaf6 misc: unify terminology
8+3 filename → 8.3 filename
be ware → beware
{cannot, can not, cant, can't, could not, couldn't} → unable to
conpleted → completed
file name → filename
imcomplete → incomplete
informations → information
trying to → attempting to
wrong password → incorrect password

GitLab: https://git.jami.net/savoirfairelinux/jami-client-qt/issues/1730

Change-Id: Ia7757efafd2c06af978db02c65b40b1b77c393f8
2024-09-16 16:12:55 -04:00
b0e223ff3c misc: add an API to set the client app's resource directory path
This approach allows client apps that install ringtones (and any other resources) in custom locations to specify that directory at runtime. This will take precedence over the build time data directory supplied for platforms which install to a fixed path.

https: //git.jami.net/savoirfairelinux/jami-client-qt/-/issues/1619
Change-Id: I81616f79196e645a5ad677d6956be6a2ffcd976a
2024-06-04 09:57:32 -04:00
3e63d8d321 autotools: avoid to fail due to missing README file
"Makefile.am: error: required file './README' not found"

Change-Id: I8729ea1f38bb14893e5cce6ed3f76065e825efb8
2024-05-22 10:37:26 -04:00
09ec8e6f43 conversation: re-design sending/sent status
The goal of this patch is to allow the clients to get a better
sent/read status from the daemon.

API doesn't change much, but internal logic got some changes. For the
client:
+ SwarmMessage now contains a map<string,int> status where string is the
  uri of a member, int is the status (0 = sending, 1 = sent, 2 = read)
+ cancelMessage is removed as not used anymore (sendMessage with flag=1
  will edit a message)
+ getMessageStatus is removed as the status is sent in the SwarmMessage
+ accountMessageStatusChanged is now emitted for swarm messages when a
  fetch or setDisplay occurs. Client must handle this signal correctly.
+ Previous code to manage last displayed, fetched status is now merged
  with message status
+ Sync info is done when the sync is opened, else status are not updated
  correctly

GitLab: #948
Change-Id: I60763d4de8a995c6fc9f6df6434e266211f8dc2f
2024-02-15 13:52:39 -05:00
609188283a gnutls: bumping minimum version to 3.7.4
Jami crashes on openSUSE Leap 15.5 due to a segmentation fault in gnutls
3.7.3.

Change-Id: Iba3705b48c7f5817eb644bab1cbf84d4536d6d04
2024-01-31 09:44:45 -05:00
ba09b11b42 conversation: add new loadConversationUntil and SwarmMessageVect type
GitLab: #831

Change-Id: I8e2aa205629735df043618a87e54ae6a43e6ca3f
2024-01-09 09:42:03 -05:00
c1519ba4ec AccountArchive: allow to unlock with raw key instead of password
Change-Id: Ic8b28a32f64862ac2dfae074d06f4eac470ab7e1
2024-01-02 17:18:06 -05:00
8468f15927 conversation: move logic of message management in daemon
This heavily changes the API for the client. The goal here is
to move the logic to construct the history to show in the daemon
and not the client. This has several advantages:

1. Logic is common across every platforms, so bugs should not be
platform-specific
2. Client got less logic
3. Signal are simplified, if an edition comes, "MessageUpdated"
will be triggered instead MessageReceived.
4. Some tests are added for linearizing the history.
5. Search on edition is fixed.

Tests got heavily re-written, but the content didn't change (2 tests
are added, the rest is simplification).

GitLab: #831
Change-Id: Ie7c81077067e9e49db1dd396829c9225c0512c16
2023-12-28 16:05:40 -05:00
c2dfe17307 contrib: update yaml-cpp to 0.8.0, remove duplicate check
Change-Id: I339a0689d460c7561cc60325819d795cb32261d4
2023-11-08 14:40:48 -05:00
a5a46c0385 filesharings: integrate audio stream
GitLab: #485
Change-Id: I0ae7c23da2a1f2384699639cc0de58f8f05b33ec
2023-11-01 11:02:32 -04:00
809600018b filesharing: use mediaplayer
GitLab: #485
Change-Id: Ie3f129cd0cee14a97764eb22ee2b5f530a3f3023
2023-11-01 11:02:32 -04:00
8c745226ea debug: allow easier enabling of ASAN for libjami and contrib builds
Change-Id: I0e142f271fa0db3c3d4af1e57919ef1f65beb8c2
2023-10-11 18:38:56 -04:00
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