From 6f9ee416d5bc446a8c0ca62fd7e904951f1c2f9e Mon Sep 17 00:00:00 2001 From: Ilja Date: Fri, 18 Dec 2020 14:29:38 +0100 Subject: [PATCH] Add key- and valuePlaceholders for quarantined_instances and mrf_simple * I also added for keywordpolicy as well now. It was done in the admin-fe, but is better to be done here * I also added comments to explain why we did the _info keys (backwards compatibility) --- config/description.exs | 2 ++ .../web/activity_pub/mrf/keyword_policy.ex | 2 ++ .../web/activity_pub/mrf/simple_policy.ex | 24 +++++++++++++++++++ .../web/mastodon_api/views/instance_view.ex | 4 ++++ 4 files changed, 32 insertions(+) diff --git a/config/description.exs b/config/description.exs index e43713444..73faa5f59 100644 --- a/config/description.exs +++ b/config/description.exs @@ -759,6 +759,8 @@ %{ key: :quarantined_instances, type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "List of ActivityPub instances where private (DMs, followers-only) activities will not be sent and the reason for doing so", suggestions: [ diff --git a/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex b/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex index ded0fe7f2..cc57e11ca 100644 --- a/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/keyword_policy.ex @@ -159,6 +159,8 @@ def config_description do %{ key: :replace, type: {:list, :tuple}, + keyPlaceholder: "pattern", + valuePlaceholder: "replacement", description: """ **Pattern**: a string or [Regex](https://hexdocs.pm/elixir/Regex.html) in the format of `~r/PATTERN/`. diff --git a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex index 72ee0542b..d84c33864 100644 --- a/lib/pleroma/web/activity_pub/mrf/simple_policy.ex +++ b/lib/pleroma/web/activity_pub/mrf/simple_policy.ex @@ -253,6 +253,10 @@ def describe do end) |> Enum.into(%{}) + # This is for backwards compatibility. We originally didn't sent + # extra info like a reason why an instance was rejected/quarantined/etc. + # Because we didn't want to break backwards compatibility it was decided + # to add an extra "info" key. mrf_simple_info = mrf_simple_excluded |> Enum.map(fn {k, v} -> {k, Enum.reject(v, fn {_, reason} -> reason == "" end)} end) @@ -276,6 +280,8 @@ def config_description do %{ key: :media_removal, type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "List of instances to strip media attachments from and the reason for doing so", suggestions: [{"example.com", "Some reason"}, {"*.example.com", "Another reason"}] @@ -284,6 +290,8 @@ def config_description do key: :media_nsfw, label: "Media NSFW", type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "List of instances to tag all media as NSFW (sensitive) from and the reason for doing so", suggestions: [{"example.com", "Some reason"}, {"*.example.com", "Another reason"}] @@ -291,6 +299,8 @@ def config_description do %{ key: :federated_timeline_removal, type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "List of instances to remove from the Federated Timeline (aka The Whole Known Network) and the reason for doing so", suggestions: [{"example.com", "Some reason"}, {"*.example.com", "Another reason"}] @@ -298,6 +308,8 @@ def config_description do %{ key: :reject, type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "List of instances to reject activities (except deletes) from and the reason for doing so", suggestions: [{"example.com", "Some reason"}, {"*.example.com", "Another reason"}] @@ -305,6 +317,8 @@ def config_description do %{ key: :accept, type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "List of instances to only accept activities (except deletes) from and the reason for doing so", suggestions: [{"example.com", "Some reason"}, {"*.example.com", "Another reason"}] @@ -312,6 +326,8 @@ def config_description do %{ key: :followers_only, type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "Force posts from the given instances to be visible by followers only and the reason for doing so", suggestions: [{"example.com", "Some reason"}, {"*.example.com", "Another reason"}] @@ -319,24 +335,32 @@ def config_description do %{ key: :report_removal, type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "List of instances to reject reports from and the reason for doing so", suggestions: [{"example.com", "Some reason"}, {"*.example.com", "Another reason"}] }, %{ key: :avatar_removal, type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "List of instances to strip avatars from and the reason for doing so", suggestions: [{"example.com", "Some reason"}, {"*.example.com", "Another reason"}] }, %{ key: :banner_removal, type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "List of instances to strip banners from and the reason for doing so", suggestions: [{"example.com", "Some reason"}, {"*.example.com", "Another reason"}] }, %{ key: :reject_deletes, type: {:list, :tuple}, + keyPlaceholder: "instance", + valuePlaceholder: "reason", description: "List of instances to reject deletions from and the reason for doing so", suggestions: [{"example.com", "Some reason"}, {"*.example.com", "Another reason"}] } diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex index b4c0ac6fa..3b3985aa1 100644 --- a/lib/pleroma/web/mastodon_api/views/instance_view.ex +++ b/lib/pleroma/web/mastodon_api/views/instance_view.ex @@ -93,6 +93,10 @@ def federation do quarantined |> Enum.map(fn {instance, _reason} -> instance end) }) + # This is for backwards compatibility. We originally didn't sent + # extra info like a reason why an instance was rejected/quarantined/etc. + # Because we didn't want to break backwards compatibility it was decided + # to add an extra "info" key. |> Map.merge(%{ quarantined_instances_info: %{ "quarantined_instances" =>