Elixir 1.19: Create ConfigDB blacklist and task for :pleroma, :logger

This option was never configurable with ConfigDB when it lived under
:logger, :backends; no need to be configurable now.
This commit is contained in:
Phantasm 2026-07-17 23:32:43 +02:00
commit ebd5596ba7
No known key found for this signature in database
GPG key ID: 2669E588BCC634C8
3 changed files with 89 additions and 0 deletions

View file

@ -289,6 +289,52 @@ defmodule Mix.Tasks.Pleroma.Config do
end
end
# Removes blacklisted configuration sections
def run(["filter_blacklisted" | rest]) do
{options, [], []} =
OptionParser.parse(
rest,
strict: [force: :boolean],
aliases: [f: :force]
)
force = Keyword.get(options, :force, false)
start_pleroma()
blacklisted_configs = Pleroma.Config.get(:database_config_blacklist)
if blacklisted_configs in [nil, false] do
shell_error("No unwanted settings in ConfigDB. No changes made.")
else
blacklisted_keys =
blacklisted_configs
|> Enum.filter(fn
{_group, _key} -> true
_ -> false
end)
filtered =
from(c in ConfigDB)
|> Repo.all()
|> Enum.filter(&blacklisted?(&1, blacklisted_keys))
if not Enum.empty?(filtered) do
shell_info("The following settings will be removed from ConfigDB:\n")
Enum.each(filtered, &dump(&1))
if force or shell_prompt("Are you sure you want to continue?", "n") in ~w(Yn Y y) do
filtered_ids = Enum.map(filtered, fn %{id: id} -> id end)
Repo.delete_all(from(c in ConfigDB, where: c.id in ^filtered_ids))
else
shell_error("No changes made.")
end
else
shell_error("No unwanted settings in ConfigDB. No changes made.")
end
end
end
@spec migrate_to_db(Path.t() | nil) :: any()
def migrate_to_db(file_path \\ nil) do
with :ok <- Pleroma.Config.DeprecationWarnings.warn() do
@ -494,4 +540,8 @@ defmodule Mix.Tasks.Pleroma.Config do
not Enum.member?(whitelisted_groups, group) and
not Enum.member?(whitelisted_keys, {group, key})
end
defp blacklisted?(%{group: group, key: key}, blacklisted_keys) do
Enum.member?(blacklisted_keys, {group, key})
end
end