refactor: replace api error handler with cosy err handler

This commit is contained in:
Jacky 2025-03-29 20:33:48 +08:00
parent 4cb4695e7b
commit b469ca7961
No known key found for this signature in database
GPG key ID: 215C21B10DF38B4D
37 changed files with 268 additions and 250 deletions

View file

@ -9,7 +9,6 @@ import (
"strings"
"time"
"github.com/0xJacky/Nginx-UI/api"
"github.com/0xJacky/Nginx-UI/internal/backup"
"github.com/gin-gonic/gin"
"github.com/jpillora/overseer"
@ -18,9 +17,9 @@ import (
// RestoreResponse contains the response data for restore operation
type RestoreResponse struct {
NginxUIRestored bool `json:"nginx_ui_restored"`
NginxRestored bool `json:"nginx_restored"`
HashMatch bool `json:"hash_match"`
NginxUIRestored bool `json:"nginx_ui_restored"`
NginxRestored bool `json:"nginx_restored"`
HashMatch bool `json:"hash_match"`
}
// CreateBackup creates a backup of nginx-ui and nginx configurations
@ -28,7 +27,7 @@ type RestoreResponse struct {
func CreateBackup(c *gin.Context) {
result, err := backup.Backup()
if err != nil {
api.ErrHandler(c, err)
cosy.ErrHandler(c, err)
return
}
@ -65,20 +64,20 @@ func RestoreBackup(c *gin.Context) {
// Get backup file
backupFile, err := c.FormFile("backup_file")
if err != nil {
api.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrBackupFileNotFound, err.Error()))
cosy.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrBackupFileNotFound, err.Error()))
return
}
// Validate security token
if securityToken == "" {
api.ErrHandler(c, backup.ErrInvalidSecurityToken)
cosy.ErrHandler(c, backup.ErrInvalidSecurityToken)
return
}
// Split security token to get Key and IV
parts := strings.Split(securityToken, ":")
if len(parts) != 2 {
api.ErrHandler(c, backup.ErrInvalidSecurityToken)
cosy.ErrHandler(c, backup.ErrInvalidSecurityToken)
return
}
@ -88,20 +87,20 @@ func RestoreBackup(c *gin.Context) {
// Decode Key and IV from base64
key, err := base64.StdEncoding.DecodeString(aesKey)
if err != nil {
api.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrInvalidAESKey, err.Error()))
cosy.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrInvalidAESKey, err.Error()))
return
}
iv, err := base64.StdEncoding.DecodeString(aesIv)
if err != nil {
api.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrInvalidAESIV, err.Error()))
cosy.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrInvalidAESIV, err.Error()))
return
}
// Create temporary directory for files
tempDir, err := os.MkdirTemp("", "nginx-ui-restore-upload-*")
if err != nil {
api.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrCreateTempDir, err.Error()))
cosy.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrCreateTempDir, err.Error()))
return
}
defer os.RemoveAll(tempDir)
@ -109,14 +108,14 @@ func RestoreBackup(c *gin.Context) {
// Save backup file
backupPath := filepath.Join(tempDir, backupFile.Filename)
if err := c.SaveUploadedFile(backupFile, backupPath); err != nil {
api.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrCreateBackupFile, err.Error()))
cosy.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrCreateBackupFile, err.Error()))
return
}
// Create temporary directory for restore operation
restoreDir, err := os.MkdirTemp("", "nginx-ui-restore-*")
if err != nil {
api.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrCreateRestoreDir, err.Error()))
cosy.ErrHandler(c, cosy.WrapErrorWithParams(backup.ErrCreateRestoreDir, err.Error()))
return
}
@ -136,7 +135,7 @@ func RestoreBackup(c *gin.Context) {
if err != nil {
// Clean up temporary directory on error
os.RemoveAll(restoreDir)
api.ErrHandler(c, err)
cosy.ErrHandler(c, err)
return
}

View file

@ -1,8 +1,11 @@
package system
import (
"github.com/0xJacky/Nginx-UI/api"
"net/http"
"time"
"github.com/0xJacky/Nginx-UI/internal/kernel"
"github.com/0xJacky/Nginx-UI/internal/system"
"github.com/0xJacky/Nginx-UI/model"
"github.com/0xJacky/Nginx-UI/query"
"github.com/0xJacky/Nginx-UI/settings"
@ -11,16 +14,36 @@ import (
"github.com/uozi-tech/cosy"
cSettings "github.com/uozi-tech/cosy/settings"
"golang.org/x/crypto/bcrypt"
"net/http"
)
// System startup time
var startupTime time.Time
func init() {
// Record system startup time
startupTime = time.Now()
}
func installLockStatus() bool {
return settings.NodeSettings.SkipInstallation || "" != cSettings.AppSettings.JwtSecret
}
// Check if installation time limit (10 minutes) is exceeded
func isInstallTimeoutExceeded() bool {
return time.Since(startupTime) > 10*time.Minute
}
func InstallLockCheck(c *gin.Context) {
locked := installLockStatus()
timeout := false
if !locked {
timeout = isInstallTimeoutExceeded()
}
c.JSON(http.StatusOK, gin.H{
"lock": installLockStatus(),
"lock": locked,
"timeout": timeout,
})
}
@ -39,6 +62,13 @@ func InstallNginxUI(c *gin.Context) {
})
return
}
// Check if installation time limit (10 minutes) is exceeded
if isInstallTimeoutExceeded() {
cosy.ErrHandler(c, system.ErrInstallTimeout)
return
}
var json InstallJson
ok := cosy.BindAndValid(c, &json)
if !ok {
@ -54,7 +84,7 @@ func InstallNginxUI(c *gin.Context) {
err := settings.Save()
if err != nil {
api.ErrHandler(c, err)
cosy.ErrHandler(c, err)
return
}
@ -70,7 +100,7 @@ func InstallNginxUI(c *gin.Context) {
})
if err != nil {
api.ErrHandler(c, err)
cosy.ErrHandler(c, err)
return
}

View file

@ -4,24 +4,24 @@ import (
"net/http"
"os"
"github.com/0xJacky/Nginx-UI/api"
"github.com/0xJacky/Nginx-UI/internal/upgrader"
"github.com/0xJacky/Nginx-UI/internal/version"
"github.com/0xJacky/Nginx-UI/settings"
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"github.com/uozi-tech/cosy"
"github.com/uozi-tech/cosy/logger"
)
func GetRelease(c *gin.Context) {
data, err := upgrader.GetRelease(c.Query("channel"))
if err != nil {
api.ErrHandler(c, err)
cosy.ErrHandler(c, err)
return
}
runtimeInfo, err := upgrader.GetRuntimeInfo()
if err != nil {
api.ErrHandler(c, err)
cosy.ErrHandler(c, err)
return
}
type resp struct {