refactor banned domains
parent
be7be28182
commit
1a35e2ec6a
|
@ -299,22 +299,3 @@ def get_sub_by_name(sub, v=None, graceful=False) -> Optional[Sub]:
|
|||
if graceful: return None
|
||||
else: abort(404)
|
||||
return sub
|
||||
|
||||
def get_domain(s) -> Optional[BannedDomain]:
|
||||
parts = s.split(".")
|
||||
domain_list = set()
|
||||
for i in range(len(parts)):
|
||||
new_domain = parts[i]
|
||||
for j in range(i + 1, len(parts)):
|
||||
new_domain += "." + parts[j]
|
||||
|
||||
domain_list.add(new_domain)
|
||||
|
||||
doms = g.db.query(BannedDomain).filter(BannedDomain.domain.in_(domain_list)).all()
|
||||
|
||||
if not doms:
|
||||
return None
|
||||
|
||||
doms = sorted(doms, key=lambda x: len(x.domain), reverse=True)
|
||||
|
||||
return doms[0]
|
||||
|
|
|
@ -363,25 +363,16 @@ def sanitize(sanitized, golden=True, limit_pings=0, showmore=True, count_marseys
|
|||
domain_list = set()
|
||||
|
||||
for link in links:
|
||||
|
||||
href = link.get("href")
|
||||
if not href: continue
|
||||
|
||||
url = urlparse(href)
|
||||
domain = url.netloc
|
||||
url_path = url.path
|
||||
domain_list.add(domain+url_path)
|
||||
domain_list.add(url.netloc + url.path)
|
||||
|
||||
parts = domain.split(".")
|
||||
for i in range(len(parts)):
|
||||
new_domain = parts[i]
|
||||
for j in range(i + 1, len(parts)):
|
||||
new_domain += "." + parts[j]
|
||||
domain_list.add(new_domain)
|
||||
|
||||
bans = g.db.query(BannedDomain.domain).filter(BannedDomain.domain.in_(list(domain_list))).all()
|
||||
|
||||
if bans: abort(403, description=f"Remove the banned domains {bans} and try again!")
|
||||
banned_domains = g.db.query(BannedDomain).all()
|
||||
for x in banned_domains:
|
||||
for y in domain_list:
|
||||
if y.startswith(x.domain):
|
||||
abort(403, description=f'Remove the banned link "{x.domain}" and try again!\nReason for link ban: "{x.reason}"')
|
||||
|
||||
if '<pre>' not in sanitized:
|
||||
sanitized = sanitized.replace('\n','')
|
||||
|
|
|
@ -784,6 +784,12 @@ def submit_post(v, sub=None):
|
|||
if repost and FEATURES['REPOST_DETECTION'] and not v.admin_level >= PERMS['POST_BYPASS_REPOST_CHECKING']:
|
||||
return redirect(repost.permalink)
|
||||
|
||||
y = domain + parsed_url.path
|
||||
banned_domains = g.db.query(BannedDomain).all()
|
||||
for x in banned_domains:
|
||||
if y.startswith(x.domain):
|
||||
return error(f'Remove the banned link "{x.domain}" and try again!<br>Reason for link ban: "{x.reason}"')
|
||||
|
||||
domain_obj = get_domain(domain)
|
||||
if not domain_obj: domain_obj = get_domain(domain+parsed_url.path)
|
||||
|
||||
|
|
|
@ -154,7 +154,7 @@
|
|||
<a href="/" class="btn btn-secondary">Cancel</a>
|
||||
</div>
|
||||
<div class="col text-right">
|
||||
{% if error %}<span class="text-danger text-large mr-2">{{error}}</span>{% endif %}
|
||||
{% if error %}<span class="text-danger text-large mr-2">{{error | safe}}</span>{% endif %}
|
||||
<button class="btn btn-primary" id="create_button" type="submit" onclick="disable(this)" disabled>Post</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in New Issue