defp reboot_time_keys,
do: [
- {:pleroma, :hackney_pools},
- {:pleroma, :shout},
{:pleroma, Oban},
{:pleroma, :rate_limit},
{:pleroma, :markup},
- {:pleroma, :streamer},
- {:pleroma, :pools},
- {:pleroma, :connections_pool}
+ {:pleroma, :streamer}
]
defp reboot_time_subkeys,
{:pleroma, Pleroma.Captcha, [:seconds_valid]},
{:pleroma, Pleroma.Upload, [:proxy_remote]},
{:pleroma, :instance, [:upload_limit]},
- {:pleroma, :gopher, [:enabled]}
+ {:pleroma, :http, [:pool_size]},
+ {:pleroma, :http, [:proxy_url]}
]
def start_link(restart_pleroma? \\ true) do
def load_and_update_env(deleted_settings \\ [], restart_pleroma? \\ true) do
with {_, true} <- {:configurable, Config.get(:configurable_from_database)} do
# We need to restart applications for loaded settings take effect
-
{logger, other} =
(Repo.all(ConfigDB) ++ deleted_settings)
+ |> Enum.reject(&invalid_key_or_group/1)
|> Enum.map(&merge_with_default/1)
- |> Enum.split_with(fn {group, _, _, _} -> group in [:logger, :quack] end)
+ |> Enum.split_with(fn {group, _, _, _} -> group == :logger end)
logger
|> Enum.sort()
started_applications = Application.started_applications()
- # TODO: some problem with prometheus after restart!
- reject = [nil, :prometheus, :postgrex]
+ reject = [nil, :postgrex]
reject =
if restart_pleroma? do
end
end
+ defp invalid_key_or_group(%ConfigDB{key: :invalid_atom}), do: true
+ defp invalid_key_or_group(%ConfigDB{group: :invalid_atom}), do: true
+ defp invalid_key_or_group(_), do: false
+
defp merge_with_default(%{group: group, key: key, value: value} = setting) do
- default = Config.Holder.default_config(group, key)
+ default =
+ if group == :pleroma do
+ Config.get([key], Config.Holder.default_config(group, key))
+ else
+ Config.Holder.default_config(group, key)
+ end
merged =
cond do
{group, key, value, merged}
end
- # change logger configuration in runtime, without restart
- defp configure({:quack, key, _, merged}) do
- Logger.configure_backend(Quack.Logger, [{key, merged}])
- :ok = update_env(:quack, key, merged)
- end
-
defp configure({_, :backends, _, merged}) do
# removing current backends
Enum.each(Application.get_env(:logger, :backends), &Logger.remove_backend/1)