summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>2023-06-22 21:24:58 +0200
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>2023-06-22 21:28:25 +0200
commitdd9f8150fce34cc9a30a92a7e3de9560d5146871 (patch)
tree2236c02e59641279e2b32df159106ce6f01fd88a
parent436757994944b142ba9716432bcac54b83fc1fef (diff)
Merge Revert "Merge branch 'validate-host' into 'develop'"bugfix/full-revert-media-host-validation
This reverts commit d998a114e26033e98e87778e5ca659aff91831bf, reversing changes made to da6b4003acad84b0f60ad8da6d08cfe13564b058.
-rw-r--r--changelog.d/3896.add1
-rw-r--r--changelog.d/3909.skip0
-rw-r--r--lib/pleroma/web/plugs/uploaded_media.ex22
-rw-r--r--test/pleroma/web/plugs/uploaded_media_plug_test.exs26
4 files changed, 1 insertions, 48 deletions
diff --git a/changelog.d/3896.add b/changelog.d/3896.add
deleted file mode 100644
index e8fde4c8a..000000000
--- a/changelog.d/3896.add
+++ /dev/null
@@ -1 +0,0 @@
-Validate Host header for Uploads and return a 302 if the base_url has changed
diff --git a/changelog.d/3909.skip b/changelog.d/3909.skip
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/changelog.d/3909.skip
diff --git a/lib/pleroma/web/plugs/uploaded_media.ex b/lib/pleroma/web/plugs/uploaded_media.ex
index 9dd5eb239..8b3bc9acb 100644
--- a/lib/pleroma/web/plugs/uploaded_media.ex
+++ b/lib/pleroma/web/plugs/uploaded_media.ex
@@ -46,32 +46,12 @@ defmodule Pleroma.Web.Plugs.UploadedMedia do
config = Pleroma.Config.get(Pleroma.Upload)
- %{scheme: media_scheme, host: media_host, port: media_port} =
- Pleroma.Upload.base_url() |> URI.parse()
-
- with {:valid_host, true} <- {:valid_host, match?(^media_host, conn.host)},
- uploader <- Keyword.fetch!(config, :uploader),
+ with uploader <- Keyword.fetch!(config, :uploader),
proxy_remote = Keyword.get(config, :proxy_remote, false),
{:ok, get_method} <- uploader.get_file(file),
false <- media_is_banned(conn, get_method) do
get_media(conn, get_method, proxy_remote, opts)
else
- {:valid_host, false} ->
- redirect_url =
- %URI{
- scheme: media_scheme,
- host: media_host,
- port: media_port,
- path: conn.request_path,
- query: conn.query_string
- }
- |> URI.to_string()
- |> String.trim_trailing("?")
-
- conn
- |> Phoenix.Controller.redirect(external: redirect_url)
- |> halt()
-
_ ->
conn
|> send_resp(:internal_server_error, dgettext("errors", "Failed"))
diff --git a/test/pleroma/web/plugs/uploaded_media_plug_test.exs b/test/pleroma/web/plugs/uploaded_media_plug_test.exs
index dbf8ca5ec..8323ff6ab 100644
--- a/test/pleroma/web/plugs/uploaded_media_plug_test.exs
+++ b/test/pleroma/web/plugs/uploaded_media_plug_test.exs
@@ -40,30 +40,4 @@ defmodule Pleroma.Web.Plugs.UploadedMediaPlugTest do
&(&1 == {"content-disposition", ~s[inline; filename="\\"cofe\\".gif"]})
)
end
-
- test "denies access to media if wrong Host", %{
- attachment_url: attachment_url
- } do
- conn = get(build_conn(), attachment_url)
-
- assert conn.status == 200
-
- new_media_base = "http://media.localhost:8080"
-
- %{scheme: new_media_scheme, host: new_media_host, port: new_media_port} =
- URI.parse(new_media_base)
-
- clear_config([Pleroma.Upload, :base_url], new_media_base)
-
- conn = get(build_conn(), attachment_url)
-
- expected_url =
- URI.parse(attachment_url)
- |> Map.put(:host, new_media_host)
- |> Map.put(:port, new_media_port)
- |> Map.put(:scheme, new_media_scheme)
- |> URI.to_string()
-
- assert redirected_to(conn, 302) == expected_url
- end
end