diff options
Diffstat (limited to 'synapse/events/spamcheck.py')
-rw-r--r-- | synapse/events/spamcheck.py | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/synapse/events/spamcheck.py b/synapse/events/spamcheck.py index 56fa9e556e..e739f105b2 100644 --- a/synapse/events/spamcheck.py +++ b/synapse/events/spamcheck.py @@ -14,25 +14,34 @@ # limitations under the License. -def check_event_for_spam(event): - """Checks if a given event is considered "spammy" by this server. +class SpamChecker(object): + def __init__(self, hs): + self.spam_checker = None - If the server considers an event spammy, then it will be rejected if - sent by a local user. If it is sent by a user on another server, then - users receive a blank event. + module = None + config = None + try: + module, config = hs.config.spam_checker + except: + pass - Args: - event (synapse.events.EventBase): the event to be checked + if module is not None: + self.spam_checker = module(config=config) - Returns: - bool: True if the event is spammy. - """ - if not hasattr(event, "content") or "body" not in event.content: - return False + def check_event_for_spam(self, event): + """Checks if a given event is considered "spammy" by this server. - # for example: - # - # if "the third flower is green" in event.content["body"]: - # return True + If the server considers an event spammy, then it will be rejected if + sent by a local user. If it is sent by a user on another server, then + users receive a blank event. - return False + Args: + event (synapse.events.EventBase): the event to be checked + + Returns: + bool: True if the event is spammy. + """ + if self.spam_checker is None: + return False + + return self.spam_checker.check_event_for_spam(event) |