]> git.mxchange.org Git - fba.git/blobdiff - fba/http/federation.py
Continued:
[fba.git] / fba / http / federation.py
index 2cb50f497744ea88b682a3630fc63753427a1f4b..2c35fc65887373b84dcf368329dbcc46e25b2d5b 100644 (file)
@@ -107,8 +107,12 @@ def fetch_instances(domain: str, origin: str, software: str, command: str, path:
     peerlist = list()
     logger.debug("software='%s'", software)
     if software is not None:
-        logger.debug("Fetching instances for domain='%s',software='%s',origin='%s'", domain, software, origin)
-        peerlist = fetch_peers(domain, software, origin)
+        try:
+            logger.debug("Fetching instances for domain='%s',software='%s',origin='%s'", domain, software, origin)
+            peerlist = fetch_peers(domain, software, origin)
+        except network.exceptions as exception:
+            _DEPTH = _DEPTH - 1
+            raise exception
 
     logger.debug("peerlist[]='%s'", type(peerlist))
     if isinstance(peerlist, list):
@@ -291,7 +295,7 @@ def fetch_generator_from_path(domain: str, path: str = "/") -> str:
     )
 
     logger.debug("response.ok='%s',response.status_code=%d,response.text()=%d", response.ok, response.status_code, len(response.text))
-    if ((response.ok and response.status_code == 200) or response.status_code == 410) and response.text.find("<html") > 0 and domain_helper.is_in_url(domain, response.url):
+    if ((response.ok and response.status_code == 200) or response.status_code == 410) and response.text.find("<html") > 0 and domain_helper.is_in_url(domain, response.url.split("#")[0]):
         logger.debug("Parsing response.text()=%d Bytes ...", len(response.text))
         doc = bs4.BeautifulSoup(response.text, "html.parser")
 
@@ -334,7 +338,7 @@ def fetch_generator_from_path(domain: str, path: str = "/") -> str:
             if software is not None and software != "":
                 logger.debug("domain='%s' has og:site_name='%s' - Setting detection_mode=SITE_NAME ...", domain, software)
                 instances.set_detection_mode(domain, "SITE_NAME")
-    elif not domain_helper.is_in_url(domain, response.url):
+    elif not domain_helper.is_in_url(domain, response.url.split("#")[0]):
         logger.warning("domain='%s' doesn't match response.url='%s', maybe redirect to other domain?", domain, response.url)
 
         components = urlparse(response.url)
@@ -451,14 +455,14 @@ def determine_software(domain: str, path: str = None) -> str:
         logger.debug("Returning None - EXIT!")
         return None
 
-    logger.debug("Setting original software='%s' ...", software)
+    logger.debug("Setting original software='%s' for domain='%s' ...", software, domain)
     instances.set_original_software(domain, software)
 
     logger.debug("software='%s'- BEFORE!", software)
     software = software_helper.alias(software)
     logger.debug("software['%s']='%s' - AFTER!", type(software), software)
 
-    if str(software) == "":
+    if software in [None, ""]:
         logger.debug("software for domain='%s' was not detected, trying generator ...", domain)
         software = fetch_generator_from_path(domain)
     elif len(str(software)) > 0 and ("." in software or " " in software):
@@ -477,6 +481,7 @@ def determine_software(domain: str, path: str = None) -> str:
 
 def find_domains(tag: bs4.element.Tag) -> list:
     logger.debug("tag[]='%s' - CALLED!", type(tag))
+
     if not isinstance(tag, bs4.element.Tag):
         raise ValueError(f"Parameter tag[]='{type(tag)}' is not type of bs4.element.Tag")
     elif len(tag.select("tr")) == 0:
@@ -527,8 +532,11 @@ def find_domains(tag: bs4.element.Tag) -> list:
 
 def add_peers(rows: dict) -> list:
     logger.debug("rows[]='%s' - CALLED!", type(rows))
+
     if not isinstance(rows, dict):
         raise ValueError(f"Parameter rows[]='{type(rows)}' is not of type 'dict'")
+    elif len(rows) == 0:
+        raise ValueError("Parameter 'rows' is empty")
 
     peers = list()
     for key in ["linked", "allowed", "blocked"]:
@@ -567,10 +575,10 @@ def fetch_blocks(domain: str) -> list:
     logger.debug("domain='%s' - CALLED!", domain)
     domain_helper.raise_on(domain)
 
-    if not instances.is_registered(domain):
-        raise Exception(f"domain='{domain}' is not registered but function is invoked.")
-    elif blacklist.is_blacklisted(domain):
+    if blacklist.is_blacklisted(domain):
         raise Exception(f"domain='{domain}' is blacklisted but function was invoked")
+    elif not instances.is_registered(domain):
+        raise Exception(f"domain='{domain}' is not registered but function is invoked.")
 
     # Init block list
     blocklist = list()