logo

pleroma

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

instances.ex (1276B)


  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.Instances do
  5. @moduledoc "Instances context."
  6. alias Pleroma.Instances.Instance
  7. defdelegate filter_reachable(urls_or_hosts), to: Instance
  8. defdelegate reachable?(url_or_host), to: Instance
  9. defdelegate set_reachable(url_or_host), to: Instance
  10. defdelegate set_unreachable(url_or_host, unreachable_since \\ nil), to: Instance
  11. defdelegate get_consistently_unreachable, to: Instance
  12. def set_consistently_unreachable(url_or_host),
  13. do: set_unreachable(url_or_host, reachability_datetime_threshold())
  14. def reachability_datetime_threshold do
  15. federation_reachability_timeout_days =
  16. Pleroma.Config.get([:instance, :federation_reachability_timeout_days], 0)
  17. if federation_reachability_timeout_days > 0 do
  18. NaiveDateTime.add(
  19. NaiveDateTime.utc_now(),
  20. -federation_reachability_timeout_days * 24 * 3600,
  21. :second
  22. )
  23. else
  24. ~N[0000-01-01 00:00:00]
  25. end
  26. end
  27. def host(url_or_host) when is_binary(url_or_host) do
  28. if url_or_host =~ ~r/^http/i do
  29. URI.parse(url_or_host).host
  30. else
  31. url_or_host
  32. end
  33. end
  34. end