Decouple hub abbreviation from API prefix
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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'")
|
||||||
|
|||||||
Reference in New Issue
Block a user