Fetch preview requests through the MediaProxy. Separate connection options are not...
authorMark Felder <feld@FreeBSD.org>
Thu, 3 Sep 2020 17:40:42 +0000 (12:40 -0500)
committerMark Felder <feld@FreeBSD.org>
Thu, 3 Sep 2020 19:42:11 +0000 (14:42 -0500)
Use a separate pool for preview requests

config/config.exs
config/description.exs
lib/pleroma/web/media_proxy/media_proxy_controller.ex

index 317ef84a98b12427ecd45b9d327f2dc286eb161b..d691753bd24dbcfae7b914180a7cb5f6ce658468 100644 (file)
@@ -445,10 +445,7 @@ config :pleroma, :media_preview_proxy,
   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 @@ config :pleroma, :pools,
     max_waiting: 10,
     timeout: 10_000
   ],
+  preview: [
+    size: 50,
+    max_waiting: 10,
+    timeout: 10_000
+  ],
   upload: [
     size: 25,
     max_waiting: 5,
index 868b89d296b5217b6d9a691aa882232fe9e80016..73333d6e66e3cff4eeea6eb1180b612feafe9f53 100644 (file)
@@ -1978,27 +1978,6 @@ config :pleroma, :config_description, [
         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"]
       }
     ]
   },
index 961c73666ea29a96193d26472a8583bb9052c66c..b1f00fa0c0da12de8f0bbbe2081438ccb8e23dc3 100644 (file)
@@ -33,8 +33,7 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController 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 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController 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 @@ defmodule Pleroma.Web.MediaProxy.MediaProxyController 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