diff options
author | Patrick Cloke <clokep@users.noreply.github.com> | 2020-02-14 07:17:54 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-14 07:17:54 -0500 |
commit | 49f877d32efc79cb40b2766cb052cf35bad31de5 (patch) | |
tree | 5c8f2b67c64f4852200ecd26f49c412698b08f7d /synapse/events/spamcheck.py | |
parent | Update changelog for #6905 to group it with upcoming PRs (diff) | |
download | synapse-49f877d32efc79cb40b2766cb052cf35bad31de5.tar.xz |
Filter the results of user directory searching via the spam checker (#6888)
Add a method to the spam checker to filter the user directory results.
Diffstat (limited to 'synapse/events/spamcheck.py')
-rw-r--r-- | synapse/events/spamcheck.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/synapse/events/spamcheck.py b/synapse/events/spamcheck.py index 5a907718d6..0a13fca9a4 100644 --- a/synapse/events/spamcheck.py +++ b/synapse/events/spamcheck.py @@ -15,6 +15,7 @@ # limitations under the License. import inspect +from typing import Dict from synapse.spam_checker_api import SpamCheckerApi @@ -125,3 +126,29 @@ class SpamChecker(object): return True return self.spam_checker.user_may_publish_room(userid, room_id) + + def check_username_for_spam(self, user_profile: Dict[str, str]) -> bool: + """Checks if a user ID or display name are considered "spammy" by this server. + + If the server considers a username spammy, then it will not be included in + user directory results. + + Args: + user_profile: The user information to check, it contains the keys: + * user_id + * display_name + * avatar_url + + Returns: + True if the user is spammy. + """ + if self.spam_checker is None: + return False + + # For backwards compatibility, if the method does not exist on the spam checker, fallback to not interfering. + checker = getattr(self.spam_checker, "check_username_for_spam", None) + if not checker: + return False + # Make a copy of the user profile object to ensure the spam checker + # cannot modify it. + return checker(user_profile.copy()) |