Add database configuration whitelist

This commit is contained in:
Stephanie Wilde-Hobbs 2020-05-12 17:12:27 +01:00
commit 620247a015
No known key found for this signature in database
GPG key ID: CEF2BBFE18BD0E67
3 changed files with 47 additions and 1 deletions

View file

@ -949,7 +949,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
def config_update(conn, %{"configs" => configs}) do
with :ok <- configurable_from_database(conn) do
{_errors, results} =
Enum.map(configs, fn
Enum.filter(configs, &whitelisted_config?/1)
|> Enum.map(fn
%{"group" => group, "key" => key, "delete" => true} = params ->
ConfigDB.delete(%{group: group, key: key, subkeys: params["subkeys"]})
@ -1011,6 +1012,16 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
end
end
defp whitelisted_config?(%{"group" => group, "key" => key}) do
if whitelisted_configs = Config.get(:database_config_whitelist) do
Enum.any?(whitelisted_configs, fn {whitelisted_group, whitelisted_key} ->
group == inspect(whitelisted_group) && key == inspect(whitelisted_key)
end)
else
true
end
end
def reload_emoji(conn, _params) do
Pleroma.Emoji.reload()