From c8b6b6a4aea21b3fefc8fd4900391d59751ff814 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sun, 11 Jun 2023 19:25:49 +0200 Subject: [PATCH] Continued: - need to catch exceptions here so more instances can be added with software=None --- fba/instances.py | 9 +++++++-- fba/networks/pleroma.py | 11 +++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/fba/instances.py b/fba/instances.py index d292607..e7a5bd2 100644 --- a/fba/instances.py +++ b/fba/instances.py @@ -25,6 +25,7 @@ from fba import blacklist from fba import cache from fba import fba from fba import federation +from fba import network # Found info from node, such as nodeinfo URL, detection mode that needs to be # written to database. Both arrays must be filled at the same time or else @@ -195,8 +196,12 @@ def add(domain: str, origin: str, command: str, path: str = None): elif domain.find("/profile/") > 0 or domain.find("/users/") > 0: raise Exception(f"domain='{domain}' is a single user") - # DEBUG: print("DEBUG: domain,origin,command,path:", domain, origin, command, path) - software = federation.determine_software(domain, path) + software = None + try: + # DEBUG: print("DEBUG: domain,origin,command,path:", domain, origin, command, path) + software = federation.determine_software(domain, path) + except network.exceptions as exception: + print(f"WARNING Exception '{type(exception)}' during determining software type") # DEBUG: print("DEBUG: Determined software:", software) if software == "lemmy" and domain.find("/c/") > 0: diff --git a/fba/networks/pleroma.py b/fba/networks/pleroma.py index d024f1d..ade0592 100644 --- a/fba/networks/pleroma.py +++ b/fba/networks/pleroma.py @@ -46,7 +46,11 @@ def fetch_blocks(domain: str, origin: str, nodeinfo_url: str): # Blocks blockdict = list() - rows = federation.fetch_nodeinfo(domain, nodeinfo_url) + rows = None + try: + rows = federation.fetch_nodeinfo(domain, nodeinfo_url) + except network.exceptions as exception: + print(f"WARNING: Exception '{type(exception)}' during fetching nodeinfo") if rows is None: print("WARNING: Could not fetch nodeinfo from domain:", domain) @@ -118,6 +122,9 @@ def fetch_blocks(domain: str, origin: str, nodeinfo_url: str): # DEBUG: print("DEBUG: Looking up instance by domain:", blocked) if not instances.is_registered(blocked): + # Commit changes + fba.connection.commit() + # DEBUG: print(f"DEBUG: Domain blocked='{blocked}' wasn't found, adding ..., domain='{domain}',origin='{origin}',nodeinfo_url='{nodeinfo_url}'") instances.add(blocked, domain, inspect.currentframe().f_code.co_name, nodeinfo_url) @@ -201,7 +208,7 @@ def fetch_blocks(domain: str, origin: str, nodeinfo_url: str): print(f"WARNING: blocked='{blocked}' is a reversed .arpa domain and should not be used generally.") continue elif not instances.is_registered(blocked): - # DEBUG: print(f"DEBUG: Domain blocked='{blocked}' wasn't found, adding ..., domain='{domain}',origin='{origin}',nodeinfo_url='{nodeinfo_url}'") + # DEBUG: print(f"DEBUG: Domain blocked='{blocked}' wasn't found, adding ..., domain='{domain}',origin='{origin}',nodein instances.add(blocked, domain, inspect.currentframe().f_code.co_name, nodeinfo_url) # DEBUG: print(f"DEBUG: Updating block reason: reason='{reason}',domain='{domain}',blocked='{blocked}',block_level='{block_level}'") -- 2.39.5