forked from AkkomaGang/akkoma
Fetch preview requests through the MediaProxy. Separate connection options are not needed.
Use a separate pool for preview requests
This commit is contained in:
parent
85446cc30c
commit
6141eb94ab
3 changed files with 8 additions and 40 deletions
|
@ -445,10 +445,7 @@
|
|||
enabled: false,
|
||||
thumbnail_max_width: 600,
|
||||
thumbnail_max_height: 600,
|
||||
image_quality: 85,
|
||||
proxy_opts: [
|
||||
head_request_max_read_duration: 5_000
|
||||
]
|
||||
image_quality: 85
|
||||
|
||||
config :pleroma, :chat, enabled: true
|
||||
|
||||
|
@ -761,6 +758,11 @@
|
|||
max_waiting: 10,
|
||||
timeout: 10_000
|
||||
],
|
||||
preview: [
|
||||
size: 50,
|
||||
max_waiting: 10,
|
||||
timeout: 10_000
|
||||
],
|
||||
upload: [
|
||||
size: 25,
|
||||
max_waiting: 5,
|
||||
|
|
|
@ -1978,27 +1978,6 @@
|
|||
key: :image_quality,
|
||||
type: :integer,
|
||||
description: "Quality of the output. Ranges from 0 (min quality) to 100 (max quality)."
|
||||
},
|
||||
%{
|
||||
key: :proxy_opts,
|
||||
type: :keyword,
|
||||
description: "Media proxy options",
|
||||
suggestions: [
|
||||
head_request_max_read_duration: 5_000
|
||||
],
|
||||
children: [
|
||||
%{
|
||||
key: :head_request_max_read_duration,
|
||||
type: :integer,
|
||||
description: "Timeout (in milliseconds) of HEAD request to remote URI."
|
||||
}
|
||||
]
|
||||
},
|
||||
%{
|
||||
key: :whitelist,
|
||||
type: {:list, :string},
|
||||
description: "List of hosts with scheme to bypass the mediaproxy",
|
||||
suggestions: ["http://example.com"]
|
||||
}
|
||||
]
|
||||
},
|
||||
|
|
|
@ -33,8 +33,7 @@ def remote(conn, %{"sig" => sig64, "url" => url64}) do
|
|||
|
||||
def preview(conn, %{"sig" => sig64, "url" => url64}) do
|
||||
with {_, true} <- {:enabled, MediaProxy.preview_enabled?()},
|
||||
{:ok, url} <- MediaProxy.decode_url(sig64, url64),
|
||||
:ok <- MediaProxy.verify_request_path_and_url(conn, url) do
|
||||
{:ok, url} <- MediaProxy.decode_url(sig64, url64) do
|
||||
handle_preview(conn, url)
|
||||
else
|
||||
{:enabled, false} ->
|
||||
|
@ -50,9 +49,7 @@ def preview(conn, %{"sig" => sig64, "url" => url64}) do
|
|||
|
||||
defp handle_preview(conn, url) do
|
||||
with {:ok, %{status: status} = head_response} when status in 200..299 <-
|
||||
Tesla.head(url,
|
||||
opts: [adapter: [timeout: preview_head_request_timeout(), follow_redirect: true]]
|
||||
) do
|
||||
Pleroma.HTTP.request("head", MediaProxy.url(url), [], [], [adapter: [pool: :preview]]) do
|
||||
content_type = Tesla.get_header(head_response, "content-type")
|
||||
handle_preview(content_type, conn, url)
|
||||
else
|
||||
|
@ -172,17 +169,7 @@ defp thumbnail_max_dimensions(params) do
|
|||
{thumbnail_max_width, thumbnail_max_height}
|
||||
end
|
||||
|
||||
defp preview_head_request_timeout do
|
||||
Keyword.get(media_preview_proxy_opts(), :head_request_max_read_duration) ||
|
||||
Keyword.get(media_proxy_opts(), :max_read_duration) ||
|
||||
ReverseProxy.max_read_duration_default()
|
||||
end
|
||||
|
||||
defp media_proxy_opts do
|
||||
Config.get([:media_proxy, :proxy_opts], [])
|
||||
end
|
||||
|
||||
defp media_preview_proxy_opts do
|
||||
Config.get([:media_preview_proxy, :proxy_opts], [])
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue