diff --git a/app/helpers/markdown_helper.rb b/app/helpers/markdown_helper.rb
index bc49c89b..23af88a1 100644
--- a/app/helpers/markdown_helper.rb
+++ b/app/helpers/markdown_helper.rb
@@ -15,6 +15,11 @@ module MarkdownHelper
CGI.unescape_html(Sanitize.fragment(md.render(content), EVIL_TAGS)).strip
end
+ def question_markdown(content)
+ md = Redcarpet::Markdown.new(QuestionMarkdown.new, MARKDOWN_OPTS)
+ Sanitize.fragment(md.render(content), EVIL_TAGS).html_safe
+ end
+
def raw_markdown(content)
md = Redcarpet::Markdown.new(Redcarpet::Render::HTML, RAW_MARKDOWN_OPTS)
raw md.render content
diff --git a/app/services/flavored_markdown.rb b/app/services/flavored_markdown.rb
index a356d07e..0110954f 100644
--- a/app/services/flavored_markdown.rb
+++ b/app/services/flavored_markdown.rb
@@ -1,5 +1,6 @@
class FlavoredMarkdown < Redcarpet::Render::HTML
include Rails.application.routes.url_helpers
+ include SharedMarkers
def preprocess(text)
wrap_mentions(text)
diff --git a/app/services/shared_markers.rb b/app/services/shared_markers.rb
new file mode 100644
index 00000000..556ce655
--- /dev/null
+++ b/app/services/shared_markers.rb
@@ -0,0 +1,9 @@
+module SharedMarkers
+ def autolink(link, _link_type)
+ if ALLOWED_HOSTS.include? URI(link).host
+ return "#{link}"
+ end
+
+ "#{link}"
+ end
+end
\ No newline at end of file
diff --git a/config/initializers/redcarpet.rb b/config/initializers/redcarpet.rb
index da4a6a8e..031dcb13 100644
--- a/config/initializers/redcarpet.rb
+++ b/config/initializers/redcarpet.rb
@@ -25,3 +25,8 @@ RAW_MARKDOWN_OPTS = {
strikethrough: true,
superscript: false
}
+
+ALLOWED_HOSTS = [
+ APP_CONFIG['hostname'],
+ *APP_CONFIG['allowed_hosts']
+]
\ No newline at end of file
diff --git a/config/justask.yml.example b/config/justask.yml.example
index 2d2d2f64..6a112f8e 100644
--- a/config/justask.yml.example
+++ b/config/justask.yml.example
@@ -73,5 +73,12 @@ accepted_image_formats:
- image/gif
- .gif
+# This list controls which hosts are excempt from the linkfilter
+# Note: `hostname` is always included by default
+allowed_hosts:
+ - twitter.com
+ - youtube.com
+ - youtu.be
+
# Sentry connection string
sentry_dsn: ''