From 3840ace97820acf98cb8f58ab1cab96f66e2def2 Mon Sep 17 00:00:00 2001 From: Vinoth Kannan Date: Tue, 16 Jul 2019 18:05:17 +0530 Subject: [PATCH] FIX: skip markdown conversion for hotlinked non image urls --- app/services/inline_uploads.rb | 8 ++++++++ spec/fabricators/upload_fabricator.rb | 9 +++++++++ spec/services/inline_uploads_spec.rb | 13 +++++++++++++ 3 files changed, 30 insertions(+) diff --git a/app/services/inline_uploads.rb b/app/services/inline_uploads.rb index e5652dbdfc6..13d5db72dd0 100644 --- a/app/services/inline_uploads.rb +++ b/app/services/inline_uploads.rb @@ -73,6 +73,9 @@ class InlineUploads markdown.scan(/(\n{2,}|\A)#{regexp}$/) do |match| if match[1].present? + extension = match[1].split(".")[-1].downcase + next if FileHelper.supported_images.exclude?(extension) + index = $~.offset(2)[0] indexes << index raw_matches << [match[1], match[1], +"![](#{PLACEHOLDER})", index] @@ -120,6 +123,11 @@ class InlineUploads .sort { |a, b| a[3] <=> b[3] } .each do |match, link, replace_with, _index| + if match == link + extension = match.split(".")[-1].downcase + next if FileHelper.supported_images.exclude?(extension) + end + node_info = link_occurences.shift next unless node_info&.dig(:is_valid) diff --git a/spec/fabricators/upload_fabricator.rb b/spec/fabricators/upload_fabricator.rb index 8c54009caf0..ae211c56cb9 100644 --- a/spec/fabricators/upload_fabricator.rb +++ b/spec/fabricators/upload_fabricator.rb @@ -21,6 +21,15 @@ Fabricator(:upload) do extension "png" end +Fabricator(:video_upload, from: :upload) do + original_filename "video.mp4" + width nil + height nil + thumbnail_width nil + thumbnail_height nil + extension "mp4" +end + Fabricator(:upload_s3, from: :upload) do url do |attrs| sequence(:url) do |n| diff --git a/spec/services/inline_uploads_spec.rb b/spec/services/inline_uploads_spec.rb index 88e3f39681f..32e1d182252 100644 --- a/spec/services/inline_uploads_spec.rb +++ b/spec/services/inline_uploads_spec.rb @@ -228,6 +228,19 @@ RSpec.describe InlineUploads do MD end + it "should not correct non image URLs to the short url and paths" do + SiteSetting.authorized_extensions = "mp4" + upload4 = Fabricate(:video_upload) + + md = <<~MD + #{GlobalSetting.cdn_url}#{upload4.url} + MD + + expect(InlineUploads.process(md)).to eq(<<~MD) + #{GlobalSetting.cdn_url}#{upload4.url} + MD + end + it "should correct img tags with uppercase upload extension" do md = <<~MD test