diff options
author | Mint <mint@plagu.ee> | 2024-03-12 22:45:15 +0300 |
---|---|---|
committer | b <> | 2024-10-03 20:00:15 +0300 |
commit | fd83b86b99ee6642fa0a765a55c0f0e35f272151 (patch) | |
tree | 25501f63e529e108d1b77b7c5ee0a0477528bbdf /lib | |
parent | b7c91876d2cc027a5a7f8a79ba256f13af623997 (diff) | |
download | pleroma-fd83b86b99ee6642fa0a765a55c0f0e35f272151.tar.gz pleroma-fd83b86b99ee6642fa0a765a55c0f0e35f272151.zip |
RemoteReportPolicy: add `reject_third_party` option
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/mrf/remote_report_policy.ex | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/pleroma/web/activity_pub/mrf/remote_report_policy.ex b/lib/pleroma/web/activity_pub/mrf/remote_report_policy.ex index 0bd83d8f0..964c59cbf 100644 --- a/lib/pleroma/web/activity_pub/mrf/remote_report_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/remote_report_policy.ex @@ -9,6 +9,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.RemoteReportPolicy do with {_, false} <- {:local, local?(object)}, {:ok, _} <- maybe_reject_all(object), {:ok, _} <- maybe_reject_anonymous(object), + {:ok, _} <- maybe_reject_third_party(object), {:ok, _} <- maybe_reject_empty_message(object) do {:ok, object} else @@ -37,6 +38,21 @@ defmodule Pleroma.Web.ActivityPub.MRF.RemoteReportPolicy do end end + defp maybe_reject_third_party(%{"object" => objects} = object) do + {_, to} = case objects do + [head | tail] when is_binary(head) -> {tail, head} + s when is_binary(s) -> {[], s} + _ -> {[], ""} + end + + with true <- Config.get([:mrf_remote_report, :reject_third_party]), + String.starts_with?(to, Pleroma.Web.Endpoint.url()) do + {:reject, "[RemoteReportPolicy] Third-party: #{to}"} + else + _ -> {:ok, object} + end + end + defp maybe_reject_empty_message(%{"content" => content} = object) when is_binary(content) and content != "" do {:ok, object} @@ -84,6 +100,12 @@ defmodule Pleroma.Web.ActivityPub.MRF.RemoteReportPolicy do suggestions: [true] }, %{ + key: :reject_third_party, + type: :boolean, + description: "Reject reports on users from third-party instances?", + suggestions: [true] + }, + %{ key: :reject_empty_message, type: :boolean, description: "Reject remote reports with no message?", |