diff --git a/lib/mix/tasks/pleroma/config.ex b/lib/mix/tasks/pleroma/config.ex index a389252ac..d160ce533 100644 --- a/lib/mix/tasks/pleroma/config.ex +++ b/lib/mix/tasks/pleroma/config.ex @@ -307,6 +307,13 @@ defmodule Mix.Tasks.Pleroma.Config do if blacklisted_configs in [nil, false] do shell_error("No unwanted settings in ConfigDB. No changes made.") else + blacklisted_groups = + blacklisted_configs + |> Enum.filter(fn + {_group} -> true + _ -> false + end) + blacklisted_keys = blacklisted_configs |> Enum.filter(fn @@ -317,7 +324,7 @@ defmodule Mix.Tasks.Pleroma.Config do filtered = from(c in ConfigDB) |> Repo.all() - |> Enum.filter(&blacklisted?(&1, blacklisted_keys)) + |> Enum.filter(&blacklisted?(&1, blacklisted_groups, blacklisted_keys)) if not Enum.empty?(filtered) do shell_info("The following settings will be removed from ConfigDB:\n") @@ -541,7 +548,8 @@ defmodule Mix.Tasks.Pleroma.Config do not Enum.member?(whitelisted_keys, {group, key}) end - defp blacklisted?(%{group: group, key: key}, blacklisted_keys) do - Enum.member?(blacklisted_keys, {group, key}) + defp blacklisted?(%{group: group, key: key}, blacklisted_groups, blacklisted_keys) do + Enum.member?(blacklisted_groups, {group}) or + Enum.member?(blacklisted_keys, {group, key}) end end diff --git a/test/mix/tasks/pleroma/config_test.exs b/test/mix/tasks/pleroma/config_test.exs index 3ae6e7f16..b35e0aed8 100644 --- a/test/mix/tasks/pleroma/config_test.exs +++ b/test/mix/tasks/pleroma/config_test.exs @@ -373,11 +373,13 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do test "filters blacklisted settings" do clear_config(:database_config_whitelist, [{:pleroma}]) clear_config(:database_config_blacklist, [ - {:pleroma, :logger} + {:pleroma, :logger}, + {:blacklisted_group} ]) insert_config_record(:pleroma, :logger, backends: :console) insert_config_record(:web_push_encryption, :vapid_details, a: 1) + insert_config_record(:blacklisted_group, :anything, a: 1) MixTask.run(["filter_blacklisted", "--force"])