summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorfeld <feld@feld.me>2021-01-26 18:14:01 +0000
committerfeld <feld@feld.me>2021-01-26 18:14:01 +0000
commitd7af0294e6a3a690524e0a08a35c9c6dafbb9f79 (patch)
tree2efd6fa44d20f0251b9776f861722d83bb04e4b6 /lib
parente1eac4faac723c5015d7d696600d24c44f5ab52c (diff)
parent7fcaa188a0be4bc8e41790ddda9b6789cb318347 (diff)
downloadpleroma-d7af0294e6a3a690524e0a08a35c9c6dafbb9f79.tar.gz
pleroma-d7af0294e6a3a690524e0a08a35c9c6dafbb9f79.zip
Merge branch 'service-worker-allowed-header' into 'develop'
Ability to set custom HTTP headers per each frontend See merge request pleroma/pleroma!3247
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/plugs/http_security_plug.ex26
1 files changed, 25 insertions, 1 deletions
diff --git a/lib/pleroma/web/plugs/http_security_plug.ex b/lib/pleroma/web/plugs/http_security_plug.ex
index 4b84f575d..0025b042a 100644
--- a/lib/pleroma/web/plugs/http_security_plug.ex
+++ b/lib/pleroma/web/plugs/http_security_plug.ex
@@ -20,9 +20,26 @@ defmodule Pleroma.Web.Plugs.HTTPSecurityPlug do
end
end
- defp headers do
+ def primary_frontend do
+ with %{"name" => frontend} <- Config.get([:frontends, :primary]),
+ available <- Config.get([:frontends, :available]),
+ %{} = primary_frontend <- Map.get(available, frontend) do
+ {:ok, primary_frontend}
+ end
+ end
+
+ def custom_http_frontend_headers do
+ with {:ok, %{"custom-http-headers" => custom_headers}} <- primary_frontend() do
+ custom_headers
+ else
+ _ -> []
+ end
+ end
+
+ def headers do
referrer_policy = Config.get([:http_security, :referrer_policy])
report_uri = Config.get([:http_security, :report_uri])
+ custom_http_frontend_headers = custom_http_frontend_headers()
headers = [
{"x-xss-protection", "1; mode=block"},
@@ -34,6 +51,13 @@ defmodule Pleroma.Web.Plugs.HTTPSecurityPlug do
{"content-security-policy", csp_string()}
]
+ headers =
+ if custom_http_frontend_headers do
+ custom_http_frontend_headers ++ headers
+ else
+ headers
+ end
+
if report_uri do
report_group = %{
"group" => "csp-endpoint",