fix(export): switch mxdrw auth from Bearer to HTTP Basic
mxdrw expects HTTP Basic Auth (BASIC_AUTH_USER + BASIC_AUTH_PASS on the server side). Replace MEXDRAW_TOKEN with MEXDRAW_USER + MEXDRAW_PASS, use req.SetBasicAuth on the export PUT. Updated docker-compose.yml comment and README env table to match. Roundtrip verified locally against mxdrw.msbls.de.
This commit is contained in:
@@ -43,8 +43,9 @@ JSON API under `/api/`. SQLite lives at `./data/mcables.db` by default.
|
|||||||
|---|---|---|
|
|---|---|---|
|
||||||
| `MCABLES_ADDR` | `0.0.0.0:7777` | Listen address. |
|
| `MCABLES_ADDR` | `0.0.0.0:7777` | Listen address. |
|
||||||
| `MCABLES_DB` | `./data/mcables.db` | SQLite path. Parent dir is created on boot. |
|
| `MCABLES_DB` | `./data/mcables.db` | SQLite path. Parent dir is created on boot. |
|
||||||
| `MEXDRAW_BASE_URL` | (unset) | Used by slice 5 export — not consumed yet. |
|
| `MEXDRAW_BASE_URL` | `https://mxdrw.msbls.de` | Base URL for mExDraw export. |
|
||||||
| `MEXDRAW_TOKEN` | (unset) | Bearer for the mExDraw export. Not consumed yet. |
|
| `MEXDRAW_USER` | (unset) | Username for the mxdrw HTTP Basic Auth on export. Required. |
|
||||||
|
| `MEXDRAW_PASS` | (unset) | Password for the mxdrw HTTP Basic Auth on export. Required. |
|
||||||
|
|
||||||
### Tests
|
### Tests
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ services:
|
|||||||
- MCABLES_ADDR=0.0.0.0:7777
|
- MCABLES_ADDR=0.0.0.0:7777
|
||||||
- MCABLES_DB=/app/data/mcables.db
|
- MCABLES_DB=/app/data/mcables.db
|
||||||
env_file:
|
env_file:
|
||||||
# Empty for slice 1. MEXDRAW_TOKEN lands here when slice 5 ships.
|
# MEXDRAW_USER + MEXDRAW_PASS for the mxdrw HTTP Basic Auth on export.
|
||||||
- /home/m/secrets/mcables/.env
|
- /home/m/secrets/mcables/.env
|
||||||
volumes:
|
volumes:
|
||||||
- /home/m/stacks/mcables/data:/app/data
|
- /home/m/stacks/mcables/data:/app/data
|
||||||
|
|||||||
@@ -29,11 +29,12 @@ func (h *handlers) syncExport(w http.ResponseWriter, r *http.Request) {
|
|||||||
if base == "" {
|
if base == "" {
|
||||||
base = "https://mxdrw.msbls.de"
|
base = "https://mxdrw.msbls.de"
|
||||||
}
|
}
|
||||||
token := os.Getenv("MEXDRAW_TOKEN")
|
user := os.Getenv("MEXDRAW_USER")
|
||||||
if token == "" {
|
pass := os.Getenv("MEXDRAW_PASS")
|
||||||
|
if user == "" || pass == "" {
|
||||||
writeJSON(w, http.StatusBadRequest, errorBody{
|
writeJSON(w, http.StatusBadRequest, errorBody{
|
||||||
Error: "MEXDRAW_TOKEN not set",
|
Error: "MEXDRAW_USER / MEXDRAW_PASS not set",
|
||||||
Details: "Add MEXDRAW_TOKEN to /home/m/secrets/mcables/.env on mDock and restart the container",
|
Details: "Add MEXDRAW_USER and MEXDRAW_PASS to /home/m/secrets/mcables/.env on mDock and restart the container — mxdrw expects HTTP Basic Auth",
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -77,7 +78,7 @@ func (h *handlers) syncExport(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
req.Header.Set("Content-Type", "application/json")
|
req.Header.Set("Content-Type", "application/json")
|
||||||
req.Header.Set("Authorization", "Bearer "+token)
|
req.SetBasicAuth(user, pass)
|
||||||
|
|
||||||
resp, err := http.DefaultClient.Do(req)
|
resp, err := http.DefaultClient.Do(req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
Reference in New Issue
Block a user