logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://anongit.hacktivis.me/git/pleroma.git/

inet_helper.ex (764B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Pleroma.Helpers.InetHelper do
  5. def parse_address(ip) when is_tuple(ip) do
  6. {:ok, ip}
  7. end
  8. def parse_address(ip) when is_binary(ip) do
  9. ip
  10. |> String.to_charlist()
  11. |> parse_address()
  12. end
  13. def parse_address(ip) do
  14. :inet.parse_address(ip)
  15. end
  16. def parse_cidr(proxy) when is_binary(proxy) do
  17. proxy =
  18. cond do
  19. "/" in String.codepoints(proxy) -> proxy
  20. InetCidr.v4?(InetCidr.parse_address!(proxy)) -> proxy <> "/32"
  21. InetCidr.v6?(InetCidr.parse_address!(proxy)) -> proxy <> "/128"
  22. end
  23. InetCidr.parse_cidr!(proxy, true)
  24. end
  25. end