summary refs log tree commit diff
path: root/synapse/events
diff options
context:
space:
mode:
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)