projects
/
akkoma
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
typo fix
[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..1764bc789f4a73584fe93b9e511b9e0b066aa216 100644
(file)
--- a/
lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
+++ b/
lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
@@
-1,9
+1,14
@@
# Pleroma: A lightweight social networking server
# Pleroma: A lightweight social networking server
-# Copyright © 2017-20
19
Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-20
20
Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
alias Pleroma.User
# SPDX-License-Identifier: AGPL-3.0-only
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