summary refs log tree commit diff
path: root/packages/overlays/matrix-synapse/patches/0010-Fix-admin-redaction-endpoint-not-redacting-encrypted.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/overlays/matrix-synapse/patches/0010-Fix-admin-redaction-endpoint-not-redacting-encrypted.patch')
-rw-r--r--packages/overlays/matrix-synapse/patches/0010-Fix-admin-redaction-endpoint-not-redacting-encrypted.patch110
1 files changed, 0 insertions, 110 deletions
diff --git a/packages/overlays/matrix-synapse/patches/0010-Fix-admin-redaction-endpoint-not-redacting-encrypted.patch b/packages/overlays/matrix-synapse/patches/0010-Fix-admin-redaction-endpoint-not-redacting-encrypted.patch
deleted file mode 100644

index 203103d..0000000 --- a/packages/overlays/matrix-synapse/patches/0010-Fix-admin-redaction-endpoint-not-redacting-encrypted.patch +++ /dev/null
@@ -1,110 +0,0 @@ -From 74e2f028bbcaeb2a572d03e66334f3c671bffae2 Mon Sep 17 00:00:00 2001 -From: Shay <hillerys@element.io> -Date: Mon, 19 May 2025 01:48:46 -0700 -Subject: [PATCH 10/34] Fix admin redaction endpoint not redacting encrypted - messages (#18434) - ---- - changelog.d/18434.bugfix | 1 + - synapse/handlers/admin.py | 2 +- - tests/rest/admin/test_user.py | 55 ++++++++++++++++++++++++++++++++++- - 3 files changed, 56 insertions(+), 2 deletions(-) - create mode 100644 changelog.d/18434.bugfix - -diff --git a/changelog.d/18434.bugfix b/changelog.d/18434.bugfix -new file mode 100644 -index 0000000000..dd094c83e8 ---- /dev/null -+++ b/changelog.d/18434.bugfix -@@ -0,0 +1 @@ -+Fix admin redaction endpoint not redacting encrypted messages. -\ No newline at end of file -diff --git a/synapse/handlers/admin.py b/synapse/handlers/admin.py -index f3e7790d43..971a74244f 100644 ---- a/synapse/handlers/admin.py -+++ b/synapse/handlers/admin.py -@@ -445,7 +445,7 @@ class AdminHandler: - user_id, - room, - limit, -- ["m.room.member", "m.room.message"], -+ ["m.room.member", "m.room.message", "m.room.encrypted"], - ) - if not event_ids: - # nothing to redact in this room -diff --git a/tests/rest/admin/test_user.py b/tests/rest/admin/test_user.py -index a35a250975..874c29c935 100644 ---- a/tests/rest/admin/test_user.py -+++ b/tests/rest/admin/test_user.py -@@ -36,7 +36,13 @@ from twisted.test.proto_helpers import MemoryReactor - from twisted.web.resource import Resource - - import synapse.rest.admin --from synapse.api.constants import ApprovalNoticeMedium, EventTypes, LoginType, UserTypes -+from synapse.api.constants import ( -+ ApprovalNoticeMedium, -+ EventContentFields, -+ EventTypes, -+ LoginType, -+ UserTypes, -+) - from synapse.api.errors import Codes, HttpResponseException, ResourceLimitError - from synapse.api.room_versions import RoomVersions - from synapse.media.filepath import MediaFilePaths -@@ -5467,6 +5473,53 @@ class UserRedactionTestCase(unittest.HomeserverTestCase): - # we originally sent 5 messages so 5 should be redacted - self.assertEqual(len(original_message_ids), 0) - -+ def test_redact_redacts_encrypted_messages(self) -> None: -+ """ -+ Test that user's encrypted messages are redacted -+ """ -+ encrypted_room = self.helper.create_room_as( -+ self.admin, tok=self.admin_tok, room_version="7" -+ ) -+ self.helper.send_state( -+ encrypted_room, -+ EventTypes.RoomEncryption, -+ {EventContentFields.ENCRYPTION_ALGORITHM: "m.megolm.v1.aes-sha2"}, -+ tok=self.admin_tok, -+ ) -+ # join room send some messages -+ originals = [] -+ join = self.helper.join(encrypted_room, self.bad_user, tok=self.bad_user_tok) -+ originals.append(join["event_id"]) -+ for _ in range(15): -+ res = self.helper.send_event( -+ encrypted_room, "m.room.encrypted", {}, tok=self.bad_user_tok -+ ) -+ originals.append(res["event_id"]) -+ -+ # redact user's events -+ channel = self.make_request( -+ "POST", -+ f"/_synapse/admin/v1/user/{self.bad_user}/redact", -+ content={"rooms": []}, -+ access_token=self.admin_tok, -+ ) -+ self.assertEqual(channel.code, 200) -+ -+ matched = [] -+ filter = json.dumps({"types": [EventTypes.Redaction]}) -+ channel = self.make_request( -+ "GET", -+ f"rooms/{encrypted_room}/messages?filter={filter}&limit=50", -+ access_token=self.admin_tok, -+ ) -+ self.assertEqual(channel.code, 200) -+ -+ for event in channel.json_body["chunk"]: -+ for event_id in originals: -+ if event["type"] == "m.room.redaction" and event["redacts"] == event_id: -+ matched.append(event_id) -+ self.assertEqual(len(matched), len(originals)) -+ - - class UserRedactionBackgroundTaskTestCase(BaseMultiWorkerStreamTestCase): - servlets = [ --- -2.49.0 -