ConfigDB: Support blacklisting whole config groups
This commit is contained in:
parent
ebd5596ba7
commit
2d307c1487
2 changed files with 14 additions and 4 deletions
|
|
@ -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_keys, {group, key})
|
Enum.member?(blacklisted_groups, {group}) or
|
||||||
|
Enum.member?(blacklisted_keys, {group, key})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -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"])
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue