Static FE plug should only respond to text/html requests.
authorPhil Hagelberg <phil@hagelb.org>
Sun, 3 Nov 2019 20:29:17 +0000 (12:29 -0800)
committerPhil Hagelberg <phil@hagelb.org>
Sun, 10 Nov 2019 02:08:08 +0000 (18:08 -0800)
lib/pleroma/plugs/static_fe_plug.ex

index d3abaf4ccc8a2fab23781c26c14a85afa214a9bb..dcbabc9df00ff8ee07354afe39d52cca0359043e 100644 (file)
@@ -5,9 +5,14 @@
 defmodule Pleroma.Plugs.StaticFEPlug do
   def init(options), do: options
 
+  def accepts_html?({"accept", a}), do: String.contains?(a, "text/html")
+  def accepts_html?({_, _}), do: false
+
   def call(conn, _) do
-    case Pleroma.Config.get([:instance, :static_fe], false) do
-      true -> Pleroma.Web.StaticFE.StaticFEController.call(conn, :show)
+    with true <- Pleroma.Config.get([:instance, :static_fe], false),
+         {_, _} <- Enum.find(conn.req_headers, &accepts_html?/1) do
+      Pleroma.Web.StaticFE.StaticFEController.call(conn, :show)
+    else
       _ -> conn
     end
   end