Skip to content
Snippets Groups Projects
Commit 1d727cd0 authored by Karen Konou's avatar Karen Konou
Browse files

added checks for public url and follower collections

parent ac72b578
No related branches found
No related tags found
No related merge requests found
......@@ -14,6 +14,23 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
|> Map.put("cc", ["https://www.w3.org/ns/activitystreams#Public"])
end
defp get_recipient_count(message) do
recipients = (message["to"] || []) ++ (message["cc"] || [])
cond do
Enum.member?(recipients, "https://www.w3.org/ns/activitystreams#Public") &&
Enum.find(recipients, &String.ends_with?(&1, "/followers")) ->
length(recipients) - 2
Enum.member?(recipients, "https://www.w3.org/ns/activitystreams#Public") ||
Enum.find(recipients, &String.ends_with?(&1, "/followers")) ->
length(recipients) - 1
true ->
length(recipients)
end
end
@impl true
def filter(%{"type" => "Create"} = message) do
delist_threshold = Pleroma.Config.get([:mrf_hellthread, :delist_threshold])
......@@ -24,13 +41,13 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
Pleroma.Config.get([:mrf_hellthread, :threshold])
)
recipients = (message["to"] || []) ++ (message["cc"] || [])
recipients = get_recipient_count(message)
cond do
length(recipients) > reject_threshold and reject_threshold > 0 ->
recipients > reject_threshold and reject_threshold > 0 ->
{:reject, nil}
length(recipients) > delist_threshold and delist_threshold > 0 ->
recipients > delist_threshold and delist_threshold > 0 ->
if Enum.member?(message["to"], "https://www.w3.org/ns/activitystreams#Public") or
Enum.member?(message["cc"], "https://www.w3.org/ns/activitystreams#Public") do
{:ok, delist_message(message)}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment