aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkaniini <ariadne@dereferenced.org>2019-07-17 15:28:41 +0000
committerkaniini <ariadne@dereferenced.org>2019-07-17 15:28:41 +0000
commitce73d5f6a53826c85e46bbe45835b99ceaab67cd (patch)
treeeacd3e290780132ac227b6e1bf9aae66f0c761ec /lib
parent0bbc0f0cf4ee87e8ac5995818c8049bf86e848cd (diff)
parent96a2890a9ecca3a6392edfaaaed4487303a920d7 (diff)
downloadpleroma-ce73d5f6a53826c85e46bbe45835b99ceaab67cd.tar.gz
Merge branch 'feature/mention-mrf' into 'develop'
Add MRF MentionPolicy for dropping posts which mention specific actors See merge request pleroma/pleroma!1439
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/mrf/mention_policy.ex24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/mrf/mention_policy.ex b/lib/pleroma/web/activity_pub/mrf/mention_policy.ex
new file mode 100644
index 000000000..1842e1aeb
--- /dev/null
+++ b/lib/pleroma/web/activity_pub/mrf/mention_policy.ex
@@ -0,0 +1,24 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.ActivityPub.MRF.MentionPolicy do
+ @moduledoc "Block messages which mention a user"
+
+ @behaviour Pleroma.Web.ActivityPub.MRF
+
+ @impl true
+ def filter(%{"type" => "Create"} = message) do
+ reject_actors = Pleroma.Config.get([:mrf_mention, :actors], [])
+ recipients = (message["to"] || []) ++ (message["cc"] || [])
+
+ if Enum.any?(recipients, fn recipient -> Enum.member?(reject_actors, recipient) end) do
+ {:reject, nil}
+ else
+ {:ok, message}
+ end
+ end
+
+ @impl true
+ def filter(message), do: {:ok, message}
+end