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("