summary refs log tree commit diff
path: root/synapse/events/utils.py (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Convert stringy power levels to integers on room upgrade (#12657)David Robertson2022-05-071-16/+45
|
* Include bundled aggregations for the latest event in a thread. (#12273)Patrick Cloke2022-05-041-22/+33
| | | | | | The `latest_event` field of the bundled aggregations for `m.thread` relations did not include bundled aggregations itself. This resulted in clients needing to immediately request the event from the server (and thus making it useless that the latest event itself was serialized instead of just including an event ID).
* Consistently use collections.abc.Mapping to check frozendict. (#12564)Patrick Cloke2022-04-271-3/+4
|
* Misc. clean-ups to the relations code (#12519)Patrick Cloke2022-04-251-1/+1
| | | | | * Corrects some typos / copy & paste errors in tests. * Clarifies docstrings. * Removes an unnecessary method.
* Fix `/room/.../event/...` to return the *original* event after any edits ↵Richard van der Hoff2022-04-191-8/+13
| | | | | | (#12476) This is what the MSC (now) requires. Fixes https://github.com/matrix-org/synapse/issues/10310.
* Remove references to unstable identifiers from MSC3440. (#12382)Patrick Cloke2022-04-121-6/+0
| | | | | Removes references to unstable thread relation, unstable identifiers for filtering parameters, and the experimental config flag.
* Bump `black` and `click` versions (#12320)David Robertson2022-03-291-1/+1
|
* Move get_bundled_aggregations to relations handler. (#12237)Patrick Cloke2022-03-181-1/+1
| | | | | The get_bundled_aggregations code is fairly high-level and uses a lot of store methods, we move it into the handler as that seems like a better fit.
* Fix bundling aggregations if unsigned is not a returned event field. (#12234)Patrick Cloke2022-03-161-3/+6
| | | | | | | An error occured if a filter was supplied with `event_fields` which did not include `unsigned`. In that case, bundled aggregations are still added as the spec states it is allowed for servers to add additional fields.
* Support stable identifiers for MSC3440: Threading (#12151)Patrick Cloke2022-03-101-1/+8
| | | | The unstable identifiers are still supported if the experimental configuration flag is enabled. The unstable identifiers will be removed in a future release.
* Use the proper serialization format when bundling aggregations. (#12090)Patrick Cloke2022-03-031-27/+54
| | | | This ensures that the `latest_event` field of the bundled aggregation for threads uses the same format as the other events in the response.
* Fix incorrect thread summaries when the latest event is edited. (#11992)Patrick Cloke2022-02-151-24/+45
| | | | | If the latest event in a thread was edited than the original event content was included in bundled aggregation for threads instead of the edited event content.
* Improvements to bundling aggregations. (#11815)Patrick Cloke2022-01-261-17/+40
| | | | | | | | | | | This is some odds and ends found during the review of #11791 and while continuing to work in this code: * Return attrs classes instead of dictionaries from some methods to improve type safety. * Call `get_bundled_aggregations` fewer times. * Adds a missing assertion in the tests. * Do not return empty bundled aggregations for an event (preferring to not include the bundle at all, as the docstring states).
* Do not try to serialize raw aggregations dict. (#11791)Patrick Cloke2022-01-211-2/+2
|
* Bundle aggregations outside of the serialization method. (#11612)Patrick Cloke2022-01-071-89/+37
| | | | | | | | This makes the serialization of events synchronous (and it no longer access the database), but we must manually calculate and provide the bundled aggregations. Overall this should cause no change in behavior, but is prep work for other improvements.
* Do not bundle aggregations for APIs which shouldn't include them. (#11592)Patrick Cloke2021-12-201-1/+1
| | | | | And make bundling aggregations opt-in, instead of opt-out to avoid having APIs to include extraneous data (and being much heavier than necessary).
* Do not allow cross-room relations, per MSC2674. (#11516)Patrick Cloke2021-12-091-4/+7
|
* Include bundled aggregations in /sync and related fixes (#11478)Patrick Cloke2021-12-061-23/+35
| | | | | | | | Due to updates to MSC2675 this includes a few fixes: * Include bundled aggregations for /sync. * Do not include bundled aggregations for /initialSync and /events. * Do not bundle aggregations for state events. * Clarifies comments and variable names.
* Bundle relations of relations into the `/relations` result. (#11284)Patrick Cloke2021-11-301-0/+8
| | | | | Per updates to MSC2675 which now states that bundled aggregations should be included from the `/relations` endpoint.
* Refactor the code to inject bundled relations during serialization. (#11408)Patrick Cloke2021-11-231-64/+82
|
* Add a thread relation type per MSC3440. (#11088)Patrick Cloke2021-10-211-0/+17
| | | | Adds experimental support for MSC3440's `io.element.thread` relation type (and the aggregation for it).
* Move experimental & retention config out of the server module. (#11070)Patrick Cloke2021-10-151-4/+2
|
* Add type hints to synapse.events.*. (#11066)Patrick Cloke2021-10-131-46/+67
| | | Except `synapse/events/__init__.py`, which will be done in a follow-up.
* Strip "join_authorised_via_users_server" from join events which do not need ↵Patrick Cloke2021-09-301-1/+1
| | | | | | | it. (#10933) This fixes a "Event not signed by authorising server" error when transition room member from join -> join, e.g. when updating a display name or avatar URL for restricted rooms.
* Use direct references for configuration variables (part 6). (#10916)Patrick Cloke2021-09-291-1/+1
|
* Rename MSC2716 things from `chunk` to `batch` to match `/batch_send` ↵Eric Eastwood2021-09-211-3/+3
| | | | | | | | endpoint (#10838) See https://github.com/matrix-org/matrix-doc/pull/2716#discussion_r684574497 Dropping support for older MSC2716 room versions so we don't have to worry about supporting both chunk and batch events.
* Support MSC3375: room version 9. (#10747)Patrick Cloke2021-09-031-0/+2
|
* Validate new m.room.power_levels events (#10232)Aaron Raimist2021-08-261-1/+4
| | | | Signed-off-by: Aaron Raimist <aaron@raim.ist>
* When redacting, keep event fields around that maintain the historical event ↵Eric Eastwood2021-08-091-1/+7
| | | | | | | | | | | | | | | structure intact (MSC2716) (#10538) * Keep event fields that maintain the historical event structure intact Fix https://github.com/matrix-org/synapse/issues/10521 * Add changelog * Bump room version * Better changelog text * Fix up room version after develop merge
* Make historical events discoverable from backfill for servers without any ↵Eric Eastwood2021-07-281-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | scrollback history (MSC2716) (#10245) * Make historical messages available to federated servers Part of MSC2716: https://github.com/matrix-org/matrix-doc/pull/2716 Follow-up to https://github.com/matrix-org/synapse/pull/9247 * Debug message not available on federation * Add base starting insertion point when no chunk ID is provided * Fix messages from multiple senders in historical chunk Follow-up to https://github.com/matrix-org/synapse/pull/9247 Part of MSC2716: https://github.com/matrix-org/matrix-doc/pull/2716 --- Previously, Synapse would throw a 403, `Cannot force another user to join.`, because we were trying to use `?user_id` from a single virtual user which did not match with messages from other users in the chunk. * Remove debug lines * Messing with selecting insertion event extremeties * Move db schema change to new version * Add more better comments * Make a fake requester with just what we need See https://github.com/matrix-org/synapse/pull/10276#discussion_r660999080 * Store insertion events in table * Make base insertion event float off on its own See https://github.com/matrix-org/synapse/pull/10250#issuecomment-875711889 Conflicts: synapse/rest/client/v1/room.py * Validate that the app service can actually control the given user See https://github.com/matrix-org/synapse/pull/10276#issuecomment-876316455 Conflicts: synapse/rest/client/v1/room.py * Add some better comments on what we're trying to check for * Continue debugging * Share validation logic * Add inserted historical messages to /backfill response * Remove debug sql queries * Some marker event implemntation trials * Clean up PR * Rename insertion_event_id to just event_id * Add some better sql comments * More accurate description * Add changelog * Make it clear what MSC the change is part of * Add more detail on which insertion event came through * Address review and improve sql queries * Only use event_id as unique constraint * Fix test case where insertion event is already in the normal DAG * Remove debug changes * Switch to chunk events so we can auth via power_levels Previously, we were using `content.chunk_id` to connect one chunk to another. But these events can be from any `sender` and we can't tell who should be able to send historical events. We know we only want the application service to do it but these events have the sender of a real historical message, not the application service user ID as the sender. Other federated homeservers also have no indicator which senders are an application service on the originating homeserver. So we want to auth all of the MSC2716 events via power_levels and have them be sent by the application service with proper PL levels in the room. * Switch to chunk events for federation * Add unstable room version to support new historical PL * Fix federated events being rejected for no state_groups Add fix from https://github.com/matrix-org/synapse/pull/10439 until it merges. * Only connect base insertion event to prev_event_ids Per discussion with @erikjohnston, https://matrix.to/#/!UytJQHLQYfvYWsGrGY:jki.re/$12bTUiObDFdHLAYtT7E-BvYRp3k_xv8w0dUQHibasJk?via=jki.re&via=matrix.org * Make it possible to get the room_version with txn * Allow but ignore historical events in unsupported room version See https://github.com/matrix-org/synapse/pull/10245#discussion_r675592489 We can't reject historical events on unsupported room versions because homeservers without knowledge of MSC2716 or the new room version don't reject historical events either. Since we can't rely on the auth check here to stop historical events on unsupported room versions, I've added some additional checks in the processing/persisting code (`synapse/storage/databases/main/events.py` -> `_handle_insertion_event` and `_handle_chunk_event`). I've had to do some refactoring so there is method to fetch the room version by `txn`. * Move to unique index syntax See https://github.com/matrix-org/synapse/pull/10245#discussion_r675638509 * High-level document how the insertion->chunk lookup works * Remove create_event fallback for room_versions See https://github.com/matrix-org/synapse/pull/10245/files#r677641879 * Use updated method name
* Restricted rooms (MSC3083) should not have their allow key redacted. (#10489)Patrick Cloke2021-07-281-0/+2
|
* Implement knock feature (#6739)Sorunome2021-06-091-7/+12
| | | | | | This PR aims to implement the knock feature as proposed in https://github.com/matrix-org/matrix-doc/pull/2403 Signed-off-by: Sorunome mail@sorunome.de Signed-off-by: Andrew Morgan andrewm@element.io
* Remove redundant "coding: utf-8" lines (#9786)Jonathan de Jong2021-04-141-1/+0
| | | | | | | Part of #9744 Removes all redundant `# -*- coding: utf-8 -*-` lines from files, as python 3 automatically reads source code as utf-8 now. `Signed-off-by: Jonathan de Jong <jonathan@automatia.nl>`
* Ensure we use a copy of the event content dict before modifying it in ↵Andrew Morgan2021-03-171-2/+12
| | | | | | | | | serialize_event (#9585) This bug was discovered by DINUM. We were modifying `serialized_event["content"]`, which - if you've got `USE_FROZEN_DICTS` turned on or are [using a third party rules module](https://github.com/matrix-org/synapse/blob/17cd48fe5171d50da4cb59db647b993168e7dfab/synapse/events/third_party_rules.py#L73-L76) - will raise a 500 if you try to a edit a reply to a message. `serialized_event["content"]` could be set to the edit event's content, instead of a copy of it, which is bad as we attempt to modify it. Instead, we also end up modifying the original event's content. DINUM uses a third party rules module, which meant the event's content got frozen and thus an exception was raised. To be clear, the problem is not that the event's content was frozen. In fact doing so helped us uncover the fact we weren't copying event content correctly.
* Prep work for removing `outlier` from `internal_metadata` (#9411)Richard van der Hoff2021-03-171-0/+2
| | | | | | | | | | | | * Populate `internal_metadata.outlier` based on `events` table Rather than relying on `outlier` being in the `internal_metadata` column, populate it based on the `events.outlier` column. * Move `outlier` out of InternalMetadata._dict Ultimately, this will allow us to stop writing it to the database. For now, we have to grandfather it back in so as to maintain compatibility with older versions of Synapse.
* Update black, and run auto formatting over the codebase (#9381)Eric Eastwood2021-02-161-1/+1
| | | | | | | - Update black version to the latest - Run black auto formatting over the codebase - Run autoformatting according to [`docs/code_style.md `](https://github.com/matrix-org/synapse/blob/80d6dc9783aa80886a133756028984dbf8920168/docs/code_style.md) - Update `code_style.md` docs around installing black to use the correct version
* Implement MSC2176: Updated redaction rules (#8984)Patrick Cloke2021-01-051-2/+14
| | | | An experimental room version ("org.matrix.msc2176") contains the new redaction rules for testing.
* Fix typos and spelling errors. (#8639)Patrick Cloke2020-10-231-1/+1
|
* Remove stream ordering from Metadata dict (#8452)Richard van der Hoff2020-10-051-0/+5
| | | | | | | | 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.
* Stop sub-classing object (#8249)Patrick Cloke2020-09-041-1/+1
|
* Convert a synapse.events to async/await. (#7949)Patrick Cloke2020-07-271-8/+7
|
* Fix deprecation warning: import ABC from collections.abc (#7892)Karthikeyan Singaravelan2020-07-201-3/+3
|
* Replace all remaining six usage with native Python 3 equivalents (#7704)Dagfinn Ilmari Mannsåker2020-06-161-3/+1
|
* Strictly enforce canonicaljson requirements in a new room version (#7381)Patrick Cloke2020-05-141-1/+34
|
* Remove special auth and redaction rules for aliases events in experimental ↵Patrick Cloke2020-03-091-7/+5
| | | | room ver. (#7037)
* Store room_versions in EventBase objects (#6875)Richard van der Hoff2020-03-051-10/+4
| | | | | | | This is a bit fiddly because it all has to be done on one fell swoop: * Wherever we create a new event, pass in the room version (and check it matches the format version) * When we prune an event, use the room version of the unpruned event to create the pruned version. * When we pass an event over the replication protocol, pass the room version over alongside it, and use it when deserialising the event again.
* Set the PL for aliases events to 0.Richard van der Hoff2020-01-291-1/+1
|
* Factor out a `copy_power_levels_contents` methodRichard van der Hoff2020-01-291-1/+36
| | | | I'm going to need another copy (hah!) of this.
* Replace returnValue with return (#5736)Amber Brown2019-07-231-2/+2
|
* Remove the ability to query relations when the original event was redacted. ↵Andrew Morgan2019-07-181-4/+12
| | | | | | | (#5629) Fixes #5594 Forbid viewing relations on an event once it has been redacted.
* Add origin_server_ts and sender fields to m.replace (#5613)Andrew Morgan2019-07-051-1/+5
| | | | | Riot team would like some extra fields as part of m.replace, so here you go. Fixes: #5598
* Run Black. (#5482)Amber Brown2019-06-201-26/+32
|
* Don't bundle events in /sync or /eventsErik Johnston2019-05-211-2/+3
| | | | | As we'll send down the annotations too anyway, so this just ends up confusing clients.
* Rename relation types to match MSCErik Johnston2019-05-201-3/+3
|
* Fixup bsaed on review commentsErik Johnston2019-05-171-3/+1
|
* Add basic editing supportErik Johnston2019-05-161-4/+26
|
* Add aggregations APIErik Johnston2019-05-161-3/+31
|
* Allow client event serialization to be asyncErik Johnston2019-05-141-0/+44
|
* Implement event format v2Erik Johnston2019-01-291-0/+3
|
* Refactor event signing to work on dictsErik Johnston2019-01-281-12/+35
| | | | | | This is in preparation for making EventBuilder format agnostic, which means event signing should be done against the event dict rather than the EventBuilder object.
* run isortAmber Brown2018-07-091-4/+5
|
* Replace some more comparisons with sixAdrian Tschira2018-05-191-1/+3
| | | | | | plus a bonus b"" string I missed last time Signed-off-by: Adrian Tschira <nota@notafile.com>
* Comment and remove spurious loggingErik Johnston2017-04-271-0/+3
|
* Fix testsErik Johnston2017-04-261-3/+3
|
* Fix invite state to always include all eventsErik Johnston2017-04-261-1/+19
|
* Review commentsKegan Dougal2016-11-221-11/+9
|
* Also check for dict since sometimes they aren't frozenKegan Dougal2016-11-221-1/+1
|
* Glue only_event_fields into the sync rest servletKegan Dougal2016-11-221-1/+1
|
* More testsKegan Dougal2016-11-221-3/+4
|
* Start adding some testsKegan Dougal2016-11-211-1/+3
|
* Move event_fields filtering to serialize_eventKegan Dougal2016-11-211-4/+97
| | | | Also make it an inclusive not exclusive filter, as the spec demands.
* Include prev_content in redacted state eventsErik Johnston2016-08-111-0/+2
|
* copyrightsMatthew Hodgson2016-01-071-1/+1
|
* Only add the user_id if the sender is presentMark Haines2015-12-011-1/+3
|
* Copy rather than move the fields to shuffle between a v1 and a v2 event.Mark Haines2015-11-301-9/+5
| | | | | | | | | | This should make all v1 APIs compatible with v2 clients. While still allowing v1 clients to access the fields. This makes the documentation easier since we can just document the v2 format and explain that some of the fields, in some of the APIs are duplicated for backwards compatibility, rather than having to document two separate event formats.
* Flatten the /sync response to remove the event_mapRichard van der Hoff2015-11-191-2/+1
|
* Update the other place check_joined_room is calledMark Haines2015-10-301-1/+2
|
* Surely we don't need to preserve 'events_default' twicePaul "LeoNerd" Evans2015-10-161-1/+0
|
* Bundle in some room state in the unsigned bit of the invite when sending to ↵Erik Johnston2015-09-101-1/+4
| | | | invited servers
* Rename key and values for m.room.history_visibility. Support 'invited' valueErik Johnston2015-07-061-1/+1
|
* Add m.room.history_visibility to list of auth eventsErik Johnston2015-07-031-0/+2
|
* Merge pull request #43 from matrix-org/rejectionsErik Johnston2015-01-301-3/+8
|\ | | | | Rejections
| * Merge branch 'develop' of github.com:matrix-org/synapse into rejectionsErik Johnston2015-01-301-6/+6
| |\ | | | | | | | | | | | | | | | Conflicts: synapse/storage/__init__.py synapse/storage/schema/delta/v12.sql
| * | Fix bug where we changes in outlier in metadata dict propogated to other eventsErik Johnston2015-01-301-1/+4
| | |
| * | Initial implementation of auth conflict resolutionErik Johnston2015-01-291-2/+4
| | |
* | | Include transaction ids in unsigned section of events in the sync results ↵Mark Haines2015-01-291-5/+6
| | | | | | | | | | | | for the clients that made those requests
* | | Add support for formatting events in the way a v2 client expectsMark Haines2015-01-291-39/+52
| | |
* | | Start implementing incremental initial syncMark Haines2015-01-271-0/+1
| | |
* | | Start implementing the non-incremental sync portion of the v2 /sync APIMark Haines2015-01-261-1/+5
| |/ |/|
* | Pass the current time to serialize event, rather than passing anMark Haines2015-01-261-6/+6
|/ | | | | | HS and getting a clock from it and calling time_msec on the clock. Remove the serialize_event method from the HS since it is no longer needed.
* Merge branch 'hotfixes-v0.6.1b' of github.com:matrix-org/synapse into developErik Johnston2015-01-131-1/+1
|\
| * Insert 'age' into top level when returning events to clientsErik Johnston2015-01-131-1/+1
| |
* | Return the raw federation event rather than adding extra keys for federation ↵Kegan Dougal2015-01-081-9/+16
| | | | | | | | data.
* | Add 'raw' query parameter to expose the event graph and signatures to savvy ↵Kegan Dougal2015-01-081-8/+9
|/ | | | clients.
* Update copyright noticesMark Haines2015-01-061-1/+1
|
* Remove unneeded federation keys from eventsMark Haines2014-12-191-0/+3
|
* Fix bug where we ignored event_edge_hashes tableErik Johnston2014-12-151-0/+1
|
* Fix prev_contentErik Johnston2014-12-111-0/+8
|
* Fix redactions. Fix 'age' keyErik Johnston2014-12-111-0/+21
|
* Add PEP8 newlinesErik Johnston2014-12-091-1/+1
|
* Various typos and bug fixes.Erik Johnston2014-12-081-0/+2
|
* Start making more things use EventContext rather than event.*Erik Johnston2014-12-051-0/+16
|
* WIP for new way of managing events.Erik Johnston2014-12-031-0/+82