From 30469fcd103b0cf4069dfe2fb8b4c0a2fd45d805 Mon Sep 17 00:00:00 2001 From: GRCR13 <78537712+GRCR13@users.noreply.github.com> Date: Sun, 10 May 2026 23:48:35 +0300 Subject: [PATCH] fix: backup path with webbasepath (#4223) * Update BackupModal.vue add base path to importDB API call * fix add base path to importDB API call --- frontend/src/pages/index/BackupModal.vue | 2 +- web/controller/server.go | 4 ---- web/service/server.go | 12 +++++++++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/frontend/src/pages/index/BackupModal.vue b/frontend/src/pages/index/BackupModal.vue index a7a9fc4f..4acfaafa 100644 --- a/frontend/src/pages/index/BackupModal.vue +++ b/frontend/src/pages/index/BackupModal.vue @@ -20,7 +20,7 @@ function exportDb() { // The Go endpoint streams x-ui.db as a download. Setting // window.location triggers a browser download without leaving // the page (the Go side responds with Content-Disposition: attachment). - window.location = '/panel/api/server/getDb'; + window.location = window.__X_UI_BASE_PATH__+'panel/api/server/getDb'; } function importDb() { diff --git a/web/controller/server.go b/web/controller/server.go index 3c739b1f..441a0d88 100644 --- a/web/controller/server.go +++ b/web/controller/server.go @@ -343,10 +343,6 @@ func (a *ServerController) importDB(c *gin.Context) { return } defer file.Close() - // Always restart Xray before return - defer a.serverService.RestartXrayService() - // lastGetStatusTime removed; no longer needed - // Import it err = a.serverService.ImportDB(file) if err != nil { jsonMsg(c, I18nWeb(c, "pages.index.importDatabaseError"), err) diff --git a/web/service/server.go b/web/service/server.go index 5dfb6d62..e2ad9deb 100644 --- a/web/service/server.go +++ b/web/service/server.go @@ -976,12 +976,18 @@ func (s *ServerService) ImportDB(file multipart.File) error { return common.NewErrorf("Invalid or corrupt db file: %v", err) } - // Stop Xray (ignore error but log) + xrayStopped := true + defer func() { + if xrayStopped { + if errR := s.RestartXrayService(); errR != nil { + logger.Warningf("Failed to restart Xray after DB import error: %v", errR) + } + } + }() if errStop := s.StopXrayService(); errStop != nil { logger.Warningf("Failed to stop Xray before DB import: %v", errStop) } - // Close existing DB to release file locks (especially on Windows) if errClose := database.CloseDB(); errClose != nil { logger.Warningf("Failed to close existing DB before replacement: %v", errClose) } @@ -1029,7 +1035,7 @@ func (s *ServerService) ImportDB(file multipart.File) error { s.inboundService.MigrateDB() - // Start Xray + xrayStopped = false if err = s.RestartXrayService(); err != nil { return common.NewErrorf("Imported DB but failed to start Xray: %v", err) }