From 8c05d19c7f1bd7ec61052df4fe9bad328d84a51b Mon Sep 17 00:00:00 2001 From: William Pitcock Date: Mon, 26 Nov 2018 23:23:43 +0000 Subject: [PATCH] MRF: add user allowlist module --- lib/pleroma/web/activity_pub/mrf/user_allowlist.ex | 23 ++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 lib/pleroma/web/activity_pub/mrf/user_allowlist.ex diff --git a/lib/pleroma/web/activity_pub/mrf/user_allowlist.ex b/lib/pleroma/web/activity_pub/mrf/user_allowlist.ex new file mode 100644 index 000000000..3503d8692 --- /dev/null +++ b/lib/pleroma/web/activity_pub/mrf/user_allowlist.ex @@ -0,0 +1,23 @@ +defmodule Pleroma.Web.ActivityPub.MRF.UserAllowListPolicy do + alias Pleroma.Config + + @behaviour Pleroma.Web.ActivityPub.MRF + + defp filter_by_list(object, []), do: {:ok, object} + + defp filter_by_list(%{"actor" => actor} = object, allow_list) do + if actor in allow_list do + {:ok, object} + else + {:reject, nil} + end + end + + @impl true + def filter(object) do + actor_info = URI.parse(object["actor"]) + allow_list = Config.get([:mrf_user_allowlist, String.to_atom(actor_info.host)], []) + + filter_by_list(object, allow_list) + end +end