Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--web/controller/server.go2
-rw-r--r--web/service/server.go26
2 files changed, 10 insertions, 18 deletions
diff --git a/web/controller/server.go b/web/controller/server.go
index 51c220c3..b3dc0ad6 100644
--- a/web/controller/server.go
+++ b/web/controller/server.go
@@ -152,6 +152,8 @@ func (a *ServerController) importDB(c *gin.Context) {
return
}
defer file.Close()
+ // Always restart Xray before return
+ defer a.serverService.RestartXrayService()
// Import it
err = a.serverService.ImportDB(file)
if err != nil {
diff --git a/web/service/server.go b/web/service/server.go
index 36d79b8b..a9e10ea2 100644
--- a/web/service/server.go
+++ b/web/service/server.go
@@ -411,6 +411,8 @@ func (s *ServerService) ImportDB(file multipart.File) error {
// Save the file as temporary file
tempPath := fmt.Sprintf("%s.temp", config.GetDBPath())
+ // remove temp file before return
+ defer os.Remove(tempPath)
tempFile, err := os.Create(tempPath)
if err != nil {
return common.NewErrorf("Error creating temporary db file: %v", err)
@@ -420,60 +422,48 @@ func (s *ServerService) ImportDB(file multipart.File) error {
// Reset the file reader to the beginning
_, err = file.Seek(0, 0)
if err != nil {
- defer os.Remove(tempPath)
return common.NewErrorf("Error resetting file reader: %v", err)
}
// Save temp file
_, err = io.Copy(tempFile, file)
if err != nil {
- defer os.Remove(tempPath)
return common.NewErrorf("Error saving db: %v", err)
}
// Check if we can init db or not
err = database.InitDB(tempPath)
if err != nil {
- defer os.Remove(tempPath)
return common.NewErrorf("Error checking db: %v", err)
}
- // Stop Xray if its running
- if s.xrayService.IsXrayRunning() {
- err := s.StopXrayService()
- if err != nil {
- defer os.Remove(tempPath)
- return common.NewErrorf("Failed to stop Xray: %v", err)
- }
- }
+ // Stop Xray
+ s.StopXrayService()
// Backup db for fallback
fallbackPath := fmt.Sprintf("%s.backup", config.GetDBPath())
+ // remove fallback file before return
+ defer os.Remove(fallbackPath)
err = os.Rename(config.GetDBPath(), fallbackPath)
if err != nil {
- defer os.Remove(tempPath)
return common.NewErrorf("Error backup temporary db file: %v", err)
}
// Move temp to DB path
err = os.Rename(tempPath, config.GetDBPath())
if err != nil {
- defer os.Remove(tempPath)
- defer os.Rename(fallbackPath, config.GetDBPath())
+ os.Rename(fallbackPath, config.GetDBPath())
return common.NewErrorf("Error moving db file: %v", err)
}
// Migrate DB
err = database.InitDB(config.GetDBPath())
if err != nil {
- defer os.Rename(fallbackPath, config.GetDBPath())
+ os.Rename(fallbackPath, config.GetDBPath())
return common.NewErrorf("Error migrating db: %v", err)
}
s.inboundService.MigrateDB()
- // remove fallback file
- defer os.Remove(fallbackPath)
-
// Start Xray
err = s.RestartXrayService()
if err != nil {