aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config/config.exs4
-rw-r--r--lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex12
-rw-r--r--test/web/activity_pub/mrf/hellthread_policy_test.exs50
3 files changed, 59 insertions, 7 deletions
diff --git a/config/config.exs b/config/config.exs
index 5db0ea9aa..e2a239a76 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -228,8 +228,8 @@ config :pleroma, :mrf_rejectnonpublic,
allow_direct: false
config :pleroma, :mrf_hellthread,
- delist_threshold: 5,
- reject_threshold: 10
+ delist_threshold: 10,
+ reject_threshold: 20
config :pleroma, :mrf_simple,
media_removal: [],
diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
index 1f09b4e66..95211c596 100644
--- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
+++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
@@ -47,14 +47,16 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do
follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address
if Enum.member?(recipients, "https://www.w3.org/ns/activitystreams#Public") do
- recipients
- |> List.delete("https://www.w3.org/ns/activitystreams#Public")
- |> List.delete(follower_collection)
+ recipients =
+ recipients
+ |> List.delete("https://www.w3.org/ns/activitystreams#Public")
+ |> List.delete(follower_collection)
{:public, length(recipients)}
else
- recipients
- |> List.delete(follower_collection)
+ recipients =
+ recipients
+ |> List.delete(follower_collection)
{:not_public, length(recipients)}
end
diff --git a/test/web/activity_pub/mrf/hellthread_policy_test.exs b/test/web/activity_pub/mrf/hellthread_policy_test.exs
new file mode 100644
index 000000000..b5bdd35cc
--- /dev/null
+++ b/test/web/activity_pub/mrf/hellthread_policy_test.exs
@@ -0,0 +1,50 @@
+# Pleroma: A lightweight social networking server
+# Copyright © 2019 Pleroma Authors <https://pleroma.social/>
+# SPDX-License-Identifier: AGPL-3.0-only
+
+defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicyTest do
+ use Pleroma.DataCase
+ import Pleroma.Factory
+
+ import Pleroma.Web.ActivityPub.MRF.HellthreadPolicy
+
+ describe "hellthread filter tests" do
+ setup do
+ user = insert(:user)
+
+ message = %{
+ "actor" => user.ap_id,
+ "cc" => [user.follower_address],
+ "type" => "Create",
+ "to" => [
+ "https://www.w3.org/ns/activitystreams#Public",
+ "https://instace.tld/users/user1",
+ "https://instace.tld/users/user2",
+ "https://instace.tld/users/user3"
+ ]
+ }
+
+ [user: user, message: message]
+ end
+
+ test "reject test", %{message: message} do
+ Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 0, reject_threshold: 2})
+
+ {:reject, nil} = filter(message)
+ end
+
+ test "delist test", %{user: user, message: message} do
+ Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 2, reject_threshold: 0})
+
+ {:ok, message} = filter(message)
+ assert user.follower_address in message["to"]
+ assert "https://www.w3.org/ns/activitystreams#Public" in message["cc"]
+ end
+
+ test "threshold test", %{message: message} do
+ Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 0, reject_threshold: 3})
+
+ {:ok, _} = filter(message)
+ end
+ end
+end