]> git.mxchange.org Git - fba.git/blobdiff - api.py
also use hash to find blocks
[fba.git] / api.py
diff --git a/api.py b/api.py
index c6b9a338d40a1b7b40d5afffdd4063afffd15b15..713e0413f85adda64f390530a830cdbab4d8cc1a 100644 (file)
--- a/api.py
+++ b/api.py
@@ -1,9 +1,13 @@
 from fastapi import FastAPI
 import sqlite3
+from hashlib import sha256
 
 base_url = ""
 app = FastAPI(docs_url=base_url+"/docs", redoc_url=base_url+"/redoc")
 
+def get_hash(domain: str) -> str:
+    return sha256(domain.encode("utf-8")).hexdigest()
+
 @app.get(base_url+"/info")
 def info():
     conn = sqlite3.connect("blocks.db")
@@ -22,41 +26,25 @@ def info():
 def blocked(domain: str):
     conn = sqlite3.connect("blocks.db")
     c = conn.cursor()
-    c.execute("select blocker, block_level, reason from blocks where blocked = ?", (domain,))
+    wildchar = "*." + ".".join(domain.split(".")[-domain.count("."):])
+    c.execute("select blocker, block_level, reason from blocks where blocked = ? or blocked = ? or blocked = ?", (domain, wildchar, get_hash(domain)))
     blocks = c.fetchall()
     conn.close()
 
-    result = {
-        "reject": [],
-        "media_removal": [],
-        "federated_timeline_removal": [],
-        "media_nsfw": [],
-        "quarantined_instances": [],
-        "report_removal": [],
-        "followers_only": [],
-        "accept": [],
-        "avatar_removal": [],
-        "banner_removal": [],
-        "reject_deletes": [],
-    }
-
-    reasons = {
-        "reject": {},
-        "media_removal": {},
-        "federated_timeline_removal": {},
-        "media_nsfw": {},
-        "quarantined_instances": {},
-        "report_removal": {},
-        "followers_only": {},
-        "accept": {},
-        "avatar_removal": {},
-        "banner_removal": {},
-        "reject_deletes": {},
-    }
+    result = {}
+    reasons = {}
 
     for domain, block_level, reason in blocks:
-        result[block_level].append(domain)
-        reasons[block_level][domain] = reason
-
-    return result | {"reasons": reasons}
+        if block_level in result:
+            result[block_level].append(domain)
+        else:
+            result[block_level] = [domain]
+            
+        if reason != "":
+            if block_level in reasons:
+                reasons[block_level][domain] = reason
+            else:
+                reasons[block_level] = {domain: reason}
+
+    return {"blocks": result, "reasons": reasons}