diff --git a/helpdesk/models.py b/helpdesk/models.py index 7f18cf20..f8ffb8b1 100644 --- a/helpdesk/models.py +++ b/helpdesk/models.py @@ -56,6 +56,19 @@ def get_markdown(text): if not text: return "" + pattern = fr'([\[\s\S\]]*?)\(([\s\S]*?):([\s\S]*?)\)' + # Regex check + if re.match(pattern, text): + # get get value of group regex + scheme = re.search(pattern, text, re.IGNORECASE).group(2) + # scheme check + if scheme in helpdesk_settings.ALLOWED_URL_SCHEMES: + replacement = '\\1(\\2:\\3)' + else: + replacement = '\\1(\\3)' + + text = re.sub(pattern, replacement, text, flags=re.IGNORECASE) + return mark_safe( markdown( text, diff --git a/helpdesk/settings.py b/helpdesk/settings.py index 6437502e..c68cc4b9 100644 --- a/helpdesk/settings.py +++ b/helpdesk/settings.py @@ -76,7 +76,10 @@ HELPDESK_AUTO_SUBSCRIBE_ON_TICKET_RESPONSE = getattr(settings, 'HELPDESK_AUTO_SUBSCRIBE_ON_TICKET_RESPONSE', False) - +# URL schemes that are allowed within links +ALLOWED_URL_SCHEMES = getattr(settings, 'ALLOWED_URL_SCHEMES', ( + 'file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', 'xmpp', +)) ############################ # options for public pages # ############################