projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Move ActivityExpiration creation from CommonApi.post/2 to ActivityPub.insert/4
[akkoma]
/
lib
/
pleroma
/
web
/
activity_pub
/
mrf
/
hellthread_policy.ex
diff --git
a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
index 6736f3cb905a7e0c8edc7cdce22190c9c99c7840..b3c742954e58a93f6840b8952527321b092b60a5 100644
(file)
--- a/
lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
+++ b/
lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
@@
-4,6
+4,11
@@
defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
alias Pleroma.User
defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
alias Pleroma.User
+
+ require Pleroma.Constants
+
+ @moduledoc "Block messages with too much mentions (configurable)"
+
@behaviour Pleroma.Web.ActivityPub.MRF
defp delist_message(message, threshold) when threshold > 0 do
@behaviour Pleroma.Web.ActivityPub.MRF
defp delist_message(message, threshold) when threshold > 0 do
@@
-17,12
+22,12
@@
defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
when follower_collection? and recipients > threshold ->
message
|> Map.put("to", [follower_collection])
when follower_collection? and recipients > threshold ->
message
|> Map.put("to", [follower_collection])
- |> Map.put("cc", [
"https://www.w3.org/ns/activitystreams#Public"
])
+ |> Map.put("cc", [
Pleroma.Constants.as_public()
])
{:public, recipients} when recipients > threshold ->
message
|> Map.put("to", [])
{:public, recipients} when recipients > threshold ->
message
|> Map.put("to", [])
- |> Map.put("cc", [
"https://www.w3.org/ns/activitystreams#Public"
])
+ |> Map.put("cc", [
Pleroma.Constants.as_public()
])
_ ->
message
_ ->
message
@@
-49,10
+54,10
@@
defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
recipients = (message["to"] || []) ++ (message["cc"] || [])
follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address
recipients = (message["to"] || []) ++ (message["cc"] || [])
follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address
- if Enum.member?(recipients,
"https://www.w3.org/ns/activitystreams#Public"
) do
+ if Enum.member?(recipients,
Pleroma.Constants.as_public()
) do
recipients =
recipients
recipients =
recipients
- |> List.delete(
"https://www.w3.org/ns/activitystreams#Public"
)
+ |> List.delete(
Pleroma.Constants.as_public()
)
|> List.delete(follower_collection)
{:public, length(recipients)}
|> List.delete(follower_collection)
{:public, length(recipients)}
@@
-85,4
+90,8
@@
defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
@impl true
def filter(message), do: {:ok, message}
@impl true
def filter(message), do: {:ok, message}
+
+ @impl true
+ def describe,
+ do: {:ok, %{mrf_hellthread: Pleroma.Config.get(:mrf_hellthread) |> Enum.into(%{})}}
end
end