summary refs log tree commit diff
path: root/synapse/config/experimental.py
diff options
context:
space:
mode:
authorAndrew Morgan <1342360+anoadragon453@users.noreply.github.com>2021-02-09 19:07:00 +0000
committerGitHub <noreply@github.com>2021-02-09 19:07:00 +0000
commit6bf58d8194ff7c89a1c8249bade78492bbfa0900 (patch)
treedbaccc690b25f7273562569ba25b09c8a0a90b0b /synapse/config/experimental.py
parentAdd complement running monolith synapse to buildkite pipeline (#80) (diff)
downloadsynapse-6bf58d8194ff7c89a1c8249bade78492bbfa0900.tar.xz
Add knocking support (#81)
Implement knocking as defined by https://github.com/matrix-org/matrix-doc/pull/2403

This is the base knocking stuff, taken from https://github.com/matrix-org/synapse/pull/6739
and does not include any public room directory changes.

While knocking hasn't merged yet on mainline due to waiting on getting Complement
into Synapse's CI, the code has been well-tested.
Diffstat (limited to 'synapse/config/experimental.py')
-rw-r--r--synapse/config/experimental.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/synapse/config/experimental.py b/synapse/config/experimental.py
new file mode 100644

index 0000000000..a94c4cc86d --- /dev/null +++ b/synapse/config/experimental.py
@@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Copyright 2021 The Matrix.org Foundation C.I.C. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersions +from synapse.config._base import Config +from synapse.types import JsonDict + + +class ExperimentalConfig(Config): + """Config section for enabling experimental features""" + + section = "experimental" + + def read_config(self, config: JsonDict, **kwargs): + experimental = config.get("experimental_features") or {} + + # MSC2403 (room knocking) + self.msc2403_enabled = experimental.get("msc2403_enabled", False) # type: bool + if self.msc2403_enabled: + # Enable the MSC2403 unstable room version + KNOWN_ROOM_VERSIONS.update( + {RoomVersions.MSC2403_DEV.identifier: RoomVersions.MSC2403_DEV} + )