fix: prevent requesting more censures than domains

pull/20/head
db0 2023-09-08 14:55:51 +02:00
parent 78b1ebfa91
commit 3138111520
3 changed files with 25 additions and 3 deletions

View File

@ -1,3 +1,3 @@
requests requests
pythorhead pythorhead
pythonseer pythonseer>=0.1.3

View File

@ -17,6 +17,19 @@ blacklist = {
"truthsocial.com", "truthsocial.com",
"threads.net", "threads.net",
} }
# If you (don't) want to combine your own censures, with the ones from other trusted instances, adjust the list below.
# The censures will be the combined list from your own domain and any domains specified below.
trusted_instances = [
"lemmings.world",
]
# If you want to only block based on specific filters as specified by the admins who have censured them
# You can provide them in a list below. Any instance marked with that filter from your trusted instances
# Will be added. Others will be ignored
# Sample has been provided below
# reason_filters = ["loli","csam","bigotry"]
reason_filters = []
# If you want to only censure instances which have been marked by more than 1 trusted instance, then increase the number below
min_censures = 1
lemmy = Lemmy(f"https://{LEMMY_DOMAIN}") lemmy = Lemmy(f"https://{LEMMY_DOMAIN}")
@ -31,7 +44,14 @@ sus = fediseer.suspicions.get(
format=FormatType.LIST format=FormatType.LIST
) )
print("Fetching censures") print("Fetching censures")
censures = fediseer.censure.get_given(LEMMY_DOMAIN, FormatType.LIST) trusted_instances.append(LEMMY_DOMAIN)
censures = fediseer.censure.get_given(
domain_set = set(trusted_instances),
reasons = reason_filters,
min_censures = min_censures,
format = FormatType.LIST,
)
defed = blacklist | set(censures["domains"]) | set(sus["domains"]) defed = blacklist | set(censures["domains"]) | set(sus["domains"])
# I need to retrieve the site info because it seems if "RequireApplication" is set # I need to retrieve the site info because it seems if "RequireApplication" is set
# We need to always re-set the application_question. # We need to always re-set the application_question.

View File

@ -19,11 +19,13 @@ class CensuresGiven(Resource):
You can pass a comma-separated list of domain names You can pass a comma-separated list of domain names
and the results will be a set of all their censures together. and the results will be a set of all their censures together.
''' '''
domains_list = domains_csv.split(',')
self.args = self.get_parser.parse_args() self.args = self.get_parser.parse_args()
domains_list = domains_csv.split(',')
instances = database.find_multiple_instance_by_domains(domains_list) instances = database.find_multiple_instance_by_domains(domains_list)
if not instances: if not instances:
raise e.NotFound(f"No Instances found matching any of the provided domains. Have you remembered to register them?") raise e.NotFound(f"No Instances found matching any of the provided domains. Have you remembered to register them?")
if self.args.min_censures > len(domains_list):
raise e.BadRequest(f"You cannot request more censures than the amount of reference domains")
instance_details = [] instance_details = []
for c_instance in database.get_all_censured_instances_by_censuring_id([instance.id for instance in instances]): for c_instance in database.get_all_censured_instances_by_censuring_id([instance.id for instance in instances]):
censures = database.get_all_censure_reasons_for_censured_id(c_instance.id, [instance.id for instance in instances]) censures = database.get_all_censure_reasons_for_censured_id(c_instance.id, [instance.id for instance in instances])