aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkaniini <nenolod@gmail.com>2018-10-29 18:07:47 +0000
committerkaniini <nenolod@gmail.com>2018-10-29 18:07:47 +0000
commit7ac701ccd211d0a1b04243e4c0591adb9f1996fc (patch)
tree4785078ba8a5a7b6826508d03aaf620d792fe46b
parentf61acdc5b41a8d05401c5d24d589f35ba1b573de (diff)
parent36825932eb04d9db3e2d24b02368d7dd709dea23 (diff)
downloadpleroma-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.exs3
-rw-r--r--lib/pleroma/uploaders/s3.ex14
-rw-r--r--lib/pleroma/web/common_api/utils.ex4
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>"