Merge remote-tracking branch 'pleroma/develop' into feature/addressable-lists
[akkoma] / lib / pleroma / web / nodeinfo / nodeinfo_controller.ex
index 57f5b61bb3706b480c2a7d22084daaa2228e601e..a1d7fcc7dae34a046acebca76db2a72cc29ba7e1 100644 (file)
@@ -34,8 +34,11 @@ 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
@@ -86,7 +89,8 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
           mrf_simple: mrf_simple,
           mrf_keyword: mrf_keyword,
           mrf_user_allowlist: mrf_user_allowlist,
-          quarantined_instances: quarantined
+          quarantined_instances: quarantined,
+          exclusions: length(exclusions) > 0
         }
       else
         %{}
@@ -98,6 +102,7 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
         "mastodon_api",
         "mastodon_api_streaming",
         "polls",
+        "pleroma_explicit_addressing",
         if Config.get([:media_proxy, :enabled]) do
           "media_proxy"
         end,
@@ -161,7 +166,8 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
         accountActivationRequired: Config.get([:instance, :account_activation_required], false),
         invitesEnabled: Config.get([:instance, :invites_enabled], false),
         features: features,
-        restrictedNicknames: Config.get([Pleroma.User, :restricted_nicknames])
+        restrictedNicknames: Config.get([Pleroma.User, :restricted_nicknames]),
+        skipThreadContainment: Config.get([:instance, :skip_thread_containment], false)
       }
     }
   end
@@ -199,8 +205,6 @@ defmodule Pleroma.Web.Nodeinfo.NodeinfoController do
   end
 
   def nodeinfo(conn, _) do
-    conn
-    |> put_status(404)
-    |> json(%{error: "Nodeinfo schema version not handled"})
+    render_error(conn, :not_found, "Nodeinfo schema version not handled")
   end
 end