diff options
author | kaniini <ariadne@dereferenced.org> | 2019-07-17 15:28:41 +0000 |
---|---|---|
committer | kaniini <ariadne@dereferenced.org> | 2019-07-17 15:28:41 +0000 |
commit | ce73d5f6a53826c85e46bbe45835b99ceaab67cd (patch) | |
tree | eacd3e290780132ac227b6e1bf9aae66f0c761ec /lib | |
parent | 0bbc0f0cf4ee87e8ac5995818c8049bf86e848cd (diff) | |
parent | 96a2890a9ecca3a6392edfaaaed4487303a920d7 (diff) | |
download | pleroma-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.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 |