Make quarentine work with list of tuples instead of strings

This commit is contained in:
Ilja 2020-10-02 14:51:39 +02:00
parent cd50d9b7e0
commit 79ed38836c
5 changed files with 18 additions and 5 deletions

View File

@ -51,6 +51,11 @@ defmodule Pleroma.Web.ActivityPub.MRF do
Enum.any?(domains, fn domain -> Regex.match?(domain, host) end)
end
@spec instance_list_from_tuples([{String.t(), String.t()}]) :: [String.t()]
def instance_list_from_tuples(list) do
Enum.map(list, fn {instance, _} -> instance end)
end
@callback describe() :: {:ok | :error, Map.t()}
def describe(policies) do

View File

@ -183,9 +183,7 @@ defmodule Pleroma.Web.ActivityPub.MRF.SimplePolicy do
defp instance_list(config_key) do
Config.get([:mrf_simple, config_key])
|> Enum.map(fn
{instance, _} -> instance
end)
|> MRF.instance_list_from_tuples()
end
@impl true

View File

@ -126,6 +126,7 @@ defmodule Pleroma.Web.ActivityPub.Publisher do
quarantined_instances =
Config.get([:instance, :quarantined_instances], [])
|> Pleroma.Web.ActivityPub.MRF.instance_list_from_tuples()
|> Pleroma.Web.ActivityPub.MRF.subdomains_regex()
!Pleroma.Web.ActivityPub.MRF.subdomain_match?(quarantined_instances, host)

View File

@ -59,6 +59,15 @@ defmodule Pleroma.Web.ActivityPub.MRFTest do
end
end
describe "instance_list_from_tuples/1" do
test "returns a list of instances from a list of {instance, reason} tuples" do
list = [{"some.tld", "a reason"}, {"other.tld", "another reason"}]
expected = ["some.tld", "other.tld"]
assert MRF.instance_list_from_tuples(list) == expected
end
end
describe "describe/0" do
test "it works as expected with noop policy" do
clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.NoOpPolicy])

View File

@ -271,7 +271,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do
Pleroma.Web.Federator.Publisher,
[:passthrough],
[] do
Config.put([:instance, :quarantined_instances], ["domain.com"])
Config.put([:instance, :quarantined_instances], [{"domain.com", "some reason"}])
follower =
insert(:user, %{
@ -308,7 +308,7 @@ defmodule Pleroma.Web.ActivityPub.PublisherTest do
Pleroma.Web.Federator.Publisher,
[:passthrough],
[] do
Config.put([:instance, :quarantined_instances], ["somedomain.com"])
Config.put([:instance, :quarantined_instances], [{"somedomain.com", "some reason"}])
follower =
insert(:user, %{