Make quarentine work with list of tuples instead of strings

This commit is contained in:
Ilja 2020-10-02 14:51:39 +02:00 committed by Haelwenn (lanodan) Monnier
parent dd947d9bc8
commit 27fe7b0274
No known key found for this signature in database
GPG Key ID: D5B7A8E43C997DEE
5 changed files with 18 additions and 5 deletions

View File

@ -100,6 +100,11 @@ def subdomain_match?(domains, host) do
Enum.any?(domains, fn domain -> Regex.match?(domain, host) end) Enum.any?(domains, fn domain -> Regex.match?(domain, host) end)
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
def describe(policies) do def describe(policies) do
{:ok, policy_configs} = {:ok, policy_configs} =
policies policies

View File

@ -187,9 +187,7 @@ defp check_object(object), do: {:ok, object}
defp instance_list(config_key) do defp instance_list(config_key) do
Config.get([:mrf_simple, config_key]) Config.get([:mrf_simple, config_key])
|> Enum.map(fn |> MRF.instance_list_from_tuples()
{instance, _} -> instance
end)
end end
@impl true @impl true

View File

@ -112,6 +112,7 @@ defp should_federate?(inbox, public) do
quarantined_instances = quarantined_instances =
Config.get([:instance, :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.subdomains_regex()
!Pleroma.Web.ActivityPub.MRF.subdomain_match?(quarantined_instances, host) !Pleroma.Web.ActivityPub.MRF.subdomain_match?(quarantined_instances, host)

View File

@ -63,6 +63,15 @@ test "matches are case-insensitive" do
end end
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 describe "describe/0" do
test "it works as expected with noop policy" do test "it works as expected with noop policy" do
clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.NoOpPolicy]) clear_config([:mrf, :policies], [Pleroma.Web.ActivityPub.MRF.NoOpPolicy])

View File

@ -271,7 +271,7 @@ test "publish to url with with different ports" do
Pleroma.Web.Federator.Publisher, Pleroma.Web.Federator.Publisher,
[:passthrough], [:passthrough],
[] do [] do
Config.put([:instance, :quarantined_instances], ["domain.com"]) Config.put([:instance, :quarantined_instances], [{"domain.com", "some reason"}])
follower = follower =
insert(:user, %{ insert(:user, %{
@ -308,7 +308,7 @@ test "publish to url with with different ports" do
Pleroma.Web.Federator.Publisher, Pleroma.Web.Federator.Publisher,
[:passthrough], [:passthrough],
[] do [] do
Config.put([:instance, :quarantined_instances], ["somedomain.com"]) Config.put([:instance, :quarantined_instances], [{"somedomain.com", "some reason"}])
follower = follower =
insert(:user, %{ insert(:user, %{