diff options
| -rw-r--r-- | lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex | 7 | ||||
| -rw-r--r-- | test/web/activity_pub/mrf/hellthread_policy_test.exs | 18 | 
2 files changed, 22 insertions, 3 deletions
| diff --git a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex index 1764bc789..f6b2c4415 100644 --- a/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex @@ -13,8 +13,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do    defp delist_message(message, threshold) when threshold > 0 do      follower_collection = User.get_cached_by_ap_id(message["actor"]).follower_address +    to = message["to"] || [] +    cc = message["cc"] || [] -    follower_collection? = Enum.member?(message["to"] ++ message["cc"], follower_collection) +    follower_collection? = Enum.member?(to ++ cc, follower_collection)      message =        case get_recipient_count(message) do @@ -71,7 +73,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do    end    @impl true -  def filter(%{"type" => "Create"} = message) do +  def filter(%{"type" => "Create", "object" => %{"type" => object_type}} = message) +      when object_type in ~w{Note Article} do      reject_threshold =        Pleroma.Config.get(          [:mrf_hellthread, :reject_threshold], diff --git a/test/web/activity_pub/mrf/hellthread_policy_test.exs b/test/web/activity_pub/mrf/hellthread_policy_test.exs index 95ef0b168..6e9daa7f9 100644 --- a/test/web/activity_pub/mrf/hellthread_policy_test.exs +++ b/test/web/activity_pub/mrf/hellthread_policy_test.exs @@ -8,6 +8,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicyTest do    import Pleroma.Web.ActivityPub.MRF.HellthreadPolicy +  alias Pleroma.Web.CommonAPI +    setup do      user = insert(:user) @@ -20,7 +22,10 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicyTest do          "https://instance.tld/users/user1",          "https://instance.tld/users/user2",          "https://instance.tld/users/user3" -      ] +      ], +      "object" => %{ +        "type" => "Note" +      }      }      [user: user, message: message] @@ -28,6 +33,17 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicyTest do    setup do: clear_config(:mrf_hellthread) +  test "doesn't die on chat messages" do +    Pleroma.Config.put([:mrf_hellthread], %{delist_threshold: 2, reject_threshold: 0}) + +    user = insert(:user) +    other_user = insert(:user) + +    {:ok, activity} = CommonAPI.post_chat_message(user, other_user, "moin") + +    assert {:ok, _} = filter(activity.data) +  end +    describe "reject" do      test "rejects the message if the recipient count is above reject_threshold", %{        message: message | 
