diff options
| -rw-r--r-- | lib/pleroma/web/activity_pub/mrf/simple_policy.ex | 11 | ||||
| -rw-r--r-- | test/pleroma/web/activity_pub/mrf/simple_policy_test.exs | 12 | 
2 files changed, 22 insertions, 1 deletions
| diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index bb3838d2c..b3e5d814d 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -181,6 +181,14 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do    defp check_banner_removal(_actor_info, object), do: {:ok, object} +  defp check_object(%{"object" => object} = activity) when is_map(object) do +    with {:ok, _object} <- filter(object) do +      {:ok, activity} +    end +  end + +  defp check_object(object), do: {:ok, object} +    @impl true    def filter(%{"type" => "Delete", "actor" => actor} = object) do      %{host: actor_host} = URI.parse(actor) @@ -206,7 +214,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do           {:ok, object} <- check_media_nsfw(actor_info, object),           {:ok, object} <- check_ftl_removal(actor_info, object),           {:ok, object} <- check_followers_only(actor_info, object), -         {:ok, object} <- check_report_removal(actor_info, object) do +         {:ok, object} <- check_report_removal(actor_info, object), +         {:ok, object} <- check_object(object) do        {:ok, object}      else        {:reject, nil} -> {:reject, "[SimplePolicy]"} diff --git a/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs b/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs index f48e5b39b..b6d9f2ded 100644 --- a/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs +++ b/test/pleroma/web/activity_pub/mrf/simple_policy_test.exs @@ -260,6 +260,18 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicyTest do        assert {:reject, _} = SimplePolicy.filter(remote_user)      end + +    test "reject Announce when object would be rejected" do +      clear_config([:mrf_simple, :reject], ["blocked.tld"]) + +      announce = %{ +        "type" => "Announce", +        "actor" => "https://okay.tld/users/alice", +        "object" => %{"type" => "Note", "actor" => "https://blocked.tld/users/bob"} +      } + +      assert {:reject, _} = SimplePolicy.filter(announce) +    end    end    describe "when :followers_only" do | 
