preserve the original path/filename (no encoding/decoding) for proxy
This commit is contained in:
parent
db75288b71
commit
6a6c4d134b
2 changed files with 5 additions and 18 deletions
|
@ -28,12 +28,7 @@ def remote(conn, %{"sig" => sig64, "url" => url64} = params) do
|
||||||
end
|
end
|
||||||
|
|
||||||
def filename_matches(has_filename, path, url) do
|
def filename_matches(has_filename, path, url) do
|
||||||
filename =
|
filename = url |> MediaProxy.filename()
|
||||||
url
|
|
||||||
|> MediaProxy.filename()
|
|
||||||
|> URI.decode()
|
|
||||||
|
|
||||||
path = URI.decode(path)
|
|
||||||
|
|
||||||
if has_filename && filename && Path.basename(path) != filename do
|
if has_filename && filename && Path.basename(path) != filename do
|
||||||
{:wrong_filename, filename}
|
{:wrong_filename, filename}
|
||||||
|
|
|
@ -88,10 +88,10 @@ test "validates signature" do
|
||||||
assert decode_url(sig, base64) == {:error, :invalid_signature}
|
assert decode_url(sig, base64) == {:error, :invalid_signature}
|
||||||
end
|
end
|
||||||
|
|
||||||
test "filename_matches matches url encoded paths" do
|
test "filename_matches preserves the encoded or decoded path" do
|
||||||
assert MediaProxyController.filename_matches(
|
assert MediaProxyController.filename_matches(
|
||||||
true,
|
true,
|
||||||
"/Hello%20world.jpg",
|
"/Hello world.jpg",
|
||||||
"http://pleroma.social/Hello world.jpg"
|
"http://pleroma.social/Hello world.jpg"
|
||||||
) == :ok
|
) == :ok
|
||||||
|
|
||||||
|
@ -100,19 +100,11 @@ test "filename_matches matches url encoded paths" do
|
||||||
"/Hello%20world.jpg",
|
"/Hello%20world.jpg",
|
||||||
"http://pleroma.social/Hello%20world.jpg"
|
"http://pleroma.social/Hello%20world.jpg"
|
||||||
) == :ok
|
) == :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(
|
assert MediaProxyController.filename_matches(
|
||||||
true,
|
true,
|
||||||
"/Hello world.jpg",
|
"/my%2Flong%2Furl%2F2019%2F07%2FS.jpg",
|
||||||
"http://pleroma.social/Hello world.jpg"
|
"http://pleroma.social/my%2Flong%2Furl%2F2019%2F07%2FS.jpg"
|
||||||
) == :ok
|
) == :ok
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue