logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
commit: 30b71b2a2009eef03dd836546fd274c82ec07e6c
parent 6d0cc8fa2af293280f1816410794d2afdbc2294b
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date:   Fri, 24 Mar 2023 09:08:39 +0100

MRF: Add filtering against AP id

Diffstat:

Mlib/pleroma/web/activity_pub/mrf.ex8++++++++
Mlib/pleroma/web/activity_pub/mrf/policy.ex3++-
2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/lib/pleroma/web/activity_pub/mrf.ex b/lib/pleroma/web/activity_pub/mrf.ex @@ -106,6 +106,14 @@ defmodule Pleroma.Web.ActivityPub.MRF do def filter(%{} = object), do: get_policies() |> filter(object) + def id_filter(policies, id) when is_binary(id) do + policies + |> Enum.filter(&function_exported?(&1, :id_filter, 1)) + |> Enum.all?(& &1.id_filter(id)) + end + + def id_filter(id) when is_binary(id), do: get_policies() |> id_filter(id) + @impl true def pipeline_filter(%{} = message, meta) do object = meta[:object_data] diff --git a/lib/pleroma/web/activity_pub/mrf/policy.ex b/lib/pleroma/web/activity_pub/mrf/policy.ex @@ -4,6 +4,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.Policy do @callback filter(Map.t()) :: {:ok | :reject, Map.t()} + @callback id_filter(String.t()) :: boolean() @callback describe() :: {:ok | :error, Map.t()} @callback config_description() :: %{ optional(:children) => [map()], @@ -13,5 +14,5 @@ defmodule Pleroma.Web.ActivityPub.MRF.Policy do description: String.t() } @callback history_awareness() :: :auto | :manual - @optional_callbacks config_description: 0, history_awareness: 0 + @optional_callbacks config_description: 0, history_awareness: 0, id_filter: 1 end