Synchronize frontend plugin configuration
This commit is contained in:
@@ -51,6 +51,19 @@ Set secure MariaDB passwords in `.env`. Then, set at least these values in
|
|||||||
"provider": "hcaptcha",
|
"provider": "hcaptcha",
|
||||||
"secret": "replace with your hCaptcha secret"
|
"secret": "replace with your hCaptcha secret"
|
||||||
},
|
},
|
||||||
|
"plugins": [
|
||||||
|
"announcement",
|
||||||
|
"application",
|
||||||
|
"banner",
|
||||||
|
"challenge",
|
||||||
|
"division",
|
||||||
|
"downloads",
|
||||||
|
"economy",
|
||||||
|
"event",
|
||||||
|
"poll",
|
||||||
|
"route",
|
||||||
|
"task"
|
||||||
|
],
|
||||||
"external_plugins": ["client-config"]
|
"external_plugins": ["client-config"]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -68,6 +81,16 @@ Create an hCaptcha site for the public frontend domain. Set its secret in the
|
|||||||
`captcha.secret` value. Set the related public site key as
|
`captcha.secret` value. Set the related public site key as
|
||||||
`VITE_HCAPTCHA_SITEKEY` in the frontend deployment.
|
`VITE_HCAPTCHA_SITEKEY` in the frontend deployment.
|
||||||
|
|
||||||
|
The upstream sample uses plural names for some built-in plugins, but the
|
||||||
|
backend expects the singular names shown above. This deployment configuration
|
||||||
|
enables all built-in plugins by default. Keep `client-config` separate in
|
||||||
|
`external_plugins`.
|
||||||
|
|
||||||
|
The deployment patch synchronizes the plugin list from `config/config.json` to
|
||||||
|
the stored frontend configuration when the backend starts. Other frontend
|
||||||
|
settings in MariaDB stay unchanged. Restart the backend after you enable or
|
||||||
|
disable a plugin.
|
||||||
|
|
||||||
## Start the deployment
|
## Start the deployment
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -1,18 +1,26 @@
|
|||||||
--- a/src/external_plugins/client-config.py
|
--- a/src/external_plugins/client-config.py
|
||||||
+++ b/src/external_plugins/client-config.py
|
+++ b/src/external_plugins/client-config.py
|
||||||
@@ -17,0 +18,6 @@
|
@@ -17,0 +18,7 @@
|
||||||
+def normalize_client_config(config):
|
+def normalize_client_config(config, plugins):
|
||||||
+ if not config["api_host"].startswith(("http://", "https://")):
|
+ if not config["api_host"].startswith(("http://", "https://")):
|
||||||
+ config["api_host"] = f"https://{config['api_host']}"
|
+ config["api_host"] = f"https://{config['api_host']}"
|
||||||
|
+ config["plugins"] = plugins
|
||||||
+ return config
|
+ return config
|
||||||
+
|
+
|
||||||
+
|
+
|
||||||
@@ -24 +30 @@
|
@@ -24 +31 @@
|
||||||
- return json.loads(config)
|
- return json.loads(config)
|
||||||
+ return normalize_client_config(json.loads(config))
|
+ return normalize_client_config(json.loads(config), app.config.plugins)
|
||||||
@@ -37 +43 @@
|
@@ -37 +44 @@
|
||||||
- config = json.loads(t[0][0])
|
- config = json.loads(t[0][0])
|
||||||
+ config = normalize_client_config(json.loads(t[0][0]))
|
+ config = normalize_client_config(json.loads(t[0][0]), app.config.plugins)
|
||||||
@@ -298 +304 @@
|
@@ -298 +305 @@
|
||||||
- "api_host": config["domain"],
|
- "api_host": config["domain"],
|
||||||
+ "api_host": f"https://{config['domain']}",
|
+ "api_host": f"https://{config['domain']}",
|
||||||
|
@@ -306,0 +314,6 @@
|
||||||
|
+ else:
|
||||||
|
+ frontend_conf = json.loads(t[0][2])
|
||||||
|
+ if frontend_conf.get("plugins") != config["plugins"]:
|
||||||
|
+ frontend_conf["plugins"] = config["plugins"]
|
||||||
|
+ frontend_conf = convertQuotation(json.dumps(frontend_conf))
|
||||||
|
+ cur.execute(f"UPDATE settings SET sval = '{frontend_conf}' WHERE skey = 'client-config/meta'")
|
||||||
|
|||||||
Reference in New Issue
Block a user