commit: 4b3c86c1a61a029202a262229c713cc3737b2a1b
parent: 8b352af4dd4f79432e3e9c48593380292e4002d7
Author: kaniini <nenolod@gmail.com>
Date: Fri, 15 Mar 2019 20:06:08 +0000
Merge branch 'fix/mediaproxy-capture-content-disposition-filename' into 'develop'
MediaProxy: parse filename from content-disposition for non-whitelisted types
See merge request pleroma/pleroma!936
Diffstat:
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/lib/pleroma/reverse_proxy.ex b/lib/pleroma/reverse_proxy.ex
@@ -311,7 +311,25 @@ defmodule Pleroma.ReverseProxy do
end
if attachment? do
- disposition = "attachment; filename=" <> Keyword.get(opts, :attachment_name, "attachment")
+ name =
+ try do
+ {{"content-disposition", content_disposition_string}, _} =
+ List.keytake(headers, "content-disposition", 0)
+
+ [name | _] =
+ Regex.run(
+ ~r/filename="((?:[^"\\]|\\.)*)"/u,
+ content_disposition_string || "",
+ capture: :all_but_first
+ )
+
+ name
+ rescue
+ MatchError -> Keyword.get(opts, :attachment_name, "attachment")
+ end
+
+ disposition = "attachment; filename=\"#{name}\""
+
List.keystore(headers, "content-disposition", 0, {"content-disposition", disposition})
else
headers