diff options
author | William Pitcock <nenolod@dereferenced.org> | 2018-11-26 23:23:43 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2018-11-26 23:51:58 +0000 |
commit | 8c05d19c7f1bd7ec61052df4fe9bad328d84a51b (patch) | |
tree | 223ceec1ef92672bc82ccbb3be67e3e0af015498 | |
parent | bdb0c6e418b89b841496737c22ecef65cbe6150d (diff) | |
download | pleroma-8c05d19c7f1bd7ec61052df4fe9bad328d84a51b.tar.gz |
MRF: add user allowlist module
-rw-r--r-- | lib/pleroma/web/activity_pub/mrf/user_allowlist.ex | 23 |
1 files changed, 23 insertions, 0 deletions
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 |