1 from requests import get
3 from hashlib import sha256
6 conn = sqlite3.connect("blocks.db")
9 with open("pleroma_instances.txt", "r") as f:
10 while blocker := f.readline().strip():
13 c.execute("delete from blocks where blocker = ?", (blocker,))
14 json = loads(get(f"https://{blocker}/nodeinfo/2.1.json").text)
15 for mrf in json["metadata"]["federation"]["mrf_simple"]:
16 for blocked in json["metadata"]["federation"]["mrf_simple"][mrf]:
17 c.execute("select case when ? in (select domain from instances) then 1 else 0 end", (blocked,))
18 if c.fetchone() == (0,):
19 c.execute("insert into instances select ?, ?", (blocked, sha256(bytes(blocked, "utf-8")).hexdigest()))
20 c.execute("insert into blocks select ?, ?, '', ?", (blocker, blocked, mrf))
21 for blocked in json["metadata"]["federation"]["quarantined_instances"]:
22 c.execute("select case when ? in (select domain from instances) then 1 else 0 end", (blocked,))
23 if c.fetchone() == (0,):
24 c.execute("insert into instances select ?, ?", (blocked, sha256(bytes(blocked, "utf-8")).hexdigest()))
25 c.execute("insert into blocks select ?, ?, '', 'quarantined_instances'", (blocker, blocked))
27 for mrf in json["metadata"]["federation"]["mrf_simple_info"]:
28 for blocked in json["metadata"]["federation"]["mrf_simple_info"][mrf]:
29 c.execute("update blocks set reason = ? where blocker = ? and blocked = ? and block_level = ?", (json["metadata"]["federation"]["mrf_simple_info"][mrf][blocked]["reason"], blocker, blocked, mrf))
30 for blocked in json["metadata"]["federation"]["quarantined_instances_info"]["quarantined_instances"]:
31 c.execute("update blocks set reason = ? where blocker = ? and blocked = ? and block_level = 'quarantined_instances'", (json["metadata"]["federation"]["quarantined_instances_info"]["quarantined_instances"][blocked]["reason"], blocker, blocked))
36 with open("mastodon_instances.txt", "r") as f:
37 while blocker := f.readline().strip():
40 c.execute("delete from blocks where blocker = ?", (blocker,))
41 json = loads(get(f"http://127.0.0.1:8069/{blocker}").text)
42 for blocked in json["reject"]:
43 if blocked["domain"].count("*") > 1:
44 c.execute("insert into blocks select ?, ifnull((select domain from instances where hash = ?), ?), ?, 'reject'", (blocker, blocked["hash"], blocked["hash"], blocked['reason']))
46 c.execute("select case when ? in (select domain from instances) then 1 else 0 end", (blocked["domain"],))
47 if c.fetchone() == (0,):
48 c.execute("insert into instances select ?, ?", (blocked["domain"], sha256(bytes(blocked["domain"], "utf-8")).hexdigest()))
49 c.execute("insert into blocks select ?, ?, ?, 'reject'", (blocker, blocked["domain"], blocked["reason"]))
50 for blocked in json["media_removal"]:
51 if blocked["domain"].count("*") > 1:
52 c.execute("insert into blocks select ?, ifnull((select domain from instances where hash = ?), ?), ?, 'media_removal'", (blocker, blocked["hash"], blocked["hash"], blocked['reason']))
54 c.execute("select case when ? in (select domain from instances) then 1 else 0 end", (blocked["domain"],))
55 if c.fetchone() == (0,):
56 c.execute("insert into instances select ?, ?", (blocked["domain"], sha256(bytes(blocked["domain"], "utf-8")).hexdigest()))
57 c.execute("insert into blocks select ?, ?, ?, 'media_removal'", (blocker, blocked["domain"], blocked["reason"]))
58 for blocked in json["federated_timeline_removal"]:
59 if blocked["domain"].count("*") > 1:
60 c.execute("insert into blocks select ?, ifnull((select domain from instances where hash = ?), ?), ?, 'federated_timeline_removal'", (blocker, blocked["hash"], blocked["hash"], blocked['reason']))
62 c.execute("select case when ? in (select domain from instances) then 1 else 0 end", (blocked["domain"],))
63 if c.fetchone() == (0,):
64 c.execute("insert into instances select ?, ?", (blocked["domain"], sha256(bytes(blocked["domain"], "utf-8")).hexdigest()))
65 c.execute("insert into blocks select ?, ?, ?, 'federated_timeline_removal'", (blocker, blocked["domain"], blocked["reason"]))