diff --git a/files/helpers/config/const.py b/files/helpers/config/const.py index faea64ba6..e5377e0d0 100644 --- a/files/helpers/config/const.py +++ b/files/helpers/config/const.py @@ -504,6 +504,7 @@ PERMS = { # Minimum admin_level to perform action. 'MODS_EVERY_HOLE': 5, 'MODS_EVERY_GROUP': 5, 'IGNORE_AWARD_IMMUNITY': 5, + 'IGNORE_DOMAIN_BAN': 5, } FEATURES = { diff --git a/files/helpers/sanitize.py b/files/helpers/sanitize.py index d1bcba10b..1a0546a68 100644 --- a/files/helpers/sanitize.py +++ b/files/helpers/sanitize.py @@ -505,7 +505,18 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_emojis= links = soup.find_all("a") - banned_domains = [x.domain for x in g.db.query(BannedDomain.domain).all()] + def error(error): + if chat: + return error, 403 + else: + abort(403, error) + + if g.v and g.v.admin_level >= PERMS["IGNORE_DOMAIN_BAN"]: + banned_domains = [] + else: + if discord_username_regex.match(sanitized): + return error("Stop grooming!") + banned_domains = [x.domain for x in g.db.query(BannedDomain.domain).all()] for link in links: #remove empty links @@ -559,16 +570,6 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_emojis= sanitized = str(soup).replace('
','').replace('','') - def error(error): - if chat: - return error, 403 - else: - abort(403, error) - - - if discord_username_regex.match(sanitized): - return error("Stop grooming!") - if '' not in sanitized and blackjack != "rules": sanitized = sanitized.replace('\n','') diff --git a/files/routes/posts.py b/files/routes/posts.py index d098871d2..a03ac0afe 100644 --- a/files/routes/posts.py +++ b/files/routes/posts.py @@ -525,12 +525,13 @@ def submit_post(v:User, sub=None): if repost and FEATURES['REPOST_DETECTION'] and not v.admin_level >= PERMS['POST_BYPASS_REPOST_CHECKING']: return {"post_id": repost.id, "success": False} - y = tldextract.extract(url).registered_domain + parsed_url.path - y = y.lower() - banned_domains = g.db.query(BannedDomain).all() - for x in banned_domains: - if y.startswith(x.domain): - abort(400, f'Remove the banned link "{x.domain}" and try again!\nReason for link ban: "{x.reason}"') + if v.admin_level < PERMS["IGNORE_DOMAIN_BAN"]: + y = tldextract.extract(url).registered_domain + parsed_url.path + y = y.lower() + banned_domains = g.db.query(BannedDomain).all() + for x in banned_domains: + if y.startswith(x.domain): + abort(400, f'Remove the banned link "{x.domain}" and try again!\nReason for link ban: "{x.reason}"') if "twitter.com" == domain: try: