From 8b79ea03e55b40319e3ed81a68efefe3b3e454df Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 5 Oct 2020 19:27:54 +0100 Subject: Add new experimental room version for knocking --- synapse/api/room_versions.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'synapse') diff --git a/synapse/api/room_versions.py b/synapse/api/room_versions.py index f3ecbf36b6..ad26c7a694 100644 --- a/synapse/api/room_versions.py +++ b/synapse/api/room_versions.py @@ -57,16 +57,19 @@ class RoomVersion: state_res = attr.ib() # int; one of the StateResolutionVersions enforce_key_validity = attr.ib() # bool - # bool: before MSC2261/MSC2432, m.room.aliases had special auth rules and redaction rules + # Before MSC2432, m.room.aliases had special auth rules and redaction rules special_case_aliases_auth = attr.ib(type=bool) # Strictly enforce canonicaljson, do not allow: # * Integers outside the range of [-2 ^ 53 + 1, 2 ^ 53 - 1] # * Floats # * NaN, Infinity, -Infinity strict_canonicaljson = attr.ib(type=bool) - # bool: MSC2209: Check 'notifications' key while verifying + # MSC2209: Check 'notifications' key while verifying # m.room.power_levels auth rules. limit_notifications_power_levels = attr.ib(type=bool) + # MSC2403: Allows join_rules to be set to 'knock', changes auth rules to allow sending + # m.room.membership event with membership 'knock'. + allow_knocking = attr.ib(type=bool) class RoomVersions: @@ -79,6 +82,7 @@ class RoomVersions: special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, + allow_knocking=False, ) V2 = RoomVersion( "2", @@ -89,6 +93,7 @@ class RoomVersions: special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, + allow_knocking=False, ) V3 = RoomVersion( "3", @@ -99,6 +104,7 @@ class RoomVersions: special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, + allow_knocking=False, ) V4 = RoomVersion( "4", @@ -109,6 +115,7 @@ class RoomVersions: special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, + allow_knocking=False, ) V5 = RoomVersion( "5", @@ -119,6 +126,7 @@ class RoomVersions: special_case_aliases_auth=True, strict_canonicaljson=False, limit_notifications_power_levels=False, + allow_knocking=False, ) V6 = RoomVersion( "6", @@ -129,6 +137,18 @@ class RoomVersions: special_case_aliases_auth=False, strict_canonicaljson=True, limit_notifications_power_levels=True, + allow_knocking=False, + ) + MSC2403_DEV = RoomVersion( + "xyz.amorgan.knock", + RoomDisposition.UNSTABLE, + EventFormatVersions.V3, + StateResolutionVersions.V2, + enforce_key_validity=True, + special_case_aliases_auth=False, + strict_canonicaljson=True, + limit_notifications_power_levels=True, + allow_knocking=True, ) @@ -141,5 +161,6 @@ KNOWN_ROOM_VERSIONS = { RoomVersions.V4, RoomVersions.V5, RoomVersions.V6, + RoomVersions.MSC2403_DEV, ) } # type: Dict[str, RoomVersion] -- cgit 1.4.1