aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRX14 <steph@rx14.co.uk>2019-07-17 14:55:47 +0100
committerRX14 <steph@rx14.co.uk>2019-07-17 15:16:55 +0100
commit96a2890a9ecca3a6392edfaaaed4487303a920d7 (patch)
treebec35f20227f369a43d43c53738ac9beb969d9fe /lib
parentd3b922276138cf7aaa896d52a8e35113a40e22dc (diff)
downloadpleroma-96a2890a9ecca3a6392edfaaaed4487303a920d7.tar.gz
Add MRF MentionPolicy for dropping posts which mention specific actors
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