Commit graph libervia-backend/sat/core
Author SHA1 Message Date
Goffi
1781694141 core: renamed messageReceived trigger to message_received 2023-05-29 13:32:08 +02:00
Goffi
9141922d57 plugin XEP-0166: refactoring, and various improvments:
- add models for transport and applications handlers and linked data
- split models into separate file
- some type hints
- some documentation comments
- add actions to prepare confirmation, useful to do initial parsing of all contents
- application arg/kwargs and some transport data can be initialised during Jingle
  `initiate` call, this is notably useful when a call is made with transport data (this is
  the call for A/V calls where codecs and ICE candidate can be specified when starting a
  call)
- session data can be specified during Jingle `initiate` call
- new `store_in_session` argument in `_parse_elements`, which can be used to avoid
  race-condition when a context element (<decription> or <transport>) is being parsed for
  an action while an other action happens (like `transport-info`)
- don't sed `sid` in `transport_elt` during a `transport-info` action anymore in
  `build_action`: this is specific to Jingle File Transfer and has been moved there

rel 419
2023-05-15 16:23:11 +02:00
Goffi
45e15eb189 core (main): if keep_id is set in action_new, use it as action_id 2023-05-15 16:20:58 +02:00
Goffi
1d0a1b66d9 core (bridge): action_new now use serialised dict for extra data. 2023-05-15 16:20:45 +02:00
Goffi
174e087c44 core (constants): fix URL, forgotten SàT reference + set new codename to "La Ruche" 2023-04-13 21:53:53 +02:00
Goffi
6a6f15707a massive refactoring to switch from camelCase to snake_case:
historically, Libervia (SàT before) was using camelCase as allowed by PEP8 when using a
pre-PEP8 code, to use the same coding style as in Twisted.

However, snake_case is more readable and it's better to follow PEP8 best practices, so it
has been decided to move on full snake_case. Because Libervia has a huge codebase, this
ended with a ugly mix of camelCase and snake_case.

To fix that, this patch does a big refactoring by renaming every function and method
(including bridge) that are not coming from Twisted or Wokkel, to use fully snake_case.

This is a massive change, and may result in some bugs.
2023-04-08 13:54:42 +02:00
Goffi
9b47e8c890 core (plugins): implementation of XEP-0215 "External Service Discovery":
rel 418
2023-04-07 15:16:39 +02:00
Goffi
c3f97ec712 component AP gateway: handle attachments 2023-03-23 15:42:21 +01:00
Goffi
cb2144bdf4 core (xmpp), component file sharing, plugin XEP-0363: enabled_features + HTTP Upload:
add a mechanism to explicitely enable some features in components, and use it to enable
HTTP Upload only if it's explicitely enabled.
2023-03-23 15:38:07 +01:00
Goffi
1a7c36a19c core: log a traceback if a plugin can't be loaded 2023-03-23 15:24:10 +01:00
Goffi
b6b2189433 plugin XEP-0277: when publisher is not found, check ancestor in both client and component namespaces 2023-03-16 16:43:47 +01:00
Goffi
060f52c0ef core (xmpp): improve pluging timing log by using highest profileConnected time:
previously the first `profileConnected` time was used, however it may not be the highest
(if `profileConnecting` is high but not `profileConnected`).
2023-03-10 17:01:09 +01:00
Goffi
b5f8914bbc core: add debug trace to show plugins loading time 2023-03-04 22:21:28 +01:00
Goffi
ab3f76a559 core (log): type hints 2023-03-04 18:23:33 +01:00
Goffi
2940ba0d35 core (main): log Exception when bridge_pi fails 2022-11-24 12:25:04 +01:00
Goffi
c5d0966e34 core (log): log.exception is now usable 2022-11-24 10:08:47 +01:00
Goffi
da9725479b plugin OXPS: OpenPGP for XMPP Pubsub implementation:
OpenPGP for XMPP Pubsub (https://xmpp.org/extensions/inbox/pubsub-encryption.html,
currently a protoXEP) is implemented and activated when `encrypted` is set to `True` in
pubsub's `extra` data.

On item retrieval, the decryption is transparent if the key is known, except if the
`decrypt` key in `extra` is set to `False` (notably useful when one wants to checks that
data is well encrypted).

Methods and corresponding bridge methods have been implemented to manage shared secrets
(to share, revoke or rotate the secrets).

plugin XEP-0060's `XEP-0060_publish` trigger point as been move before actual publish so
item can be modified (here e2ee) by the triggers. A new `XEP-0060_items` trigger point has
also been added.

`encrypted` flag can be used with plugin XEP-0277's microblog data

rel 380
2022-10-15 20:36:53 +02:00
Goffi
f160577a65 core: fix and renamed getLocalPath -> get_local_path:
- renaming is following global methods renaming to use snake_case
- for reasons lost in the mists of time, a `profile` argument was used while checking if
  `client` is set is enough, and `client.profile` was escaped but actually not used in the
  path.
2022-10-10 15:23:59 +02:00
Goffi
5b40d71f40 core (xmpp): check presence of some keys in attachment before using them:
in `completeAttachments` `url` was used to complete a missing name, but it may be missing
with some attachments, thus its presence is now checked.
2022-10-06 16:02:05 +02:00
Goffi
ee5784811e core (xmpp): make send a blocking method, fix sendMessageData calls:
original `send` method is blocking, and it is used as such by Wokkel and thus can't be
changed to an async method easily. However, an Async method is necessary to have an async
trigger at the very end of the send workflow for end-to-end encryption. To workaround
that, `send` is an async method which call `a_send`, an async method which actually does
the sending. This way legacy method can still call `send` while `a_send` can be await
otherwise.

Fix calls to `sendMessageData`: the method now being an `async` one, `ensureDeferred` had
to be used in some calls.
2022-09-24 16:31:39 +02:00
Goffi
d9a04a36ca core (main): OrderedDict is not necesasry here anymore, as dict are now ordered 2022-09-24 16:08:26 +02:00
Syndace
75ae8160ae plugin XEP-0384: Fully reworked to adjust to the reworked python-omemo:
- support for both (modern) OMEMO under the `urn:xmpp:omemo:2` namespace and (legacy) OMEMO under the `eu.siacs.conversations.axolotl` namespace
- maintains one identity across both versions of OMEMO
- migrates data from the old plugin
- includes more features for protocol stability
- uses SCE for modern OMEMO
- fully type-checked, linted and format-checked
- added type hints to various pieces of backend code used by the plugin
- added stubs for some Twisted APIs used by the plugin under stubs/ (use `export MYPYPATH=stubs/` before running mypy)
- core (xmpp): enabled `send` trigger and made it an asyncPoint

fix 375
2022-08-23 21:06:24 +02:00
Goffi
c437424053 component AP gateway: raise exceptions on apGet + fix exceptions catching in apGetLocalObject:
new `exceptions.ExternalRequestError` is raised when request done `apGet` has a return
code >= 300.

Fix wrong exception catched in `apGetLocalObject`.
2022-08-31 17:07:01 +02:00
Syndace
d1b5ff0c41 plugin XEP-0420: Implementation of Stanza Content Encryption:
Includes implementation of XEP-0082 (XMPP date and time profiles) and tests for both new plugins.
Everything is type checked, linted, format checked and unit tested.
Adds new dependency xmlschema.

fix 377
2022-08-23 12:04:11 +02:00
Goffi
07109f0354 core (types): add is_component to SatXMPPEntity 2022-06-29 10:14:14 +02:00
Goffi
3ccd4280ac core (xmpp): adapt message workflow to components:
message workflow were not used for components so far. This patch activate it, normalise
namespace to the client one to simplify parsing, and use SatXMPPComponent.sendHistory and
SatXMPPComponent.receiveHistory to indicate if a component should store sent and received
message in database (they both default to False).

OTR plugin is deactivated for components.

rel 367
2022-06-17 14:15:23 +02:00
Goffi
441ae82fcb core (constants): type hints 2022-06-17 14:15:23 +02:00
Goffi
fa81d96d79 comp AP gateway: message conversion:
Convert direct AP items to XMPP `<message>` stanzas, and vice versa.
Documentation will follow soon to explain the behaviour.

rel 366
2022-05-24 17:57:36 +02:00
Goffi
d0973d121d core: remove useless method (it's available directly in client) 2022-05-16 13:02:59 +02:00
Goffi
c8025a52eb core: method to know if a profile/entity is an admin:
the new `is_admin` SatXMPPEntity property tell if it's an administrator.

Admin JIDs are retrieve on init, so they can be looked after when profle is not available
(notably when a component handle a request and has only a JID available). The new
`memory.isAdminJID` method is then used.
2022-05-15 14:14:52 +02:00
Goffi
0a23ca36cb core (xmpp): add a server_jid property 2022-05-13 17:52:43 +02:00
Goffi
8a2154ccca comp AP gateway: signature checking, caching and threads management:
- HTTP signature is checked for incoming messages
- AP actor can now be followed using pubsub subscription. When following is accepted, the
  node is cached
- replies to posts are put in cached pubsub comment nodes, with a `comments_max_depth`
  option to limit the number of comment nodes for a root message (documentation will come
  to explain this).

ticket 364
2022-03-22 17:00:42 +01:00
Goffi
b5ea5bfdc8 core (xmpp): new getVirtualClient for components:
this method is used to make a client with a given JID instead of component's JID. This is
needed when a JID managed by the component (e.g. associated to a legacy service account)
must be used.

rel 364
2022-03-22 17:00:42 +01:00
Goffi
7ed5c0ff9d memory (disco), core (main): new hasIdentity method 2022-01-25 17:07:15 +01:00
Goffi
7b05d97229 merge bookmark 0.9 2021-12-01 16:13:31 +01:00
Goffi
68092dd2bb core (xmpp): specify profile when logging a connection problem 2021-11-30 17:27:26 +01:00
Goffi
14d00a9dda merge bookmark @ 2021-11-12 17:21:24 +01:00
Goffi
7c37f32dc4 core: don't callback self.conn_deferred if already called:
if the connection has been lost (e.g. forced disconnection by server),
`self.conn_deferred` may have already been called, thus this is now checked to avoid an
exception.
2021-11-04 18:27:36 +01:00
Goffi
8eddf8c271 core (core_types): add jid to SatXMPPEntity 2021-09-26 16:38:34 +02:00
Goffi
50d7cb2a51 merge bookmark @ 2021-09-08 11:20:37 +02:00
Goffi
12209c1bdc core (main): check plugin modes and skip pluggin/log an error if value is invalid 2021-09-08 11:16:35 +02:00
Goffi
f2988ea7be core (sat_main): fix the "Could not initialize backend" error logging 2021-09-08 11:16:29 +02:00
Goffi
fe502fc0fc merge branche "@" 2021-08-28 15:32:58 +02:00
Goffi
547eb9feba bridge: bridge can now be set using environment variable:
The `LIBERVIA_BRIDGE_NAME` environment variable can now be used to specify the bridge to
use. If set and different from empty string, the environment has precedence over config
file value.

For `pb` bridge, the following environment variable can also be used:

- LIBERVIA_BRIDGE_PB_CONNECTION_TYPE
- LIBERVIA_BRIDGE_PB_HOST
- LIBERVIA_BRIDGE_PB_PORT
2021-08-28 15:26:02 +02:00
Goffi
92c0c09eb2 plugin pubsub cache: Pubsub Caching implementation 2021-07-29 22:51:01 +02:00
Goffi
42979a7140 plugin XEP-0060: handle purge notifications 2021-07-29 15:54:54 +02:00
Goffi
fcbbc2aeed core (xmpp): renamed SatRosterProtocol.presenceSubscribed to isSubscribedFrom (and added isSubscribedTo) 2021-07-28 22:15:31 +02:00
Goffi
4421eefbf3 merge changes from main branch 2021-06-17 13:05:58 +02:00
Goffi
d5f0d7ec8e core (xmpp): show "Libervia" without the "(backend)" component in version 2021-06-09 11:27:22 +02:00
Goffi
8d9d911497 core (xmpp): catch cancelError in pre_xml_treatments in message workflow 2021-06-03 15:40:57 +02:00