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
|
@ -445,10 +445,7 @@
|
||||||
enabled: false,
|
enabled: false,
|
||||||
thumbnail_max_width: 600,
|
thumbnail_max_width: 600,
|
||||||
thumbnail_max_height: 600,
|
thumbnail_max_height: 600,
|
||||||
image_quality: 85,
|
image_quality: 85
|
||||||
proxy_opts: [
|
|
||||||
head_request_max_read_duration: 5_000
|
|
||||||
]
|
|
||||||
|
|
||||||
config :pleroma, :chat, enabled: true
|
config :pleroma, :chat, enabled: true
|
||||||
|
|
||||||
|
@ -761,6 +758,11 @@
|
||||||
max_waiting: 10,
|
max_waiting: 10,
|
||||||
timeout: 10_000
|
timeout: 10_000
|
||||||
],
|
],
|
||||||
|
preview: [
|
||||||
|
size: 50,
|
||||||
|
max_waiting: 10,
|
||||||
|
timeout: 10_000
|
||||||
|
],
|
||||||
upload: [
|
upload: [
|
||||||
size: 25,
|
size: 25,
|
||||||
max_waiting: 5,
|
max_waiting: 5,
|
||||||
|
|
|
@ -1978,27 +1978,6 @@
|
||||||
key: :image_quality,
|
key: :image_quality,
|
||||||
type: :integer,
|
type: :integer,
|
||||||
description: "Quality of the output. Ranges from 0 (min quality) to 100 (max quality)."
|
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
|
def preview(conn, %{"sig" => sig64, "url" => url64}) do
|
||||||
with {_, true} <- {:enabled, MediaProxy.preview_enabled?()},
|
with {_, true} <- {:enabled, MediaProxy.preview_enabled?()},
|
||||||
{:ok, url} <- MediaProxy.decode_url(sig64, url64),
|
{:ok, url} <- MediaProxy.decode_url(sig64, url64) do
|
||||||
:ok <- MediaProxy.verify_request_path_and_url(conn, url) do
|
|
||||||
handle_preview(conn, url)
|
handle_preview(conn, url)
|
||||||
else
|
else
|
||||||
{:enabled, false} ->
|
{:enabled, false} ->
|
||||||
|
@ -50,9 +49,7 @@ def preview(conn, %{"sig" => sig64, "url" => url64}) do
|
||||||
|
|
||||||
defp handle_preview(conn, url) do
|
defp handle_preview(conn, url) do
|
||||||
with {:ok, %{status: status} = head_response} when status in 200..299 <-
|
with {:ok, %{status: status} = head_response} when status in 200..299 <-
|
||||||
Tesla.head(url,
|
Pleroma.HTTP.request("head", MediaProxy.url(url), [], [], [adapter: [pool: :preview]]) do
|
||||||
opts: [adapter: [timeout: preview_head_request_timeout(), follow_redirect: true]]
|
|
||||||
) do
|
|
||||||
content_type = Tesla.get_header(head_response, "content-type")
|
content_type = Tesla.get_header(head_response, "content-type")
|
||||||
handle_preview(content_type, conn, url)
|
handle_preview(content_type, conn, url)
|
||||||
else
|
else
|
||||||
|
@ -172,17 +169,7 @@ defp thumbnail_max_dimensions(params) do
|
||||||
{thumbnail_max_width, thumbnail_max_height}
|
{thumbnail_max_width, thumbnail_max_height}
|
||||||
end
|
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
|
defp media_proxy_opts do
|
||||||
Config.get([:media_proxy, :proxy_opts], [])
|
Config.get([:media_proxy, :proxy_opts], [])
|
||||||
end
|
end
|
||||||
|
|
||||||
defp media_preview_proxy_opts do
|
|
||||||
Config.get([:media_preview_proxy, :proxy_opts], [])
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue