Browse Source

SimplePolicy: filter nested objects

docs-asdf
Alex Gleason 3 years ago
parent
commit
3d742c3c1a
No known key found for this signature in database GPG Key ID: 7211D1F99744FBB7
2 changed files with 22 additions and 1 deletions
  1. +10
    -1
      lib/pleroma/web/activity_pub/mrf/simple_policy.ex
  2. +12
    -0
      test/pleroma/web/activity_pub/mrf/simple_policy_test.exs

+ 10
- 1
lib/pleroma/web/activity_pub/mrf/simple_policy.ex View File

@@ -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]"}


+ 12
- 0
test/pleroma/web/activity_pub/mrf/simple_policy_test.exs View File

@@ -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


Loading…
Cancel
Save