]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Thu, 8 Jun 2023 18:24:46 +0000 (20:24 +0200)
committerRoland Häder <roland@mxchange.org>
Thu, 8 Jun 2023 18:24:46 +0000 (20:24 +0200)
- gotosocial has no open API for instance blocks

api.py
fba/commands.py
fba/federation/__init__.py
fba/federation/gotosocial.py [deleted file]

diff --git a/api.py b/api.py
index 7c41eed383d817a2d1da6dd5ace564e6b67f3a73..d2923495bbfa80d88c797c9dffc00f568190ceaf 100644 (file)
--- a/api.py
+++ b/api.py
@@ -34,7 +34,7 @@ templates = Jinja2Templates(directory="templates")
 
 @router.get(config.get("base_url") + "/api/info.json", response_class=JSONResponse)
 def info():
-    fba.cursor.execute("SELECT (SELECT COUNT(domain) FROM instances), (SELECT COUNT(domain) FROM instances WHERE software IN ('pleroma', 'mastodon', 'misskey', 'gotosocial', 'friendica', 'bookwyrm', 'takahe', 'peertube')), (SELECT COUNT(blocker) FROM blocks), (SELECT COUNT(domain) FROM instances WHERE last_status_code IS NOT NULL)")
+    fba.cursor.execute("SELECT (SELECT COUNT(domain) FROM instances), (SELECT COUNT(domain) FROM instances WHERE software IN ('pleroma', 'mastodon', 'misskey', 'friendica', 'bookwyrm', 'takahe', 'peertube')), (SELECT COUNT(blocker) FROM blocks), (SELECT COUNT(domain) FROM instances WHERE last_status_code IS NOT NULL)")
     known, indexed, blocklist, errorous = fba.cursor.fetchone()
 
     return {
index 6df7cd962c0f7cfb00fe50cc8e36d3bd2a6d9445..53ad51838e89ec064fcf64a1df0e85402e34217e 100644 (file)
@@ -121,12 +121,12 @@ def fetch_blocks(args: argparse.Namespace):
     if args.domain != None and args.domain != "":
         # Re-check single domain
         fba.cursor.execute(
-            "SELECT domain, software, origin, nodeinfo_url FROM instances WHERE software IN ('pleroma', 'mastodon', 'friendica', 'misskey', 'gotosocial', 'bookwyrm', 'takahe') AND domain = ?", [args.domain]
+            "SELECT domain, software, origin, nodeinfo_url FROM instances WHERE software IN ('pleroma', 'mastodon', 'friendica', 'misskey', 'bookwyrm', 'takahe') AND domain = ?", [args.domain]
         )
     else:
         # Re-check after "timeout" (aka. minimum interval)
         fba.cursor.execute(
-            "SELECT domain, software, origin, nodeinfo_url FROM instances WHERE software IN ('pleroma', 'mastodon', 'friendica', 'misskey', 'gotosocial', 'bookwyrm', 'takahe') AND (last_blocked IS NULL OR last_blocked < ?) ORDER BY rowid DESC", [time.time() - config.get("recheck_block")]
+            "SELECT domain, software, origin, nodeinfo_url FROM instances WHERE software IN ('pleroma', 'mastodon', 'friendica', 'misskey', 'bookwyrm', 'takahe') AND (last_blocked IS NULL OR last_blocked < ?) ORDER BY rowid DESC", [time.time() - config.get("recheck_block")]
         )
 
     rows = fba.cursor.fetchall()
@@ -243,9 +243,6 @@ def fetch_blocks(args: argparse.Namespace):
                 fba.connection.commit()
             except Exception as e:
                 print(f"ERROR: blocker='{blocker}',software='{software}',exception[{type(e)}]:'{str(e)}'")
-        elif software == "gotosocial":
-            print(f"INFO: blocker='{blocker}',software='{software}'")
-            gotosocial.fetch_blocks(blocker, origin, nodeinfo_url)
         else:
             print("WARNING: Unknown software:", blocker, software)
 
@@ -417,7 +414,7 @@ def fetch_instances(args: argparse.Namespace):
 
     # Loop through some instances
     fba.cursor.execute(
-        "SELECT domain, origin, software, nodeinfo_url FROM instances WHERE software IN ('pleroma', 'mastodon', 'friendica', 'misskey', 'gotosocial', 'bookwyrm', 'takahe', 'lemmy') AND (last_instance_fetch IS NULL OR last_instance_fetch < ?) ORDER BY rowid DESC", [time.time() - config.get("recheck_instance")]
+        "SELECT domain, origin, software, nodeinfo_url FROM instances WHERE software IN ('pleroma', 'mastodon', 'friendica', 'misskey', 'bookwyrm', 'takahe', 'lemmy') AND (last_instance_fetch IS NULL OR last_instance_fetch < ?) ORDER BY rowid DESC", [time.time() - config.get("recheck_instance")]
     )
 
     rows = fba.cursor.fetchall()
index a2fdf73b16ac22b879dbf36a2be2afd584e4ca1d..31e599293a7734999a1e376a412d7d647d75286d 100644 (file)
@@ -1,5 +1,4 @@
 __all__ = [
-    'gotosocial',
     'lemmy',
     'mastodon',
     'misskey',
diff --git a/fba/federation/gotosocial.py b/fba/federation/gotosocial.py
deleted file mode 100644 (file)
index 10c9bff..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-# Fedi API Block - An aggregator for fetching blocking data from fediverse nodes
-# Copyright (C) 2023 Free Software Foundation
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as published
-# by the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program.  If not, see <https://www.gnu.org/licenses/>.
-
-import inspect
-import validators
-
-from fba import blacklist
-from fba import blocks
-from fba import config
-from fba import fba
-from fba import instances
-
-def fetch_blocks(domain: str, origin: str, nodeinfo_url: str):
-    print(f"DEBUG: domain='{domain}',origin='{origin}',nodeinfo_url='{nodeinfo_url}' - CALLED!")
-    if type(domain) != str:
-        raise ValueError(f"Parameter domain[]={type(domain)} is not 'str'")
-    elif domain == "":
-        raise ValueError(f"Parameter 'domain' is empty")
-    elif type(origin) != str and origin != None:
-        raise ValueError(f"Parameter origin[]={type(origin)} is not 'str'")
-    elif origin == "":
-        raise ValueError(f"Parameter 'origin' is empty")
-    elif type(nodeinfo_url) != str:
-        raise ValueError(f"Parameter nodeinfo_url[]={type(nodeinfo_url)} is not 'str'")
-    elif nodeinfo_url == "":
-        raise ValueError(f"Parameter 'nodeinfo_url' is empty")
-
-    try:
-        # Blocks
-        federation = fba.get_response(domain, f"/api/v1/instance/peers?filter=suspended", fba.api_headers, (config.get("connection_timeout"), config.get("read_timeout"))).json()
-
-        if (federation == None):
-            print("WARNING: No valid response:", domain);
-        elif "error" in federation:
-            print("WARNING: API returned error:", federation["error"])
-        else:
-            print(f"INFO: Checking {len(federation)} entries from domain='{domain}',software='gotosocial' ...")
-            for peer in federation:
-                blocked = peer["domain"].lower()
-                print("DEBUG: BEFORE blocked:", blocked)
-                blocked = fba.tidyup_domain(blocked)
-                print("DEBUG: AFTER blocked:", blocked)
-
-                if blocked == "":
-                    print("WARNING: blocked is empty:", domain)
-                    continue
-                elif blacklist.is_blacklisted(blocked):
-                    print(f"DEBUG: blocked='{blocked}' is blacklisted - skipping!")
-                    continue
-                elif blocked.count("*") > 0:
-                    # GTS does not have hashes for obscured domains, so we have to guess it
-                    fba.cursor.execute(
-                        "SELECT domain, origin, nodeinfo_url FROM instances WHERE domain LIKE ? ORDER BY rowid LIMIT 1", [blocked.replace("*", "_")]
-                    )
-                    searchres = fba.cursor.fetchone()
-
-                    if searchres == None:
-                        print(f"WARNING: Cannot deobsfucate blocked='{blocked}' - SKIPPED!")
-                        continue
-
-                    blocked = searchres[0]
-                    origin = searchres[1]
-                    nodeinfo_url = searchres[2]
-                elif not validators.domain(blocked):
-                    print(f"WARNING: blocked='{blocked}',software='gotosocial' is not a valid domain name - skipped!")
-                    continue
-
-                print("DEBUG: Looking up instance by domain:", blocked)
-                if not validators.domain(blocked):
-                    print(f"WARNING: blocked='{blocked}',software='gotosocial' is not a valid domain name - skipped!")
-                    continue
-                elif not instances.is_registered(blocked):
-                    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, "reject"):
-                    print(f"DEBUG: domain='{domain}' is blocking '{blocked}' for unknown reason at this point")
-                    blocks.add_instance(domain, blocked, "unknown", "reject")
-
-                    blockdict.append({
-                        "blocked": blocked,
-                        "reason" : None
-                    })
-                else:
-                    print(f"DEBUG: Updating block last seen for domain='{domain}',blocked='{blocked}' ...")
-                    blocks.update_last_seen(domain, blocked, "reject")
-
-                if "public_comment" in peer:
-                    print("DEBUG: Updating block reason:", domain, blocked, peer["public_comment"])
-                    blocks.update_reason(peer["public_comment"], domain, blocked, "reject")
-
-                    for entry in blockdict:
-                        if entry["blocked"] == blocked:
-                            print(f"DEBUG: Setting block reason for blocked='{blocked}':'{peer['public_comment']}'")
-                            entry["reason"] = peer["public_comment"]
-
-            print("DEBUG: Committing changes ...")
-            fba.connection.commit()
-    except Exception as e:
-        print(f"ERROR: domain='{domain}',software='gotosocial',exception[{type(e)}]:'{str(e)}'")
-
-    print("DEBUG: EXIT!")