From 3e19cae2676e31be5f5beaa2fb7971caea800a85 Mon Sep 17 00:00:00 2001 From: Elijah Date: Sun, 24 May 2026 11:39:21 -0700 Subject: [PATCH] Fix callback URL rewrite --- backend/handlers/onlyoffice.go | 10 +++++++++- frontend/src/lib/api.ts | 4 ++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/backend/handlers/onlyoffice.go b/backend/handlers/onlyoffice.go index 10b99a2..7ca9e97 100644 --- a/backend/handlers/onlyoffice.go +++ b/backend/handlers/onlyoffice.go @@ -6,6 +6,7 @@ import ( "net/http" "os" "path/filepath" + "strings" "git.elijahkuntz.com/Elijah/drive/config" "git.elijahkuntz.com/Elijah/drive/middleware" @@ -48,8 +49,15 @@ func (h *OnlyOfficeHandler) Callback(c *fiber.Ctx) error { return c.Status(400).JSON(fiber.Map{"error": "url required"}) } + // If the server cannot resolve the public URL due to hairpin NAT, + // we can rewrite it to use the internal Docker IP + downloadUrl := req.Url + if strings.HasPrefix(downloadUrl, "https://office.elijahkuntz.com") { + downloadUrl = strings.Replace(downloadUrl, "https://office.elijahkuntz.com", "http://192.168.50.81:8084", 1) + } + // Download modified file from Document Server - resp, err := http.Get(req.Url) + resp, err := http.Get(downloadUrl) if err != nil { return c.Status(500).JSON(fiber.Map{"error": "failed to download file"}) } diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 1e68c03..f9306e7 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -473,7 +473,7 @@ class ApiClient { async createOnlyOfficeFile(type: 'word' | 'slide') { const res = await this.request('/api/onlyoffice/create', { method: 'POST', - body: JSON.stringify({ type }) + body: { type } }); return res.json(); } @@ -481,7 +481,7 @@ class ApiClient { async signOnlyOfficeConfig(config: any) { const res = await this.request('/api/onlyoffice/sign', { method: 'POST', - body: JSON.stringify(config) + body: config }); return res.json(); }