2020-10-18 18:22:21 +00:00
|
|
|
# Pleroma: A lightweight social networking server
|
2023-01-02 20:38:50 +00:00
|
|
|
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
|
2020-10-18 18:22:21 +00:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
|
|
|
|
defmodule Pleroma.Helpers.InetHelper do
|
|
|
|
def parse_address(ip) when is_tuple(ip) do
|
|
|
|
{:ok, ip}
|
|
|
|
end
|
|
|
|
|
|
|
|
def parse_address(ip) when is_binary(ip) do
|
|
|
|
ip
|
|
|
|
|> String.to_charlist()
|
|
|
|
|> parse_address()
|
|
|
|
end
|
|
|
|
|
|
|
|
def parse_address(ip) do
|
|
|
|
:inet.parse_address(ip)
|
|
|
|
end
|
2023-12-16 17:22:32 +00:00
|
|
|
|
|
|
|
def parse_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
|
|
|
|
|
2024-05-27 15:44:41 +00:00
|
|
|
InetCidr.parse_cidr!(proxy, true)
|
2023-12-16 17:22:32 +00:00
|
|
|
end
|
2020-10-18 18:22:21 +00:00
|
|
|
end
|