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.
media_removal: [],
media_nsfw: [],
federated_timeline_removal: [],
media_removal: [],
media_nsfw: [],
federated_timeline_removal: [],
+ reject: [],
+ accept: []
* `media_removal`: posts from these instances will have attachments
removed
* `media_removal`: posts from these instances will have attachments
removed
* `federated_timeline_removal`: posts from these instances will be
marked as unlisted
* `reject`: posts from these instances will be dropped
* `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
media_removal: [],
media_nsfw: [],
federated_timeline_removal: [],
media_removal: [],
media_nsfw: [],
federated_timeline_removal: [],
+ reject: [],
+ accept: []
config :pleroma, :media_proxy,
enabled: false,
config :pleroma, :media_proxy,
enabled: false,
@mrf_policy Application.get_env(:pleroma, :mrf_simple)
@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
@reject Keyword.get(@mrf_policy, :reject)
defp check_reject(actor_info, object) do
if actor_info.host in @reject do
def filter(object) do
actor_info = URI.parse(object["actor"])
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
{: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