summaryrefslogtreecommitdiff
path: root/lib/pleroma
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma')
-rw-r--r--lib/pleroma/web/activity_pub/mrf.ex11
-rw-r--r--lib/pleroma/web/activity_pub/mrf/simple_policy.ex3
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/pleroma/web/activity_pub/mrf.ex b/lib/pleroma/web/activity_pub/mrf.ex
index 89037ade7..a880b023f 100644
--- a/lib/pleroma/web/activity_pub/mrf.ex
+++ b/lib/pleroma/web/activity_pub/mrf.ex
@@ -4,6 +4,7 @@
defmodule Pleroma.Web.ActivityPub.MRF do
require Logger
+ import Pleroma.Web.Utils.Guards, only: [not_empty_string: 1]
@behaviour Pleroma.Web.ActivityPub.MRF.PipelineFiltering
@@ -110,6 +111,16 @@ defmodule Pleroma.Web.ActivityPub.MRF do
end)
end
+ @spec normalize_instance_list(list()) :: [{String.t(), String.t()}]
+ def normalize_instance_list(list) do
+ Enum.map(list, fn
+ {host, reason} when not_empty_string(host) and not_empty_string(reason) -> {host, reason}
+ {host, _reason} when not_empty_string(host) -> {host, ""}
+ host when not_empty_string(host) -> {host, ""}
+ value -> raise "Invalid MRF config: #{inspect(value)}"
+ end)
+ end
+
def describe(policies) do
{:ok, policy_configs} =
policies
diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex
index c631cc85f..14da5f52b 100644
--- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex
+++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex
@@ -263,13 +263,14 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do
mrf_simple_excluded =
Config.get(:mrf_simple)
|> Enum.map(fn {rule, instances} ->
+ instances = MRF.normalize_instance_list(instances)
{rule, Enum.reject(instances, fn {host, _} -> host in exclusions end)}
end)
mrf_simple =
mrf_simple_excluded
|> Enum.map(fn {rule, instances} ->
- {rule, Enum.map(instances, fn {host, _} -> host end)}
+ {rule, MRF.instance_list_from_tuples(instances)}
end)
|> Map.new()