summary refs log tree commit diff
diff options
context:
space:
mode:
authorErik Johnston <erik@matrix.org>2019-02-15 10:53:39 +0000
committerErik Johnston <erik@matrix.org>2019-02-15 10:53:39 +0000
commitb99c532c1c5d79cdaea20e68bf65945f056a156d (patch)
treeded1ffe1587dabc25d949bb0d52b6acd6b391301
parentHoist up checks to reduce overall work (diff)
downloadsynapse-b99c532c1c5d79cdaea20e68bf65945f056a156d.tar.xz
Move defaults up into code
-rw-r--r--synapse/config/room_directory.py66
1 files changed, 44 insertions, 22 deletions
diff --git a/synapse/config/room_directory.py b/synapse/config/room_directory.py
index aa113f0edf..c8e0abbae7 100644
--- a/synapse/config/room_directory.py
+++ b/synapse/config/room_directory.py
@@ -20,19 +20,37 @@ from ._base import Config, ConfigError
 
 class RoomDirectoryConfig(Config):
     def read_config(self, config):
-        alias_creation_rules = config["alias_creation_rules"]
+        alias_creation_rules = config.get("alias_creation_rules")
 
-        self._alias_creation_rules = [
-            _RoomDirectoryRule("alias_creation_rules", rule)
-            for rule in alias_creation_rules
-        ]
-
-        room_list_publication_rules = config["room_list_publication_rules"]
-
-        self._room_list_publication_rules = [
-            _RoomDirectoryRule("room_list_publication_rules", rule)
-            for rule in room_list_publication_rules
-        ]
+        if alias_creation_rules is not None:
+            self._alias_creation_rules = [
+                _RoomDirectoryRule("alias_creation_rules", rule)
+                for rule in alias_creation_rules
+            ]
+        else:
+            self._alias_creation_rules = [
+                _RoomDirectoryRule(
+                    "alias_creation_rules", {
+                        "action": "allow",
+                    }
+                )
+            ]
+
+        room_list_publication_rules = config.get("room_list_publication_rules")
+
+        if room_list_publication_rules is not None:
+            self._room_list_publication_rules = [
+                _RoomDirectoryRule("room_list_publication_rules", rule)
+                for rule in room_list_publication_rules
+            ]
+        else:
+            self._room_list_publication_rules = [
+                _RoomDirectoryRule(
+                    "room_list_publication_rules", {
+                        "action": "allow",
+                    }
+                )
+            ]
 
     def default_config(self, config_dir_path, server_name, **kwargs):
         return """
@@ -56,11 +74,13 @@ class RoomDirectoryConfig(Config):
         #   room_id: Matches against the room ID the alias is being pointed at
         #   action: Whether to "allow" or "deny" the request if the rule matches
         #
-        alias_creation_rules:
-            - user_id: "*"
-              alias: "*"
-              room_id: "*"
-              action: allow
+        # The default is:
+        #
+        # alias_creation_rules:
+        #     - user_id: "*"
+        #       alias: "*"
+        #       room_id: "*"
+        #       action: allow
 
         # The `room_list_publication_rules` option controls who can publish and
         # which rooms can be published in the public room list.
@@ -83,11 +103,13 @@ class RoomDirectoryConfig(Config):
         #            associated with the room
         #   action: Whether to "allow" or "deny" the request if the rule matches
         #
-        room_list_publication_rules:
-            - user_id: "*"
-              alias: "*"
-              room_id: "*"
-              action: allow
+        # The default is:
+        #
+        # room_list_publication_rules:
+        #     - user_id: "*"
+        #       alias: "*"
+        #       room_id: "*"
+        #       action: allow
         """
 
     def is_alias_creation_allowed(self, user_id, room_id, alias):