diff options
author | Alex Gleason <alex@alexgleason.me> | 2022-01-22 15:53:08 -0600 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2022-01-22 15:53:08 -0600 |
commit | acfded5ae8b5f9180aeebe9c942fb4a620f13a13 (patch) | |
tree | 8bf9f30072813dce05940482dec0648b421ee521 /lib | |
parent | e72fd4ceb68294eb3cfb3b80bd78600143792b36 (diff) | |
download | pleroma-mrf-tuples-fix.tar.gz |
MRF reasons: normalize config for backwards compatibilitymrf-tuples-fix
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/web/activity_pub/mrf.ex | 11 | ||||
-rw-r--r-- | lib/pleroma/web/activity_pub/mrf/simple_policy.ex | 3 |
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() |