ソースを参照

mrf simple: add accept lists

accept lists supplement reject lists by requiring that any message accepted by contained
by the accept list.

in other words, this functionality can be used to implement instances similar to
awoo.space.
tags/v0.9.9
William Pitcock 6年前
コミット
60d6038be5
3個のファイルの変更16行の追加3行の削除
  1. +3
    -1
      CONFIGURATION.md
  2. +2
    -1
      config/config.exs
  3. +11
    -1
      lib/pleroma/web/activity_pub/mrf/simple_policy.ex

+ 3
- 1
CONFIGURATION.md ファイルの表示

@@ -49,7 +49,8 @@ Restricts the visibility of posts from certain instances.
media_removal: [],
media_nsfw: [],
federated_timeline_removal: [],
reject: []
reject: [],
accept: []

* `media_removal`: posts from these instances will have attachments
removed
@@ -58,6 +59,7 @@ Restricts the visibility of posts from certain instances.
* `federated_timeline_removal`: posts from these instances will be
marked as unlisted
* `reject`: posts from these instances will be dropped
* `accept`: if not empty, only posts from these instances will be accepted

### RejectNonPublic



+ 2
- 1
config/config.exs ファイルの表示

@@ -67,7 +67,8 @@ config :pleroma, :mrf_simple,
media_removal: [],
media_nsfw: [],
federated_timeline_removal: [],
reject: []
reject: [],
accept: []

config :pleroma, :media_proxy,
enabled: false,


+ 11
- 1
lib/pleroma/web/activity_pub/mrf/simple_policy.ex ファイルの表示

@@ -4,6 +4,15 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do

@mrf_policy Application.get_env(:pleroma, :mrf_simple)

@accept Keyword.get(@mrf_policy, :accept)
defp check_accept(actor_info, object) do
if length(@accept) > 0 and not actor_info.host in @accept do
{:reject, nil}
else
{:ok, object}
end
end

@reject Keyword.get(@mrf_policy, :reject)
defp check_reject(actor_info, object) do
if actor_info.host in @reject do
@@ -74,7 +83,8 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do
def filter(object) do
actor_info = URI.parse(object["actor"])

with {:ok, object} <- check_reject(actor_info, object),
with {:ok, object} <- check_accept(actor_info, object),
{:ok, object} <- check_reject(actor_info, object),
{:ok, object} <- check_media_removal(actor_info, object),
{:ok, object} <- check_media_nsfw(actor_info, object),
{:ok, object} <- check_ftl_removal(actor_info, object) do


読み込み中…
キャンセル
保存