From 8d9db29db2bbee6e9e3d6cb70ee5559e20db756c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6sche?= Date: Tue, 13 Jan 2026 15:25:04 +0100 Subject: [PATCH] Fix WOPI: Use config for Nextcloud URL instead of hardcoded nc.b0esche.cloud --- go_cloud/internal/http/routes.go | 2 +- go_cloud/internal/http/wopi_handlers.go | 25 ++++++------------------- 2 files changed, 7 insertions(+), 20 deletions(-) diff --git a/go_cloud/internal/http/routes.go b/go_cloud/internal/http/routes.go index 3265b9c..0c1c1e0 100644 --- a/go_cloud/internal/http/routes.go +++ b/go_cloud/internal/http/routes.go @@ -111,7 +111,7 @@ func NewRouter(cfg *config.Config, db *database.DB, jwtManager *jwt.Manager, aut }) // PutFile & Lock operations: POST /wopi/files/{fileId}/contents and POST /wopi/files/{fileId} r.Post("/contents", func(w http.ResponseWriter, req *http.Request) { - wopiPutFileHandler(w, req, db, jwtManager) + wopiPutFileHandler(w, req, db, jwtManager, cfg) }) // Lock operations: POST /wopi/files/{fileId} r.Post("/", func(w http.ResponseWriter, req *http.Request) { diff --git a/go_cloud/internal/http/wopi_handlers.go b/go_cloud/internal/http/wopi_handlers.go index c0b8aac..59c4282 100644 --- a/go_cloud/internal/http/wopi_handlers.go +++ b/go_cloud/internal/http/wopi_handlers.go @@ -348,9 +348,8 @@ func wopiGetFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB, if file.UserID != nil && *file.UserID == userID { canAccess = true - // Get user's WebDAV client - need to pass config - // For now, create a new WebDAV client without full config - webDAVClient, err = getUserWebDAVClient(r.Context(), db, userID, "http://nc.b0esche.cloud", "admin", "") + // Get user's WebDAV client - use config + webDAVClient, err = getUserWebDAVClient(r.Context(), db, userID, cfg.NextcloudURL, cfg.NextcloudUser, cfg.NextcloudPass) if err != nil { fmt.Printf("[WOPI-STORAGE] Failed to get user WebDAV client: %v\n", err) errors.WriteError(w, errors.CodeInternal, "Storage error", http.StatusInternalServerError) @@ -361,13 +360,7 @@ func wopiGetFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB, member, err := db.GetOrgMember(r.Context(), *file.OrgID, userID) if err == nil && member != nil { canAccess = true - // Create admin WebDAV client for org files - cfg := &config.Config{ - NextcloudURL: "http://nc.b0esche.cloud", - NextcloudUser: "admin", - NextcloudPass: "", - NextcloudBase: "/", - } + // Create admin WebDAV client for org files - use config webDAVClient = storage.NewWebDAVClient(cfg) } } @@ -402,7 +395,7 @@ func wopiGetFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB, // WOPIPutFileHandler handles POST /wopi/files/{fileId}/contents // Uploads edited document back to storage -func wopiPutFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB, jwtManager *jwt.Manager) { +func wopiPutFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB, jwtManager *jwt.Manager, cfg *config.Config) { fileID := r.PathValue("fileId") if fileID == "" { errors.WriteError(w, errors.CodeInvalidArgument, "Missing fileId", http.StatusBadRequest) @@ -446,7 +439,7 @@ func wopiPutFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB, if file.UserID != nil && *file.UserID == userID { canAccess = true - webDAVClient, err = getUserWebDAVClient(r.Context(), db, userID, "http://nc.b0esche.cloud", "admin", "") + webDAVClient, err = getUserWebDAVClient(r.Context(), db, userID, cfg.NextcloudURL, cfg.NextcloudUser, cfg.NextcloudPass) if err != nil { fmt.Printf("[WOPI-STORAGE] Failed to get user WebDAV client: %v\n", err) errors.WriteError(w, errors.CodeInternal, "Storage error", http.StatusInternalServerError) @@ -456,13 +449,7 @@ func wopiPutFileHandler(w http.ResponseWriter, r *http.Request, db *database.DB, member, err := db.GetOrgMember(r.Context(), *file.OrgID, userID) if err == nil && member != nil { canAccess = true - // Create admin WebDAV client for org files - cfg := &config.Config{ - NextcloudURL: "http://nc.b0esche.cloud", - NextcloudUser: "admin", - NextcloudPass: "", - NextcloudBase: "/", - } + // Create admin WebDAV client for org files - use config webDAVClient = storage.NewWebDAVClient(cfg) } }