Browse Source

MRF: add vocabulary policy module

tags/v1.1.4
Ariadne Conill 4 years ago
parent
commit
3fdbeb7087
2 changed files with 38 additions and 0 deletions
  1. +4
    -0
      config/config.exs
  2. +34
    -0
      lib/pleroma/web/activity_pub/mrf/vocabulary_policy.ex

+ 4
- 0
config/config.exs View File

@@ -336,6 +336,10 @@ config :pleroma, :mrf_keyword,

config :pleroma, :mrf_subchain, match_actor: %{}

config :pleroma, :mrf_vocabulary,
accept: [],
reject: []

config :pleroma, :rich_media,
enabled: true,
ignore_hosts: [],


+ 34
- 0
lib/pleroma/web/activity_pub/mrf/vocabulary_policy.ex View File

@@ -0,0 +1,34 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only

defmodule Pleroma.Web.ActivityPub.MRF.VocabularyPolicy do
@moduledoc "Filter messages which belong to certain activity vocabularies"

@behaviour Pleroma.Web.ActivityPub.MRF

def filter(%{"type" => "Undo", "object" => child_message} = message) do
with {:ok, _} <- filter(child_message) do
{:ok, message}
else
{:reject, nil} ->
{:reject, nil}
end
end

def filter(%{"type" => message_type} = message) do
with accepted_vocabulary <- Pleroma.Config.get([:mrf_vocabulary, :accept]),
rejected_vocabulary <- Pleroma.Config.get([:mrf_vocabulary, :reject]),
true <-
length(accepted_vocabulary) == 0 || Enum.member?(accepted_vocabulary, message_type),
false <-
length(rejected_vocabulary) > 0 && Enum.member?(rejected_vocabulary, message_type),
{:ok, _} <- filter(message["object"]) do
{:ok, message}
else
_ -> {:reject, nil}
end
end

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

Loading…
Cancel
Save