config editing through database
This commit is contained in:
parent
e118d639a0
commit
2753285b77
20 changed files with 1133 additions and 472 deletions
|
|
@ -669,7 +669,7 @@ Note: Available `:permission_group` is currently moderator and admin. 404 is ret
|
|||
|
||||
### Run mix task pleroma.config migrate_to_db
|
||||
|
||||
Copy settings on key `:pleroma` to DB.
|
||||
Copies `pleroma` environment settings to the database.
|
||||
|
||||
- Params: none
|
||||
- Response:
|
||||
|
|
@ -682,7 +682,7 @@ Copy settings on key `:pleroma` to DB.
|
|||
|
||||
### Run mix task pleroma.config migrate_from_db
|
||||
|
||||
Copy all settings from DB to `config/prod.exported_from_db.secret.exs` with deletion from DB.
|
||||
Copies all settings from database to `config/{env}.exported_from_db.secret.exs` with deletion from the table. Where `{env}` is the environment in which `pleroma` is running.
|
||||
|
||||
- Params: none
|
||||
- Response:
|
||||
|
|
@ -693,9 +693,9 @@ Copy all settings from DB to `config/prod.exported_from_db.secret.exs` with dele
|
|||
|
||||
## `GET /api/pleroma/admin/config`
|
||||
|
||||
### List config settings
|
||||
### Get saved config settings
|
||||
|
||||
List config settings only works with `:pleroma => :instance => :dynamic_configuration` setting to `true`.
|
||||
**Only works when `:dynamic_configuration` is `true`.**
|
||||
|
||||
- Params: none
|
||||
- Response:
|
||||
|
|
@ -704,9 +704,9 @@ List config settings only works with `:pleroma => :instance => :dynamic_configur
|
|||
{
|
||||
configs: [
|
||||
{
|
||||
"group": string,
|
||||
"key": string or string with leading `:` for atoms,
|
||||
"value": string or {} or [] or {"tuple": []}
|
||||
"group": ":pleroma",
|
||||
"key": "Pleroma.Upload",
|
||||
"value": []
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -716,44 +716,61 @@ List config settings only works with `:pleroma => :instance => :dynamic_configur
|
|||
|
||||
### Update config settings
|
||||
|
||||
Updating config settings only works with `:pleroma => :instance => :dynamic_configuration` setting to `true`.
|
||||
Module name can be passed as string, which starts with `Pleroma`, e.g. `"Pleroma.Upload"`.
|
||||
Atom keys and values can be passed with `:` in the beginning, e.g. `":upload"`.
|
||||
Tuples can be passed as `{"tuple": ["first_val", Pleroma.Module, []]}`.
|
||||
`{"tuple": ["some_string", "Pleroma.Some.Module", []]}` will be converted to `{"some_string", Pleroma.Some.Module, []}`.
|
||||
Keywords can be passed as lists with 2 child tuples, e.g.
|
||||
`[{"tuple": ["first_val", Pleroma.Module]}, {"tuple": ["second_val", true]}]`.
|
||||
**Only works when `:dynamic_configuration` is `true`.**
|
||||
|
||||
If value contains list of settings `[subkey: val1, subkey2: val2, subkey3: val3]`, it's possible to remove only subkeys instead of all settings passing `subkeys` parameter. E.g.:
|
||||
{"group": "pleroma", "key": "some_key", "delete": "true", "subkeys": [":subkey", ":subkey3"]}.
|
||||
Some modifications are necessary to save the config settings correctly:
|
||||
|
||||
Compile time settings (need instance reboot):
|
||||
- all settings by this keys:
|
||||
- strings which start with `Pleroma.`, `Phoenix.`, `Tesla.` or strings like `Oban`, `Ueberauth` will be converted to modules;
|
||||
```
|
||||
"Pleroma.Upload" -> Pleroma.Upload
|
||||
"Oban" -> Oban
|
||||
```
|
||||
- strings starting with `:` will be converted to atoms;
|
||||
```
|
||||
":pleroma" -> :pleroma
|
||||
```
|
||||
- objects with `tuple` key and array value will be converted to atoms;
|
||||
```
|
||||
{"tuple": ["string", "Pleroma.Upload", []]} -> {"string", Pleroma.Upload, []}
|
||||
```
|
||||
- arrays with *tuple objects* and 2 childs in array will be converted to keywords;
|
||||
```
|
||||
[{"tuple": [":key1", "value"]}, {"tuple": [":key2", "value"]}] -> [key1: "value", key2: "value"]
|
||||
```
|
||||
|
||||
Most of the settings will be applied in `runtime`, this means that you don't need to restart the instance. But some settings are applied in `compile time` and require a reboot of the instance, such as:
|
||||
- all settings inside these keys:
|
||||
- `:hackney_pools`
|
||||
- `:chat`
|
||||
- `Pleroma.Web.Endpoint`
|
||||
- `Pleroma.Repo`
|
||||
- part settings:
|
||||
- `Pleroma.Captcha` -> `:seconds_valid`
|
||||
- `Pleroma.Upload` -> `:proxy_remote`
|
||||
- `:instance` -> `:upload_limit`
|
||||
- partially settings inside these keys:
|
||||
- `:seconds_valid` in `Pleroma.Captcha`
|
||||
- `:proxy_remote` in `Pleroma.Upload`
|
||||
- `:upload_limit` in `:instance`
|
||||
|
||||
- Params:
|
||||
- `configs` => [
|
||||
- `group` (string)
|
||||
- `key` (string or string with leading `:` for atoms)
|
||||
- `value` (string, [], {} or {"tuple": []})
|
||||
- `delete` = true (optional, if parameter must be deleted)
|
||||
- `subkeys` [(string with leading `:` for atoms)] (optional, works only if `delete=true` parameter is passed, otherwise will be ignored)
|
||||
]
|
||||
- `configs` - array of config objects
|
||||
- config object params:
|
||||
- `group` - string (**required**)
|
||||
- `key` - string (**required**)
|
||||
- `value` - string, [], {} or {"tuple": []} (**required**)
|
||||
- `delete` - true (*optional*, if setting must be deleted)
|
||||
- `subkeys` - array of strings (*optional*, only works when `delete=true` parameter is passed, otherwise will be ignored)
|
||||
|
||||
- Request (example):
|
||||
*When a value have several nested settings, you can delete only some nested settings by passing a parameter `subkeys`, without deleting all settings by key.*
|
||||
```
|
||||
[subkey: val1, subkey2: val2, subkey3: val3] \\ initial value
|
||||
{"group": ":pleroma", "key": "some_key", "delete": true, "subkeys": [":subkey", ":subkey3"]} \\ passing json for deletion
|
||||
[subkey2: val2] \\ value after deletion
|
||||
```
|
||||
|
||||
- Request:
|
||||
|
||||
```json
|
||||
{
|
||||
configs: [
|
||||
{
|
||||
"group": "pleroma",
|
||||
"group": ":pleroma",
|
||||
"key": "Pleroma.Upload",
|
||||
"value": [
|
||||
{"tuple": [":uploader", "Pleroma.Uploaders.Local"]},
|
||||
|
|
@ -784,14 +801,47 @@ Compile time settings (need instance reboot):
|
|||
{
|
||||
configs: [
|
||||
{
|
||||
"group": string,
|
||||
"key": string or string with leading `:` for atoms,
|
||||
"value": string or {} or [] or {"tuple": []}
|
||||
"group": ":pleroma",
|
||||
"key": "Pleroma.Upload",
|
||||
"value": [...]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## ` GET /api/pleroma/admin/config/descriptions`
|
||||
|
||||
### Get JSON with config descriptions.
|
||||
Loads json generated from `config/descriptions.exs`.
|
||||
|
||||
- Params: none
|
||||
- Response:
|
||||
|
||||
```json
|
||||
[{
|
||||
"group": ":pleroma", // string
|
||||
"key": "ModuleName", // string
|
||||
"type": "group", // string or list with possible values,
|
||||
"description": "Upload general settings", // string
|
||||
"children": [
|
||||
{
|
||||
"key": ":uploader", // string or module name `Pleroma.Upload`
|
||||
"type": "module",
|
||||
"description": "Module which will be used for uploads",
|
||||
"suggestions": ["module1", "module2"]
|
||||
},
|
||||
{
|
||||
"key": ":filters",
|
||||
"type": ["list", "module"],
|
||||
"description": "List of filter modules for uploads",
|
||||
"suggestions": [
|
||||
"module1", "module2", "module3"
|
||||
]
|
||||
}
|
||||
]
|
||||
}]
|
||||
```
|
||||
|
||||
## `GET /api/pleroma/admin/moderation_log`
|
||||
|
||||
### Get moderation log
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue