+ defp enabled?, do: Pleroma.Config.get([:media_proxy, :enabled], false)
+
+ defp local?(url), do: String.starts_with?(url, Pleroma.Web.base_url())
+
+ defp whitelisted?(url) do
+ %{host: domain} = URI.parse(url)
+
+ Enum.any?(Pleroma.Config.get([:media_proxy, :whitelist]), fn pattern ->
+ String.equivalent?(domain, pattern)
+ end)
+ end
+
+ def encode_url(url) do
+ secret = Pleroma.Config.get([Pleroma.Web.Endpoint, :secret_key_base])
+ base64 = Base.url_encode64(url, @base64_opts)
+ sig = :crypto.hmac(:sha, secret, base64)
+ sig64 = sig |> Base.url_encode64(@base64_opts)
+
+ build_url(sig64, base64, filename(url))
+ end
+