diff options
author | William Pitcock <nenolod@dereferenced.org> | 2018-06-19 21:23:37 +0000 |
---|---|---|
committer | William Pitcock <nenolod@dereferenced.org> | 2018-06-19 21:28:24 +0000 |
commit | 60d6038be57aaa90f1d8ba9a05ecbee03b59fc82 (patch) | |
tree | 272e870fa168507f2c7aaa8702e3bdfa831f0b61 /lib | |
parent | 90cf75f4a781f2eb7016a4a165a8617d4352451b (diff) | |
download | pleroma-60d6038be57aaa90f1d8ba9a05ecbee03b59fc82.tar.gz |
mrf simple: add accept lists
accept lists supplement reject lists by requiring that any message accepted by contained
by the accept list.
in other words, this functionality can be used to implement instances similar to
awoo.space.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/mrf/simple_policy.ex | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index 8d770387d..0a047013a 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -4,6 +4,15 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do @mrf_policy Application.get_env(:pleroma, :mrf_simple) + @accept Keyword.get(@mrf_policy, :accept) + defp check_accept(actor_info, object) do + if length(@accept) > 0 and not actor_info.host in @accept do + {:reject, nil} + else + {:ok, object} + end + end + @reject Keyword.get(@mrf_policy, :reject) defp check_reject(actor_info, object) do if actor_info.host in @reject do @@ -74,7 +83,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do def filter(object) do actor_info = URI.parse(object["actor"]) - with {:ok, object} <- check_reject(actor_info, object), + with {:ok, object} <- check_accept(actor_info, object), + {:ok, object} <- check_reject(actor_info, object), {:ok, object} <- check_media_removal(actor_info, object), {:ok, object} <- check_media_nsfw(actor_info, object), {:ok, object} <- check_ftl_removal(actor_info, object) do |