소스 검색

MRF: add describe() to all modules, add base MRF configuration to base describe()

tags/v1.1.4
Ariadne Conill 4 년 전
부모
커밋
c574b7a1fc
17개의 변경된 파일117개의 추가작업 그리고 8개의 파일을 삭제
  1. +24
    -8
      lib/pleroma/web/activity_pub/mrf.ex
  2. +3
    -0
      lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex
  3. +6
    -0
      lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex
  4. +3
    -0
      lib/pleroma/web/activity_pub/mrf/drop_policy.ex
  5. +2
    -0
      lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex
  6. +3
    -0
      lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex
  7. +32
    -0
      lib/pleroma/web/activity_pub/mrf/keyword_policy.ex
  8. +3
    -0
      lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex
  9. +3
    -0
      lib/pleroma/web/activity_pub/mrf/mention_policy.ex
  10. +3
    -0
      lib/pleroma/web/activity_pub/mrf/no_placeholder_text_policy.ex
  11. +3
    -0
      lib/pleroma/web/activity_pub/mrf/noop_policy.ex
  12. +2
    -0
      lib/pleroma/web/activity_pub/mrf/normalize_markup.ex
  13. +3
    -0
      lib/pleroma/web/activity_pub/mrf/reject_non_public.ex
  14. +12
    -0
      lib/pleroma/web/activity_pub/mrf/simple_policy.ex
  15. +3
    -0
      lib/pleroma/web/activity_pub/mrf/subchain_policy.ex
  16. +3
    -0
      lib/pleroma/web/activity_pub/mrf/tag_policy.ex
  17. +9
    -0
      lib/pleroma/web/activity_pub/mrf/user_allowlist_policy.ex

+ 24
- 8
lib/pleroma/web/activity_pub/mrf.ex 파일 보기

@@ -39,15 +39,31 @@ defmodule Pleroma.Web.ActivityPub.MRF do
@callback describe() :: {:ok | :error, Map.t()}

def describe(policies) do
policies
|> Enum.reduce({:ok, %{}}, fn
policy, {:ok, data} ->
{:ok, policy_data} = policy.describe()
{:ok, Map.merge(data, policy_data)}
{:ok, policy_configs} =
policies
|> Enum.reduce({:ok, %{}}, fn
policy, {:ok, data} ->
{:ok, policy_data} = policy.describe()
{:ok, Map.merge(data, policy_data)}

_, error ->
error
end)
_, error ->
error
end)

mrf_policies =
get_policies()
|> Enum.map(fn policy -> to_string(policy) |> String.split(".") |> List.last() end)

exclusions = Pleroma.Config.get([:instance, :mrf_transparency_exclusions])

base =
%{
mrf_policies: mrf_policies,
exclusions: length(exclusions) > 0,
}
|> Map.merge(policy_configs)

{:ok, base}
end

def describe(), do: get_policies() |> describe()


+ 3
- 0
lib/pleroma/web/activity_pub/mrf/anti_followbot_policy.ex 파일 보기

@@ -62,4 +62,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiFollowbotPolicy do

@impl true
def filter(message), do: {:ok, message}

@impl true
def describe(), do: {:ok, %{}}
end

+ 6
- 0
lib/pleroma/web/activity_pub/mrf/anti_link_spam_policy.ex 파일 보기

@@ -5,6 +5,8 @@
defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy do
alias Pleroma.User

@behaviour Pleroma.Web.ActivityPub.MRF

require Logger

# has the user successfully posted before?
@@ -22,6 +24,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy do

defp contains_links?(_), do: false

@impl true
def filter(%{"type" => "Create", "actor" => actor, "object" => object} = message) do
with {:ok, %User{} = u} <- User.get_or_fetch_by_ap_id(actor),
{:contains_links, true} <- {:contains_links, contains_links?(object)},
@@ -45,4 +48,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.AntiLinkSpamPolicy do

# in all other cases, pass through
def filter(message), do: {:ok, message}

@impl true
def describe(), do: {:ok, %{}}
end

+ 3
- 0
lib/pleroma/web/activity_pub/mrf/drop_policy.ex 파일 보기

@@ -12,4 +12,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.DropPolicy do
Logger.info("REJECTING #{inspect(object)}")
{:reject, object}
end

@impl true
def describe(), do: {:ok, %{}}
end

+ 2
- 0
lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex 파일 보기

@@ -39,4 +39,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.EnsureRePrepended do
end

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

def describe(), do: {:ok, %{}}
end

+ 3
- 0
lib/pleroma/web/activity_pub/mrf/hellthread_policy.ex 파일 보기

@@ -90,4 +90,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.HellthreadPolicy do

@impl true
def filter(message), do: {:ok, message}

@impl true
def describe(), do: {:ok, %{mrf_hellthread: Pleroma.Config.get([:mrf_hellthread])}}
end

+ 32
- 0
lib/pleroma/web/activity_pub/mrf/keyword_policy.ex 파일 보기

@@ -96,4 +96,36 @@ defmodule Pleroma.Web.ActivityPub.MRF.KeywordPolicy do

@impl true
def filter(message), do: {:ok, message}

@impl true
def describe() do
# This horror is needed to convert regex sigils to strings
mrf_keyword =
Pleroma.Config.get(:mrf_keyword, [])
|> Enum.map(fn {key, value} ->
{key,
Enum.map(value, fn
{pattern, replacement} ->
%{
"pattern" =>
if not is_binary(pattern) do
inspect(pattern)
else
pattern
end,
"replacement" => replacement
}

pattern ->
if not is_binary(pattern) do
inspect(pattern)
else
pattern
end
end)}
end)
|> Enum.into(%{})

{:ok, %{mrf_keyword: mrf_keyword}}
end
end

+ 3
- 0
lib/pleroma/web/activity_pub/mrf/mediaproxy_warming_policy.ex 파일 보기

@@ -53,4 +53,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.MediaProxyWarmingPolicy do

@impl true
def filter(message), do: {:ok, message}

@impl true
def describe(), do: {:ok, %{}}
end

+ 3
- 0
lib/pleroma/web/activity_pub/mrf/mention_policy.ex 파일 보기

@@ -21,4 +21,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.MentionPolicy do

@impl true
def filter(message), do: {:ok, message}

@impl true
def describe(), do: {:ok, %{}}
end

+ 3
- 0
lib/pleroma/web/activity_pub/mrf/no_placeholder_text_policy.ex 파일 보기

@@ -19,4 +19,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.NoPlaceholderTextPolicy do

@impl true
def filter(object), do: {:ok, object}

@impl true
def describe(), do: {:ok, %{}}
end

+ 3
- 0
lib/pleroma/web/activity_pub/mrf/noop_policy.ex 파일 보기

@@ -10,4 +10,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.NoOpPolicy do
def filter(object) do
{:ok, object}
end

@impl true
def describe(), do: {:ok, %{}}
end

+ 2
- 0
lib/pleroma/web/activity_pub/mrf/normalize_markup.ex 파일 보기

@@ -21,4 +21,6 @@ defmodule Pleroma.Web.ActivityPub.MRF.NormalizeMarkup do
end

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

def describe(), do: {:ok, %{}}
end

+ 3
- 0
lib/pleroma/web/activity_pub/mrf/reject_non_public.ex 파일 보기

@@ -44,4 +44,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.RejectNonPublic do

@impl true
def filter(object), do: {:ok, object}

@impl true
def describe(), do: {:ok, %{mrf_rejectnonpublic: Pleroma.Config.get([:mrf_rejectnonpublic])}}
end

+ 12
- 0
lib/pleroma/web/activity_pub/mrf/simple_policy.ex 파일 보기

@@ -177,4 +177,16 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do
end

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

@impl true
def describe() do
exclusions = Pleroma.Config.get([:instance, :mrf_transparency_exclusions])

mrf_simple =
Pleroma.Config.get(:mrf_simple)
|> Enum.map(fn {k, v} -> {k, Enum.reject(v, fn v -> v in exclusions end)} end)
|> Enum.into(%{})

{:ok, %{mrf_simple: mrf_simple}}
end
end

+ 3
- 0
lib/pleroma/web/activity_pub/mrf/subchain_policy.ex 파일 보기

@@ -37,4 +37,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SubchainPolicy do

@impl true
def filter(message), do: {:ok, message}

@impl true
def describe(), do: {:ok, %{}}
end

+ 3
- 0
lib/pleroma/web/activity_pub/mrf/tag_policy.ex 파일 보기

@@ -165,4 +165,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.TagPolicy do

@impl true
def filter(message), do: {:ok, message}

@impl true
def describe(), do: {:ok, %{}}
end

+ 9
- 0
lib/pleroma/web/activity_pub/mrf/user_allowlist_policy.ex 파일 보기

@@ -32,4 +32,13 @@ defmodule Pleroma.Web.ActivityPub.MRF.UserAllowListPolicy do
end

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

@impl true
def describe() do
mrf_user_allowlist =
Config.get([:mrf_user_allowlist], [])
|> Enum.into(%{}, fn {k, v} -> {k, length(v)} end)

{:ok, %{mrf_user_allowlist: mrf_user_allowlist}}
end
end

불러오는 중...
취소
저장