diff --git a/blocking.py b/blocking.py index f1a253c17..cc82c9011 100644 --- a/blocking.py +++ b/blocking.py @@ -696,7 +696,8 @@ def _get_short_domain(domain: str) -> str: def is_blocked_domain(base_dir: str, domain: str, - blocked_cache: [] = None) -> bool: + blocked_cache: [] = None, + block_federated: [] = None) -> bool: """Is the given domain blocked? """ if '.' not in domain: @@ -709,6 +710,10 @@ def is_blocked_domain(base_dir: str, domain: str, search_str = '*@' + domain if not broch_mode_is_active(base_dir): + if block_federated: + if domain in block_federated: + return True + if blocked_cache: for blocked_str in blocked_cache: if blocked_str == search_str: @@ -778,7 +783,8 @@ def is_blocked_nickname(base_dir: str, nickname: str, def is_blocked(base_dir: str, nickname: str, domain: str, block_nickname: str, block_domain: str, - blocked_cache: [] = None) -> bool: + blocked_cache: [] = None, + block_federated: [] = None) -> bool: """Is the given account blocked? """ if is_evil(block_domain): @@ -790,6 +796,15 @@ def is_blocked(base_dir: str, nickname: str, domain: str, if not broch_mode_is_active(base_dir): # instance level block list + if block_federated: + for blocked_str in block_federated: + if '@' in blocked_str: + if block_handle: + if blocked_str == block_handle: + return True + elif blocked_str == block_domain: + return True + if blocked_cache: for blocked_str in blocked_cache: if block_nickname: diff --git a/crawlers.py b/crawlers.py index 77129a81b..708874139 100644 --- a/crawlers.py +++ b/crawlers.py @@ -105,6 +105,7 @@ def blocked_user_agent(calling_domain: str, agent_str: str, blocked_cache_last_updated, base_dir: str, blocked_cache: [], + block_federated: [], blocked_cache_update_secs: int, crawlers_allowed: [], known_bots: [], path: str, @@ -179,7 +180,8 @@ def blocked_user_agent(calling_domain: str, agent_str: str, blocked_cache_update_secs) blocked_ua = \ - is_blocked_domain(base_dir, agent_domain, blocked_cache) + is_blocked_domain(base_dir, agent_domain, + blocked_cache, block_federated) # if self.server.debug: if blocked_ua: print('BLOCK: Blocked User agent 2: ' + agent_domain) diff --git a/daemon.py b/daemon.py index 4fc6431ee..8643f1029 100644 --- a/daemon.py +++ b/daemon.py @@ -2100,7 +2100,8 @@ class PubServer(BaseHTTPRequestHandler): if debug: print('INBOX: checking for blocked domain ' + message_domain) if is_blocked_domain(self.server.base_dir, message_domain, - self.server.blocked_cache): + self.server.blocked_cache, + self.server.block_federated): print('INBOX: POST from blocked domain ' + message_domain) self._400() self.server.postreq_busy = False @@ -2206,6 +2207,7 @@ class PubServer(BaseHTTPRequestHandler): self.path, self.server.debug, self.server.blocked_cache, + self.server.block_federated, self.server.system_language, mitm) if queue_filename: @@ -17581,6 +17583,7 @@ class PubServer(BaseHTTPRequestHandler): self.server.blocked_cache_last_updated, self.server.base_dir, self.server.blocked_cache, + self.server.block_federated, self.server.blocked_cache_update_secs, self.server.crawlers_allowed, self.server.known_bots, @@ -23581,6 +23584,7 @@ class PubServer(BaseHTTPRequestHandler): self.server.blocked_cache_last_updated, self.server.base_dir, self.server.blocked_cache, + self.server.block_federated, self.server.blocked_cache_update_secs, self.server.crawlers_allowed, self.server.known_bots, diff --git a/inbox.py b/inbox.py index d4373dbbb..595493e99 100644 --- a/inbox.py +++ b/inbox.py @@ -680,7 +680,9 @@ def save_post_to_inbox_queue(base_dir: str, http_prefix: str, message_bytes: str, http_headers: {}, post_path: str, debug: bool, - blocked_cache: [], system_language: str, + blocked_cache: [], + block_federated: [], + system_language: str, mitm: bool) -> str: """Saves the given json to the inbox queue for the person key_id specifies the actor sending the post @@ -753,7 +755,7 @@ def save_post_to_inbox_queue(base_dir: str, http_prefix: str, get_domain_from_actor(in_reply_to) if reply_domain: if is_blocked_domain(base_dir, reply_domain, - blocked_cache): + blocked_cache, block_federated): if debug: print('WARN: post contains reply from ' + str(actor) +