2 files changed, 9 insertions, 1 deletions
diff --git a/synapse/config/server.py b/synapse/config/server.py
index 89d61a0503..00cad1e9c5 100644
--- a/synapse/config/server.py
+++ b/synapse/config/server.py
@@ -43,6 +43,9 @@ class ServerConfig(Config):
self.filter_timeline_limit = config.get("filter_timeline_limit", -1)
+ self.require_auth_for_room_directory = \
+ config.get("require_auth_for_room_directory", False)
+
if self.public_baseurl is not None:
if self.public_baseurl[-1] != '/':
self.public_baseurl += '/'
@@ -194,6 +197,11 @@ class ServerConfig(Config):
# and sync operations. The default value is -1, means no upper limit.
# filter_timeline_limit: 5000
+ # Set whether this server's public room directory is restricted to
+ # local authenticated users, or visible to the wider world.
+ # Default is to be visible to the wider world.
+ require_auth_for_room_directory: False
+
# List of ports that Synapse should listen on, their purpose and their
# configuration.
listeners:
diff --git a/synapse/rest/client/v1/room.py b/synapse/rest/client/v1/room.py
index cd388770c8..6ab9cdc116 100644
--- a/synapse/rest/client/v1/room.py
+++ b/synapse/rest/client/v1/room.py
@@ -294,7 +294,7 @@ class PublicRoomListRestServlet(ClientV1RestServlet):
# In both cases we call the auth function, as that has the side
# effect of logging who issued this request if an access token was
# provided.
- if server:
+ if server or self.hs.config.require_auth_for_room_directory:
raise e
else:
pass
|