diff --git a/files/helpers/alerts.py b/files/helpers/alerts.py index f955350da..30c93a75b 100644 --- a/files/helpers/alerts.py +++ b/files/helpers/alerts.py @@ -1,8 +1,5 @@ -import mistletoe - from files.classes import * from flask import g -from .markdown import * from .sanitize import * from .const import * @@ -24,12 +21,7 @@ def send_repeatable_notification(uid, text, autojanny=False): if autojanny: author_id = AUTOJANNY_ID else: author_id = NOTIFICATIONS_ID - text_html = sanitize(Renderer2().render(mistletoe.Document(text))) - - for i in re.finditer("
@((\w|-){1,25})", text_html): - u = get_user(i.group(1), graceful=True) - if u: - text_html = text_html.replace(f'
@{u.username}', f'
@{u.username}') + text_html = sanitize(text, alert=True) existing_comment = g.db.query(Comment.id).filter_by(author_id=author_id, parent_submission=None, distinguish_level=6, body_html=text_html, created_utc=0).first() @@ -54,12 +46,7 @@ def notif_comment(text, autojanny=False): if autojanny: author_id = AUTOJANNY_ID else: author_id = NOTIFICATIONS_ID - text_html = sanitize(Renderer2().render(mistletoe.Document(text))) - - for i in re.finditer("
@((\w|-){1,25})", text_html): - u = get_user(i.group(1), graceful=True) - if u: - text_html = text_html.replace(f'
@{u.username}', f'
@{u.username}') + text_html = sanitize(text, alert=True) existing = g.db.query(Comment.id).filter_by(author_id=author_id, parent_submission=None, distinguish_level=6, body_html=text_html, created_utc=0).first() @@ -76,9 +63,7 @@ def add_notif(cid, uid): def send_admin(vid, text): - text_html = Renderer().render(mistletoe.Document(text)) - - text_html = sanitize(text_html, True) + text_html = sanitize(text, noimages=True) new_comment = Comment(author_id=vid, parent_submission=None, diff --git a/files/helpers/const.py b/files/helpers/const.py index 707ef22e8..ca38bb48d 100644 --- a/files/helpers/const.py +++ b/files/helpers/const.py @@ -154,7 +154,7 @@ if SITE == 'rdrama.net': AUTOPOLLER_ID = 6176 AUTOBETTER_ID = 7668 TAX_RECEIVER_ID = 995 - PIZZA_SHILL_ID = 2424 + AUTO_UPVOTE_IDS = (2424,4245) IDIO_ID = 30 CARP_ID = 995 JOAN_ID = 28 @@ -180,7 +180,7 @@ elif SITE == "pcmemes.net": AUTOPOLLER_ID = 3369 AUTOBETTER_ID = 1867 TAX_RECEIVER_ID = 1592 - PIZZA_SHILL_ID = 0 + AUTO_UPVOTE_IDS = () IDIO_ID = 0 CARP_ID = 0 JOAN_ID = 0 @@ -206,7 +206,7 @@ else: AUTOPOLLER_ID = 6 AUTOBETTER_ID = 7 TAX_RECEIVER_ID = 8 - PIZZA_SHILL_ID = 0 + AUTO_UPVOTE_IDS = () IDIO_ID = 0 CARP_ID = 0 JOAN_ID = 0 diff --git a/files/helpers/markdown.py b/files/helpers/markdown.py deleted file mode 100644 index 37d5f7831..000000000 --- a/files/helpers/markdown.py +++ /dev/null @@ -1,102 +0,0 @@ -from .get import * - -from mistletoe.span_token import SpanToken -from mistletoe.html_renderer import HTMLRenderer -import re -from flask import g - - -class UserMention(SpanToken): - - pattern = re.compile("(^|\s|\n)@((\w|-){1,25})") - parse_inner = False - def __init__(self, match_obj): - self.target = (match_obj.group(1), match_obj.group(2)) - -class SubMention(SpanToken): - - pattern = re.compile("(^|\s|\n)(r/|/r/)(\w{3,25})") - parse_inner = False - def __init__(self, match_obj): - self.target = (match_obj.group(1), match_obj.group(3)) - -class RedditorMention(SpanToken): - - pattern = re.compile("(^|\s|\n)(u/|/u/)((\w|-){3,25})") - parse_inner = False - def __init__(self, match_obj): - self.target = (match_obj.group(1), match_obj.group(3)) - -class CustomRenderer(HTMLRenderer): - - def __init__(self, **kwargs): - super().__init__(UserMention, SubMention, RedditorMention) - for i in kwargs: self.__dict__[i] = kwargs[i] - - def render_user_mention(self, token): - space = token.target[0] - target = token.target[1] - - user = get_user(target, graceful=True) - - if not user: return f"{space}@{target}" - - return f'''{space}@{user.username}''' - - def render_sub_mention(self, token): - space = token.target[0] - target = token.target[1] - return f'{space}r/{target}' - - def render_redditor_mention(self, token): - space = token.target[0] - target = token.target[1] - return f'{space}u/{target}' - - -class Renderer(HTMLRenderer): - - def __init__(self, **kwargs): - super().__init__(UserMention, SubMention, RedditorMention) - for i in kwargs: self.__dict__[i] = kwargs[i] - - def render_user_mention(self, token): - space = token.target[0] - target = token.target[1] - - user = get_user(target, graceful=True) - - if not user: return f"{space}@{target}" - - return f'{space}@{user.username}' - - def render_sub_mention(self, token): - space = token.target[0] - target = token.target[1] - return f'{space}r/{target}' - - def render_redditor_mention(self, token): - space = token.target[0] - target = token.target[1] - return f'{space}u/{target}' - -class Renderer2(HTMLRenderer): - - def __init__(self, **kwargs): - super().__init__(UserMention, SubMention, RedditorMention) - for i in kwargs: self.__dict__[i] = kwargs[i] - - def render_user_mention(self, token): - space = token.target[0] - target = token.target[1] - return f"{space}@{target}" - - def render_sub_mention(self, token): - space = token.target[0] - target = token.target[1] - return f"{space}r/{target}" - - def render_redditor_mention(self, token): - space = token.target[0] - target = token.target[1] - return f"{space}u/{target}" \ No newline at end of file diff --git a/files/helpers/sanitize.py b/files/helpers/sanitize.py index 068b43322..c8fd15b4e 100644 --- a/files/helpers/sanitize.py +++ b/files/helpers/sanitize.py @@ -5,6 +5,7 @@ from functools import partial from .get import * from os import path, environ import re +from markdown import markdown site = environ.get("DOMAIN").strip() @@ -97,9 +98,29 @@ allowed_protocols = ['http', 'https'] allowed_styles = ['color', 'background-color', 'font-weight', 'transform', '-webkit-transform'] -def sanitize(sanitized, noimages=False): +def sanitize(sanitized, noimages=False, alert=False): + + sanitized = markdown(sanitized) + + sanitized = sanitized.replace("\ufeff", "").replace("𒐪","").replace("