summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--synapse/rulecheck/domain_rule_checker.py35
-rw-r--r--tests/rulecheck/test_domainrulecheck.py5
2 files changed, 21 insertions, 19 deletions
diff --git a/synapse/rulecheck/domain_rule_checker.py b/synapse/rulecheck/domain_rule_checker.py

index c9771e0b66..a750fe7530 100644 --- a/synapse/rulecheck/domain_rule_checker.py +++ b/synapse/rulecheck/domain_rule_checker.py
@@ -19,25 +19,25 @@ from synapse.config._base import ConfigError logger = logging.getLogger(__name__) -""" -DomainRuleChecker -Takes a config in the format: - -spam_checker: - module: "rulecheck.DomainRuleChecker" - config: - domain_mapping: - "inviter_domain": [ "invitee_domain_permitted", "other_invitee_domain_permitted" ] - "other_inviter_domain": [ "invitee_domain_permitted" ] - default: False - } +class DomainRuleChecker(object): + """ + A re-implementation of the SpamChecker that prevents users in one domain from + inviting users in other domains to rooms, based on a configuration. -Don't forget to consider if you can invite users from your own domain. -""" + Takes a config in the format: + spam_checker: + module: "rulecheck.DomainRuleChecker" + config: + domain_mapping: + "inviter_domain": [ "invitee_domain_permitted", "other_domain_permitted" ] + "other_inviter_domain": [ "invitee_domain_permitted" ] + default: False + } -class DomainRuleChecker(object): + Don't forget to consider if you can invite users from your own domain. + """ def __init__(self, config): self.domain_mapping = config["domain_mapping"] or {} @@ -50,11 +50,10 @@ class DomainRuleChecker(object): inviter_domain = self._get_domain_from_id(inviter_userid) invitee_domain = self._get_domain_from_id(invitee_userid) - valid_targets = self.domain_mapping.get(inviter_domain) - if not valid_targets: + if inviter_domain not in self.domain_mapping: return self.default - return invitee_domain in valid_targets + return invitee_domain in self.domain_mapping.get(inviter_domain) def user_may_create_room(self, userid): return True diff --git a/tests/rulecheck/test_domainrulecheck.py b/tests/rulecheck/test_domainrulecheck.py
index 1c068a397b..a24fb53766 100644 --- a/tests/rulecheck/test_domainrulecheck.py +++ b/tests/rulecheck/test_domainrulecheck.py
@@ -43,7 +43,8 @@ class DomainRuleCheckerTestCase(unittest.TestCase): "default": True, "domain_mapping": { "source_one": ["target_one", "target_two"], - "source_two": ["target_two"] + "source_two": ["target_two"], + "source_four": [] } } check = DomainRuleChecker(config) @@ -53,6 +54,8 @@ class DomainRuleCheckerTestCase(unittest.TestCase): "test:target_three", "room")) self.assertFalse(check.user_may_invite("test:source_two", "test:target_one", "room")) + self.assertFalse(check.user_may_invite("test:source_four", + "test:target_one", "room")) def test_default_allow(self): config = {