Decouple hub abbreviation from API prefix

This commit is contained in:
2026-08-25 16:53:52 +00:00
parent 8ba2055283
commit c7cc156a2a
2 changed files with 14 additions and 11 deletions
+8 -7
View File
@@ -34,7 +34,7 @@ Set secure MariaDB passwords in `.env`. Then, set at least these values in
```json ```json
{ {
"abbr": "api", "abbr": "vtc",
"name": "Drivers Hub", "name": "Drivers Hub",
"domain": "hub.example.com", "domain": "hub.example.com",
"prefix": "/api", "prefix": "/api",
@@ -75,8 +75,9 @@ from `config_sample.json`. Restart the backend after you change
Use the same database password in `.env` and `config/config.json`. Use the same database password in `.env` and `config/config.json`.
Set `domain` to the public host name of the backend. Do not include a protocol or Set `domain` to the public host name of the backend. Do not include a protocol or
path. path.
Set `prefix` to `/{abbr}` when you use the official frontend. The Set `abbr` to a short identifier for the VTC. The Docker frontend deployment
`client-config` plugin uses this relation to create frontend API URLs. derives the API base URL from its `VITE_CONFIG_URL`, so `abbr` does not have to
match `prefix`.
Create an hCaptcha site for the public frontend domain. Set its secret in the 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.
@@ -86,10 +87,10 @@ backend expects the singular names shown above. This deployment configuration
enables all built-in plugins by default. Keep `client-config` separate in enables all built-in plugins by default. Keep `client-config` separate in
`external_plugins`. `external_plugins`.
The deployment patch synchronizes the plugin list from `config/config.json` to The deployment patch synchronizes `abbr` and the plugin list from
the stored frontend configuration when the backend starts. Other frontend `config/config.json` to the stored frontend configuration when the backend
settings in MariaDB stay unchanged. Restart the backend after you enable or starts. Other frontend settings in MariaDB stay unchanged. Restart the backend
disable a plugin. after you change `abbr` or enable or disable a plugin.
## Configure external connections ## Configure external connections
+6 -4
View File
@@ -1,26 +1,28 @@
--- 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,7 @@ @@ -17,0 +18,7 @@
+def normalize_client_config(config, plugins): +def normalize_client_config(config, plugins, abbr):
+ 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["abbr"] = abbr
+ config["plugins"] = plugins + config["plugins"] = plugins
+ return config + return config
+ +
+ +
@@ -24 +31 @@ @@ -24 +31 @@
- return json.loads(config) - return json.loads(config)
+ return normalize_client_config(json.loads(config), app.config.plugins) + return normalize_client_config(json.loads(config), app.config.plugins, app.config.abbr)
@@ -37 +44 @@ @@ -37 +44 @@
- config = json.loads(t[0][0]) - config = json.loads(t[0][0])
+ config = normalize_client_config(json.loads(t[0][0]), app.config.plugins) + config = normalize_client_config(json.loads(t[0][0]), app.config.plugins, app.config.abbr)
@@ -298 +305 @@ @@ -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 @@ @@ -306,0 +314,6 @@
+ else: + else:
+ frontend_conf = json.loads(t[0][2]) + frontend_conf = json.loads(t[0][2])
+ if frontend_conf.get("plugins") != config["plugins"]: + if frontend_conf.get("abbr") != config["abbr"] or frontend_conf.get("plugins") != config["plugins"]:
+ frontend_conf["abbr"] = config["abbr"]
+ frontend_conf["plugins"] = config["plugins"] + frontend_conf["plugins"] = config["plugins"]
+ frontend_conf = convertQuotation(json.dumps(frontend_conf)) + frontend_conf = convertQuotation(json.dumps(frontend_conf))
+ cur.execute(f"UPDATE settings SET sval = '{frontend_conf}' WHERE skey = 'client-config/meta'") + cur.execute(f"UPDATE settings SET sval = '{frontend_conf}' WHERE skey = 'client-config/meta'")