From a08f7d8782488f4abb9b69d95ccffb10add131c8 Mon Sep 17 00:00:00 2001 From: Nathan Coad Date: Mon, 12 Jan 2026 15:08:27 +1100 Subject: [PATCH] cater for self hosted draw.io --- README.md | 1 + cmd/server/main.go | 8 +++++++- docker-compose.yml | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 278aa23..dce92b8 100644 --- a/README.md +++ b/README.md @@ -27,6 +27,7 @@ The HTTP server exposes a simple REST endpoint plus docs. - Swagger UI: `http://localhost:8080/swagger` - OpenAPI spec: `http://localhost:8080/openapi.json` +- diagrams.net host override: set environment variable `DRAWIO_BASE_URL` (defaults to `https://app.diagrams.net`) ### Endpoint `POST /api/convert` diff --git a/cmd/server/main.go b/cmd/server/main.go index 8bc9fd1..70a46af 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -8,6 +8,7 @@ import ( "log" "net/http" "net/url" + "os" "strings" "time" @@ -24,6 +25,8 @@ var diagramStore = struct { data: make(map[string]string), } +var drawioBaseURL = "https://app.diagrams.net" + var uploadTpl = template.Must(template.New("upload").Parse(` @@ -133,6 +136,9 @@ type apiResponse struct { } func main() { + if v := strings.TrimSpace(os.Getenv("DRAWIO_BASE_URL")); v != "" { + drawioBaseURL = strings.TrimRight(v, "/") + } mux := http.NewServeMux() mux.HandleFunc("/", uploadHandler) mux.HandleFunc("/convert", uploadConvertHandler) @@ -330,7 +336,7 @@ func buildDiagramsNetURL(r *http.Request, id string) string { } base := fmt.Sprintf("%s://%s/diagram?id=%s", scheme, r.Host, url.QueryEscape(id)) // Request AWS library for custom shapes (e.g., aws4) to render correctly. - return "https://app.diagrams.net/?splash=0&ui=min&libs=aws4&url=" + url.QueryEscape(base) + return drawioBaseURL + "/?splash=0&ui=min&libs=aws4&url=" + url.QueryEscape(base) } func addCORS(w http.ResponseWriter) { diff --git a/docker-compose.yml b/docker-compose.yml index 6178ee9..7b1117d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,4 +5,6 @@ services: build: . ports: - "8080:8080" + environment: + - DRAWIO_BASE_URL=${DRAWIO_BASE_URL:-https://app.diagrams.net} restart: unless-stopped