if not validators.domain(blocked):
print(f"WARNING: blocked='{blocked}',software='{software}' is not a valid domain name - skipped!")
continue
+ elif blocked.split(".")[-1] == "arpa":
+ 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("DEBUG: Hash wasn't found, adding:", blocked, blocker)
- instances.add(blocked, blocker, inspect.currentframe().f_code.co_name, nodeinfo_url)
+ try:
+ instances.add(blocked, blocker, inspect.currentframe().f_code.co_name, nodeinfo_url)
+ except network.exceptions as exception:
+ print(f"Exception during adding blocked='{blocked}',blocker='{blocker}': '{type(exception)}'")
+ continue
if not blocks.is_instance_blocked(blocker, blocked, block_level):
blocks.add_instance(blocker, blocked, reason, block_level)
elif domain == "":
raise ValueError("Parameter 'domain' is empty")
- if not instances.is_registered(domain):
+ if domain.split(".")[-1] == "arpa":
+ print(f"WARNING: domain='{domain}' is a reversed .arpa domain and should not be used generally.")
+ return
+ elif not instances.is_registered(domain):
# DEBUG: print("DEBUG: Adding new domain:", domain, origin)
instances.add(domain, origin, script, path)
print(f"INFO: Checking {len(peerlist)} instances from {domain} ...")
for instance in peerlist:
+ # DEBUG: print(f"DEBUG: instance='{instance}'")
if instance is None:
# Skip "None" types as tidup.domain() cannot parse them
continue
# DEBUG: print(f"DEBUG: instance='{instance}' - AFTER")
if instance == "":
- print("WARNING: Empty instance after tidyup.domain(), domain:", domain)
+ print(f"WARNING: Empty instance after tidyup.domain(), domain='{domain}'")
continue
elif not validators.domain(instance.split("/")[0]):
print(f"WARNING: Bad instance='{instance}' from domain='{domain}',origin='{origin}',software='{software}'")
continue
+ elif instance.split(".")[-1] == "arpa":
+ print(f"WARNING: instance='{instance}' is a reversed .arpa domain and should not be used generally.")
+ continue
elif blacklist.is_blacklisted(instance):
# DEBUG: print("DEBUG: instance is blacklisted:", instance)
continue
# DEBUG: print("DEBUG: Handling instance:", instance)
- if not instances.is_registered(instance):
+ if instance.split(".")[-1] == "arpa":
+ print(f"WARNING: instance='{instance}' is a reversed .arpa domain and should not be used generally.")
+ continue
+ elif not instances.is_registered(instance):
# DEBUG: print("DEBUG: Adding new instance:", instance, domain)
instances.add(instance, domain, script)
if "error_message" in data:
# DEBUG: print(f"DEBUG: Could not determine software type, domain='{domain}'")
if "exception" in data:
- raise Exception(f"Cannot fetch nodeinfo from domain='{domain}': '{data['error_message']}'") from data["exception"]
+ # Continue raising it
+ raise data["exception"]
else:
+ # Raise generic exception if none is attached
raise Exception(f"Cannot fetch nodeinfo from domain='{domain}': '{data['error_message']}'")
# DEBUG: print("DEBUG: data():", len(data), data)
raise ValueError(f"command[]='{type(command)}' is not 'str'")
elif command == "":
raise ValueError("Parameter 'command' is empty")
- elif not validators.domain(domain.split("/")[0]):
+ elif not validators.domain(domain.split("/")[0]) or domain.split(".")[-1] == "arpa":
raise ValueError(f"Bad domain name='{domain}'")
elif origin is not None and not validators.domain(origin.split("/")[0]):
raise ValueError(f"Bad origin name='{origin}'")
if not validators.domain(blocked):
print(f"WARNING: blocked='{blocked}',software='mastodon' is not a valid domain name - skipped!")
continue
+ elif blocked.split(".")[-1] == "arpa":
+ 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}'")
instances.add(blocked, domain, inspect.currentframe().f_code.co_name, nodeinfo_url)
if not validators.domain(blocked):
print(f"WARNING: blocked='{blocked}',software='mastodon' is not a valid domain name - skipped!")
continue
+ elif blocked.split(".")[-1] == "arpa":
+ 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("DEBUG: Hash wasn't found, adding:", blocked, domain)
instances.add(blocked, domain, inspect.currentframe().f_code.co_name, nodeinfo_url)
if not validators.domain(blocked):
print(f"WARNING: blocked='{blocked}',software='pleroma' is not a valid domain name - skipped!")
continue
+ elif blocked.split(".")[-1] == "arpa":
+ 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}'")
instances.add(blocked, domain, inspect.currentframe().f_code.co_name, nodeinfo_url)
nodeinfo_url = searchres[2]
# DEBUG: print("DEBUG: Looking up instance by domain:", blocked)
- if not instances.is_registered(blocked):
+ if blocked.split(".")[-1] == "arpa":
+ 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}'")
instances.add(blocked, domain, inspect.currentframe().f_code.co_name, nodeinfo_url)