From: Sachin Joshi <satchin.joshi@gmail.com>
Date: Fri, 12 Jul 2019 15:17:55 +0000 (+0545)
Subject: preserve the original path/filename (no encoding/decoding) for proxy
X-Git-Url: http://git.squeep.com/?a=commitdiff_plain;h=6a6c4d134b7564012d00e89f1236b904261ab5db;p=akkoma

preserve the original path/filename (no encoding/decoding) for proxy
---

diff --git a/lib/pleroma/web/media_proxy/controller.ex b/lib/pleroma/web/media_proxy/controller.ex
index c0552d89f..ea33d7685 100644
--- a/lib/pleroma/web/media_proxy/controller.ex
+++ b/lib/pleroma/web/media_proxy/controller.ex
@@ -28,12 +28,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController do
   end
 
   def filename_matches(has_filename, path, url) do
-    filename =
-      url
-      |> MediaProxy.filename()
-      |> URI.decode()
-
-    path = URI.decode(path)
+    filename = url |> MediaProxy.filename()
 
     if has_filename && filename && Path.basename(path) != filename do
       {:wrong_filename, filename}
diff --git a/test/media_proxy_test.exs b/test/media_proxy_test.exs
index 1d6d170b7..fbf200931 100644
--- a/test/media_proxy_test.exs
+++ b/test/media_proxy_test.exs
@@ -88,10 +88,10 @@ defmodule Pleroma.MediaProxyTest do
       assert decode_url(sig, base64) == {:error, :invalid_signature}
     end
 
-    test "filename_matches matches url encoded paths" do
+    test "filename_matches preserves the encoded or decoded path" do
       assert MediaProxyController.filename_matches(
                true,
-               "/Hello%20world.jpg",
+               "/Hello world.jpg",
                "http://pleroma.social/Hello world.jpg"
              ) == :ok
 
@@ -100,19 +100,11 @@ defmodule Pleroma.MediaProxyTest do
                "/Hello%20world.jpg",
                "http://pleroma.social/Hello%20world.jpg"
              ) == :ok
-    end
 
-    test "filename_matches matches non-url encoded paths" do
       assert MediaProxyController.filename_matches(
                true,
-               "/Hello world.jpg",
-               "http://pleroma.social/Hello%20world.jpg"
-             ) == :ok
-
-      assert MediaProxyController.filename_matches(
-               true,
-               "/Hello world.jpg",
-               "http://pleroma.social/Hello world.jpg"
+               "/my%2Flong%2Furl%2F2019%2F07%2FS.jpg",
+               "http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg"
              ) == :ok
     end