aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlja <domainepublic@spectraltheorem.be>2020-10-02 20:35:51 +0200
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>2021-08-06 07:59:52 +0200
commit3c5a497b19237c5e4f0f5d7aeb3fa1e43f13d932 (patch)
treea2ca63722891636e2cd3ac79983207fb1560186c
parentdfeb3862da2ceaf63db300be1a916f5139250bc2 (diff)
downloadpleroma-3c5a497b19237c5e4f0f5d7aeb3fa1e43f13d932.tar.gz
Deprecate transparency_exclusions
* Give deprecation message * Rewrite configs
-rw-r--r--lib/pleroma/config/deprecation_warnings.ex39
-rw-r--r--test/pleroma/config/deprecation_warnings_test.exs50
2 files changed, 89 insertions, 0 deletions
diff --git a/lib/pleroma/config/deprecation_warnings.ex b/lib/pleroma/config/deprecation_warnings.ex
index 37f783fec..cc22b5d47 100644
--- a/lib/pleroma/config/deprecation_warnings.ex
+++ b/lib/pleroma/config/deprecation_warnings.ex
@@ -118,6 +118,44 @@ defmodule Pleroma.Config.DeprecationWarnings do
end
end
+ def check_transparency_exclusions_tuples do
+ has_strings =
+ Config.get([:mrf, :transparency_exclusions]) |> Enum.any?(fn e -> is_binary(e) end)
+
+ if has_strings do
+ Logger.warn("""
+ !!!DEPRECATION WARNING!!!
+ Your config is using strings in the transparency_exclusions configuration instead of tuples. They should work for now, but you are advised to change to the new configuration to prevent possible issues later:
+
+ ```
+ config :pleroma, :mrf,
+ transparency_exclusions: ["instance.tld"]
+ ```
+
+ Is now
+
+
+ ```
+ config :pleroma, :mrf,
+ transparency_exclusions: [{"instance.tld", "Reason to exlude transparency"}]
+ ```
+ """)
+
+ new_config =
+ Config.get([:mrf, :transparency_exclusions])
+ |> Enum.map(fn
+ {instance, reason} -> {instance, reason}
+ instance -> {instance, ""}
+ end)
+
+ Config.put([:mrf, :transparency_exclusions], new_config)
+
+ :error
+ else
+ :ok
+ end
+ end
+
def check_hellthread_threshold do
if Config.get([:mrf_hellthread, :threshold]) do
Logger.warn("""
@@ -142,6 +180,7 @@ defmodule Pleroma.Config.DeprecationWarnings do
:ok <- check_uploders_s3_public_endpoint(),
:ok <- check_old_chat_shoutbox(),
:ok <- check_quarantined_instances_tuples(),
+ :ok <- check_transparency_exclusions_tuples(),
:ok <- check_simple_policy_tuples() do
:ok
else
diff --git a/test/pleroma/config/deprecation_warnings_test.exs b/test/pleroma/config/deprecation_warnings_test.exs
index 61c835fc9..1037c4d35 100644
--- a/test/pleroma/config/deprecation_warnings_test.exs
+++ b/test/pleroma/config/deprecation_warnings_test.exs
@@ -137,6 +137,56 @@ defmodule Pleroma.Config.DeprecationWarningsTest do
end
end
+ describe "transparency_exclusions tuples" do
+ test "gives warning when there are still strings" do
+ clear_config([:mrf, :transparency_exclusions], [
+ {"domain.com", "some reason"},
+ "somedomain.tld"
+ ])
+
+ assert capture_log(fn -> DeprecationWarnings.check_transparency_exclusions_tuples() end) =~
+ """
+ !!!DEPRECATION WARNING!!!
+ Your config is using strings in the transparency_exclusions configuration instead of tuples. They should work for now, but you are advised to change to the new configuration to prevent possible issues later:
+
+ ```
+ config :pleroma, :mrf,
+ transparency_exclusions: ["instance.tld"]
+ ```
+
+ Is now
+
+
+ ```
+ config :pleroma, :mrf,
+ transparency_exclusions: [{"instance.tld", "Reason to exlude transparency"}]
+ ```
+ """
+ end
+
+ test "transforms config to tuples" do
+ clear_config([:mrf, :transparency_exclusions], [
+ {"domain.com", "some reason"},
+ "some.tld"
+ ])
+
+ expected_config = [{"domain.com", "some reason"}, {"some.tld", ""}]
+
+ capture_log(fn -> DeprecationWarnings.check_transparency_exclusions_tuples() end)
+
+ assert Config.get([:mrf, :transparency_exclusions]) == expected_config
+ end
+
+ test "doesn't give a warning with correct config" do
+ clear_config([:mrf, :transparency_exclusions], [
+ {"domain.com", "some reason"},
+ {"some.tld", ""}
+ ])
+
+ assert capture_log(fn -> DeprecationWarnings.check_transparency_exclusions_tuples() end) == ""
+ end
+ end
+
test "check_old_mrf_config/0" do
clear_config([:instance, :rewrite_policy], [])
clear_config([:instance, :mrf_transparency], true)