]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Mon, 24 Jul 2023 22:51:40 +0000 (00:51 +0200)
committerRoland Häder <roland@mxchange.org>
Mon, 24 Jul 2023 22:58:03 +0000 (00:58 +0200)
- instances.is_recent() now checks recheck_block if 'last_blocked' is provided
- command fetch_blocks() now supports --force parameter
- blacklisted fnaf.stream as this domain has super-long sub-domains (troll)

fba/boot.py
fba/commands.py
fba/helpers/blacklist.py
fba/models/instances.py

index abc94acde76a8d3a0578e180093ac16dd5ff859e..0da80a09ad5c0c83f729e6b7c0fc35f7e210cde7 100644 (file)
@@ -80,9 +80,10 @@ def init_parser():
         "fetch_blocks",
         help="Fetches blocks from registered instances (run command fetch_instances first!).",
     )
+    parser.set_defaults(command=commands.fetch_blocks)
     parser.add_argument("--domain", help="Instance name (aka. domain)")
     parser.add_argument("--software", help="Name of software, e.g. 'lemmy'")
-    parser.set_defaults(command=commands.fetch_blocks)
+    parser.add_argument("--force", action="store_true", help="Forces update of data, no matter what.")
 
     ### Fetch blocks from chaos.social ###
     parser = subparser_command.add_parser(
index cbdc60374286b7745002b3db29d9fb1f741f4ad2..c6e14f4cb9958df7b43063d21c9fb25bd1553c75 100644 (file)
@@ -279,7 +279,7 @@ def fetch_blocks(args: argparse.Namespace) -> int:
 
     if args.domain is not None and args.domain != "":
         # Re-check single domain
-        logger.debug("Querying database for single args.domain='%s' ...", args.domain)
+        logger.debug("Querying database for args.domain='%s' ...", args.domain)
         database.cursor.execute(
             "SELECT domain, software, origin, nodeinfo_url FROM instances WHERE domain = ?", [args.domain]
         )
@@ -289,6 +289,12 @@ def fetch_blocks(args: argparse.Namespace) -> int:
         database.cursor.execute(
             "SELECT domain, software, origin, nodeinfo_url FROM instances WHERE software = ? AND nodeinfo_url IS NOT NULL", [args.software]
         )
+    elif args.force:
+        # Re-check all
+        logger.debug("Re-checking all instances ...")
+        database.cursor.execute(
+            "SELECT domain, software, origin, nodeinfo_url FROM instances WHERE software IN ('pleroma', 'mastodon', 'lemmy', 'friendica', 'misskey') AND nodeinfo_url IS NOT NULL ORDER BY rowid DESC"
+        )
     else:
         # Re-check after "timeout" (aka. minimum interval)
         database.cursor.execute(
index a580a149332e54305fd1a1e5542042696959d77b..02bd319150cb831e5d240f0b55ef6476d80c60fc 100644 (file)
@@ -35,6 +35,7 @@ _blacklist = {
     "grid.tf"             : "Floods federation tables with fake nodes",
     "gitpod.io"           : "Floods federation tables with fake nodes",
     "everyoneattack.com"  : "Floods federation tables with fake nodes",
+    "fnaf.stream"         : "Trolls with over-long sub-domain name(s)",
     "ngrok.io"            : "Testing/developing instances shouldn't be part of public instances",
     "ngrok.app"           : "Testing/developing instances shouldn't be part of public instances",
     "ngrok-free.app"      : "Testing/developing instances shouldn't be part of public instances",
index 2549ed364897d8ea0c530b295e78836643e12885..c7db652c7736f682e62a4b1494b8b17764faec2b 100644 (file)
@@ -306,14 +306,18 @@ def is_recent(domain: str, column: str = "last_instance_fetch") -> bool:
         logger.debug("domain='%s' is not registered, returning False - EXIT!", domain)
         return False
 
+    key = "recheck_instance"
+    if column == "last_blocked":
+        key = "recheck_block"
+
     # Query database
     database.cursor.execute(f"SELECT {column} FROM instances WHERE domain = ? LIMIT 1", [domain])
 
     # Fetch row
     fetched = database.cursor.fetchone()[column]
 
-    logger.debug("fetched[%s]='%s'", type(fetched), fetched)
-    recently = isinstance(fetched, float) and (time.time() - fetched) <= config.get("recheck_instance")
+    logger.debug("fetched[%s]='%s',key='%s'", type(fetched), fetched, key)
+    recently = isinstance(fetched, float) and (time.time() - fetched) >= config.get(key)
 
     logger.debug("recently='%s' - EXIT!", recently)
     return recently