Skip to content
Snippets Groups Projects
Commit cb12a377 authored by Erik Johnston's avatar Erik Johnston
Browse files

Clarify and fix behaviour when there are multiple aliases

parent f61b2068
No related branches found
No related tags found
Loading
......@@ -58,7 +58,11 @@ class RoomDirectoryConfig(Config):
# which rooms can be published in the public room list.
#
# The format of this option is the same as that for
# `alias_creation_rules`
# `alias_creation_rules`.
#
# If the room has one or more aliases associated with it, the rules are
# run against each alias. If there are no aliases then only rules with
# `alias: *` match.
room_list_publication_rules:
- user_id: "*" # Matches against the user publishing the room
alias: "*" # Matches against any current local or canonical
......@@ -156,11 +160,19 @@ class _RoomDirectoryRule(object):
# If we are not given any aliases then this rule only matches if the
# alias glob matches all aliases
if not aliases and not self._alias_matches_all:
return False
for alias in aliases:
if not self._alias_regex.match(alias):
matched = False
if not aliases:
if not self._alias_matches_all:
return False
else:
# Otherwise, we just need one alias to match
matched = False
for alias in aliases:
if self._alias_regex.match(alias):
matched = True
break
if not matched:
return False
if not self._room_id_regex.match(room_id):
......
......@@ -138,3 +138,9 @@ class RoomDirectoryConfigTestCase(unittest.TestCase):
room_id="!test-deny",
aliases=[],
))
self.assertTrue(rd_config.is_publishing_room_allowed(
user_id="@test:example.com",
room_id="!test",
aliases=["#unofficial_st:example.com", "#blah:example.com"],
))
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment