]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Tue, 9 Jul 2024 23:09:45 +0000 (01:09 +0200)
committerRoland Häder <roland@mxchange.org>
Tue, 9 Jul 2024 23:09:45 +0000 (01:09 +0200)
- added 'wordpress' and 'oolong' as peer sources
- some APIs may return a dictionary (dict) for an instance entry

daemon.py
fba/commands.py
fba/http/federation.py

index 0d34158f79ad91259a90ef3ee184d5d5fcd2487d..9c76df9c4ac0d096631119bc3b016ead821f4559 100755 (executable)
--- a/daemon.py
+++ b/daemon.py
@@ -56,7 +56,7 @@ templates = Jinja2Templates(directory="templates")
 
 @router.get(config.get("base_url") + "/api/info.json", response_class=JSONResponse)
 def api_info():
-    database.cursor.execute("SELECT (SELECT COUNT(domain) FROM instances) AS total_websites, (SELECT COUNT(domain) FROM instances WHERE software IN ('pleroma', 'mastodon', 'lemmy', 'friendica', 'misskey', 'peertube', 'takahe', 'gotosocial', 'brighteon', 'wildebeest', 'bookwyrm', 'mitra', 'areionskey', 'mammuthus', 'neodb', 'smithereen', 'vebinet', 'toki', 'snac', 'biblioreads')) AS supported_instances, (SELECT COUNT(blocker) FROM blocks) AS total_blocks, (SELECT COUNT(domain) FROM instances WHERE last_error_details IS NOT NULL) AS erroneous_instances")
+    database.cursor.execute("SELECT (SELECT COUNT(domain) FROM instances) AS total_websites, (SELECT COUNT(domain) FROM instances WHERE software IN ('pleroma', 'mastodon', 'lemmy', 'friendica', 'misskey', 'peertube', 'takahe', 'gotosocial', 'brighteon', 'wildebeest', 'bookwyrm', 'mitra', 'areionskey', 'mammuthus', 'neodb', 'smithereen', 'vebinet', 'toki', 'snac', 'biblioreads', 'wordpress', 'oolong')) AS supported_instances, (SELECT COUNT(blocker) FROM blocks) AS total_blocks, (SELECT COUNT(domain) FROM instances WHERE last_error_details IS NOT NULL) AS erroneous_instances")
 
     row = database.cursor.fetchone()
 
index 8643c3009a4d47259ae9127b0348129d341d9d37..36c1b2effada1a0480b0cd1b5caa56e0a8db9017 100644 (file)
@@ -1031,7 +1031,7 @@ def fetch_instances(args: argparse.Namespace) -> int:
     database.cursor.execute(
         "SELECT domain, origin, software \
 FROM instances \
-WHERE software IN ('pleroma', 'mastodon', 'friendica', 'misskey', 'lemmy', 'peertube', 'takahe', 'gotosocial', 'brighteon', 'wildebeest', 'bookwyrm', 'mitra', 'areionskey', 'mammuthus', 'neodb', 'smithereen', 'vebinet', 'toki', 'snac', 'biblioreads', 'wordpress') \
+WHERE software IN ('pleroma', 'mastodon', 'friendica', 'misskey', 'lemmy', 'peertube', 'takahe', 'gotosocial', 'brighteon', 'wildebeest', 'bookwyrm', 'mitra', 'areionskey', 'mammuthus', 'neodb', 'smithereen', 'vebinet', 'toki', 'snac', 'biblioreads', 'wordpress', 'oolong') \
 ORDER BY total_peers DESC, last_response_time ASC, last_updated ASC"
     )
 
index 6fea3eabbb9b189ae76964e86378c46e98c8e9e2..8c1523c8aebd21c632058f4857c3eb5dd7b3238f 100644 (file)
@@ -148,6 +148,17 @@ def fetch_instances(domain: str, origin: str, software: str, command: str, path:
         if instance in [None, ""]:
             logger.debug("instance[%s]='%s' is either None or empty - SKIPPED!", type(instance), instance)
             continue
+        elif isinstance(instance, dict) and "url" in instance:
+            logger.debug("Found instance[url]='%s', extracting domain/host name ...", instance["url"])
+            if not validators.url(instance["url"]):
+                logger.warning("instance[url]='%s' is not a valid URL - SKIPPED!", instance["url"])
+                continue
+
+            components = urlparse(instance["url"])
+            logger.debug("components[%s]()=%d", type(components), len(components))
+
+            instance = components.netloc.lower().split(":")[0]
+            logger.debug("instance='%s'", instance)
 
         logger.debug("instance='%s' - BEFORE!", instance)
         instance = tidyup.domain(instance) if isinstance(instance, str) and instance != "" else None