ConfigDB: Support blacklisting whole config groups

This commit is contained in:
Phantasm 2026-07-18 16:05:14 +02:00
commit 2d307c1487
No known key found for this signature in database
GPG key ID: 2669E588BCC634C8
2 changed files with 14 additions and 4 deletions

View file

@ -307,6 +307,13 @@ defmodule Mix.Tasks.Pleroma.Config do
if blacklisted_configs in [nil, false] do if blacklisted_configs in [nil, false] do
shell_error("No unwanted settings in ConfigDB. No changes made.") shell_error("No unwanted settings in ConfigDB. No changes made.")
else else
blacklisted_groups =
blacklisted_configs
|> Enum.filter(fn
{_group} -> true
_ -> false
end)
blacklisted_keys = blacklisted_keys =
blacklisted_configs blacklisted_configs
|> Enum.filter(fn |> Enum.filter(fn
@ -317,7 +324,7 @@ defmodule Mix.Tasks.Pleroma.Config do
filtered = filtered =
from(c in ConfigDB) from(c in ConfigDB)
|> Repo.all() |> Repo.all()
|> Enum.filter(&blacklisted?(&1, blacklisted_keys)) |> Enum.filter(&blacklisted?(&1, blacklisted_groups, blacklisted_keys))
if not Enum.empty?(filtered) do if not Enum.empty?(filtered) do
shell_info("The following settings will be removed from ConfigDB:\n") 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}) not Enum.member?(whitelisted_keys, {group, key})
end end
defp blacklisted?(%{group: group, key: key}, blacklisted_keys) do defp blacklisted?(%{group: group, key: key}, blacklisted_groups, blacklisted_keys) do
Enum.member?(blacklisted_groups, {group}) or
Enum.member?(blacklisted_keys, {group, key}) Enum.member?(blacklisted_keys, {group, key})
end end
end end

View file

@ -373,11 +373,13 @@ defmodule Mix.Tasks.Pleroma.ConfigTest do
test "filters blacklisted settings" do test "filters blacklisted settings" do
clear_config(:database_config_whitelist, [{:pleroma}]) clear_config(:database_config_whitelist, [{:pleroma}])
clear_config(:database_config_blacklist, [ clear_config(:database_config_blacklist, [
{:pleroma, :logger} {:pleroma, :logger},
{:blacklisted_group}
]) ])
insert_config_record(:pleroma, :logger, backends: :console) insert_config_record(:pleroma, :logger, backends: :console)
insert_config_record(:web_push_encryption, :vapid_details, a: 1) insert_config_record(:web_push_encryption, :vapid_details, a: 1)
insert_config_record(:blacklisted_group, :anything, a: 1)
MixTask.run(["filter_blacklisted", "--force"]) MixTask.run(["filter_blacklisted", "--force"])