aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Pitcock <nenolod@dereferenced.org>2018-11-26 23:23:43 +0000
committerWilliam Pitcock <nenolod@dereferenced.org>2018-11-26 23:51:58 +0000
commit8c05d19c7f1bd7ec61052df4fe9bad328d84a51b (patch)
tree223ceec1ef92672bc82ccbb3be67e3e0af015498
parentbdb0c6e418b89b841496737c22ecef65cbe6150d (diff)
downloadpleroma-8c05d19c7f1bd7ec61052df4fe9bad328d84a51b.tar.gz
MRF: add user allowlist module
-rw-r--r--lib/pleroma/web/activity_pub/mrf/user_allowlist.ex23
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