]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Sun, 11 Jun 2023 15:57:51 +0000 (17:57 +0200)
committerRoland Häder <roland@mxchange.org>
Sun, 11 Jun 2023 15:57:51 +0000 (17:57 +0200)
- .arpa domains are reverse-ip-address domains and should not be used generally
- please choose a proper domain name, e.g. lemmy.myhomepage.tld

fba/commands.py
fba/federation.py
fba/instances.py
fba/networks/mastodon.py
fba/networks/pleroma.py

index d71c0ae7a4908e53f67d53b46a07d66ae5156002..669bee9b09fe066b4512fd0807e9341238fe51f3 100644 (file)
@@ -247,9 +247,16 @@ def fetch_blocks(args: argparse.Namespace):
                     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)
index 1e400529b6521b099cc1eb4ada8ebc87e98731b4..42d847f13d48911781cb83883bbf91b7844371af 100644 (file)
@@ -60,7 +60,10 @@ def fetch_instances(domain: str, origin: str, software: str, script: str, path:
     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)
 
@@ -76,6 +79,7 @@ def fetch_instances(domain: str, origin: str, software: str, script: str, 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
@@ -85,17 +89,23 @@ def fetch_instances(domain: str, origin: str, software: str, script: str, path:
         # 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)
 
@@ -382,8 +392,10 @@ def determine_software(domain: str, path: str = None) -> str:
     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)
index e2da016fcbb5a353e20817b882c84ebd0e0705b1..d29260703cc5104cce03e89c7a7e049766740394 100644 (file)
@@ -186,7 +186,7 @@ def add(domain: str, origin: str, command: str, path: str = None):
         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}'")
index 0dc62a007d387ba890ae7c0a5ce0e2e772738c8b..e0525fafbb7d1c660cb46ba4e22e8df3c1296a0b 100644 (file)
@@ -248,6 +248,9 @@ def fetch_blocks(domain: str, origin: str, nodeinfo_url: str):
                     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)
@@ -259,6 +262,9 @@ def fetch_blocks(domain: str, origin: str, nodeinfo_url: str):
                 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)
index c1082adb1f9bef328c401a22657f7b685d3ed988..62cf4c70c37765e797e429fca323725a7cea686b 100644 (file)
@@ -110,6 +110,9 @@ def fetch_blocks(domain: str, origin: str, nodeinfo_url: str):
                 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)
@@ -181,7 +184,10 @@ def fetch_blocks(domain: str, origin: str, nodeinfo_url: str):
                     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)