diff --git a/files/classes/domains.py b/files/classes/domains.py index b68418e1f..16d0b4966 100644 --- a/files/classes/domains.py +++ b/files/classes/domains.py @@ -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) \ No newline at end of file + reason = Column(String(100)) \ No newline at end of file diff --git a/files/classes/submission.py b/files/classes/submission.py index a201c56db..1b04ba0fd 100644 --- a/files/classes/submission.py +++ b/files/classes/submission.py @@ -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))) diff --git a/files/classes/user.py b/files/classes/user.py index b46d0f264..91d9525ea 100644 --- a/files/classes/user.py +++ b/files/classes/user.py @@ -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): diff --git a/files/routes/comments.py b/files/routes/comments.py index c20e0ef3c..d08864c86 100644 --- a/files/routes/comments.py +++ b/files/routes/comments.py @@ -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