html: add policy which transforms inline images to pass through the media proxy
This commit is contained in:
parent
cd13fa17fd
commit
a7d0ecdc7c
|
@ -142,3 +142,34 @@ defmodule Pleroma.HTML.Scrubber.Default do
|
||||||
|
|
||||||
Meta.strip_everything_not_covered()
|
Meta.strip_everything_not_covered()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defmodule Pleroma.HTML.Transform.MediaProxy do
|
||||||
|
@moduledoc "Transforms inline image URIs to use MediaProxy."
|
||||||
|
|
||||||
|
alias Pleroma.Web.MediaProxy
|
||||||
|
|
||||||
|
def before_scrub(html), do: html
|
||||||
|
|
||||||
|
def scrub_attribute("img", {"src", "http" <> target}) do
|
||||||
|
media_url =
|
||||||
|
("http" <> target)
|
||||||
|
|> MediaProxy.url()
|
||||||
|
|
||||||
|
{"src", media_url}
|
||||||
|
end
|
||||||
|
|
||||||
|
def scrub_attribute(tag, attribute), do: attribute
|
||||||
|
|
||||||
|
def scrub({"img", attributes, children}) do
|
||||||
|
attributes =
|
||||||
|
attributes
|
||||||
|
|> Enum.map(fn attr -> scrub_attribute("img", attr) end)
|
||||||
|
|> Enum.reject(&is_nil(&1))
|
||||||
|
|
||||||
|
{"img", attributes, children}
|
||||||
|
end
|
||||||
|
|
||||||
|
def scrub({tag, attributes, children}), do: {tag, attributes, children}
|
||||||
|
def scrub({tag, children}), do: children
|
||||||
|
def scrub(text), do: text
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in New Issue