diff options
author | lugino-emeritus <lugino-emeritus@users.noreply.github.com> | 2020-07-28 14:41:44 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-28 13:41:44 +0100 |
commit | 3857de2194e3b2057c4af71e095eb6759508f25f (patch) | |
tree | 3acf01753d0132a93955218e37c87d259bd9a59c /synapse | |
parent | Merge tag 'v1.18.0rc2' into develop (diff) | |
download | synapse-3857de2194e3b2057c4af71e095eb6759508f25f.tar.xz |
Option to allow server admins to join complex rooms (#7902)
Fixes #7901. Signed-off-by: Niklas Tittjung <nik_t.01@web.de>
Diffstat (limited to '')
-rw-r--r-- | synapse/config/server.py | 7 | ||||
-rw-r--r-- | synapse/handlers/room_member.py | 8 |
2 files changed, 13 insertions, 2 deletions
diff --git a/synapse/config/server.py b/synapse/config/server.py index 3747a01ca7..848587d232 100644 --- a/synapse/config/server.py +++ b/synapse/config/server.py @@ -439,6 +439,9 @@ class ServerConfig(Config): validator=attr.validators.instance_of(str), default=ROOM_COMPLEXITY_TOO_GREAT, ) + admins_can_join = attr.ib( + validator=attr.validators.instance_of(bool), default=False + ) self.limit_remote_rooms = LimitRemoteRoomsConfig( **(config.get("limit_remote_rooms") or {}) @@ -893,6 +896,10 @@ class ServerConfig(Config): # #complexity_error: "This room is too complex." + # allow server admins to join complex rooms. Default is false. + # + #admins_can_join: true + # Whether to require a user to be in the room to add an alias to it. # Defaults to 'true'. # diff --git a/synapse/handlers/room_member.py b/synapse/handlers/room_member.py index a1a8fa1d3b..5a40e8c144 100644 --- a/synapse/handlers/room_member.py +++ b/synapse/handlers/room_member.py @@ -952,7 +952,11 @@ class RoomMemberMasterHandler(RoomMemberHandler): if len(remote_room_hosts) == 0: raise SynapseError(404, "No known servers") - if self.hs.config.limit_remote_rooms.enabled: + check_complexity = self.hs.config.limit_remote_rooms.enabled + if check_complexity and self.hs.config.limit_remote_rooms.admins_can_join: + check_complexity = not await self.hs.auth.is_server_admin(user) + + if check_complexity: # Fetch the room complexity too_complex = await self._is_remote_room_too_complex( room_id, remote_room_hosts @@ -975,7 +979,7 @@ class RoomMemberMasterHandler(RoomMemberHandler): # Check the room we just joined wasn't too large, if we didn't fetch the # complexity of it before. - if self.hs.config.limit_remote_rooms.enabled: + if check_complexity: if too_complex is False: # We checked, and we're under the limit. return event_id, stream_id |