summary refs log tree commit diff
path: root/synapse/handlers (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Merge commit 'b19b63e6b' into anoa/dinsic_release_1_23_1Andrew Morgan2020-12-311-1/+4
|\
| * Don't 500 for invalid group IDs (#8628)Erik Johnston2020-10-221-1/+4
| |
* | Merge commit 'de5cafe98' into dinsicAndrew Morgan2020-12-314-54/+75
|\|
| * Add type hints to profile and base handlers. (#8609)Patrick Cloke2020-10-213-37/+65
| |
| * Consistently use wrap_as_background_task in more places (#8599)Patrick Cloke2020-10-202-16/+6
| |
| * Fix mypy error: auth handler "checkpw" internal function type mismatch (#8569)Jonathan de Jong2020-10-191-3/+5
| |
* | Merge commit '3ee17585c' into dinsicAndrew Morgan2020-12-316-78/+248
|\|
| * Fix modifying events in `ThirdPartyRules` modules (#8564)Richard van der Hoff2020-10-161-1/+6
| | | | | | EventBuilder.build wants auth events these days
| * Merge pull request #8535 from matrix-org/rav/third_party_events_updatesRichard van der Hoff2020-10-152-71/+74
| |\ | | | | | | Support modifying event content from ThirdPartyRules modules
| | * Allow ThirdPartyRules modules to replace event contentRichard van der Hoff2020-10-131-2/+62
| | | | | | | | | | | | Support returning a new event dict from `check_event_allowed`.
| | * Move third_party_rules check to event creation timeRichard van der Hoff2020-10-132-52/+13
| | | | | | | | | | | | | | | Rather than waiting until we handle the event, call the ThirdPartyRules check when we fist create the event.
| | * Remove redundant calls to third_party_rules in `on_send_{join,leave}`Richard van der Hoff2020-10-131-19/+1
| | | | | | | | | | | | | | | There's not much point in calling these *after* we have decided to accept them into the DAG.
| * | Send some ephemeral events to appservices (#8437)Will Hunt2020-10-154-7/+169
| | | | | | | | | Optionally sends typing, presence, and read receipt information to appservices.
* | | Merge commit '74976a8e4' into dinsicAndrew Morgan2020-12-3124-317/+470
|\| |
| * | Merge pull request #8537 from matrix-org/rav/simplify_locally_reject_inviteRichard van der Hoff2020-10-153-52/+38
| |\ \ | | | | | | | | Simplify `_locally_reject_invite`
| | * | Simplify `_locally_reject_invite`Richard van der Hoff2020-10-132-45/+35
| | | | | | | | | | | | | | | | | | | | Update `EventCreationHandler.create_event` to accept an auth_events param, and use it in `_locally_reject_invite` instead of reinventing the wheel.
| | * | Remove redundant `token_id` parameter to create_eventRichard van der Hoff2020-10-133-7/+3
| | |/ | | | | | | | | | this is always the same as requester.access_token_id.
| * / Fix not sending events over federation when using sharded event persisters ↵Erik Johnston2020-10-141-4/+7
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (#8536) * Fix outbound federaion with multiple event persisters. We incorrectly notified federation senders that the minimum persisted stream position had advanced when we got an `RDATA` from an event persister. Notifying of federation senders already correctly happens in the notifier, so we just delete the offending line. * Change some interfaces to use RoomStreamToken. By enforcing use of `RoomStreamTokens` we make it less likely that people pass in random ints that they got from somewhere random.
| * Move additional tasks to the background worker, part 4 (#8513)Patrick Cloke2020-10-135-30/+24
| |
| * Fix message duplication if something goes wrong after persisting the event ↵Erik Johnston2020-10-133-12/+58
| | | | | | | | | | (#8476) Should fix #3365.
| * Add type hints to response cache. (#8507)Patrick Cloke2020-10-093-6/+10
| |
| * Allow modules to create and send events into rooms (#8479)Andrew Morgan2020-10-091-6/+5
| | | | | | | | | | This PR allows Synapse modules making use of the `ModuleApi` to create and send non-membership events into a room. This can useful to have modules send messages, or change power levels in a room etc. Note that they must send event through a user that's already in the room. The non-membership event limitation is currently arbitrary, as it's another chunk of work and not necessary at the moment.
| * Remove the deprecated Handlers object (#8494)Patrick Cloke2020-10-099-44/+11
| | | | | | All handlers now available via get_*_handler() methods on the HomeServer.
| * Add type hints to some handlers (#8505)Patrick Cloke2020-10-095-19/+49
| |
| * Add typing information to the device handler. (#8407)Patrick Cloke2020-10-071-35/+54
| |
| * Fix returning incorrect prev_batch token in incremental sync (#8486)Erik Johnston2020-10-071-1/+6
| |
| * Add support for MSC2697: Dehydrated devices (#8380)Hubert Chathi2020-10-071-2/+82
| | | | | | | | This allows a user to store an offline device on the server and then restore it at a subsequent login.
| * Merge pull request #8463 from matrix-org/rav/clean_up_event_handlingRichard van der Hoff2020-10-073-90/+78
| |\ | | | | | | Reduce inconsistencies between codepaths for membership and non-membership events.
| | * update wordingRichard van der Hoff2020-10-071-2/+3
| | |
| | * kill off `send_nonmember_event`Richard van der Hoff2020-10-052-51/+27
| | | | | | | | | | | | This is now redundant, and we can just call `handle_new_client_event` directly.
| | * pull up event.sender assertionRichard van der Hoff2020-10-052-4/+5
| | |
| | * Move shadow-ban check down into `handle_new_client_event`.Richard van der Hoff2020-10-051-8/+24
| | |
| | * De-duplicate duplicate handlingRichard van der Hoff2020-10-052-38/+32
| | | | | | | | | | | | | | | move the "duplicate state event" handling down into `handle_new_client_event` where it can be shared between multiple call paths.
| * | Combine `SpamCheckerApi` with the more generic `ModuleApi`. (#8464)Richard van der Hoff2020-10-071-0/+7
| | | | | | | | | | | | | | | Lots of different module apis is not easy to maintain. Rather than adding yet another ModuleApi(hs, hs.get_auth_handler()) incantation, first add an hs.get_module_api() method and use it where possible.
| * | Add support for MSC2732: olm fallback keys (#8312)Hubert Chathi2020-10-062-0/+24
| |/
| * Allow ThirdPartyEventRules modules to manipulate public room state (#8292)Andrew Morgan2020-10-052-0/+19
| | | | | | | | | | This PR allows `ThirdPartyEventRules` modules to view, manipulate and block changes to the state of whether a room is published in the public rooms directory. While the idea of whether a room is in the public rooms list is not kept within an event in the room, `ThirdPartyEventRules` generally deal with controlling which modifications can happen to a room. Public rooms fits within that idea, even if its toggle state isn't controlled through a state event.
| * Remove stream ordering from Metadata dict (#8452)Richard van der Hoff2020-10-053-7/+13
| | | | | | | | | | | | | | | | There's no need for it to be in the dict as well as the events table. Instead, we store it in a separate attribute in the EventInternalMetadata object, and populate that on load. This means that we can rely on it being correctly populated for any event which has been persited to the database.
| * Do not assume that account data is of the correct form. (#8454)Patrick Cloke2020-10-052-11/+14
| | | | | | | | This fixes a bug where `m.ignored_user_list` was assumed to be a dict, leading to odd behavior for users who set it to something else.
| * Allow background tasks to be run on a separate worker. (#8369)Patrick Cloke2020-10-022-2/+2
| |
| * Add config option for always using "userinfo endpoint" for OIDC (#7658)BBBSnowball2020-10-011-4/+7
| | | | | | This allows for connecting to certain IdPs, e.g. GitLab.
| * Enable mypy checking for unreachable code and fix instances. (#8432)Patrick Cloke2020-10-014-5/+3
| |
* | Allow users to click account renewal links multiple times without hitting an ↵Andrew Morgan2020-12-302-22/+70
| | | | | | | | 'Invalid Token' page (#74)
* | Allow per-room profile to be used for server notice user (#8799)Mathieu Velten2020-12-141-1/+9
| | | | | | | | This applies even if the feature is disabled at the server level with `allow_per_room_profiles`. The server notice not being a real user it doesn't have an user profile.
* | Update mypy to 0.790 to resolve mypy CI errors (#72)Andrew Morgan2020-12-111-3/+5
| |
* | Fix type errorAndrew Morgan2020-10-211-0/+3
| |
* | Merge commit 'cc40a59b4' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-2111-45/+164
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'cc40a59b4': 1.21.0 Add prometheus metrics to track federation delays (#8430) Make token serializing/deserializing async (#8427) Allow additional SSO properties to be passed to the client (#8413) changelog Add an improved "forward extremities" metric Rewrite BucketCollector Fix _exposition.py to stop stripping samples Drop support for ancient prometheus_client (#8426) Various clean ups to room stream tokens. (#8423) changelog Report state res metrics to Prometheus and log Move Measure calls into `resolve_events_with_store` Expose a `get_resource_usage` method in `Measure` Move `resolve_events_with_store` into StateResolutionHandler
| * Make token serializing/deserializing async (#8427)Erik Johnston2020-09-305-20/+22
| | | | | | The idea is that in future tokens will encode a mapping of instance to position. However, we don't want to include the full instance name in the string representation, so instead we'll have a mapping between instance name and an immutable integer ID in the DB that we can use instead. We'll then do the lookup when we serialize/deserialize the token (we could alternatively pass around an `Instance` type that includes both the name and ID, but that turns out to be a lot more invasive).
| * Allow additional SSO properties to be passed to the client (#8413)Patrick Cloke2020-09-302-4/+112
| |
| * Merge pull request #8420 from matrix-org/rav/state_res_statsRichard van der Hoff2020-09-301-5/+8
| |\ | | | | | | Report metrics on expensive rooms for state res
| | * Move `resolve_events_with_store` into StateResolutionHandlerRichard van der Hoff2020-09-291-5/+8
| | |
| * | Various clean ups to room stream tokens. (#8423)Erik Johnston2020-09-296-16/+22
| |/
* | Merge commit '8238b55e0' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-211-4/+9
|\| | | | | | | | | | | | | | | * commit '8238b55e0': Update description of server_name config option (#8415) Discard an empty upload_name before persisting an uploaded file (#7905) Don't table scan events on worker startup (#8419) Mypy fixes for `synapse.handlers.federation` (#8422)
| * Mypy fixes for `synapse.handlers.federation` (#8422)Richard van der Hoff2020-09-291-4/+9
| | | | | | For some reason, an apparently unrelated PR upset mypy about this module. Here are a number of little fixes.
* | Merge commit 'f43c66d23' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-212-14/+13
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'f43c66d23': Add support for running Complement against the local checkout (#8317) Filter out appservices from mau count (#8404) Only assert valid next_link params when provided (#8417) Add metrics to track success/otherwise of replication requests (#8406) Fix handling of connection timeouts in outgoing http requests (#8400) Changelog Don't check whether a 3pid is allowed to register during password reset Add checks for postgres sequence consistency (#8402) Create a mechanism for marking tests "logcontext clean" (#8399) Add `ui_auth_sessions_ips` table to `synapse_port_db` ignore list (#8410) A pair of tiny cleanups in the federation request code. (#8401) typo
| * Fix handling of connection timeouts in outgoing http requests (#8400)Richard van der Hoff2020-09-291-13/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Remove `on_timeout_cancel` from `timeout_deferred` The `on_timeout_cancel` param to `timeout_deferred` wasn't always called on a timeout (in particular if the canceller raised an exception), so it was unreliable. It was also only used in one place, and to be honest it's easier to do what it does a different way. * Fix handling of connection timeouts in outgoing http requests Turns out that if we get a timeout during connection, then a different exception is raised, which wasn't always handled correctly. To fix it, catch the exception in SimpleHttpClient and turn it into a RequestTimedOutError (which is already a documented exception). Also add a description to RequestTimedOutError so that we can see which stage it failed at. * Fix incorrect handling of timeouts reading federation responses This was trapping the wrong sort of TimeoutError, so was never being hit. The effect was relatively minor, but we should fix this so that it does the expected thing. * Fix inconsistent handling of `timeout` param between methods `get_json`, `put_json` and `delete_json` were applying a different timeout to the response body to `post_json`; bring them in line and test. Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com> Co-authored-by: Erik Johnston <erik@matrix.org>
| * A pair of tiny cleanups in the federation request code. (#8401)Richard van der Hoff2020-09-281-1/+1
| |
* | Merge commit '31acc5c30' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-214-29/+45
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '31acc5c30': Escape the error description on the sso_error template. (#8405) Fix occasional "Re-starting finished log context" from keyring (#8398) Allow existing users to login via OpenID Connect. (#8345) Fix schema delta for servers that have not backfilled (#8396) Fix MultiWriteIdGenerator's handling of restarts. (#8374) s/URLs/variables in changelog s/accidentally/incorrectly in changelog Update changelog wording Add type annotations to SimpleHttpClient (#8372) Add new sequences to port DB script (#8387) Add EventStreamPosition type (#8388) Mark the shadow_banned column as boolean in synapse_port_db. (#8386)
| * Allow existing users to login via OpenID Connect. (#8345)Tdxdxoz2020-09-251-15/+27
| | | | | | | | | | | | | | Co-authored-by: Benjamin Koch <bbbsnowball@gmail.com> This adds configuration flags that will match a user to pre-existing users when logging in via OpenID Connect. This is useful when switching to an existing SSO system.
| * Add EventStreamPosition type (#8388)Erik Johnston2020-09-243-14/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The idea is to remove some of the places we pass around `int`, where it can represent one of two things: 1. the position of an event in the stream; or 2. a token that partitions the stream, used as part of the stream tokens. The valid operations are then: 1. did a position happen before or after a token; 2. get all events that happened before or after a token; and 3. get all events between two tokens. (Note that we don't want to allow other operations as we want to change the tokens to be vector clocks rather than simple ints)
* | Merge commit '2983049a7' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-211-48/+54
|\| | | | | | | | | | | | | | | | | | | | | | | * commit '2983049a7': Factor out `_send_dummy_event_for_room` (#8370) Improve logging of state resolution (#8371) Fix bug which caused failure on join with malformed membership events (#8385) Use `async with` for ID gens (#8383) Don't push if an user account has expired (#8353) Do not check lint/test dependencies at runtime. (#8377) Add note to reverse_proxy.md about disabling Apache's mod_security2 (#8375) Changelog
| * Factor out `_send_dummy_event_for_room` (#8370)Richard van der Hoff2020-09-231-48/+54
| | | | | | this makes it possible to use from the manhole, and seems cleaner anyway.
* | Merge commit '4325be1a5' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-2120-29/+47
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '4325be1a5': Fix missing null character check on guest_access room state Fixed a bug with reactivating users with the admin API (#8362) Admin API for reported events (#8217) Fix wording of deprecation notice in changelog Deprecation warning for synapse admin api being accessible under /_matrix Create function to check for long names in devices (#8364) Add a comment re #1691 Fix a bad merge from release-v1.20.0. (#8354) Admin API for querying rooms where a user is a member (#8306) Catch-up after Federation Outage (bonus): Catch-up on Synapse Startup (#8322) Simplify super() calls to Python 3 syntax. (#8344) Allow appservice users to /login (#8320) Update test logging to be able to accept braces (#8335) Move lint dependencies to extras_require (#8330)
| * Create function to check for long names in devices (#8364)Dionysis Grigoropoulos2020-09-221-6/+24
| | | | | | | | | | | | | | | | | | * Create a new function to verify that the length of a device name is under a certain threshold. * Refactor old code and tests to use said function. * Verify device name length during registration of device * Add a test for the above Signed-off-by: Dionysis Grigoropoulos <dgrig@erethon.com>
| * Fix a bad merge from release-v1.20.0. (#8354)Patrick Cloke2020-09-181-1/+1
| |
| * Merge tag 'v1.20.0rc5' into developPatrick Cloke2020-09-182-12/+61
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Synapse 1.20.0rc5 (2020-09-18) ============================== In addition to the below, Synapse 1.20.0rc5 also includes the bug fix that was included in 1.19.3. Features -------- - Add flags to the `/versions` endpoint for whether new rooms default to using E2EE. ([\#8343](https://github.com/matrix-org/synapse/issues/8343)) Bugfixes -------- - Fix rate limiting of federation `/send` requests. ([\#8342](https://github.com/matrix-org/synapse/issues/8342)) - Fix a longstanding bug where back pagination over federation could get stuck if it failed to handle a received event. ([\#8349](https://github.com/matrix-org/synapse/issues/8349)) Internal Changes ---------------- - Blacklist [MSC2753](https://github.com/matrix-org/matrix-doc/pull/2753) SyTests until it is implemented. ([\#8285](https://github.com/matrix-org/synapse/issues/8285))
| * | Simplify super() calls to Python 3 syntax. (#8344)Patrick Cloke2020-09-1820-23/+23
| | | | | | | | | | | | | | | | | | | | | This converts calls like super(Foo, self) -> super(). Generated with: sed -i "" -Ee 's/super\([^\(]+\)/super()/g' **/*.py
* | | Merge commit '43f2b67e4' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-202-12/+61
|\ \ \ | | |/ | |/| | | | | | | | | | | | | | | | * commit '43f2b67e4': Intelligently select extremities used in backfill. (#8349) Add flags to /versions about whether new rooms are encrypted by default. (#8343) Fix ratelimiting for federation `/send` requests. (#8342) blacklist MSC2753 sytests until it's implemented in synapse (#8285)
| * | Intelligently select extremities used in backfill. (#8349)Erik Johnston2020-09-182-12/+61
| | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of just using the most recent extremities let's pick the ones that will give us results that the pagination request cares about, i.e. pick extremities only if they have a smaller depth than the pagination token. This is useful when we fail to backfill an extremity, as we no longer get stuck requesting that same extremity repeatedly.
* | | Merge commit '837293c31' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-2014-159/+201
|\ \ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '837293c31': Remove obsolete __future__ imports (#8337) Use admin_patterns for all admin APIs. (#8331) Fix a potential bug of UnboundLocalError (#8329) Switch metaclass initialization to python 3-compatible syntax (#8326) Catch-up after Federation Outage (split, 4): catch-up loop (#8272) Use slots in attrs classes where possible (#8296) Fix typos in comments. Add the topic and avatar to the room details admin API (#8305) Improve SAML error messages (#8248) Add experimental support for sharding event persister. Again. (#8294) Make `StreamToken.room_key` be a `RoomStreamToken` instance. (#8281) Use TLSv1.2 for fake servers in tests (#8208) Add /_synapse/client to the reverse proxy docs (#8227) Clean up `Notifier.on_new_room_event` code path (#8288)
| * | Switch metaclass initialization to python 3-compatible syntax (#8326)Jonathan de Jong2020-09-161-3/+1
| | |
| * | Use slots in attrs classes where possible (#8296)Patrick Cloke2020-09-146-29/+15
| | | | | | | | | | | | | | | slots use less memory (and attribute access is faster) while slightly limiting the flexibility of the class attributes. This focuses on objects which are instantiated "often" and for short periods of time.
| * | Improve SAML error messages (#8248)Patrick Cloke2020-09-142-61/+112
| | |
| * | Add experimental support for sharding event persister. Again. (#8294)Erik Johnston2020-09-144-32/+47
| | | | | | | | | | | | | | | | | | This is *not* ready for production yet. Caveats: 1. We should write some tests... 2. The stream token that we use for events can get stalled at the minimum position of all writers. This means that new events may not be processed and e.g. sent down sync streams if a writer isn't writing or is slow.
| * | Make `StreamToken.room_key` be a `RoomStreamToken` instance. (#8281)Erik Johnston2020-09-117-27/+26
| | |
| * | Clean up `Notifier.on_new_room_event` code path (#8288)Erik Johnston2020-09-102-7/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The idea here is that we pass the `max_stream_id` to everything, and only use the stream ID of the particular event to figure out *when* the max stream position has caught up to the event and we can notify people about it. This is to maintain the distinction between the position of an item in the stream (i.e. event A has stream ID 513) and a token that can be used to partition the stream (i.e. give me all events after stream ID 352). This distinction becomes important when the tokens are more complicated than a single number, which they will be once we start tracking the position of multiple writers in the tokens. The valid operations here are: 1. Is a position before or after a token 2. Fetching all events between two tokens 3. Merging multiple tokens to get the "max", i.e. `C = max(A, B)` means that for all positions P where P is before A *or* before B, then P is before C. Future PR will change the token type to a dedicated type.
* | | Merge commit 'a3a90ee03' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-205-95/+7
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'a3a90ee03': Show a confirmation page during user password reset (#8004) Do not error when thumbnailing invalid files (#8236) Remove some unused distributor signals (#8216) Fixup pusher pool notifications (#8287) Revert "Fixup pusher pool notifications" Fixup pusher pool notifications
| * | Remove some unused distributor signals (#8216)Patrick Cloke2020-09-094-93/+5
| | | | | | | | | | | | | | | Removes the `user_joined_room` and stops calling it since there are no observers. Also cleans-up some other unused signals and related code.
| * | Fixup pusher pool notifications (#8287)Erik Johnston2020-09-092-2/+2
| | | | | | | | | | | | | | | `pusher_pool.on_new_notifications` expected a min and max stream ID, however that was not what we were passing in. Instead, let's just pass it the current max stream ID and have it track the last stream ID it got passed. I believe that it mostly worked as we called the function for every event. However, it would break for events that got persisted out of order, i.e, that were persisted but the max stream ID wasn't incremented as not all preceding events had finished persisting, and push for that event would be delayed until another event got pushed to the effected users.
| * | Revert "Fixup pusher pool notifications"Erik Johnston2020-09-092-2/+2
| | | | | | | | | | | | This reverts commit e7fd336a53a4ca489cdafc389b494d5477019dc0.
| * | Fixup pusher pool notificationsErik Johnston2020-09-092-2/+2
| | |
* | | Merge commit 'e45b83411' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-205-49/+34
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'e45b83411': Add types to async_helpers (#8260) Fix mypy error on develop (#8282) Include method in thumbnail media name (#7124) Add types to StreamToken and RoomStreamToken (#8279) Add a config option for validating 'next_link' parameters against a domain whitelist (#8275) Clean up types for PaginationConfig (#8250) Use the right constructor for log records (#8278) Fix `MultiWriterIdGenerator.current_position`. (#8257)
| * | Fix mypy error on develop (#8282)Erik Johnston2020-09-081-3/+6
| | |
| * | Add types to StreamToken and RoomStreamToken (#8279)Erik Johnston2020-09-081-3/+2
| | | | | | | | | The intention here is to change `StreamToken.room_key` to be a `RoomStreamToken` in a future PR, but that is a big enough change without this refactoring too.
| * | Clean up types for PaginationConfig (#8250)Erik Johnston2020-09-084-44/+27
| |/ | | | | This removes `SourcePaginationConfig` and `get_pagination_rows`. The reasoning behind this is that these generic classes/functions erased the types of the IDs it used (i.e. instead of passing around `StreamToken` it'd pass in e.g. `token.room_key`, which don't have uniform types).
* | Merge commit '17fa4c7ca' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-2025-32/+32
|\| | | | | | | | | | | | | | | * commit '17fa4c7ca': Catch up after Federation Outage (split, 2): Track last successful stream ordering after transmission (#8247) Catch-up after Federation Outage (split, 1) (#8230) Fix type signature in simple_select_one_onecol and friends (#8241) Stop sub-classing object (#8249)
| * Stop sub-classing object (#8249)Patrick Cloke2020-09-0425-32/+32
| |
* | Merge commit '9f8abdcc3' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-204-47/+32
|\| | | | | | | | | * commit '9f8abdcc3': Revert "Add experimental support for sharding event persister. (#8170)" (#8242)
| * Revert "Add experimental support for sharding event persister. (#8170)" (#8242)Brendan Abolivier2020-09-044-47/+32
| | | | | | | | | | | | | | * Revert "Add experimental support for sharding event persister. (#8170)" This reverts commit 82c1ee1c22a87b9e6e3179947014b0f11c0a1ac3. * Changelog
* | Merge commit 'be16ee59a' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-203-79/+106
|\| | | | | | | | | | | | | * commit 'be16ee59a': Add type hints to more handlers (#8244) Remove obsolete order field in `send_new_transaction` (#8245) Split fetching device keys and signatures into two transactions (#8233)
| * Add type hints to more handlers (#8244)Erik Johnston2020-09-033-79/+106
| |
* | Merge commit '208e1d3eb' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-202-10/+12
|\| | | | | | | | | | | | | | | | | | | * commit '208e1d3eb': Fix typing for `@cached` wrapped functions (#8240) Remove useless changelog about reverting a #8239. Revert pinning of setuptools (#8239) Fix typing for SyncHandler (#8237) wrap `_get_e2e_device_keys_and_signatures_txn` in a non-txn method (#8231) Add an overload for simple_select_one_onecol_txn. (#8235)
| * Fix typing for `@cached` wrapped functions (#8240)Erik Johnston2020-09-031-5/+5
| | | | | | This requires adding a mypy plugin to fiddle with the type signatures a bit.
| * Fix typing for SyncHandler (#8237)Erik Johnston2020-09-031-5/+7
| |
* | Merge commit '112266eaf' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-201-15/+18
|\| | | | | | | | | | | * commit '112266eaf': Add StreamStore to mypy (#8232) Re-implement unread counts (again) (#8059)
| * Re-implement unread counts (again) (#8059)Brendan Abolivier2020-09-021-15/+18
| |
* | Merge commit '0d4f614fd' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-204-32/+47
|\| | | | | | | | | | | | | | | | | * commit '0d4f614fd': Refactor `_get_e2e_device_keys_for_federation_query_txn` (#8225) Add experimental support for sharding event persister. (#8170) Add /user/{user_id}/shared_rooms/ api (#7785) Do not try to store invalid data in the stats table (#8226) Convert the main methods run by the reactor to async. (#8213)
| * Add experimental support for sharding event persister. (#8170)Erik Johnston2020-09-024-32/+47
| | | | | | | | | | | | This is *not* ready for production yet. Caveats: 1. We should write some tests... 2. The stream token that we use for events can get stalled at the minimum position of all writers. This means that new events may not be processed and e.g. sent down sync streams if a writer isn't writing or is slow.
* | Merge commit 'abeab964d' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-202-1/+13
|\| | | | | | | | | | | | | | | | | | | * commit 'abeab964d': Make _get_e2e_device_keys_and_signatures_txn return an attrs (#8224) Fix errors when updating the user directory with invalid data (#8223) Explain better what GDPR-erased means (#8189) Convert additional databases to async/await part 3 (#8201) Convert appservice code to async/await. (#8207) Rename `_get_e2e_device_keys_txn` (#8222)
| * Fix errors when updating the user directory with invalid data (#8223)Patrick Cloke2020-09-012-1/+13
| |
* | Merge commit '5bf8e5f55' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-204-23/+10
|\| | | | | | | | | | | | | | | | | | | | | * commit '5bf8e5f55': Convert the well known resolver to async (#8214) Convert additional databases to async/await part 2 (#8200) Make MultiWriterIDGenerator work for streams that use negative stream IDs (#8203) Do not install setuptools 50.0. (#8212) Move and rename `get_devices_with_keys_by_user` (#8204) Rename `get_e2e_device_keys` to better reflect its purpose (#8205) Add a comment about _LimitedHostnameResolver
| * Convert additional databases to async/await part 2 (#8200)Patrick Cloke2020-09-012-20/+5
| |
| * Move and rename `get_devices_with_keys_by_user` (#8204)Richard van der Hoff2020-09-011-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Move `get_devices_with_keys_by_user` to `EndToEndKeyWorkerStore` this seems a better fit for it. This commit simply moves the existing code: no other changes at all. * Rename `get_devices_with_keys_by_user` to better reflect what it does. * get_device_stream_token abstract method To avoid referencing fields which are declared in the derived classes, make `get_device_stream_token` abstract, and define that in the classes which define `_device_list_id_gen`.
| * Rename `get_e2e_device_keys` to better reflect its purpose (#8205)Richard van der Hoff2020-08-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | ... and to show that it does something slightly different to `_get_e2e_device_keys_txn`. `include_all_devices` and `include_deleted_devices` were never used (and `include_deleted_devices` was broken, since that would cause `None`s in the result which were not handled in the loop below. Add some typing too.
* | Merge commit 'd2ac767de' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-201-23/+26
|\| | | | | | | | | | | | | * commit 'd2ac767de': Convert ReadWriteLock to async/await. (#8202) Fix incorrect return signature Fix `wait_for_stream_position` for multiple waiters. (#8196)
| * Convert ReadWriteLock to async/await. (#8202)Patrick Cloke2020-08-281-23/+26
| |
* | Merge commit 'aec708517' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-202-1/+4
|\| | | | | | | | | | | * commit 'aec708517': Convert state and stream stores and related code to async (#8194) Ensure that the OpenID Connect remote ID is a string. (#8190)
| * Convert state and stream stores and related code to async (#8194)Patrick Cloke2020-08-281-1/+1
| |
| * Ensure that the OpenID Connect remote ID is a string. (#8190)Patrick Cloke2020-08-281-0/+3
| |
* | Merge commit '5c03134d0' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-204-12/+108
|\| | | | | | | | | | | | | * commit '5c03134d0': Convert additional database code to async/await. (#8195) Define StateMap as immutable and add a MutableStateMap type. (#8183) Move and refactor LoginRestServlet helper methods (#8182)
| * Convert additional database code to async/await. (#8195)Patrick Cloke2020-08-281-2/+2
| |
| * Define StateMap as immutable and add a MutableStateMap type. (#8183)Patrick Cloke2020-08-283-9/+19
| |
| * Move and refactor LoginRestServlet helper methods (#8182)Andrew Morgan2020-08-281-1/+87
| | | | | | | | | | | | | | This is split out from https://github.com/matrix-org/synapse/pull/7438, which had gotten rather large. `LoginRestServlet` has a couple helper methods, `login_submission_legacy_convert` and `login_id_thirdparty_from_phone`. They're primarily used for converting legacy user login submissions to "identifier" dicts ([see spec](https://matrix.org/docs/spec/client_server/r0.6.1#post-matrix-client-r0-login)). Identifying information such as usernames or 3PID information used to be top-level in the login body. They're now supposed to be put inside an [identifier](https://matrix.org/docs/spec/client_server/r0.6.1#identifier-types) parameter instead. #7438's purpose is to allow using the new identifier parameter during User-Interactive Authentication, which is currently handled in AuthHandler. That's why I've moved these helper methods there. I also moved the refactoring of these method from #7438 as they're relevant.
* | Merge commit '4a739c73b' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-201-4/+2
|\| | | | | | | | | * commit '4a739c73b': Convert simple_update* and simple_select* to async (#8173)
| * Convert simple_update* and simple_select* to async (#8173)Patrick Cloke2020-08-271-4/+2
| |
* | Merge commit 'a466b6797' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-204-44/+74
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'a466b6797': Reduce run-times of tests by advancing the reactor less (#7757) Update debian systemd service to use Type=notify (#8169) Remove remaining is_guest argument uses from get_room_data calls (#8181) Do not propagate typing notifications from shadow-banned users. (#8176) Remove unused parameter from, and add safeguard in, get_room_data (#8174) Add required Debian dependencies to allow docker builds on the arm platform (#8144) Allow running mypy directly. (#8175) Update the test federation client to handle streaming responses (#8130) Do not propagate profile changes of shadow-banned users into rooms. (#8157) Make SlavedIdTracker.advance have same interface as MultiWriterIDGenerator (#8171) Convert simple_select_one and simple_select_one_onecol to async (#8162)
| * Do not propagate typing notifications from shadow-banned users. (#8176)Patrick Cloke2020-08-261-5/+16
| |
| * Remove unused parameter from, and add safeguard in, get_room_data (#8174)Andrew Morgan2020-08-261-8/+12
| | | | | | | | | | | | Small cleanup PR. * Removed the unused `is_guest` argument * Added a safeguard to a (currently) impossible code path, fixing static checking at the same time.
| * Do not propagate profile changes of shadow-banned users into rooms. (#8157)Patrick Cloke2020-08-262-3/+16
| |
* | Merge commit '56efa9ec7' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-2013-43/+274
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '56efa9ec7': (22 commits) Fix rate limiting unit tests. (#8167) Add functions to `MultiWriterIdGen` used by events stream (#8164) Do not allow send_nonmember_event to be called with shadow-banned users. (#8158) Changelog fixes Make StreamIdGen `get_next` and `get_next_mult` async (#8161) Wording fixes to 'name' user admin api filter (#8163) Fix missing double-backtick in RST document Search in columns 'name' and 'displayname' in the admin users endpoint (#7377) Add type hints for state. (#8140) Stop shadow-banned users from sending non-member events. (#8142) Allow capping a room's retention policy (#8104) Add healthcheck for default localhost 8008 port on /health endpoint. (#8147) Fix flaky shadow-ban tests. (#8152) Don't fail /submit_token requests on incorrect session ID if request_token_inhibit_3pid_errors is turned on (#7991) Do not apply ratelimiting on joins to appservices (#8139) Micro-optimisations to get_auth_chain_ids (#8132) Allow denying or shadow banning registrations via the spam checker (#8034) Stop shadow-banned users from sending invites. (#8095) Be more tolerant of membership events in unknown rooms (#8110) Improve the error code when trying to register using a name reserved for guests. (#8135) ...
| * Do not allow send_nonmember_event to be called with shadow-banned users. (#8158)Patrick Cloke2020-08-251-5/+34
| |
| * Merge tag 'v1.19.1rc1' into developBrendan Abolivier2020-08-251-21/+25
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Synapse 1.19.1rc1 (2020-08-25) ============================== Bugfixes -------- - Fix a bug introduced in v1.19.0 where appservices with ratelimiting disabled would still be ratelimited when joining rooms. ([\#8139](https://github.com/matrix-org/synapse/issues/8139)) - Fix a bug introduced in v1.19.0 that would cause e.g. profile updates to fail due to incorrect application of rate limits on join requests. ([\#8153](https://github.com/matrix-org/synapse/issues/8153))
| * | Add type hints for state. (#8140)Patrick Cloke2020-08-243-15/+21
| | |
| * | Stop shadow-banned users from sending non-member events. (#8142)Patrick Cloke2020-08-243-1/+34
| | |
| * | Allow capping a room's retention policy (#8104)Brendan Abolivier2020-08-241-7/+29
| | |
| * | Do not apply ratelimiting on joins to appservices (#8139)Will Hunt2020-08-211-6/+8
| | | | | | | | | | | | | | | | | | Add new method ratelimiter.can_requester_do_action and ensure that appservices are exempt from being ratelimited. Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com> Co-authored-by: Erik Johnston <erik@matrix.org>
| * | Allow denying or shadow banning registrations via the spam checker (#8034)Patrick Cloke2020-08-205-8/+76
| | |
| * | Stop shadow-banned users from sending invites. (#8095)Patrick Cloke2020-08-202-4/+74
| | |
| * | Improve the error code when trying to register using a name reserved for ↵Patrick Cloke2020-08-201-1/+3
| | | | | | | | | | | | guests. (#8135)
| * | Use the JSON encoder without whitespace in more places. (#8124)Patrick Cloke2020-08-201-3/+2
| | |
* | | Merge commit 'b79d69796' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-201-21/+25
|\ \ \ | | |/ | |/| | | | | | | | | | * commit 'b79d69796': 1.19.1rc1 Fix join ratelimiter breaking profile updates and idempotency (#8153)
| * | Fix join ratelimiter breaking profile updates and idempotency (#8153)Brendan Abolivier2020-08-241-21/+25
| | |
* | | Merge commit '2df82ae45' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-201-6/+8
|\| | | | | | | | | | | | | | * commit '2df82ae45': Do not apply ratelimiting on joins to appservices (#8139)
| * | Do not apply ratelimiting on joins to appservices (#8139)Will Hunt2020-08-241-6/+8
| | | | | | | | | | | | | | | | | | Add new method ratelimiter.can_requester_do_action and ensure that appservices are exempt from being ratelimited. Co-authored-by: Patrick Cloke <clokep@users.noreply.github.com> Co-authored-by: Erik Johnston <erik@matrix.org>
* | | Merge commit 'c9c544cda' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-198-52/+45
|\ \ \ | | |/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'c9c544cda': Remove `ChainedIdGenerator`. (#8123) Switch the JSON byte producer from a pull to a push producer. (#8116) Updated docs: Added note about missing 308 redirect support. (#8120) Be stricter about JSON that is accepted by Synapse (#8106) Convert runWithConnection to async. (#8121) Remove the unused inlineCallbacks code-paths in the caching code (#8119) Separate `get_current_token` into two. (#8113) Convert events worker database to async/await. (#8071) Add a link to the matrix-synapse-rest-password-provider. (#8111)
| * | Be stricter about JSON that is accepted by Synapse (#8106)Patrick Cloke2020-08-195-15/+14
| | |
| * | Convert events worker database to async/await. (#8071)Patrick Cloke2020-08-183-15/+9
| | |
* | | Merge commit '3c01724b3' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-191-10/+15
|\| | | | | | | | | | | | | | | | | | | | | | | | | | * commit '3c01724b3': Fix the return type of send_nonmember_events. (#8112) Remove : from allowed client_secret chars (#8101) Rename changelog from bugfix to misc. Iteratively encode JSON responses to avoid blocking the reactor. (#8013) Return the previous stream token if a non-member event is a duplicate. (#8093)
| * | Fix the return type of send_nonmember_events. (#8112)Patrick Cloke2020-08-181-1/+1
| | |
| * | Return the previous stream token if a non-member event is a duplicate. (#8093)Patrick Cloke2020-08-181-10/+15
| | |
* | | Merge commit 'e04e465b4' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-195-29/+18
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'e04e465b4': Use the default templates when a custom template file cannot be found (#8037) Changelog changes Convert stream database to async/await. (#8074) Add a shadow-banned flag to users. (#8092) Convert pusher databases to async/await. (#8075) Convert receipts and events databases to async/await. (#8076)
| * | Use the default templates when a custom template file cannot be found (#8037)Andrew Morgan2020-08-173-28/+9
| | | | | | | | | Fixes https://github.com/matrix-org/synapse/issues/6583
| * | Convert stream database to async/await. (#8074)Patrick Cloke2020-08-171-1/+1
| | |
| * | Add a shadow-banned flag to users. (#8092)Patrick Cloke2020-08-141-0/+8
| | |
* | | Merge commit 'dc22090a6' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-191-38/+66
|\| | | | | | | | | | | | | | | | | | | | | | | * commit 'dc22090a6': Add type hints to synapse.handlers.room (#8090) Remove some unused database functions. (#8085) Convert misc database code to async (#8087) Remove a space at the start of a changelog entry.
| * | Add type hints to synapse.handlers.room (#8090)Erik Johnston2020-08-141-38/+66
| | |
* | | Merge commit '53834bb9c' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-191-3/+1
|\| | | | | | | | | | | | | | * commit '53834bb9c': Run `remove_push_actions_from_staging` in foreground (#8081)
| * | Run `remove_push_actions_from_staging` in foreground (#8081)Richard van der Hoff2020-08-131-3/+1
| |/ | | | | | | | | | | | | If we got an error persisting an event, we would try to remove the push actions asynchronously, which would lead to a 'Re-starting finished log context' warning. I don't think there's any need for this to be asynchronous.
* | Merge commit '5dd73d029' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-192-13/+21
|\| | | | | | | | | * commit '5dd73d029': Add type hints to handlers.message and events.builder (#8067)
| * Add type hints to handlers.message and events.builder (#8067)Erik Johnston2020-08-122-13/+21
| |
* | Merge commit '9d1e4942a' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-191-3/+5
|\| | | | | | | | | | | | | | | | | * commit '9d1e4942a': Fix typing for notifier (#8064) Add comment explaining cast Handle optional dependencies for Oidc and Saml Newsfile Change HomeServer definition to work with typing.
| * Merge remote-tracking branch 'origin/develop' into erikj/type_serverErik Johnston2020-08-112-10/+36
| |\
| * | Change HomeServer definition to work with typing.Erik Johnston2020-08-111-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Duplicating function signatures between server.py and server.pyi is silly. This commit changes that by changing all `build_*` methods to `get_*` methods and changing the `_make_dependency_method` to work work as a descriptor that caches the produced value. There are some changes in other files that were made to fix the typing in server.py.
* | | Merge commit 'a0acdfa9e' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-191-11/+13
|\ \ \ | | |/ | |/| | | | | | | * commit 'a0acdfa9e': Converts event_federation and registration databases to async/await (#8061)
* | | Merge commit 'a1e9bb9ea' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-191-4/+0
|\| | | | | | | | | | | | | | * commit 'a1e9bb9ea': Add typing info to Notifier (#8058)
| * | Add typing info to Notifier (#8058)Erik Johnston2020-08-111-4/+0
| | |
* | | Merge commit 'db131b6b2' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-192-6/+45
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'db131b6b2': Change the default log config to reduce disk I/O and storage (#8040) Implement login blocking based on SAML attributes (#8052) Add an assertion on prev_events in create_new_client_event (#8041) Typo Lint why mypy why Lint Incorporate review Incorporate review Fix PUT /pushrules to use the right rule IDs Back out the database hack and replace it with a temporary config setting Fix cache name Fix cache invalidation calls Lint Changelog Implement new experimental push rules with a database hack to enable them
| * | Implement login blocking based on SAML attributes (#8052)Richard van der Hoff2020-08-111-6/+36
| |/ | | | | | | | | | | | | Hopefully this mostly speaks for itself. I also did a bit of cleaning up of the error handling. Fixes #8047
| * Add an assertion on prev_events in create_new_client_event (#8041)Richard van der Hoff2020-08-101-0/+9
| | | | | | | | | | | | I think this would have caught all the cases in https://github.com/matrix-org/synapse/issues/7642 - and I think a 500 makes more sense here than a 403
* | Merge commit '2ffd6783c' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-191-6/+0
|\| | | | | | | | | * commit '2ffd6783c': Revert #7736 (#8039)
| * Revert #7736 (#8039)Brendan Abolivier2020-08-061-6/+0
| |
* | Merge commit 'd4a7829b1' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-192-2/+2
|\| | | | | | | | | * commit 'd4a7829b1': Convert synapse.api to async/await (#8031)
| * Convert synapse.api to async/await (#8031)Patrick Cloke2020-08-062-2/+2
| |
* | Merge commit 'c36228c40' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-191-1/+1
|\| | | | | | | | | * commit 'c36228c40': Convert run_as_background_process inner function to async. (#8032)
| * Convert run_as_background_process inner function to async. (#8032)Patrick Cloke2020-08-061-1/+1
| |
* | Merge commit '66f24449d' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-191-7/+12
|\| | | | | | | | | * commit '66f24449d': Improve performance of the register endpoint (#8009)
| * Improve performance of the register endpoint (#8009)Patrick Cloke2020-08-061-7/+12
| |
* | Merge commit 'a7bdf98d0' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-163-4/+4
|\| | | | | | | | | * commit 'a7bdf98d0': Rename database classes to make some sense (#8033)
| * Rename database classes to make some sense (#8033)Erik Johnston2020-08-053-4/+4
| |
* | Merge commit 'e19de43eb' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-165-10/+10
|\| | | | | | | | | * commit 'e19de43eb': Convert streams to async. (#8014)
| * Convert streams to async. (#8014)Patrick Cloke2020-08-045-10/+10
| |
* | Merge commit '481f76c7a' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-161-31/+3
|\| | | | | | | | | * commit '481f76c7a': Remove signature check on v1 identity server lookups (#8001)
| * Remove signature check on v1 identity server lookups (#8001)Andrew Morgan2020-08-031-31/+3
| | | | | | | | | | | | | | We've [decided](https://github.com/matrix-org/synapse/issues/5253#issuecomment-665976308) to remove the signature check for v1 lookups. The signature check has been removed in v2 lookups. v1 lookups are currently deprecated. As mentioned in the above linked issue, this verification was causing deployments for the vector.im and matrix.org IS deployments, and this change is the simplest solution, without being unjustified. Implementations are encouraged to use the v2 lookup API as it has [increased privacy benefits](https://github.com/matrix-org/matrix-doc/pull/2134).
* | Merge commit '5d92a1428' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-161-1/+1
|\| | | | | | | | | * commit '5d92a1428': Prevent join->join membership transitions changing member count (#7977)
| * Prevent join->join membership transitions changing member count (#7977)Andrew Morgan2020-08-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | `StatsHandler` handles updates to the `current_state_delta_stream`, and updates room stats such as the amount of state events, joined users, etc. However, it counts every new join membership as a new user entering a room (and that user being in another room), whereas it's possible for a user's membership status to go from join -> join, for instance when they change their per-room profile information. This PR adds a check for join->join membership transitions, and bails out early, as none of the further checks are necessary at that point. Due to this bug, membership stats in many rooms have ended up being wildly larger than their true values. I am not sure if we also want to include a migration step which recalculates these statistics (possibly using the `_populate_stats_process_rooms` bg update). Bug introduced in the initial implementation https://github.com/matrix-org/synapse/pull/4338.
* | Merge commit '3b415e23a' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-161-1/+1
|\| | | | | | | | | * commit '3b415e23a': Convert replication code to async/await. (#7987)
| * Convert replication code to async/await. (#7987)Patrick Cloke2020-08-031-1/+1
| |
* | Merge commit 'db5970ac6' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-161-7/+4
|\| | | | | | | | | * commit 'db5970ac6': Convert ACME code to async/await. (#7989)
| * Convert ACME code to async/await. (#7989)Patrick Cloke2020-08-031-7/+4
| |
* | Merge commit '394be6a0e' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-161-2/+35
|\| | | | | | | | | | | | | * commit '394be6a0e': Newsfile Add ratelimiting on joins Add docs for undoing room shutdowns (#7998)
| * Merge branch 'develop' of github.com:matrix-org/synapse into ↵Erik Johnston2020-07-316-37/+56
| |\ | | | | | | | | | erikj/add_rate_limiting_to_joins
| * | Add ratelimiting on joinsErik Johnston2020-07-311-2/+35
| | |
* | | Merge commit '0a7fb2471' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-161-8/+21
|\ \ \ | | |/ | |/| | | | | | | * commit '0a7fb2471': Fix invite rejection when we have no forward-extremeties (#7980)
| * | Fix invite rejection when we have no forward-extremeties (#7980)Richard van der Hoff2020-07-301-8/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Thanks to some slightly overzealous cleanup in the `delete_old_current_state_events`, it's possible to end up with no `event_forward_extremities` in a room where we have outstanding local invites. The user would then get a "no create event in auth events" when trying to reject the invite. We can hack around it by using the dangling invite as the prev event.
* | | Merge commit 'c978f6c45' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-161-21/+14
|\| | | | | | | | | | | | | | * commit 'c978f6c45': Convert federation client to async/await. (#7975)
| * | Convert federation client to async/await. (#7975)Patrick Cloke2020-07-301-21/+14
| | |
* | | Merge commit '4cce8ef74' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-161-5/+5
|\| | | | | | | | | | | | | | * commit '4cce8ef74': Convert appservice to async. (#7973)
| * | Convert appservice to async. (#7973)Patrick Cloke2020-07-301-5/+5
| | |
* | | Merge commit '3950ae51e' into anoa/dinsic_release_1_21_xAndrew Morgan2020-10-164-3/+16
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '3950ae51e': Ensure that remove_pusher is always async (#7981) Ensure the msg property of HttpResponseException is a string. (#7979) Remove from the event_relations table when purging historical events. (#7978) Add additional logging for SAML sessions. (#7971) Add MSC reference to changelog for #7736 Re-implement unread counts (#7736) Various improvements to the docs (#7899) Convert storage layer to async/await. (#7963) Add an option to disable purge in delete room admin API (#7964) Move some log lines from default logger to sql/transaction loggers (#7952) Use the JSON module from the std library instead of simplejson. (#7936) Fix exit code for `check_line_terminators.sh` (#7970) Option to allow server admins to join complex rooms (#7902) Fix typo in metrics docs (#7966) Add script for finding files with unix line terminators (#7965) Convert the remaining media repo code to async / await. (#7947) Convert a synapse.events to async/await. (#7949) Convert groups and visibility code to async / await. (#7951) Convert push to async/await. (#7948)
| * | Add additional logging for SAML sessions. (#7971)Patrick Cloke2020-07-291-0/+3
| | |
| * | Re-implement unread counts (#7736)Brendan Abolivier2020-07-291-0/+6
| | |
| * | Option to allow server admins to join complex rooms (#7902)lugino-emeritus2020-07-281-2/+6
| | | | | | | | | | | | | | | Fixes #7901. Signed-off-by: Niklas Tittjung <nik_t.01@web.de>
| * | Convert a synapse.events to async/await. (#7949)Patrick Cloke2020-07-271-1/+1
| |/
* | Remember mappings when we bind a 3pid using the internal sydent bind API (#66)Andrew Morgan2020-10-141-0/+9
| | | | | | | | | | | | | | https://github.com/matrix-org/synapse-dinsic/pull/51 added an option that would automatically bind a user's threepid to a configured identity server after they had registered. Unfortunately, when you bind threepids, ideally you would store that mapping in the database so that later on you can remove those mappings when you deactivate an account. We found that due the fact that we did not store these mappings, threepids were not unbound upon user account deactivation. This PR fixes the issue by creating the mappings again, meaning they will again be removed upon account deactivation.
* | Allow modules to create and send events into rooms (#8479)Andrew Morgan2020-10-121-1/+4
| | | | | | | | | | | | | | | | This PR allows Synapse modules making use of the `ModuleApi` to create and send non-membership events into a room. This can useful to have modules send messages, or change power levels in a room etc. Note that they must send event through a user that's already in the room. The non-membership event limitation is currently arbitrary, as it's another chunk of work and not necessary at the moment. This commit has been cherry-picked from mainline.
* | Make AccessRules use the public rooms directory instead of checking a room's ↵Andrew Morgan2020-09-182-0/+19
| | | | | | | | | | | | | | join rules on rule change (#63) This PR switches several conditions regarding room access rules to check against the status of the room's inclusion in the public room list instead of its join rules. The code includes a snapshot of https://github.com/matrix-org/synapse/pull/8292, which will likely change in time and need merging in again.
* | dinsic lintAndrew Morgan2020-08-032-2/+2
| | | | | | | | linting after the v1.18.0 mainline merge
* | Merge commit 'f88c48f3b' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-0311-223/+230
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'f88c48f3b': 1.18.0rc1 Fix error reporting when using `opentracing.trace` (#7961) Fix typing replication not being handled on master (#7959) Remove hacky error handling for inlineDeferreds. (#7950) Convert tests/rest/admin/test_room.py to unix file endings (#7953) Support oEmbed for media previews. (#7920) Convert state resolution to async/await (#7942) Fix up types and comments that refer to Deferreds. (#7945) Do not convert async functions to Deferreds in the interactive_auth_handler (#7944) Convert more of the media code to async/await (#7873) Return an empty body for OPTIONS requests. (#7886) Downgrade warning on client disconnect to INFO (#7928) Convert presence handler helpers to async/await. (#7939) Update the auth providers to be async. (#7935) Put a cache on `/state_ids` (#7931)
| * Remove hacky error handling for inlineDeferreds. (#7950)Patrick Cloke2020-07-272-21/+12
| |
| * Convert state resolution to async/await (#7942)Patrick Cloke2020-07-241-2/+2
| |
| * Fix up types and comments that refer to Deferreds. (#7945)Patrick Cloke2020-07-247-157/+172
| |
| * Convert presence handler helpers to async/await. (#7939)Patrick Cloke2020-07-231-23/+20
| |
| * Update the auth providers to be async. (#7935)Patrick Cloke2020-07-232-19/+23
| |
* | Merge commit '13d77464c' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-031-4/+18
|\| | | | | | | | | * commit '13d77464c': Follow-up to admin API to re-activate accounts (#7908)
| * Follow-up to admin API to re-activate accounts (#7908)Patrick Cloke2020-07-221-4/+18
| |
* | Merge commit 'cc9bb3dc3' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-031-136/+152
|\| | | | | | | | | * commit 'cc9bb3dc3': Convert the message handler to async/await. (#7884)
| * Convert the message handler to async/await. (#7884)Patrick Cloke2020-07-221-136/+152
| |
* | Merge commit 'b74919c72' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-031-2/+15
|\| | | | | | | | | * commit 'b74919c72': Add debugging to sync response generation (#7929)
| * Add debugging to sync response generation (#7929)Richard van der Hoff2020-07-221-2/+15
| |
* | Merge commit 'de119063f' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-039-309/+366
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'de119063f': (31 commits) Convert room list handler to async/await. (#7912) Element CSS and logo in email templates (#7919) Lint the contrib/ directory in CI and linting scripts, add synctl to linting script (#7914) Remove unused code from synapse.logging.utils. (#7897) Fix a typo in the sample config. (#7890) Fix deprecation warning: import ABC from collections.abc (#7892) Change sample config's postgres user to synapse_user (#7889) Fix deprecation warning due to invalid escape sequences (#7895) Remove Ubuntu Eoan that is now EOL (#7888) Fix the trace function for async functions. (#7872) Add help for creating a user via docker (#7885) Switch to Debian:Slim from Alpine for the docker image (#7839) Stop using 'device_max_stream_id' (#7882) Fix TypeError in synapse.notifier (#7880) Add a default limit (of 100) to get/sync operations. (#7858) Change "unknown room ver" logging to warning. (#7881) Convert device handler to async/await (#7871) Convert synapse.app to async/await. (#7868) Convert _base, profile, and _receipts handlers to async/await (#7860) Add admin endpoint to get members in a room. (#7842) ...
| * Convert room list handler to async/await. (#7912)Patrick Cloke2020-07-211-33/+29
| |
| * Fix deprecation warning: import ABC from collections.abc (#7892)Karthikeyan Singaravelan2020-07-201-1/+1
| |
| * Fix TypeError in synapse.notifier (#7880)Erik Johnston2020-07-171-0/+8
| | | | | | Fixes #7774
| * Convert device handler to async/await (#7871)Patrick Cloke2020-07-171-136/+105
| |
| * Convert _base, profile, and _receipts handlers to async/await (#7860)Patrick Cloke2020-07-174-53/+41
| |
| * Reject attempts to join empty rooms over federation (#7859)Richard van der Hoff2020-07-161-2/+13
| | | | | | | | | | | | We shouldn't allow others to make_join through us if we've left the room; reject such attempts with a 404. Fixes #7835. Fixes #6958.
| * Allow moving typing off master (#7869)Erik Johnston2020-07-161-74/+167
| |
| * Merge pull request #7866 from matrix-org/rav/fix_guest_user_idRichard van der Hoff2020-07-161-21/+1
| |\ | | | | | | Fix guest user registration with lots of client readers
| | * Use a postgres sequence to generate guest user IDsRichard van der Hoff2020-07-161-21/+1
| | |
* | | Merge commit 'a973bcb8a' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-036-153/+134
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit 'a973bcb8a': Add some tiny type annotations (#7870) Remove obsolete comment. Ensure that calls to `json.dumps` are compatible with the standard library json. (#7836) Avoid brand new rooms in `delete_old_current_state_events` (#7854) Allow accounts to be re-activated from the admin APIs. (#7847) Fix tests Fix typo Newsfile Use get_users_in_room rather than state handler in typing for speed Fix client reader sharding tests (#7853) Convert E2E key and room key handlers to async/await. (#7851) Return the proper 403 Forbidden error during errors with JWT logins. (#7844) remove `retry_on_integrity_error` wrapper for persist_events (#7848)
| * | Add some tiny type annotations (#7870)Richard van der Hoff2020-07-161-6/+4
| | | | | | | | | I found these made pycharm have more of a clue as to what was going on in other places.
| * | Ensure that calls to `json.dumps` are compatible with the standard library ↵Patrick Cloke2020-07-151-1/+2
| | | | | | | | | | | | json. (#7836)
| * | Merge branch 'erikj/faster_typing' of github.com:matrix-org/synapse into developErik Johnston2020-07-151-2/+2
| |\ \ | | |/ | |/|
| | * Fix typoErik Johnston2020-07-151-1/+1
| | |
| | * Use get_users_in_room rather than state handler in typing for speedErik Johnston2020-07-151-2/+2
| | |
| * | Allow accounts to be re-activated from the admin APIs. (#7847)Patrick Cloke2020-07-151-20/+28
| |/
| * Convert E2E key and room key handlers to async/await. (#7851)Patrick Cloke2020-07-152-124/+98
| |
* | Merge commit '491f0dab1' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-031-2/+206
|\| | | | | | | | | * commit '491f0dab1': Add delete room admin endpoint (#7613)
| * Add delete room admin endpoint (#7613)Dirk Klimpel2020-07-141-2/+206
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Delete Room admin API allows server admins to remove rooms from server and block these rooms. `DELETE /_synapse/admin/v1/rooms/<room_id>` It is a combination and improvement of "[Shutdown room](https://github.com/matrix-org/synapse/blob/develop/docs/admin_api/shutdown_room.md)" and "[Purge room](https://github.com/matrix-org/synapse/blob/develop/docs/admin_api/purge_room.md)" API. Fixes: #6425 It also fixes a bug in [synapse/storage/data_stores/main/room.py](synapse/storage/data_stores/main/room.py) in ` get_room_with_stats`. It should return `None` if the room is unknown. But it returns an `IndexError`. https://github.com/matrix-org/synapse/blob/901b1fa561e3cc661d78aa96d59802cf2078cb0d/synapse/storage/data_stores/main/room.py#L99-L105 Related to: - #5575 - https://github.com/Awesome-Technologies/synapse-admin/issues/17 Signed-off-by: Dirk Klimpel dirk@klimpel.org
* | Merge commit '457096e6d' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-031-1/+2
|\| | | | | | | | | * commit '457096e6d': Support handling registration requests across multiple client readers. (#7830)
| * Support handling registration requests across multiple client readers. (#7830)Patrick Cloke2020-07-131-1/+2
| |
* | Merge commit '66a4af8d9' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-031-1/+1
|\| | | | | | | | | * commit '66a4af8d9': Do not use canonicaljson to magically handle decoding bytes from JSON. (#7802)
| * Do not use canonicaljson to magically handle decoding bytes from JSON. (#7802)Patrick Cloke2020-07-101-1/+1
| |
* | Merge commit 'f1245dc3c' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-031-8/+19
|\| | | | | | | | | * commit 'f1245dc3c': Fix resync remote devices on receive PDU in worker mode. (#7815)
| * Fix resync remote devices on receive PDU in worker mode. (#7815)Erik Johnston2020-07-101-8/+19
| | | | | | | | | | | | The replication client requires that arguments are given as keyword arguments, which was not done in this case. We also pull out the logic so that we can catch and handle any exceptions raised, rather than leaving them unhandled.
* | Merge commit 'e29c44340' into anoa/dinsic_release_1_18_xAndrew Morgan2020-08-031-12/+37
|\| | | | | | | | | * commit 'e29c44340': Fix recursion error when fetching auth chain over federation (#7817)
| * Fix recursion error when fetching auth chain over federation (#7817)Erik Johnston2020-07-101-12/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When fetching the state of a room over federation we receive the event IDs of the state and auth chain. We then fetch those events that we don't already have. However, we used a function that recursively fetched any missing auth events for the fetched events, which can lead to a lot of recursion if the server is missing most of the auth chain. This work is entirely pointless because would have queued up the missing events in the auth chain to be fetched already. Let's just diable the recursion, since it only gets called from one place anyway.
* | Merge commit '43726783e' into dinsicAndrew Morgan2020-08-0310-131/+204
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '43726783e': (22 commits) 1.17.0rc1 Fix some spelling mistakes / typos. (#7811) `update_membership` declaration: now always returns an event id. (#7809) Improve stacktraces from exceptions in background processes (#7808) Fix `can only concatenate list (not "tuple") to list` exception (#7810) Pass original request headers from workers to the main process. (#7797) Generate real events when we reject invites (#7804) Add `HomeServer.signing_key` property (#7805) Revert "Update the installation docs on apt-transport-https (#7801)" Do not use simplejson in Synapse. (#7800) Stop passing bytes when dumping JSON (#7799) Update the installation docs on apt-transport-https (#7801) shuffle changelog slightly Change Caddy links (old is deprecated) (#7789) Stop populating unused table `local_invites`. (#7793) Refactor getting replication updates from database v2. (#7740) Add libwebp dependency to Dockerfile (#7791) Add documentation for JWT login type and improve sample config. (#7776) Convert the appservice handler to async/await. (#7775) Don't ignore `set_tweak` actions with no explicit `value`. (#7766) ...
| * `update_membership` declaration: now always returns an event id. (#7809)Richard van der Hoff2020-07-092-5/+5
| |
| * Fix `can only concatenate list (not "tuple") to list` exception (#7810)Richard van der Hoff2020-07-091-1/+1
| | | | | | It seems auth_events can be either a list or a tuple, depending on Things.
| * Generate real events when we reject invites (#7804)Richard van der Hoff2020-07-093-76/+158
| | | | | | | | | | | | | | | | Fixes #2181. The basic premise is that, when we fail to reject an invite via the remote server, we can generate our own out-of-band leave event and persist it as an outlier, so that we have something to send to the client.
| * Add `HomeServer.signing_key` property (#7805)Richard van der Hoff2020-07-082-2/+2
| | | | | | ... instead of duplicating `config.signing_key[0]` everywhere
| * Stop passing bytes when dumping JSON (#7799)Patrick Cloke2020-07-081-2/+2
| |
| * Refactor getting replication updates from database v2. (#7740)Erik Johnston2020-07-071-0/+3
| |
| * Convert the appservice handler to async/await. (#7775)Patrick Cloke2020-07-061-42/+32
| |
| * isort 5 compatibility (#7786)Will Hunt2020-07-052-4/+2
| | | | | | The CI appears to use the latest version of isort, which is a problem when isort gets a major version bump. Rather than try to pin the version, I've done the necessary to make isort5 happy with synapse.
* | Merge commit '5cdca53aa' into dinsicAndrew Morgan2020-08-033-84/+89
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '5cdca53aa': Merge different Resource implementation classes (#7732) Fix inconsistent handling of upper and lower cases of email addresses. (#7021) Allow YAML config file to contain None (#7779) Fix a typo. Move 1.15.2 after 1.16.0rc2. 1.16.0rc2 Remove an extraneous space. Add links to the fixes. Fix tense in the release notes. Hack to add push priority to push notifications (#7765) Add early returns to `_check_for_soft_fail` (#7769) Use symbolic names for replication stream names (#7768) Type checking for `FederationHandler` (#7770) Fix new metric where we used ms instead of seconds (#7771) Fix incorrect error message when database CTYPE was set incorrectly. (#7760) Pin link in CHANGES.md Fixes to CHANGES.md
| * Fix inconsistent handling of upper and lower cases of email addresses. (#7021)Dirk Klimpel2020-07-031-2/+3
| | | | | | fixes #7016
| * Merge tag 'v1.16.0rc2' into developPatrick Cloke2020-07-021-1/+1
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Synapse 1.16.0rc2 (2020-07-02) ============================== Synapse 1.16.0rc2 includes the security fixes released with Synapse 1.15.2. Please see [below](https://github.com/matrix-org/synapse/blob/master/CHANGES.md#synapse-1152-2020-07-02) for more details. Improved Documentation ---------------------- - Update postgres image in example `docker-compose.yaml` to tag `12-alpine`. ([\#7696](https://github.com/matrix-org/synapse/issues/7696)) Internal Changes ---------------- - Add some metrics for inbound and outbound federation latencies: `synapse_federation_server_pdu_process_time` and `synapse_event_processing_lag_by_event`. ([\#7771](https://github.com/matrix-org/synapse/issues/7771))
| | * Merge branch 'master' into release-v1.16.0Patrick Cloke2020-07-023-35/+14
| | |\
| | * | Fix new metric where we used ms instead of seconds (#7771)Erik Johnston2020-07-011-1/+1
| | | | | | | | | | | | | | | | Introduced in #7755, not yet released.