Commit graph libervia-backend/sat
Author SHA1 Message Date
Goffi
b5f8914bbc core: add debug trace to show plugins loading time 2023-03-04 22:21:28 +01:00
Goffi
6ad9431678 plugin app manager: start doesn't wait anymore for actual app start:
Application may be long to start (e.g. a Docker app may have to download images first,
and even without the downloading, the starting could be long), which may lead to UI
blocking or bridge time out.

To prevent that, `start` is now returning immediately, and 2 new signals are used to
indicate when the application is started, of if something wrong happened.

`start` now returns initial app data, including exposed data without the computed exposed
data. The computed data must be retrieved after the app has been started.
2023-03-04 18:30:47 +01:00
Goffi
ab3f76a559 core (log): type hints 2023-03-04 18:23:33 +01:00
Goffi
187369d1ca component AP gateway (http_server): use log.exception instead of log.error 2023-03-02 12:39:16 +01:00
Goffi
efb13e64b2 component AP gateway: fix missing argument when calling APOutboxPageRequest 2023-02-10 17:37:37 +01:00
Goffi
52f7a2b11f component AP gateway: don't percent-encode @:
Mastodon doesn't like when "@" is percent-encoded (because it doesn't do it, and it checks
that the URL matches the ID without taking care of percent-encoding).
2023-02-10 17:20:02 +01:00
Goffi
895ddd36be plugin XEP-0470: create a default configuration if node config can't be accessed 2022-12-05 11:54:47 +01:00
Goffi
6459ef59bc component AP gateway: fix bad condition 2022-11-25 16:34:09 +01:00
Goffi
9560a23f78 component AP gateway: fix header checking for redirection 2022-11-25 16:14:10 +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
faf5e43527 component AP gateway: ignore actor delection notifications:
When a `Delete` activity was received and the object was the emitting actor itself, the
signature checking was failing if the actor was unknown (due to the impossibility to
retrieve the actor public key, as it is no more accessible).

To avoid that, those notifications are ignored for now. In the future they should clean
the cache linked to this actor.
2022-11-15 18:15:16 +01:00
Goffi
b30a558f13 component AP gateway: properly close the HTTP connection on checkSignature exception:
if something is going wrong during `checkSignature` (other than signature verification
failing), a `500 Internal Server Error` code is returned, and the connection is properly
closed.
2022-11-15 18:10:33 +01:00
Goffi
4d14a623fc component AP gateway: parse body immediately on POST request:
the body is parsed immediately during a `POST` request: this avoids duplication of code,
and allows to check the body data before continuing (will be used to filter some requests
in a future patch).
2022-11-15 18:07:34 +01:00
Goffi
d6f710bd0b component AP gateway: fix pubsub attachment plugin call following renaming. 2022-11-15 18:03:07 +01:00
Goffi
c8326e24d2 component AP gateway: log at debug level instead of warning when no client is set 2022-11-15 18:02:16 +01:00
Goffi
020da52ddd component AP gateway: HTML redirection:
when a request is done on AP endpoint and `Accept` header is not set to
`application/json`, the request can now be redirected to a configurable URL.
2022-11-11 13:51:20 +01:00
Goffi
1ebe54a024 plugin XEP-0384: log import_error when import is failing 2022-11-10 15:16:43 +01:00
Goffi
e08d8207d6 plugin pte: Pubsub Target Encryption implementation:
This plugin lets encrypt a few items for a specific set of entities.

rel 382
2022-10-31 13:46:51 +01:00
Goffi
5623d2c4ad cli (file/send): add --encrypt argument to request encryption:
rel 378
2022-10-31 04:09:38 +01:00
Goffi
721df3a7ee plugin XEP-0391: implement XEP-0391 (Jingle Encrypted Transports) + XEP-0396 (JET-OMEMO):
rel 378
2022-10-31 04:09:34 +01:00
Goffi
a53ab322f3 tools (strem): fix mode + add pre_close_cb callback:
rel 378
2022-10-31 04:04:32 +01:00
Syndace
e062c2f0e5 plugin XEP-0384: Implementation of Automatic Trust Management:
- Implementation of Trust Messages (XEP-0434)
- Implementation of Automatic Trust Management (XEP-0450)
- Implementations directly as part of the OMEMO plugin, since omemo:2 is the only protocol supported by ATM at the moment
- Trust system selection updated to allow choice between manual trust with ATM and BTBV
- dev-requirements.txt updated to include additional requirements for the e2e tests

fix 376
2022-10-28 18:50:06 +02:00
Goffi
0988c73644 plugin pubsub signature: fix attachment setting + default signer:
- attachment setting was crashing when `item_elt` was not specified due to argument typo
- if `signer` is set to None in attachment data, client's bare jid will be used to sign
  the item

rel 381
2022-10-30 01:06:58 +02:00
Goffi
d9f5f4c8f8 plugin pubsub signing: fix gpg_provider instanciation:
the instance was set at the class level while it is client dependant, resulting in the
instance being overwritten on each client connexion.

rel 381
2022-10-30 01:06:35 +02:00
Goffi
f74e555c23 plugin XEP-0373: minor renaming + set gpg_provider in client:
- `sat` and `self.__sat` have been renamed to `host` and `self.host` for consistency with
other plugins.

- `gpg_provider` is set in client while profile is connecting, so the instance is easily
  accessible to plugins depending on XEP-0373

rel 381
2022-10-30 01:06:32 +02:00
Goffi
cc8b5aa554 plugin XEP-0277: signed flag can now be used in extra to use sign the blog post:
rel 381
2022-10-28 18:47:17 +02:00
Goffi
4f13a79f87 plugin pubsub signing: pubsub items signature implementation:
- this is based on a protoXEP, not yet an official XEP: https://github.com/xsf/xeps/pull/1228
- XEP-0470: `set` attachment handler can now be async

rel 381
2022-10-28 18:47:17 +02:00
Goffi
6255985262 tools (xml_tools): domish_elt_2_et_elt and et_elt_2_domish_elt now handle lxml.etree 2022-10-28 18:47:17 +02:00
Goffi
966d3cc6f4 plugin XEP-0373: typos 2022-10-28 18:47:17 +02:00
Goffi
f7fdde6dce tools (utils): fix parse_xmpp_date timezone:
rel 381
2022-10-28 18:47:17 +02:00
Goffi
14b115358e plugin OXPS: fix triggers return values:
rel 381
2022-10-28 18:47:17 +02:00
Goffi
836a621a0b plugin XEP-0277: add encryption flag to MB data:
MB data are individually flagged with the new `encryption` key if they were e2ee, the key
contain encryption metadata (for now, just the algorithm used).

rel 380
2022-10-15 20:38:33 +02:00
Goffi
7b9e785c13 plugin OXPS, XEP-0060: indicate which items were e2ee:
the new `encryption` key is added to `getItems` metadata if items were e2ee, it contains a
map from item ID to encryption metadata.

rel  380
2022-10-15 20:38:33 +02:00
Goffi
9f047d311c plugin XEP-0470: fix autocreate in create_attachments_node:
Due to config check, `create_attachments_node` was failing when the target node was not
already existing. However, this is the case when an item is published and `autocreate` is
expected, thus the node is now created if not already existing and new `autocreate`
argument is set.
2022-10-15 20:38:33 +02:00
Goffi
a7f94cf875 plugin XEP-0374, XEP-0384: handle cases where "to" is not set in <message> for feedback_jid 2022-10-15 20:38:33 +02:00
Goffi
224cffde8d plugin XEP-0384: continue workflow and log error in case of issue in self.__prepare_for_profile:
an exception while preparing profile should not stop the message to be propagated
2022-10-15 20:38:33 +02:00
Goffi
39576b806f plugin XEP-0373: download public keys if they are not found in local storage:
public keys were only obtained from PEP notifications, however this wasn't working if the
entity was not in our roster.

Now if no public key is retrieved from local storage, the public key node is requested,
and an error is raised if nothing is found. This allows the use of OX with entities which
are not in roster.

rel 380
2022-10-15 20:38:33 +02:00
Goffi
dbbdcd04bb plugin pubsub cache: avoid race condition by retrying node request:
When retrieving items, there may be a race condition if a node is not found in cache, then
created before `setPubsubNode` is called. This patch handle this case by retrying in case
of UNIQUE constraint violation.
2022-10-15 20:38:33 +02:00
Goffi
7f0e230af4 tools (common/async_utils): set default maxsize to 50 in async_lru 2022-10-15 20:37:00 +02:00
Goffi
b91bc6fa2d plugin XEP-0374: exluce openpgp element from XEP-0373 on send trigger:
the `openpgp` element is excluded to avoid useless double encryption.

rel 380
2022-10-15 20:37:00 +02: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
Syndace
6d1e942f43 plugin XEP-0373 and XEP-0374: Implementation of OX and OXIM:
GPGME is used as the GPG provider.

rel 374
2022-09-20 16:22:18 +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
0cd676115c plugins (forums, lists, import, XEP-0277): remove invalid max_items values 2022-10-07 22:22:13 +02:00
Goffi
8414475285 plugin lists: fix double deserialisation 2022-10-06 17:50:54 +02:00
Syndace
8daec13fbb plugin XEP-0384: proper handling of exceptions in prepare_for_profile 2022-10-06 17:25:37 +02:00
Goffi
3896e091fd plugin lists: fix deserialisation on listSet 2022-10-06 17:22:21 +02:00
Goffi
8f204aba8f plugin XEP-0448: Encryption for stateless file sharing implementation:
- registered as a source handle for XEP-0447
- can be used as an attachment
- registered as a download handler
- only usable when OMEMO2 is active, as we been SCE to hide encryption data

fix 379
2022-10-06 16:02:05 +02:00
Goffi
0f20af88f1 tools (stream): log error when a SatFile is closed:
error where only sent on `ProgressError`, but it is necessary to log the error as it may
happen before any progression is started.
2022-10-06 16:02:05 +02:00