aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web/media_proxy.ex
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-06-17 15:38:10 -0500
committerAlex Gleason <alex@alexgleason.me>2021-06-17 15:38:10 -0500
commit3a03d9b65f96099e7c7a831469532c2cec7294c6 (patch)
tree46d84731c3a53157117fc4c8141fdf6b3d7b8b25 /lib/pleroma/web/media_proxy.ex
parenta704d5499c03cb5609ea38a5f2ef06095ced3ef3 (diff)
parenta8adc300d4cfc88ef19f1977e32068437ed4ad00 (diff)
downloadpleroma-nsfw-api-mrf.tar.gz
Merge remote-tracking branch 'pleroma/develop' into nsfw-api-mrfnsfw-api-mrf
Diffstat (limited to 'lib/pleroma/web/media_proxy.ex')
-rw-r--r--lib/pleroma/web/media_proxy.ex13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/pleroma/web/media_proxy.ex b/lib/pleroma/web/media_proxy.ex
index 27f337138..0b232f14b 100644
--- a/lib/pleroma/web/media_proxy.ex
+++ b/lib/pleroma/web/media_proxy.ex
@@ -6,7 +6,7 @@ defmodule Pleroma.Web.MediaProxy do
alias Pleroma.Config
alias Pleroma.Helpers.UriHelper
alias Pleroma.Upload
- alias Pleroma.Web
+ alias Pleroma.Web.Endpoint
alias Pleroma.Web.MediaProxy.Invalidation
@base64_opts [padding: false]
@@ -69,7 +69,7 @@ defmodule Pleroma.Web.MediaProxy do
# non-local non-whitelisted URLs through it and be sure that body size constraint is preserved.
def preview_enabled?, do: enabled?() and !!Config.get([:media_preview_proxy, :enabled])
- def local?(url), do: String.starts_with?(url, Web.base_url())
+ def local?(url), do: String.starts_with?(url, Endpoint.url())
def whitelisted?(url) do
%{host: domain} = URI.parse(url)
@@ -121,8 +121,13 @@ defmodule Pleroma.Web.MediaProxy do
end
end
+ def decode_url(encoded) do
+ [_, "proxy", sig, base64 | _] = URI.parse(encoded).path |> String.split("/")
+ decode_url(sig, base64)
+ end
+
defp signed_url(url) do
- :crypto.hmac(:sha, Config.get([Web.Endpoint, :secret_key_base]), url)
+ :crypto.mac(:hmac, :sha, Config.get([Endpoint, :secret_key_base]), url)
end
def filename(url_or_path) do
@@ -130,7 +135,7 @@ defmodule Pleroma.Web.MediaProxy do
end
def base_url do
- Config.get([:media_proxy, :base_url], Web.base_url())
+ Config.get([:media_proxy, :base_url], Endpoint.url())
end
defp proxy_url(path, sig_base64, url_base64, filename) do