1
0

Add app_service_server_blacklist option

This commit is contained in:
Will Hunt
2018-06-25 17:16:01 +01:00
parent 947fea67cb
commit 8d926d78ff
2 changed files with 24 additions and 0 deletions
+13
View File
@@ -19,6 +19,7 @@ from synapse.types import UserID
import yaml
import logging
import re
from six import string_types
from six.moves.urllib import parse as urlparse
@@ -31,6 +32,18 @@ class AppServiceConfig(Config):
def read_config(self, config):
self.app_service_config_files = config.get("app_service_config_files", [])
self.notify_appservices = config.get("notify_appservices", True)
s_blacklist = config.get(
"app_service_server_blacklist", []
)
try:
self.app_service_server_blacklist = [
re.compile(x) for x in s_blacklist
]
except re.error as ex:
raise ConfigError(
"Could not compile regex in app_service_server_blacklist: %s",
ex.message
)
def default_config(cls, **kwargs):
return """\
+11
View File
@@ -23,6 +23,8 @@ from synapse.util.metrics import Measure
from synapse.util.logcontext import (
make_deferred_yieldable, run_in_background,
)
from synapse.types import get_domain_from_id
from prometheus_client import Counter
import logging
@@ -52,6 +54,7 @@ class ApplicationServicesHandler(object):
self.scheduler = hs.get_application_service_scheduler()
self.started_scheduler = False
self.clock = hs.get_clock()
self.server_blacklist = hs.config.app_service_server_blacklist
self.notify_appservices = hs.config.notify_appservices
self.current_max = 0
@@ -93,6 +96,14 @@ class ApplicationServicesHandler(object):
@defer.inlineCallbacks
def handle_event(event):
ev_domain = get_domain_from_id(event.event_id)
if any(srv_re.match(ev_domain) is not None for srv_re in self.server_blacklist):
logger.info(
"Ignoring %s from %s, matches server blacklist",
event.event_id,
ev_domain
)
return
# Gather interested services
services = yield self._get_services_for_event(event)
if len(services) == 0: