Преглед изворни кода

mrf: simple policy: add the ability to strip avatars and banners from user profiles

tags/v1.1.4
William Pitcock пре 5 година
родитељ
комит
baf72d6c58
2 измењених фајлова са 35 додато и 1 уклоњено
  1. +3
    -1
      config/config.exs
  2. +32
    -0
      lib/pleroma/web/activity_pub/mrf/simple_policy.ex

+ 3
- 1
config/config.exs Прегледај датотеку

@@ -314,7 +314,9 @@ config :pleroma, :mrf_simple,
federated_timeline_removal: [],
report_removal: [],
reject: [],
accept: []
accept: [],
avatar_removal: [],
banner_removal: []

config :pleroma, :mrf_keyword,
reject: [],


+ 32
- 0
lib/pleroma/web/activity_pub/mrf/simple_policy.ex Прегледај датотеку

@@ -104,6 +104,26 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do

defp check_report_removal(_actor_info, object), do: {:ok, object}

defp check_avatar_removal(%{host: actor_host} = _actor_info, %{"icon" => _icon} = object) do
if actor_host in Pleroma.Config.get([:mrf_simple, :avatar_removal]) do
{:ok, Map.delete(object, "icon")}
else
{:ok, object}
end
end

defp check_avatar_removal(_actor_info, object), do: {:ok, object}

defp check_banner_removal(%{host: actor_host} = _actor_info, %{"image" => _image} = object) do
if actor_host in Pleroma.Config.get([:mrf_simple, :banner_removal]) do
{:ok, Map.delete(object, "image")}
else
{:ok, object}
end
end

defp check_banner_removal(_actor_info, object), do: {:ok, object}

@impl true
def filter(%{"actor" => actor} = object) do
actor_info = URI.parse(actor)
@@ -120,5 +140,17 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do
end
end

def filter(%{"id" => actor, "type" => obj_type} = object)
when obj_type in ["Application", "Group", "Organization", "Person", "Service"] do
actor_info = URI.parse(actor)

with {:ok, object} <- check_avatar_removal(actor_info, object),
{:ok, object} <- check_banner_removal(actor_info, object) do
{:ok, object}
else
_e -> {:reject, nil}
end
end

def filter(object), do: {:ok, object}
end

Loading…
Откажи
Сачувај