diff options
author | Egor Kislitsyn <egor@kislitsyn.com> | 2019-02-11 13:54:21 +0700 |
---|---|---|
committer | Egor Kislitsyn <egor@kislitsyn.com> | 2019-02-11 13:54:21 +0700 |
commit | 305d2194136d4560e02c110d528164034d3727b2 (patch) | |
tree | 40510e1c4dc0140ff16e2fdc483da64c83b7077c /lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | |
parent | 5b1d7c3c5672af065af503891d156b6e0cf5a8c1 (diff) | |
parent | 06c4935c11fc58f5ede18706bc46dcc502e64052 (diff) | |
download | pleroma-305d2194136d4560e02c110d528164034d3727b2.tar.gz |
Merge branch 'develop' of git.pleroma.social:pleroma/pleroma into feature/jobs
# Conflicts:
# lib/pleroma/web/federator/federator.ex
# lib/pleroma/web/websub/websub.ex
Diffstat (limited to 'lib/pleroma/web/nodeinfo/nodeinfo_controller.ex')
-rw-r--r-- | lib/pleroma/web/nodeinfo/nodeinfo_controller.ex | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex index 21694a5ee..f4867d05b 100644 --- a/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex +++ b/lib/pleroma/web/nodeinfo/nodeinfo_controller.ex @@ -5,10 +5,11 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do use Pleroma.Web, :controller + alias Pleroma.Config + alias Pleroma.Repo alias Pleroma.Stats + alias Pleroma.User alias Pleroma.Web - alias Pleroma.{User, Repo} - alias Pleroma.Config alias Pleroma.Web.ActivityPub.MRF plug(Pleroma.Web.FederatingPlug) @@ -32,7 +33,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do # returns a nodeinfo 2.0 map, since 2.1 just adds a repository field # under software. - def raw_nodeinfo() do + def raw_nodeinfo do instance = Application.get_env(:pleroma, :instance) media_proxy = Application.get_env(:pleroma, :media_proxy) suggestions = Application.get_env(:pleroma, :suggestions) @@ -44,6 +45,33 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do Application.get_env(:pleroma, :mrf_simple) |> Enum.into(%{}) + # This horror is needed to convert regex sigils to strings + mrf_keyword = + Application.get_env(:pleroma, :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) @@ -66,13 +94,12 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do Config.get([:mrf_user_allowlist], []) |> Enum.into(%{}, fn {k, v} -> {k, length(v)} end) - mrf_transparency = Keyword.get(instance, :mrf_transparency) - federation_response = - if mrf_transparency do + if Keyword.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 } |