FIX: don't put attachments on the CDN when 'prevent anons from downloading files' is enabled
This commit is contained in:
parent
49e7124a5e
commit
02bb7beaaf
|
@ -308,8 +308,8 @@ class CookedPostProcessor
|
||||||
end
|
end
|
||||||
|
|
||||||
def optimize_urls
|
def optimize_urls
|
||||||
# when login is required, attachments can't be on the CDN
|
# attachments can't be on the CDN when either setting is enabled
|
||||||
if SiteSetting.login_required
|
if SiteSetting.login_required || SiteSetting.prevent_anons_from_downloading_files
|
||||||
@doc.css("a.attachment[href]").each do |a|
|
@doc.css("a.attachment[href]").each do |a|
|
||||||
href = a["href"].to_s
|
href = a["href"].to_s
|
||||||
a["href"] = UrlHelper.schemaless UrlHelper.absolute_without_cdn(href) if UrlHelper.is_local(href)
|
a["href"] = UrlHelper.schemaless UrlHelper.absolute_without_cdn(href) if UrlHelper.is_local(href)
|
||||||
|
|
|
@ -446,28 +446,65 @@ describe CookedPostProcessor do
|
||||||
|
|
||||||
it "uses schemaless url for uploads" do
|
it "uses schemaless url for uploads" do
|
||||||
cpp.optimize_urls
|
cpp.optimize_urls
|
||||||
expect(cpp.html).to match_html '<p><a href="//test.localhost/uploads/default/2/2345678901234567.jpg">Link</a><br><img src="//test.localhost/uploads/default/1/1234567890123456.jpg"><br><a href="http://www.google.com" rel="nofollow noopener">Google</a><br><img src="http://foo.bar/image.png"><br><a class="attachment" href="//test.localhost/uploads/default/original/1X/af2c2618032c679333bebf745e75f9088748d737.txt">text.txt</a> (20 Bytes)<br><img src="//test.localhost/images/emoji/emoji_one/smile.png?v=3" title=":smile:" class="emoji" alt=":smile:"></p>'
|
expect(cpp.html).to match_html '<p><a href="//test.localhost/uploads/default/2/2345678901234567.jpg">Link</a><br>
|
||||||
|
<img src="//test.localhost/uploads/default/1/1234567890123456.jpg"><br>
|
||||||
|
<a href="http://www.google.com" rel="nofollow noopener">Google</a><br>
|
||||||
|
<img src="http://foo.bar/image.png"><br>
|
||||||
|
<a class="attachment" href="//test.localhost/uploads/default/original/1X/af2c2618032c679333bebf745e75f9088748d737.txt">text.txt</a> (20 Bytes)<br>
|
||||||
|
<img src="//test.localhost/images/emoji/emoji_one/smile.png?v=3" title=":smile:" class="emoji" alt=":smile:">
|
||||||
|
</p>'
|
||||||
end
|
end
|
||||||
|
|
||||||
context "when CDN is enabled" do
|
context "when CDN is enabled" do
|
||||||
|
|
||||||
it "does use schemaless CDN url for http uploads" do
|
it "uses schemaless CDN url for http uploads" do
|
||||||
Rails.configuration.action_controller.stubs(:asset_host).returns("http://my.cdn.com")
|
Rails.configuration.action_controller.stubs(:asset_host).returns("http://my.cdn.com")
|
||||||
cpp.optimize_urls
|
cpp.optimize_urls
|
||||||
expect(cpp.html).to match_html '<p><a href="//my.cdn.com/uploads/default/2/2345678901234567.jpg">Link</a><br><img src="//my.cdn.com/uploads/default/1/1234567890123456.jpg"><br><a href="http://www.google.com" rel="nofollow noopener">Google</a><br><img src="http://foo.bar/image.png"><br><a class="attachment" href="//my.cdn.com/uploads/default/original/1X/af2c2618032c679333bebf745e75f9088748d737.txt">text.txt</a> (20 Bytes)<br><img src="//my.cdn.com/images/emoji/emoji_one/smile.png?v=3" title=":smile:" class="emoji" alt=":smile:"></p>'
|
expect(cpp.html).to match_html '<p><a href="//my.cdn.com/uploads/default/2/2345678901234567.jpg">Link</a><br>
|
||||||
|
<img src="//my.cdn.com/uploads/default/1/1234567890123456.jpg"><br>
|
||||||
|
<a href="http://www.google.com" rel="nofollow noopener">Google</a><br>
|
||||||
|
<img src="http://foo.bar/image.png"><br>
|
||||||
|
<a class="attachment" href="//my.cdn.com/uploads/default/original/1X/af2c2618032c679333bebf745e75f9088748d737.txt">text.txt</a> (20 Bytes)<br>
|
||||||
|
<img src="//my.cdn.com/images/emoji/emoji_one/smile.png?v=3" title=":smile:" class="emoji" alt=":smile:">
|
||||||
|
</p>'
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not use schemaless CDN url for https uploads" do
|
it "doesn't use schemaless CDN url for https uploads" do
|
||||||
Rails.configuration.action_controller.stubs(:asset_host).returns("https://my.cdn.com")
|
Rails.configuration.action_controller.stubs(:asset_host).returns("https://my.cdn.com")
|
||||||
cpp.optimize_urls
|
cpp.optimize_urls
|
||||||
expect(cpp.html).to match_html '<p><a href="https://my.cdn.com/uploads/default/2/2345678901234567.jpg">Link</a><br><img src="https://my.cdn.com/uploads/default/1/1234567890123456.jpg"><br><a href="http://www.google.com" rel="nofollow noopener">Google</a><br><img src="http://foo.bar/image.png"><br><a class="attachment" href="https://my.cdn.com/uploads/default/original/1X/af2c2618032c679333bebf745e75f9088748d737.txt">text.txt</a> (20 Bytes)<br><img src="https://my.cdn.com/images/emoji/emoji_one/smile.png?v=3" title=":smile:" class="emoji" alt=":smile:"></p>'
|
expect(cpp.html).to match_html '<p><a href="https://my.cdn.com/uploads/default/2/2345678901234567.jpg">Link</a><br>
|
||||||
|
<img src="https://my.cdn.com/uploads/default/1/1234567890123456.jpg"><br>
|
||||||
|
<a href="http://www.google.com" rel="nofollow noopener">Google</a><br>
|
||||||
|
<img src="http://foo.bar/image.png"><br>
|
||||||
|
<a class="attachment" href="https://my.cdn.com/uploads/default/original/1X/af2c2618032c679333bebf745e75f9088748d737.txt">text.txt</a> (20 Bytes)<br>
|
||||||
|
<img src="https://my.cdn.com/images/emoji/emoji_one/smile.png?v=3" title=":smile:" class="emoji" alt=":smile:">
|
||||||
|
</p>'
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not use CDN when login is required" do
|
it "doesn't use CDN when login is required" do
|
||||||
SiteSetting.login_required = true
|
SiteSetting.login_required = true
|
||||||
Rails.configuration.action_controller.stubs(:asset_host).returns("http://my.cdn.com")
|
Rails.configuration.action_controller.stubs(:asset_host).returns("http://my.cdn.com")
|
||||||
cpp.optimize_urls
|
cpp.optimize_urls
|
||||||
expect(cpp.html).to match_html '<p><a href="//my.cdn.com/uploads/default/2/2345678901234567.jpg">Link</a><br><img src="//my.cdn.com/uploads/default/1/1234567890123456.jpg"><br><a href="http://www.google.com" rel="nofollow noopener">Google</a><br><img src="http://foo.bar/image.png"><br><a class="attachment" href="//test.localhost/uploads/default/original/1X/af2c2618032c679333bebf745e75f9088748d737.txt">text.txt</a> (20 Bytes)<br><img src="//my.cdn.com/images/emoji/emoji_one/smile.png?v=3" title=":smile:" class="emoji" alt=":smile:"></p>'
|
expect(cpp.html).to match_html '<p><a href="//my.cdn.com/uploads/default/2/2345678901234567.jpg">Link</a><br>
|
||||||
|
<img src="//my.cdn.com/uploads/default/1/1234567890123456.jpg"><br>
|
||||||
|
<a href="http://www.google.com" rel="nofollow noopener">Google</a><br>
|
||||||
|
<img src="http://foo.bar/image.png"><br>
|
||||||
|
<a class="attachment" href="//test.localhost/uploads/default/original/1X/af2c2618032c679333bebf745e75f9088748d737.txt">text.txt</a> (20 Bytes)<br>
|
||||||
|
<img src="//my.cdn.com/images/emoji/emoji_one/smile.png?v=3" title=":smile:" class="emoji" alt=":smile:">
|
||||||
|
</p>'
|
||||||
|
end
|
||||||
|
|
||||||
|
it "doesn't use CDN when preventing anons from downloading files" do
|
||||||
|
SiteSetting.prevent_anons_from_downloading_files = true
|
||||||
|
Rails.configuration.action_controller.stubs(:asset_host).returns("http://my.cdn.com")
|
||||||
|
cpp.optimize_urls
|
||||||
|
expect(cpp.html).to match_html '<p><a href="//my.cdn.com/uploads/default/2/2345678901234567.jpg">Link</a><br>
|
||||||
|
<img src="//my.cdn.com/uploads/default/1/1234567890123456.jpg"><br>
|
||||||
|
<a href="http://www.google.com" rel="nofollow noopener">Google</a><br>
|
||||||
|
<img src="http://foo.bar/image.png"><br>
|
||||||
|
<a class="attachment" href="//test.localhost/uploads/default/original/1X/af2c2618032c679333bebf745e75f9088748d737.txt">text.txt</a> (20 Bytes)<br>
|
||||||
|
<img src="//my.cdn.com/images/emoji/emoji_one/smile.png?v=3" title=":smile:" class="emoji" alt=":smile:">
|
||||||
|
</p>'
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue