mirror of
https://git.pleroma.social/pleroma/pleroma.git
synced 2024-12-22 16:16:34 +00:00
MRF: Add filtering against AP id
This commit is contained in:
parent
196f108823
commit
03e14e759d
3 changed files with 11 additions and 1 deletions
1
changelog.d/mrf-id_filter.add
Normal file
1
changelog.d/mrf-id_filter.add
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Add `id_filter` to MRF to filter URLs and their domain prior to fetching
|
|
@ -108,6 +108,14 @@ defmodule Pleroma.Web.ActivityPub.MRF do
|
||||||
|
|
||||||
def filter(%{} = object), do: get_policies() |> filter(object)
|
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
|
@impl true
|
||||||
def pipeline_filter(%{} = message, meta) do
|
def pipeline_filter(%{} = message, meta) do
|
||||||
object = meta[:object_data]
|
object = meta[:object_data]
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
defmodule Pleroma.Web.ActivityPub.MRF.Policy do
|
defmodule Pleroma.Web.ActivityPub.MRF.Policy do
|
||||||
@callback filter(Pleroma.Activity.t()) :: {:ok | :reject, Pleroma.Activity.t()}
|
@callback filter(Pleroma.Activity.t()) :: {:ok | :reject, Pleroma.Activity.t()}
|
||||||
|
@callback id_filter(String.t()) :: boolean()
|
||||||
@callback describe() :: {:ok | :error, map()}
|
@callback describe() :: {:ok | :error, map()}
|
||||||
@callback config_description() :: %{
|
@callback config_description() :: %{
|
||||||
optional(:children) => [map()],
|
optional(:children) => [map()],
|
||||||
|
@ -13,5 +14,5 @@ defmodule Pleroma.Web.ActivityPub.MRF.Policy do
|
||||||
description: String.t()
|
description: String.t()
|
||||||
}
|
}
|
||||||
@callback history_awareness() :: :auto | :manual
|
@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
|
end
|
||||||
|
|
Loading…
Reference in a new issue