|
|
@ -31,13 +31,13 @@ defmodule Pleroma.Web.Plugs.FrontendStatic do
|
|
|
|
|> Keyword.put(:from, "__unconfigured_frontend_static_plug")
|
|
|
|
|> Keyword.put(:from, "__unconfigured_frontend_static_plug")
|
|
|
|
|> Plug.Static.init()
|
|
|
|
|> Plug.Static.init()
|
|
|
|
|> Map.put(:frontend_type, opts[:frontend_type])
|
|
|
|
|> Map.put(:frontend_type, opts[:frontend_type])
|
|
|
|
|> Map.put(:if, Keyword.get(opts, :if, fn -> true end))
|
|
|
|
|> Map.put(:if, Keyword.get(opts, :if, true))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
def call(conn, opts) do
|
|
|
|
def call(conn, opts) do
|
|
|
|
with false <- api_route?(conn.path_info),
|
|
|
|
with false <- api_route?(conn.path_info),
|
|
|
|
false <- invalid_path?(conn.path_info),
|
|
|
|
false <- invalid_path?(conn.path_info),
|
|
|
|
true <- opts[:if].(),
|
|
|
|
true <- enabled?(opts[:if]),
|
|
|
|
frontend_type <- Map.get(opts, :frontend_type, :primary),
|
|
|
|
frontend_type <- Map.get(opts, :frontend_type, :primary),
|
|
|
|
path when not is_nil(path) <- file_path("", frontend_type) do
|
|
|
|
path when not is_nil(path) <- file_path("", frontend_type) do
|
|
|
|
call_static(conn, opts, path)
|
|
|
|
call_static(conn, opts, path)
|
|
|
@ -47,6 +47,10 @@ defmodule Pleroma.Web.Plugs.FrontendStatic do
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
defp enabled?(if_opt) when is_function(if_opt), do: if_opt.()
|
|
|
|
|
|
|
|
defp enabled?(true), do: true
|
|
|
|
|
|
|
|
defp enabled?(_), do: false
|
|
|
|
|
|
|
|
|
|
|
|
defp invalid_path?(list) do
|
|
|
|
defp invalid_path?(list) do
|
|
|
|
invalid_path?(list, :binary.compile_pattern(["/", "\\", ":", "\0"]))
|
|
|
|
invalid_path?(list, :binary.compile_pattern(["/", "\\", ":", "\0"]))
|
|
|
|
end
|
|
|
|
end
|
|
|
|