summary refs log tree commit diff
path: root/synapse/events
diff options
context:
space:
mode:
authorDavid Baker <dave@matrix.org>2017-09-26 19:20:23 +0100
committerDavid Baker <dave@matrix.org>2017-09-26 19:20:23 +0100
commit6cd5fcd5366cfef4959d107e818d0e20d78aa483 (patch)
tree4cc7a369317898d4eac75d7cd960ab3a34c78105 /synapse/events
parentMerge pull request #2473 from matrix-org/dbkr/factor_out_module_loading (diff)
downloadsynapse-6cd5fcd5366cfef4959d107e818d0e20d78aa483.tar.xz
Make the spam checker a module
Diffstat (limited to 'synapse/events')
-rw-r--r--synapse/events/spamcheck.py37
1 files changed, 20 insertions, 17 deletions
diff --git a/synapse/events/spamcheck.py b/synapse/events/spamcheck.py
index 56fa9e556e..7b22b3413a 100644
--- a/synapse/events/spamcheck.py
+++ b/synapse/events/spamcheck.py
@@ -13,26 +13,29 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+class SpamChecker(object):
+    def __init__(self, hs):
+        self.spam_checker = None
 
-def check_event_for_spam(event):
-    """Checks if a given event is considered "spammy" by this server.
+        if hs.config.spam_checker is not None:
+            module, config = hs.config.spam_checker
+            print("cfg %r", config)
+            self.spam_checker = module(config=config)
 
-    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.
+    def check_event_for_spam(self, event):
+        """Checks if a given event is considered "spammy" by this server.
 
-    Args:
-        event (synapse.events.EventBase): the event to be checked
+        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.
 
-    Returns:
-        bool: True if the event is spammy.
-    """
-    if not hasattr(event, "content") or "body" not in event.content:
-        return False
+        Args:
+            event (synapse.events.EventBase): the event to be checked
 
-    # for example:
-    #
-    # if "the third flower is green" in event.content["body"]:
-    #    return True
+        Returns:
+            bool: True if the event is spammy.
+        """
+        if self.spam_checker is None:
+            return False
 
-    return False
+        return self.spam_checker.check_event_for_spam(event)