diff options
author | RX14 <steph@rx14.co.uk> | 2019-07-17 14:55:47 +0100 |
---|---|---|
committer | RX14 <steph@rx14.co.uk> | 2019-07-17 15:16:55 +0100 |
commit | 96a2890a9ecca3a6392edfaaaed4487303a920d7 (patch) | |
tree | bec35f20227f369a43d43c53738ac9beb969d9fe /lib | |
parent | d3b922276138cf7aaa896d52a8e35113a40e22dc (diff) | |
download | pleroma-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.ex | 24 |
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 |