1
0
Fork 0
mirror of https://github.com/element-hq/synapse.git synced 2025-04-22 21:49:23 +00:00
Commit graph

3502 commits

Author SHA1 Message Date
David Robertson
1f10c20806
Apply join rate limiter outside the lineariser () 2023-10-06 17:31:52 +00:00
Patrick Cloke
7615e2bf48
Return ThumbnailInfo in more places ()
Improves type hints by using concrete types instead of
dictionaries.
2023-10-06 10:12:43 -04:00
Patrick Cloke
fc31b495b3
Stop sending incorrect knock_state_events. ()
Synapse was incorrectly implemented with a knock_state_events
property on some APIs (instead of knock_room_state). This was
correct in Synapse 1.70.0, but *both* fields were sent to also be
compatible with Synapse versions expecting the wrong field.

Enough time has passed that only the correct field needs to be
included/handled.
2023-10-06 07:27:35 -04:00
Patrick Cloke
26b960b08b
Register media servlets via regex. ()
This converts the media servlet URLs in the same way as
(most) of the rest of Synapse. This will give more flexibility
in the versions each endpoint exists under.
2023-10-06 07:22:55 -04:00
Erik Johnston
009b47badf
Factor out MultiWriter token from RoomStreamToken () 2023-10-05 10:46:28 +01:00
Erik Johnston
80ec81dcc5
Some refactors around receipts stream () 2023-10-04 16:28:40 +01:00
MomentQYC
5725712d47
Remove Python version from /_synapse/admin/v1/server_version ()
There's no reason to expose the full Python version over what is
frequently a public API.
2023-10-02 09:07:53 -04:00
Will Hunt
79eb6c0cdc
Support rendering some media downloads as inline ()
Use an `inline` Content-Disposition header when the media is
"safe" to display inline (some known text, image, video, audio
formats).
2023-09-29 07:19:38 -04:00
Patrick Cloke
cdb89dcefe
Improve state types. () 2023-09-28 07:01:46 -04:00
Patrick Cloke
f84da3c32e
Add a cache around server ACL checking ()
* Pre-compiles the server ACLs onto an object per room and
  invalidates them when new events come in.
* Converts the server ACL checking into Rust.
2023-09-26 11:57:50 -04:00
Maxwell G
12611bfcdd
Add support for pydantic v2 via pydantic.v1 compat module ()
While maintaining support with pydantic v1.
2023-09-25 15:19:08 +00:00
Patrick Cloke
7ec0a141b4
Convert more cached return values to immutable types () 2023-09-20 07:48:55 -04:00
Patrick Cloke
47d4bb6057
Stop patching EventBase.__eq__ in tests. ()
It is clearer to directly test equality instead of doing indirect
assertions via patching __eq__.
2023-09-18 14:48:02 +00:00
Hanadi
eef2b9e344
Filter locked users in the admin API ()
Co-authored-by: Hanadi Tamimi <hanadi.tamimi@sdui.de>
2023-09-18 15:37:51 +01:00
Patrick Cloke
85bfd4735e
Return an immutable value from get_latest_event_ids_in_room. () 2023-09-18 09:29:05 -04:00
Patrick Cloke
63d28a88c1
Additional validation of receipts ()
Reject invalid receipts with a reasonable error message &
expands tests for receipts.
2023-09-18 13:02:12 +00:00
Mathieu Velten
dd44ee00b6
Add automatic purge after all users forget a room ()
Also add restore of purge/shutdown rooms after a synapse restart.

Co-authored-by:  Eric Eastwood <erice@matrix.org>
Co-authored-by: Erik Johnston <erikj@matrix.org>
2023-09-15 15:37:44 +02:00
Erik Johnston
954921736b
Refactor get_user_by_id () 2023-09-14 12:46:30 +01:00
Hanadi
7afb5e0410
Fix using dehydrated devices (MSC2697) & refresh tokens ()
Refresh tokens were not correctly moved to the rehydrated
device (similar to how the access token is currently handled).
This resulted in invalid refresh tokens after rehydration.
2023-09-13 08:33:39 -04:00
Erik Johnston
2b35626b6b
Refactor storing of server keys () 2023-09-12 11:08:04 +01:00
Patrick Cloke
9400dc0535
Add the List-Unsubscribe header for notification emails. ()
Adds both the List-Unsubscribe (RFC2369) and List-Unsubscribe-Post (RFC8058)
headers to push notification emails, which together should:

* Show an "Unsubscribe" link in the MUA UI when viewing Synapse notification emails.
* Enable "one-click" unsubscribe (the user never leaves their MUA, which automatically
  makes a POST request to the specified endpoint).
2023-09-11 09:49:48 -04:00
Patrick Cloke
aa483cb4c9
Update ruff config ()
Enable additional checks & clean-up unneeded configuration.
2023-09-08 11:24:36 -04:00
Patrick Cloke
69b74d9330
Avoid temporary storage of sensitive information. ()
During the UI auth process, avoid storing sensitive information
into the database.
2023-09-08 08:57:56 -04:00
Marcel
13e9cad537
Send the opentracing span information to appservices () 2023-09-06 15:19:17 -04:00
Aurélien Grimpard
fe69e7f617
Handle "registration_enabled" parameter for CAS ()
Similar to OIDC, CAS providers can now disable registration such
that only existing users are able to login via SSO.
2023-09-06 14:32:24 -04:00
Patrick Cloke
32fb264120 Merge remote-tracking branch 'origin/release-v1.92' into develop 2023-09-06 13:08:22 -04:00
Patrick Cloke
55c20da4a3 Merge remote-tracking branch 'origin/release-v1.91' into release-v1.92 2023-09-06 11:25:28 -04:00
Quentin Gliech
1940d990a3
Revert MSC3861 introspection cache, admin impersonation and account lock () 2023-09-06 15:19:51 +01:00
Mathieu Velten
4f1840a88a
Delete device messages asynchronously and in staged batches () 2023-09-06 09:30:53 +02:00
Will Hunt
1e571cd664
Fix appservices being unable to handle to_device messages for multiple users () 2023-09-05 15:46:57 -04:00
Travis Ralston
b1d71c687a
Add MSC4040 matrix-fed service lookups () 2023-09-05 15:45:39 -04:00
Patrick Cloke
8b5013dcbc
Time out busy presence status & test multi-device busy ()
Add a (long) timeout to when a "busy" device is considered not online.
This does *not* match MSC3026, but is a reasonable thing for an
implementation to do.

Expands tests for the (unstable) busy presence with multiple devices.
2023-09-05 10:39:38 -04:00
Patrick Cloke
ea75346f6a
Track presence state per-device and combine to a user state. ()
Tracks presence on an individual per-device basis and combine
the per-device state into a per-user state. This should help in
situations where a user has multiple devices with conflicting status
(e.g. one is syncing with unavailable and one is syncing with online).

The tie-breaking is done by priority:

    BUSY > ONLINE > UNAVAILABLE > OFFLINE
2023-09-05 09:58:51 -04:00
Erik Johnston
d35bed8369
Don't wake up destination transaction queue if they're not due for retry. () 2023-09-04 17:14:09 +01:00
Mathieu Velten
dcb2778341
Add last_seen_ts to the admin users API () 2023-09-04 18:13:28 +02:00
Erik Johnston
f84baecb6f
Don't reset retry timers on "valid" error codes () 2023-09-04 14:04:43 +01:00
David Robertson
6525fd65ee
Log the details of background update failures () 2023-09-01 12:41:56 +01:00
Erik Johnston
a2e0d4cd60
Fix rare bug that broke looping calls ()
* Fix rare bug that broke looping calls

We can't interact with the reactor from the main thread via looping
call.

Introduced in v1.90.0 / .

* Newsfile
2023-08-30 14:18:42 +01:00
Patrick Cloke
ebd8374fb5
Stop writing to the event_txn_id table () 2023-08-30 11:10:56 +01:00
David Robertson
62a1a9be52
Describe which rate limiter was hit in logs () 2023-08-30 00:39:39 +01:00
Patrick Cloke
9ec3da06da
Bump mypy-zope & mypy. () 2023-08-29 10:38:56 -04:00
Evilham
63b51ef3fb
Support IPv6-only SMTP servers ()
Use Twisted HostnameEndpoint to connect to SMTP servers (instead
of connectTCP/connectSSL) which properly supports IPv6-only servers.
2023-08-29 09:33:58 -04:00
Patrick Cloke
40901af5e0
Pass the device ID around in the presence handler ()
Refactoring to pass the device ID (in addition to the user ID) through
the presence handler (specifically the `user_syncing`, `set_state`,
and `bump_presence_active_time` methods and their replication
versions).
2023-08-28 13:08:49 -04:00
Patrick Cloke
1bf143699c
Combine logic about not overriding BUSY presence. ()
Simplify some of the presence code by reducing duplicated code between
worker & non-worker modes.

The main change is to push some of the logic from `user_syncing` into
`set_state`. This is done by passing whether the user is setting the presence
via a `/sync` with a new `is_sync` flag to `set_state`. If this is `true` some
additional logic is performed:

* Don't override `busy` presence.
* Update the `last_user_sync_ts`.
* Never update the status message.
2023-08-28 11:03:23 -04:00
Mathieu Velten
501da8ecd8
Task scheduler: add replication notify for new task to launch ASAP () 2023-08-28 14:03:51 +00:00
V02460
84f441f88f
Prepare unit tests for Python 3.12 () 2023-08-25 15:05:10 -04:00
Patrick Cloke
a8a46b1336
Replace simple_async_mock with AsyncMock ()
Python 3.8 has a native AsyncMock, use it instead of a custom
implementation.
2023-08-25 09:27:21 -04:00
Patrick Cloke
daf11e26ef
Replace make_awaitable with AsyncMock ()
Python 3.8 provides a native AsyncMock, we can replace the
homegrown version we have.
2023-08-24 19:38:46 -04:00
David Robertson
e691243e19
Fix typechecking with twisted trunk () 2023-08-24 14:53:07 +00:00
Will Hunt
0538e3e2db
Add Retry-After to M_LIMIT_EXCEEDED error responses ()
Implements MSC4041 behind an experimental configuration flag.
2023-08-24 10:40:26 -04:00