summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Felder <feld@FreeBSD.org>2020-10-05 11:48:41 -0500
committerMark Felder <feld@FreeBSD.org>2020-10-05 11:49:56 -0500
commit35ee759e74d0737598311d8e4245168f981812d3 (patch)
tree1c9b518850509d6a2fcda8543f204388fdb4b429
parent241f7cb1ed91a8d6855dbd03517e85c98c08edb7 (diff)
Add helper function to convert single IPs into CIDR format if they were not provided that way
-rw-r--r--lib/pleroma/plugs/remote_ip.ex13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/pleroma/plugs/remote_ip.ex b/lib/pleroma/plugs/remote_ip.ex
index 0ac9050d0..d1b1f793a 100644
--- a/lib/pleroma/plugs/remote_ip.ex
+++ b/lib/pleroma/plugs/remote_ip.ex
@@ -47,8 +47,19 @@ defmodule Pleroma.Plugs.RemoteIp do
config
|> Keyword.get(:proxies, [])
|> Enum.concat(reserved)
- |> Enum.map(&InetCidr.parse/1)
+ |> Enum.map(&maybe_add_cidr/1)
{headers, proxies}
end
+
+ defp maybe_add_cidr(proxy) when is_binary(proxy) do
+ proxy =
+ cond do
+ "/" in String.codepoints(proxy) -> proxy
+ InetCidr.v4?(InetCidr.parse_address!(proxy)) -> proxy <> "/32"
+ InetCidr.v6?(InetCidr.parse_address!(proxy)) -> proxy <> "/128"
+ end
+
+ InetCidr.parse(proxy)
+ end
end