remotes/1693045480750635534/spooky-22
Aevann1 2021-10-07 00:12:04 +02:00
parent b849e480e5
commit e9310939e5
4 changed files with 21 additions and 79 deletions

View File

@ -6,13 +6,4 @@ class BannedDomain(Base):
__tablename__ = "banneddomains"
id = Column(Integer, primary_key=True)
domain = Column(String(50))
reason = Column(String(100))
class BadLink(Base):
__tablename__ = "badlinks"
id = Column(Integer, primary_key=True)
link = Column(String(512))
reason = Column(String(100))
autoban = Column(Boolean, default=False)
reason = Column(String(100))

View File

@ -42,7 +42,7 @@ class Submission(Base):
downvotes = Column(Integer, default=0)
app_id=Column(Integer, ForeignKey("oauth_apps.id"))
title = Column(String(500))
title_html = Column(String(500))
title_html = Column(String(1000))
url = Column(String(500))
body = deferred(Column(String(10000)))
body_html = deferred(Column(String(20000)))

View File

@ -72,18 +72,18 @@ else:
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
username = Column(String(25))
namecolor = Column(String(6), default=defaultcolor)
background = Column(String(20))
customtitle = Column(String(300))
customtitleplain = Column(String(100))
if "pcmemes.net" in site:
quadrant = Column(String(20))
basedcount = Column(Integer, default=0)
pills = deferred(Column(String(300), default=""))
id = Column(Integer, primary_key=True)
username = Column(String(25))
namecolor = Column(String(6), default=defaultcolor)
background = Column(String(20))
customtitle = Column(String(300))
customtitleplain = Column(String(100))
titlecolor = Column(String(6), default=defaultcolor)
theme = Column(String(10), default=defaulttheme)
themecolor = Column(String(6), default=defaultcolor)
@ -124,12 +124,8 @@ class User(Base):
nitter = Column(Boolean)
frontsize = Column(Integer, default=25)
controversial = Column(Boolean, default=False)
submissions = relationship("Submission", lazy="dynamic", primaryjoin="Submission.author_id==User.id", viewonly=True)
bio = Column(String(1500))
bio_html = Column(String(10000))
badges = relationship("Badge", lazy="dynamic", viewonly=True)
notifications = relationship("Notification", lazy="dynamic", viewonly=True)
is_banned = Column(Integer, default=0)
unban_utc = Column(Integer, default=0)
ban_reason = Column(String(120))
@ -145,29 +141,25 @@ class User(Base):
defaultsortingcomments = Column(String(15), default="top")
defaultsorting = Column(String(15), default="hot")
defaulttime = Column(String(5), default=defaulttimefilter)
is_nofollow = Column(Boolean, default=False)
custom_filter_list = Column(String(1000))
discord_id = Column(String(64))
ban_evade = Column(Integer, default=0)
original_username = deferred(Column(String(25)))
subscriptions = relationship("Subscription", viewonly=True)
following = relationship("Follow", primaryjoin="Follow.user_id==User.id", viewonly=True)
followers = relationship("Follow", primaryjoin="Follow.target_id==User.id", viewonly=True)
viewers = relationship("ViewerRelationship", primaryjoin="User.id == ViewerRelationship.user_id", viewonly=True)
blocking = relationship("UserBlock", lazy="dynamic", primaryjoin="User.id==UserBlock.user_id", viewonly=True)
blocked = relationship("UserBlock", lazy="dynamic", primaryjoin="User.id==UserBlock.target_id", viewonly=True)
apps = relationship("OauthApp", lazy="dynamic", viewonly=True)
authorizations = relationship("ClientAuth", lazy="dynamic", viewonly=True)
awards = relationship("AwardRelationship", lazy="dynamic", primaryjoin="User.id==AwardRelationship.user_id", viewonly=True)
referred_by = Column(Integer, ForeignKey("users.id"))
submissions = relationship("Submission", lazy="dynamic", primaryjoin="Submission.author_id==User.id", viewonly=True)
badges = relationship("Badge", lazy="dynamic", viewonly=True)
notifications = relationship("Notification", lazy="dynamic", viewonly=True)
subscriptions = relationship("Subscription", viewonly=True)
following = relationship("Follow", primaryjoin="Follow.user_id==User.id", viewonly=True)
followers = relationship("Follow", primaryjoin="Follow.target_id==User.id", viewonly=True)
viewers = relationship("ViewerRelationship", primaryjoin="User.id == ViewerRelationship.user_id", viewonly=True)
blocking = relationship("UserBlock", lazy="dynamic", primaryjoin="User.id==UserBlock.user_id", viewonly=True)
blocked = relationship("UserBlock", lazy="dynamic", primaryjoin="User.id==UserBlock.target_id", viewonly=True)
apps = relationship("OauthApp", lazy="dynamic", viewonly=True)
authorizations = relationship("ClientAuth", lazy="dynamic", viewonly=True)
awards = relationship("AwardRelationship", lazy="dynamic", primaryjoin="User.id==AwardRelationship.user_id", viewonly=True)
referrals = relationship("User", viewonly=True)
def __init__(self, **kwargs):

View File

@ -239,25 +239,6 @@ def api_comment(v):
return {"error": "Too much spam!"}, 403
# check badlinks
soup = BeautifulSoup(body_html, features="html.parser")
links = [x['href'] for x in soup.find_all('a') if x.get('href')]
for link in links:
parse_link = urlparse(link)
check_url = ParseResult(scheme="https",
netloc=parse_link.netloc,
path=parse_link.path,
params=parse_link.params,
query=parse_link.query,
fragment='')
check_url = urlunparse(check_url)
badlink = g.db.query(BadLink).options(lazyload('*')).filter(
literal(check_url).contains(
BadLink.link)).first()
if badlink: return {"error": f"Remove the following link and try again: `{check_url}`. Reason: {badlink.reason}"}, 403
# create comment
parent_id = parent_fullname.split("_")[1]
@ -619,32 +600,10 @@ def edit_comment(cid, v):
if request.headers.get("Authorization"): return {'error': f'A blacklisted domain was used.'}, 400
else: return render_template("comment_failed.html",
action=f"/edit_comment/{c.id}",
badlinks=[
x.domain for x in bans],
badlinks=[x.domain for x in bans],
body=body,
v=v
)
# check badlinks
soup = BeautifulSoup(body_html, features="html.parser")
links = [x['href'] for x in soup.find_all('a') if x.get('href')]
for link in links:
parse_link = urlparse(link)
check_url = ParseResult(scheme="https",
netloc=parse_link.netloc,
path=parse_link.path,
params=parse_link.params,
query=parse_link.query,
fragment='')
check_url = urlunparse(check_url)
badlink = g.db.query(BadLink).options(lazyload('*')).filter(
literal(check_url).contains(
BadLink.link)).first()
if badlink:
return {"error": f"Remove the following link and try again: `{check_url}`. Reason: {badlink.reason}"}, 403
# check spam - this should hopefully be faster
now = int(time.time())
cutoff = now - 60 * 60 * 24