Commit graph libervia-backend/libervia/backend/core
Author SHA1 Message Date
Goffi
5b60aaf83c core: implement SCRAM-SHA auth algorithm:
Twisted auth mechanism are outdated, and as a result, Libervia was not supporting the
mandatory SCRAM-SHA auth mechanism. This patch implements it for SCRAM-SHA-1,
SCRAM-SHA-256 and SCRAM-SHA-512 variants.
2024-04-08 12:29:40 +02:00
Goffi
e8fb0a8a28 plugin XEP-0353, XEP-0234, jingle: WebRTC data channel signaling implementation:
Implement XEP-0343: Signaling WebRTC Data Channels in Jingle. The current version of the
XEP (0.3.1) has no implementation and contains some flaws. After discussing this on xsf@,
Daniel (from Conversations) mentioned that they had a sprint with Larma (from Dino) to
work on another version and provided me with this link:
https://gist.github.com/iNPUTmice/6c56f3e948cca517c5fb129016d99e74 . I have used it for my
implementation.

This implementation reuses work done on Jingle A/V call (notably XEP-0176 and XEP-0167
plugins), with adaptations. When used, XEP-0234 will not handle the file itself as it
normally does. This is because WebRTC has several implementations (browser for web
interface, GStreamer for others), and file/data must be handled directly by the frontend.
This is particularly important for web frontends, as the file is not sent from the backend
but from the end-user's browser device.

Among the changes, there are:

- XEP-0343 implementation.
- `file_send` bridge method now use serialised dict as output.
- New `BaseTransportHandler.is_usable` method which get content data and returns a boolean
  (default to `True`) to tell if this transport can actually be used in this context (when
  we are initiator). Used in webRTC case to see if call data are available.
- Support of `application` media type, and everything necessary to handle data channels.
- Better confirmation message, with file name, size and description when available.
- When file is accepted in preflight, it is specified in following `action_new` signal for
  actual file transfer. This way, frontend can avoid the display or 2 confirmation
  messages.
- XEP-0166: when not specified, default `content` name is now its index number instead of
  a UUID. This follows the behaviour of browsers.
- XEP-0353: better handling of events such as call taken by another device.
- various other updates.

rel 441
2024-04-06 12:57:23 +02:00
Goffi
ca7c061986 core (xmpp): Add a timeout for messages processing to avoid blocking the queue. 2024-04-06 12:21:04 +02:00
Goffi
0ee6a64e3b core (constants): use bool_type:
Using `bool` for type hint in `Const.bool_const` if conflicting with `Const.bool` method.
To avoid this, `bool_type` is used as an alias to `bool`.
2024-04-06 12:14:10 +02:00
Goffi
a804e6a9dc plugin XEP-0234: fix action type when pre-flight file confirmation is confirmed:
the `C.META_TYPE_FILE` can't be used in this case as it is a preflight and we don't have
yet data such as progress ID. `C.META_TYPE_FILE` is used as a sub-type to help with dialog
management in frontend.
2024-03-05 17:31:49 +01:00
Goffi
dc8078fe4c core: use a user specific directory for PID file:
default location of pid file is now specific to logged user, this allow to run several
instances of Libervia by different users on the same machine without PID conflicts.
2024-01-14 17:48:02 +01:00
Goffi
6fa46e20fd core (launcher): new wait_for_service option:
if `wait_for_service` is used in `[DEFAULT]`, the service at the specified host/port is
waited for before starting the backend. This is useful in the situation where we need to
be sure that something is started before running, e.g. in a container.
2023-12-13 22:00:25 +01:00
Goffi
e14dd9da8b core: add new init_script_path option:
`init_script_path` option can be used in `[DEFAULTS]` to run a script at the end of
backend initialisation. A new `init_pre_script` method is used to wait for backend to
reach this stage (designed to be used mostly by CLI frontend), then the usual `ready_get`
method is finished once the script is finished.
2023-12-13 22:00:22 +01:00
Goffi
f1cc34cc53 plugin XEP-0050: small code quality improvements + add C.ENTITY_ADMINS magic key to allow administrators profiles 2023-12-10 15:08:08 +01:00
Goffi
ba1475962e core (tools/trigger): new add_with_check method:
this method add a wrapper which will skip the trigger is the plugin is not available in
the session (e.g. a component which doesn't use the plugin).
2023-12-09 19:19:26 +01:00
Goffi
34fa69661c core: fix path in get_local_path:
`local_dir` was not used in final path, resulting in workind dir used instead or actual
local path.
2023-12-09 14:05:02 +01:00
Goffi
6f8230804f core (constants): user platform temporary dir by default for PID files 2023-12-04 17:51:28 +01:00
Goffi
0979b3fee3 core (message): fix calling of post treatments during message workflow 2023-12-01 18:20:27 +01:00
Goffi
3c35dea8b1 plugin XEP-0424: message retraction update:
- follow specification update (with namespace bump)
- retract from history on message reception for group chat
- send bridge message
2023-11-30 13:23:53 +01:00
Goffi
85cecd3d30 plugin XEP-0308: implement Last Message Correction 2023-11-28 17:38:31 +01:00
Goffi
b8854ad46c core (xmpp): message reception workflow refactoring:
- Call methods from a root async one instead of using Deferred callbacks chain.
- Use a queue to be sure to process messages in order.
2023-11-22 14:50:35 +01:00
Goffi
da5d3dfb86 bridge: add message_update signal 2023-11-22 14:26:13 +01:00
Goffi
40e7440de0 core (constants): accept y and t as True values. 2023-10-18 15:33:34 +02:00
Goffi
44eb60633e core (types): add is_admin to SatXMPPEntity 2023-10-18 15:33:24 +02:00
Goffi
b74f55d73d core: notifications implementation, first draft:
add a new table for notifications, and methods/bridge methods to manipulate them.
2023-10-16 17:29:31 +02:00
Goffi
b3659079f5 backend: rename SatRosterProtocol to LiberviaRosterProtocol 2023-06-30 15:11:05 +02:00
Goffi
7c6a675435 installation: moved from setup.py to pyproject.toml:
- updated installation to use the now standard `pyproject.toml` instead of legacy
`setup.py`. `setup.py` and other legacy files have been deleted.
- removed outdated README4PACKAGERS
- removed pylintrc which has not been correctly reviewed. Linter conf should go to
  `pyproject.toml` now.
- [hatch](https://hatch.pypa.io) is now used as main building tool. However, thanks to the
use of standards, other tools can be used too.
- update .hgignore
- several dependencies version bump, with code update to adapt to changes.
2023-06-06 16:45:16 +02:00
Goffi
b7618e12f7 version: use standard Python's dev0 instead of Libervia specific D for dev version 2023-06-06 12:41:53 +02:00
Goffi
4678449f76 refactoring: rename sat_configure to libervia_configure 2023-06-02 18:21:15 +02:00
Goffi
fd16770c19 refactoring: rename libervia.frontends.jp to libervia.cli 2023-06-02 14:54:26 +02:00
Goffi
91f6b77b3d refactoring: rename core.sat_main to core.main 2023-06-02 12:59:21 +02:00
Goffi
af1c203450 refactoring: rename SAT class to LiberviaBackend 2023-06-02 11:55:48 +02:00
Goffi
d2685ba11b refactoring: renamed sat package to libervia.backend 2023-06-02 11:49:51 +02:00