diff --git a/apps/fz_http/lib/fz_http_web/header_helpers.ex b/apps/fz_http/lib/fz_http_web/header_helpers.ex index d38268cec..44b56132b 100644 --- a/apps/fz_http/lib/fz_http_web/header_helpers.ex +++ b/apps/fz_http/lib/fz_http_web/header_helpers.ex @@ -9,12 +9,12 @@ defmodule FzHttpWeb.HeaderHelpers do def clients, do: FzHttp.Config.fetch_env!(:fz_http, :private_clients) - def proxied?, do: not (external_trusted_proxies() == false) + def proxied?, do: external_trusted_proxies() != [] def remote_ip_opts do [ headers: @remote_ip_headers, - proxies: external_trusted_proxies(), + proxies: Enum.join(external_trusted_proxies(), ", "), clients: clients() ] end diff --git a/apps/fz_http/test/fz_http_web/header_helpers_test.exs b/apps/fz_http/test/fz_http_web/header_helpers_test.exs new file mode 100644 index 000000000..7cb7958d5 --- /dev/null +++ b/apps/fz_http/test/fz_http_web/header_helpers_test.exs @@ -0,0 +1,19 @@ +defmodule FzHttpWeb.HeaderHelpersTest do + use ExUnit.Case, async: true + import FzHttpWeb.HeaderHelpers + + describe "remote_ip_opts/0" do + test "returns a list of options for remote_ip/2" do + FzHttp.Config.put_env_override(:fz_http, :external_trusted_proxies, [ + "127.0.0.1", + "10.10.10.0/16" + ]) + + assert remote_ip_opts() == [ + headers: ["x-forwarded-for"], + proxies: "127.0.0.1, 10.10.10.0/16", + clients: ["172.28.0.0/16"] + ] + end + end +end