elif nodeinfo_url == "":
raise ValueError("Parameter 'nodeinfo_url' is empty")
- try:
- # Blocks
- blockdict = list()
- rows = federation.fetch_nodeinfo(domain, nodeinfo_url)
-
- if rows is None:
- print("WARNING: Could not fetch nodeinfo from domain:", domain)
- return
- elif "metadata" not in rows:
- print(f"WARNING: rows()={len(rows)} does not have key 'metadata', domain='{domain}'")
- return
- elif "federation" not in rows["metadata"]:
- print(f"WARNING: rows()={len(rows['metadata'])} does not have key 'federation', domain='{domain}'")
- return
-
- # DEBUG: print("DEBUG: Updating nodeinfo:", domain)
- instances.update_last_nodeinfo(domain)
-
- data = rows["metadata"]["federation"]
-
- if "enabled" in data:
- # DEBUG: print("DEBUG: Instance has no block list to analyze:", domain)
- return
-
- if "mrf_simple" in data:
- for block_level, blocklist in (
- {**data["mrf_simple"],
- **{"quarantined_instances": data["quarantined_instances"]}}
- ).items():
- # DEBUG: print("DEBUG: block_level, blocklist():", block_level, len(blocklist))
- block_level = tidyup.domain(block_level)
- # DEBUG: print("DEBUG: BEFORE block_level:", block_level)
-
- if block_level == "":
- print("WARNING: block_level is now empty!")
+ # Blocks
+ blockdict = list()
+ rows = federation.fetch_nodeinfo(domain, nodeinfo_url)
+
+ if rows is None:
+ print("WARNING: Could not fetch nodeinfo from domain:", domain)
+ return
+ elif "metadata" not in rows:
+ print(f"WARNING: rows()={len(rows)} does not have key 'metadata', domain='{domain}'")
+ return
+ elif "federation" not in rows["metadata"]:
+ print(f"WARNING: rows()={len(rows['metadata'])} does not have key 'federation', domain='{domain}'")
+ return
+
+ # DEBUG: print("DEBUG: Updating nodeinfo:", domain)
+ instances.update_last_nodeinfo(domain)
+
+ data = rows["metadata"]["federation"]
+
+ if "enabled" in data:
+ # DEBUG: print("DEBUG: Instance has no block list to analyze:", domain)
+ return
+
+ if "mrf_simple" in data:
+ for block_level, blocklist in (
+ {**data["mrf_simple"],
+ **{"quarantined_instances": data["quarantined_instances"]}}
+ ).items():
+ # DEBUG: print("DEBUG: block_level, blocklist():", block_level, len(blocklist))
+ block_level = tidyup.domain(block_level)
+ # DEBUG: print("DEBUG: BEFORE block_level:", block_level)
+
+ if block_level == "":
+ print("WARNING: block_level is now empty!")
+ continue
+
+ # DEBUG: print(f"DEBUG: Checking {len(blocklist)} entries from domain='{domain}',block_level='{block_level}' ...")
+ for blocked in blocklist:
+ # DEBUG: print("DEBUG: BEFORE blocked:", blocked)
+ blocked = tidyup.domain(blocked)
+ # DEBUG: print("DEBUG: AFTER blocked:", blocked)
+
+ if blocked == "":
+ print("WARNING: blocked is empty after tidyup.domain():", domain, block_level)
continue
-
- # DEBUG: print(f"DEBUG: Checking {len(blocklist)} entries from domain='{domain}',block_level='{block_level}' ...")
- for blocked in blocklist:
- # DEBUG: print("DEBUG: BEFORE blocked:", blocked)
- blocked = tidyup.domain(blocked)
- # DEBUG: print("DEBUG: AFTER blocked:", blocked)
-
- if blocked == "":
- print("WARNING: blocked is empty after tidyup.domain():", domain, block_level)
- continue
- elif blacklist.is_blacklisted(blocked):
- # DEBUG: print(f"DEBUG: blocked='{blocked}' is blacklisted - skipping!")
- continue
- elif blocked.count("*") > 1:
- # -ACK!-oma also started obscuring domains without hash
- fba.cursor.execute(
- "SELECT domain, nodeinfo_url FROM instances WHERE domain LIKE ? ORDER BY rowid LIMIT 1", [blocked.replace("*", "_")]
- )
- searchres = fba.cursor.fetchone()
-
- print(f"DEBUG: searchres[]='{type(searchres)}'")
- if searchres is None:
- print(f"WARNING: Cannot deobsfucate blocked='{blocked}' - SKIPPED!")
- continue
-
- blocked = searchres[0]
- nodeinfo_url = searchres[1]
- # DEBUG: print("DEBUG: Looked up domain:", blocked)
- elif not validators.domain(blocked):
- print(f"WARNING: blocked='{blocked}',software='pleroma' is not a valid domain name - skipped!")
+ elif blacklist.is_blacklisted(blocked):
+ # DEBUG: print(f"DEBUG: blocked='{blocked}' is blacklisted - skipping!")
+ continue
+ elif blocked.count("*") > 1:
+ # -ACK!-oma also started obscuring domains without hash
+ fba.cursor.execute(
+ "SELECT domain, nodeinfo_url FROM instances WHERE domain LIKE ? ORDER BY rowid LIMIT 1", [blocked.replace("*", "_")]
+ )
+ searchres = fba.cursor.fetchone()
+
+ print(f"DEBUG: searchres[]='{type(searchres)}'")
+ if searchres is None:
+ print(f"WARNING: Cannot deobsfucate blocked='{blocked}' - SKIPPED!")
continue
- # DEBUG: print("DEBUG: Looking up instance by domain:", blocked)
- if not validators.domain(blocked):
- print(f"WARNING: blocked='{blocked}',software='pleroma' is not a valid domain name - skipped!")
- 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}'")
- instances.add(blocked, domain, inspect.currentframe().f_code.co_name, nodeinfo_url)
-
- if not blocks.is_instance_blocked(domain, blocked, block_level):
- # DEBUG: print("DEBUG: Blocking:", domain, blocked, block_level)
- blocks.add_instance(domain, blocked, "unknown", block_level)
-
- if block_level == "reject":
- # DEBUG: print("DEBUG: Adding to blockdict:", blocked)
- blockdict.append(
- {
- "blocked": blocked,
- "reason" : None
- })
+ blocked = searchres[0]
+ nodeinfo_url = searchres[1]
+ # DEBUG: print("DEBUG: Looked up domain:", blocked)
+ elif not validators.domain(blocked):
+ print(f"WARNING: blocked='{blocked}',software='pleroma' is not a valid domain name - skipped!")
+ continue
+
+ # DEBUG: print("DEBUG: Looking up instance by domain:", blocked)
+ if not validators.domain(blocked):
+ print(f"WARNING: blocked='{blocked}',software='pleroma' is not a valid domain name - skipped!")
+ 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}'")
+ instances.add(blocked, domain, inspect.currentframe().f_code.co_name, nodeinfo_url)
+
+ if not blocks.is_instance_blocked(domain, blocked, block_level):
+ # DEBUG: print("DEBUG: Blocking:", domain, blocked, block_level)
+ blocks.add_instance(domain, blocked, "unknown", block_level)
+
+ if block_level == "reject":
+ # DEBUG: print("DEBUG: Adding to blockdict:", blocked)
+ blockdict.append({
+ "blocked": blocked,
+ "reason" : None
+ })
else:
# DEBUG: print(f"DEBUG: Updating block last seen for domain='{domain}',blocked='{blocked}' ...")
blocks.update_last_seen(domain, blocked, block_level)
- # DEBUG: print("DEBUG: Committing changes ...")
- fba.connection.commit()
-
- # Reasons
- if "mrf_simple_info" in data:
- # DEBUG: print("DEBUG: Found mrf_simple_info:", domain)
- for block_level, info in (
- {**data["mrf_simple_info"],
- **(data["quarantined_instances_info"]
- if "quarantined_instances_info" in data
- else {})}
- ).items():
- # DEBUG: print("DEBUG: block_level, info.items():", block_level, len(info.items()))
- block_level = tidyup.domain(block_level)
- # DEBUG: print("DEBUG: BEFORE block_level:", block_level)
-
- if block_level == "":
- print("WARNING: block_level is now empty!")
+ # DEBUG: print("DEBUG: Committing changes ...")
+ fba.connection.commit()
+
+ # Reasons
+ if "mrf_simple_info" in data:
+ # DEBUG: print("DEBUG: Found mrf_simple_info:", domain)
+ for block_level, info in (
+ {**data["mrf_simple_info"],
+ **(data["quarantined_instances_info"]
+ if "quarantined_instances_info" in data
+ else {})}
+ ).items():
+ # DEBUG: print("DEBUG: block_level, info.items():", block_level, len(info.items()))
+ block_level = tidyup.domain(block_level)
+ # DEBUG: print("DEBUG: BEFORE block_level:", block_level)
+
+ if block_level == "":
+ print("WARNING: block_level is now empty!")
+ continue
+
+ # DEBUG: print(f"DEBUG: Checking {len(info.items())} entries from domain='{domain}',software='pleroma',block_level='{block_level}' ...")
+ for blocked, reason in info.items():
+ # DEBUG: print(f"DEBUG: blocked='{blocked}',reason='{reason}' - BEFORE!")
+ blocked = tidyup.domain(blocked)
+ reason = tidyup.reason(reason) if reason is not None and reason != "" else None
+ # DEBUG: print(f"DEBUG: blocked='{blocked}',reason='{reason}' - AFTER!")
+
+ if blocked == "":
+ print("WARNING: blocked is empty after tidyup.domain():", domain, block_level)
continue
+ elif not validators.domain(blocked):
+ print(f"WARNING: blocked='{blocked}',software='pleroma' is not a valid domain name - skipped!")
+ continue
+ elif blacklist.is_blacklisted(blocked):
+ # DEBUG: print(f"DEBUG: blocked='{blocked}' is blacklisted - skipping!")
+ continue
+ elif blocked.count("*") > 1:
+ # same domain guess as above, but for reasons field
+ fba.cursor.execute(
+ "SELECT domain, origin, nodeinfo_url FROM instances WHERE domain LIKE ? ORDER BY rowid LIMIT 1", [blocked.replace("*", "_")]
+ )
+ searchres = fba.cursor.fetchone()
+
+ # DEBUG: print(f"DEBUG: searchres[]='{type(searchres)}'")
+ if searchres is None:
+ print(f"WARNING: Cannot deobsfucate blocked='{blocked}' - SKIPPED!")
+ continue
- # DEBUG: print(f"DEBUG: Checking {len(info.items())} entries from domain='{domain}',software='pleroma',block_level='{block_level}' ...")
- for blocked, reason in info.items():
- # DEBUG: print(f"DEBUG: blocked='{blocked}',reason='{reason}' - BEFORE!")
- blocked = tidyup.domain(blocked)
- reason = tidyup.reason(reason) if reason is not None and reason != "" else None
- # DEBUG: print(f"DEBUG: blocked='{blocked}',reason='{reason}' - AFTER!")
+ blocked = searchres[0]
+ origin = searchres[1]
+ nodeinfo_url = searchres[2]
- if blocked == "":
- print("WARNING: blocked is empty after tidyup.domain():", domain, block_level)
- continue
- elif not validators.domain(blocked):
- print(f"WARNING: blocked='{blocked}',software='pleroma' is not a valid domain name - skipped!")
- continue
- elif blacklist.is_blacklisted(blocked):
- # DEBUG: print(f"DEBUG: blocked='{blocked}' is blacklisted - skipping!")
- continue
- elif blocked.count("*") > 1:
- # same domain guess as above, but for reasons field
- fba.cursor.execute(
- "SELECT domain, origin, nodeinfo_url FROM instances WHERE domain LIKE ? ORDER BY rowid LIMIT 1", [blocked.replace("*", "_")]
- )
- searchres = fba.cursor.fetchone()
-
- # DEBUG: print(f"DEBUG: searchres[]='{type(searchres)}'")
- if searchres is None:
- print(f"WARNING: Cannot deobsfucate blocked='{blocked}' - SKIPPED!")
- continue
-
- blocked = searchres[0]
- origin = searchres[1]
- nodeinfo_url = searchres[2]
-
- # DEBUG: print("DEBUG: Looking up instance by domain:", blocked)
- if not instances.is_registered(blocked):
- # 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)
-
- # DEBUG: print("DEBUG: Updating block reason:", domain, blocked, reason["reason"])
- blocks.update_reason(reason["reason"], domain, blocked, block_level)
-
- # DEBUG: print(f"DEBUG: blockdict()={len(blockdict)}")
- for entry in blockdict:
- if entry["blocked"] == blocked:
- # DEBUG: print("DEBUG: Updating entry reason:", blocked)
- entry["reason"] = reason["reason"]
-
- fba.connection.commit()
- except BaseException as exception:
- print(f"ERROR: domain='{domain}',software='pleroma',exception[{type(exception)}]:'{str(exception)}'")
+ # DEBUG: print("DEBUG: Looking up instance by domain:", blocked)
+ if not instances.is_registered(blocked):
+ # 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)
+
+ # DEBUG: print("DEBUG: Updating block reason:", domain, blocked, reason["reason"])
+ blocks.update_reason(reason["reason"], domain, blocked, block_level)
+
+ # DEBUG: print(f"DEBUG: blockdict()={len(blockdict)}")
+ for entry in blockdict:
+ if entry["blocked"] == blocked:
+ # DEBUG: print("DEBUG: Updating entry reason:", blocked)
+ entry["reason"] = reason["reason"]
+
+ fba.connection.commit()
# DEBUG: print("DEBUG: EXIT!")