Move conf in a specific file and handle hot-reload of it
This commit is contained in:
parent
05ab228953
commit
8d79db4230
|
@ -1,25 +0,0 @@
|
|||
class AntiSpamInvites(object):
|
||||
def __init__(self, config):
|
||||
self._blocked_homeservers = config.get("blocked_homeservers", [])
|
||||
|
||||
def check_event_for_spam(self, event):
|
||||
return False # allowed
|
||||
|
||||
def user_may_invite(self, inviter_user_id, invitee_user_id, room_id):
|
||||
for bad_hs in self._blocked_homeservers:
|
||||
if inviter_user_id.endswith(":" + bad_hs):
|
||||
return False # not allowed
|
||||
return True # allowed
|
||||
|
||||
def user_may_create_room(self, user_id):
|
||||
return True # allowed
|
||||
|
||||
def user_may_create_room_alias(self, user_id, room_alias):
|
||||
return True # allowed
|
||||
|
||||
def user_may_publish_room(self, user_id, room_id):
|
||||
return True # allowed
|
||||
|
||||
@staticmethod
|
||||
def parse_config(config):
|
||||
return config # no parsing needed
|
|
@ -1,70 +1,54 @@
|
|||
import re
|
||||
|
||||
class AntiSpamHomeserverMessages(object):
|
||||
|
||||
class SimpleAntiSpam(object):
|
||||
def __init__(self, config):
|
||||
self._blocked_homeservers = config.get("blocked_homeservers", [])
|
||||
self._reload_config(config)
|
||||
|
||||
try:
|
||||
from synapse.app._base import register_sighup
|
||||
register_sighup(self._reload_config)
|
||||
except Exception:
|
||||
logger.warning(
|
||||
"Failed to install sighup handler for anti spam rule reloading"
|
||||
)
|
||||
|
||||
def _reload_config(self, config):
|
||||
with open(rules_file) as f:
|
||||
spam_config = yaml.safe_load(config["rules_file"])
|
||||
|
||||
self._blocked_messages_by_homeserver = spam_config.get("blocked_messages_by_homeserver", [])
|
||||
self._blocked_messages_by_user = spam_config.get("blocked_messages_by_user", [])
|
||||
self._blocked_messages_by_text = spam_config.get("blocked_messages_by_text", [])
|
||||
|
||||
self._blocked_messages_by_pattern = [re.compile(v) for v in spam_config.get("blocked_messages_by_pattern", [])]
|
||||
|
||||
self._blocked_invites_by_homeserver = spam_config.get("blocked_invites_by_homeserver", [])
|
||||
|
||||
def check_event_for_spam(self, event):
|
||||
for bad_hs in self._blocked_homeservers:
|
||||
for bad_hs in self._blocked_messages_by_homeserver:
|
||||
if event.get("sender", "").endswith(":" + bad_hs):
|
||||
return True # not allowed (spam)
|
||||
return False # not spam
|
||||
|
||||
def user_may_invite(self, inviter_user_id, invitee_user_id, room_id):
|
||||
return True # allowed
|
||||
for bad_user in self._blocked_messages_by_user:
|
||||
if event.get("sender", "") == bad_user:
|
||||
return True # not allowed (spam)
|
||||
|
||||
def user_may_create_room(self, user_id):
|
||||
return True # allowed
|
||||
|
||||
def user_may_create_room_alias(self, user_id, room_alias):
|
||||
return True # allowed
|
||||
|
||||
def user_may_publish_room(self, user_id, room_id):
|
||||
return True # allowed
|
||||
|
||||
@staticmethod
|
||||
def parse_config(config):
|
||||
return config # no parsing needed
|
||||
|
||||
|
||||
class AntiSpamText(object):
|
||||
def __init__(self, config):
|
||||
self._blocked_texts = config.get("blocked_messages", [])
|
||||
|
||||
def check_event_for_spam(self, event):
|
||||
for msg in self._blocked_texts:
|
||||
for msg in self._blocked_messages_by_text:
|
||||
if event.get("content", {}).get("body", "") == msg:
|
||||
return True # not allowed (spam)
|
||||
return False # not spam
|
||||
|
||||
def user_may_invite(self, inviter_user_id, invitee_user_id, room_id):
|
||||
return True # allowed
|
||||
|
||||
def user_may_create_room(self, user_id):
|
||||
return True # allowed
|
||||
|
||||
def user_may_create_room_alias(self, user_id, room_alias):
|
||||
return True # allowed
|
||||
|
||||
def user_may_publish_room(self, user_id, room_id):
|
||||
return True # allowed
|
||||
|
||||
@staticmethod
|
||||
def parse_config(config):
|
||||
return config # no parsing needed
|
||||
|
||||
|
||||
class AntiSpamRegex(object):
|
||||
def __init__(self, config):
|
||||
self._blocked_texts = [re.compile(v) for v in config.get("blocked_messages", [])]
|
||||
|
||||
def check_event_for_spam(self, event):
|
||||
for msg in self._blocked_texts:
|
||||
for msg in self._blocked_messages_by_pattern:
|
||||
if msg.search(event.get("content", {}).get("body", "")):
|
||||
return True # not allowed (spam)
|
||||
|
||||
return False # not spam
|
||||
|
||||
def user_may_invite(self, inviter_user_id, invitee_user_id, room_id):
|
||||
for bad_hs in self.blocked_invites_by_homeserver:
|
||||
if inviter_user_id.endswith(":" + bad_hs):
|
||||
return False # not allowed
|
||||
|
||||
return True # allowed
|
||||
|
||||
def user_may_create_room(self, user_id):
|
||||
|
|
Loading…
Reference in New Issue