diff options
author | kaniini <nenolod@gmail.com> | 2018-10-29 18:07:47 +0000 |
---|---|---|
committer | kaniini <nenolod@gmail.com> | 2018-10-29 18:07:47 +0000 |
commit | 7ac701ccd211d0a1b04243e4c0591adb9f1996fc (patch) | |
tree | 4785078ba8a5a7b6826508d03aaf620d792fe46b | |
parent | f61acdc5b41a8d05401c5d24d589f35ba1b573de (diff) | |
parent | 36825932eb04d9db3e2d24b02368d7dd709dea23 (diff) | |
download | pleroma-7ac701ccd211d0a1b04243e4c0591adb9f1996fc.tar.gz |
Merge branch 'feature/s3-force-media-proxy' into 'develop'
s3 uploader: force public URIs through media proxy
See merge request pleroma/pleroma!403
-rw-r--r-- | config/config.exs | 3 | ||||
-rw-r--r-- | lib/pleroma/uploaders/s3.ex | 14 | ||||
-rw-r--r-- | lib/pleroma/web/common_api/utils.ex | 4 |
3 files changed, 17 insertions, 4 deletions
diff --git a/config/config.exs b/config/config.exs index 2d2cdda45..a71fedf1c 100644 --- a/config/config.exs +++ b/config/config.exs @@ -20,7 +20,8 @@ config :pleroma, Pleroma.Uploaders.Local, config :pleroma, Pleroma.Uploaders.S3, bucket: nil, - public_endpoint: "https://s3.amazonaws.com" + public_endpoint: "https://s3.amazonaws.com", + force_media_proxy: false config :pleroma, :emoji, shortcode_globs: ["/emoji/custom/**/*.png"] diff --git a/lib/pleroma/uploaders/s3.ex b/lib/pleroma/uploaders/s3.ex index 87322753d..40a836460 100644 --- a/lib/pleroma/uploaders/s3.ex +++ b/lib/pleroma/uploaders/s3.ex @@ -1,10 +1,13 @@ defmodule Pleroma.Uploaders.S3 do + alias Pleroma.Web.MediaProxy + @behaviour Pleroma.Uploaders.Uploader def put_file(name, uuid, path, content_type, _should_dedupe) do settings = Application.get_env(:pleroma, Pleroma.Uploaders.S3) bucket = Keyword.fetch!(settings, :bucket) public_endpoint = Keyword.fetch!(settings, :public_endpoint) + force_media_proxy = Keyword.fetch!(settings, :force_media_proxy) {:ok, file_data} = File.read(path) @@ -19,7 +22,16 @@ defmodule Pleroma.Uploaders.S3 do ]) |> ExAws.request() - {:ok, "#{public_endpoint}/#{bucket}/#{s3_name}"} + url_base = "#{public_endpoint}/#{bucket}/#{s3_name}" + + public_url = + if force_media_proxy do + MediaProxy.url(url_base) + else + url_base + end + + {:ok, public_url} end defp encode(name) do diff --git a/lib/pleroma/web/common_api/utils.ex b/lib/pleroma/web/common_api/utils.ex index ed1fe1ad9..2a5a2cc15 100644 --- a/lib/pleroma/web/common_api/utils.ex +++ b/lib/pleroma/web/common_api/utils.ex @@ -89,8 +89,8 @@ defmodule Pleroma.Web.CommonAPI.Utils do def add_attachments(text, attachments) do attachment_text = Enum.map(attachments, fn - %{"url" => [%{"href" => href} | _]} -> - name = URI.decode(Path.basename(href)) + %{"url" => [%{"href" => href} | _]} = attachment -> + name = attachment["name"] || URI.decode(Path.basename(href)) href = MediaProxy.url(href) "<a href=\"#{href}\" class='attachment'>#{shortname(name)}</a>" |