|
|
@@ -34,64 +34,18 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do |
|
|
|
def raw_nodeinfo do |
|
|
|
stats = Stats.get_stats() |
|
|
|
|
|
|
|
exclusions = Config.get([:instance, :mrf_transparency_exclusions]) |
|
|
|
|
|
|
|
mrf_simple = |
|
|
|
Config.get(:mrf_simple) |
|
|
|
|> Enum.map(fn {k, v} -> {k, Enum.reject(v, fn v -> v in exclusions end)} end) |
|
|
|
|> Enum.into(%{}) |
|
|
|
|
|
|
|
# This horror is needed to convert regex sigils to strings |
|
|
|
mrf_keyword = |
|
|
|
Config.get(:mrf_keyword, []) |
|
|
|
|> Enum.map(fn {key, value} -> |
|
|
|
{key, |
|
|
|
Enum.map(value, fn |
|
|
|
{pattern, replacement} -> |
|
|
|
%{ |
|
|
|
"pattern" => |
|
|
|
if not is_binary(pattern) do |
|
|
|
inspect(pattern) |
|
|
|
else |
|
|
|
pattern |
|
|
|
end, |
|
|
|
"replacement" => replacement |
|
|
|
} |
|
|
|
|
|
|
|
pattern -> |
|
|
|
if not is_binary(pattern) do |
|
|
|
inspect(pattern) |
|
|
|
else |
|
|
|
pattern |
|
|
|
end |
|
|
|
end)} |
|
|
|
end) |
|
|
|
|> Enum.into(%{}) |
|
|
|
|
|
|
|
mrf_policies = |
|
|
|
MRF.get_policies() |
|
|
|
|> Enum.map(fn policy -> to_string(policy) |> String.split(".") |> List.last() end) |
|
|
|
|
|
|
|
quarantined = Config.get([:instance, :quarantined_instances], []) |
|
|
|
|
|
|
|
staff_accounts = |
|
|
|
User.all_superusers() |
|
|
|
|> Enum.map(fn u -> u.ap_id end) |
|
|
|
|
|
|
|
mrf_user_allowlist = |
|
|
|
Config.get([:mrf_user_allowlist], []) |
|
|
|
|> Enum.into(%{}, fn {k, v} -> {k, length(v)} end) |
|
|
|
|
|
|
|
federation_response = |
|
|
|
if Config.get([:instance, :mrf_transparency]) do |
|
|
|
%{ |
|
|
|
mrf_policies: mrf_policies, |
|
|
|
mrf_simple: mrf_simple, |
|
|
|
mrf_keyword: mrf_keyword, |
|
|
|
mrf_user_allowlist: mrf_user_allowlist, |
|
|
|
quarantined_instances: quarantined, |
|
|
|
exclusions: length(exclusions) > 0 |
|
|
|
} |
|
|
|
{:ok, data} = MRF.describe() |
|
|
|
|
|
|
|
data |
|
|
|
|> Map.merge(%{quarantined_instances: quarantined}) |
|
|
|
else |
|
|
|
%{} |
|
|
|
end |
|
|
|