diff options
author | Mark Felder <feld@FreeBSD.org> | 2020-10-05 11:48:41 -0500 |
---|---|---|
committer | Mark Felder <feld@FreeBSD.org> | 2020-10-05 11:49:56 -0500 |
commit | 35ee759e74d0737598311d8e4245168f981812d3 (patch) | |
tree | 1c9b518850509d6a2fcda8543f204388fdb4b429 | |
parent | 241f7cb1ed91a8d6855dbd03517e85c98c08edb7 (diff) | |
download | pleroma-35ee759e74d0737598311d8e4245168f981812d3.tar.gz |
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.ex | 13 |
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 |