From d7893262300325146bb7c9c6d2a5bacb240f4c08 Mon Sep 17 00:00:00 2001 From: Jacky Date: Fri, 18 Apr 2025 08:06:34 +0000 Subject: [PATCH] enhance: replace error handling with cosy wrapper for nginx reload and test failures --- api/config/add.go | 4 +--- app/src/layouts/HeaderLayout.vue | 17 ++++++++--------- internal/config/errors.go | 2 ++ internal/config/save.go | 4 ++-- internal/site/disable.go | 14 ++++++++------ internal/site/enable.go | 5 +++-- internal/site/errors.go | 2 ++ internal/site/maintenance.go | 5 +++-- internal/site/save.go | 5 +++-- internal/stream/disable.go | 14 ++++++++------ internal/stream/enable.go | 16 +++++++++------- internal/stream/errors.go | 2 ++ internal/stream/rename.go | 5 +++-- internal/stream/save.go | 5 +++-- 14 files changed, 57 insertions(+), 43 deletions(-) diff --git a/api/config/add.go b/api/config/add.go index 076375a5..37be3895 100644 --- a/api/config/add.go +++ b/api/config/add.go @@ -76,9 +76,7 @@ func AddConfig(c *gin.Context) { output := nginx.Reload() if nginx.GetLogLevel(output) >= nginx.Warn { - c.JSON(http.StatusInternalServerError, gin.H{ - "message": output, - }) + cosy.ErrHandler(c, cosy.WrapErrorWithParams(config.ErrNginxReloadFailed, output)) return } diff --git a/app/src/layouts/HeaderLayout.vue b/app/src/layouts/HeaderLayout.vue index 028a53ac..b287c99a 100644 --- a/app/src/layouts/HeaderLayout.vue +++ b/app/src/layouts/HeaderLayout.vue @@ -35,13 +35,6 @@ const isWorkspace = computed(() => {
-
- - - - - -
{ +
+ + + + + +
+ @@ -98,8 +99,6 @@ const isWorkspace = computed(() => { } .workspace-entry { - position: absolute; - left: 20px; @media (max-width: 600px) { display: none; } diff --git a/internal/config/errors.go b/internal/config/errors.go index 0e6d4482..b90c7c31 100644 --- a/internal/config/errors.go +++ b/internal/config/errors.go @@ -6,4 +6,6 @@ var ( e = cosy.NewErrorScope("config") ErrPathIsNotUnderTheNginxConfDir = e.New(50006, "path: {0} is not under the nginx conf dir: {1}") ErrDstFileExists = e.New(50007, "destination file: {0} already exists") + ErrNginxTestFailed = e.New(50008, "nginx test failed: {0}") + ErrNginxReloadFailed = e.New(50009, "nginx reload failed: {0}") ) diff --git a/internal/config/save.go b/internal/config/save.go index 72efc02d..25f7e98d 100644 --- a/internal/config/save.go +++ b/internal/config/save.go @@ -1,13 +1,13 @@ package config import ( - "fmt" "os" "github.com/0xJacky/Nginx-UI/internal/helper" "github.com/0xJacky/Nginx-UI/internal/nginx" "github.com/0xJacky/Nginx-UI/model" "github.com/0xJacky/Nginx-UI/query" + "github.com/uozi-tech/cosy" "gorm.io/gen/field" ) @@ -47,7 +47,7 @@ func Save(absPath string, content string, cfg *model.Config) (err error) { output := nginx.Reload() if nginx.GetLogLevel(output) >= nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxReloadFailed, output) } err = SyncToRemoteServer(cfg) diff --git a/internal/site/disable.go b/internal/site/disable.go index b75808fa..7a4f8205 100644 --- a/internal/site/disable.go +++ b/internal/site/disable.go @@ -2,15 +2,17 @@ package site import ( "fmt" - "github.com/0xJacky/Nginx-UI/internal/nginx" - "github.com/0xJacky/Nginx-UI/internal/notification" - "github.com/0xJacky/Nginx-UI/model" - "github.com/go-resty/resty/v2" - "github.com/uozi-tech/cosy/logger" "net/http" "os" "runtime" "sync" + + "github.com/0xJacky/Nginx-UI/internal/nginx" + "github.com/0xJacky/Nginx-UI/internal/notification" + "github.com/0xJacky/Nginx-UI/model" + "github.com/go-resty/resty/v2" + "github.com/uozi-tech/cosy" + "github.com/uozi-tech/cosy/logger" ) // Disable disables a site by removing the symlink in sites-enabled @@ -35,7 +37,7 @@ func Disable(name string) (err error) { output := nginx.Reload() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxReloadFailed, output) } go syncDisable(name) diff --git a/internal/site/enable.go b/internal/site/enable.go index 5a27d9ac..4fba2057 100644 --- a/internal/site/enable.go +++ b/internal/site/enable.go @@ -11,6 +11,7 @@ import ( "github.com/0xJacky/Nginx-UI/internal/nginx" "github.com/0xJacky/Nginx-UI/internal/notification" "github.com/go-resty/resty/v2" + "github.com/uozi-tech/cosy" "github.com/uozi-tech/cosy/logger" ) @@ -37,12 +38,12 @@ func Enable(name string) (err error) { output := nginx.TestConf() if nginx.GetLogLevel(output) > nginx.Warn { _ = os.Remove(enabledConfigFilePath) - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxTestFailed, output) } output = nginx.Reload() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxReloadFailed, output) } go syncEnable(name) diff --git a/internal/site/errors.go b/internal/site/errors.go index 6d335fc9..74cd191e 100644 --- a/internal/site/errors.go +++ b/internal/site/errors.go @@ -8,4 +8,6 @@ var ( ErrDstFileExists = e.New(50001, "destination file already exists") ErrSiteIsEnabled = e.New(50002, "site is enabled") ErrSiteIsInMaintenance = e.New(50003, "site is in maintenance mode") + ErrNginxTestFailed = e.New(50004, "nginx test failed: {0}") + ErrNginxReloadFailed = e.New(50005, "nginx reload failed: {0}") ) diff --git a/internal/site/maintenance.go b/internal/site/maintenance.go index d93916c1..74a36dbf 100644 --- a/internal/site/maintenance.go +++ b/internal/site/maintenance.go @@ -16,6 +16,7 @@ import ( "github.com/go-resty/resty/v2" "github.com/tufanbarisyildirim/gonginx/config" "github.com/tufanbarisyildirim/gonginx/parser" + "github.com/uozi-tech/cosy" "github.com/uozi-tech/cosy/logger" cSettings "github.com/uozi-tech/cosy/settings" ) @@ -82,13 +83,13 @@ func EnableMaintenance(name string) (err error) { if helper.FileExists(originalEnabledPath + "_backup") { _ = os.Rename(originalEnabledPath+"_backup", originalEnabledPath) } - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxTestFailed, output) } // Reload nginx output = nginx.Reload() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxReloadFailed, output) } // Synchronize with other nodes diff --git a/internal/site/save.go b/internal/site/save.go index 2210356d..1daf6a54 100644 --- a/internal/site/save.go +++ b/internal/site/save.go @@ -14,6 +14,7 @@ import ( "github.com/0xJacky/Nginx-UI/model" "github.com/0xJacky/Nginx-UI/query" "github.com/go-resty/resty/v2" + "github.com/uozi-tech/cosy" "github.com/uozi-tech/cosy/logger" ) @@ -40,13 +41,13 @@ func Save(name string, content string, overwrite bool, envGroupId uint64, syncNo output := nginx.TestConf() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxTestFailed, output) } if postAction == model.PostSyncActionReloadNginx { output = nginx.Reload() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxReloadFailed, output) } } } diff --git a/internal/stream/disable.go b/internal/stream/disable.go index e6f5cc43..14ab4c61 100644 --- a/internal/stream/disable.go +++ b/internal/stream/disable.go @@ -2,15 +2,17 @@ package stream import ( "fmt" - "github.com/0xJacky/Nginx-UI/internal/nginx" - "github.com/0xJacky/Nginx-UI/internal/notification" - "github.com/0xJacky/Nginx-UI/model" - "github.com/go-resty/resty/v2" - "github.com/uozi-tech/cosy/logger" "net/http" "os" "runtime" "sync" + + "github.com/0xJacky/Nginx-UI/internal/nginx" + "github.com/0xJacky/Nginx-UI/internal/notification" + "github.com/0xJacky/Nginx-UI/model" + "github.com/go-resty/resty/v2" + "github.com/uozi-tech/cosy" + "github.com/uozi-tech/cosy/logger" ) // Disable disables a site by removing the symlink in sites-enabled @@ -35,7 +37,7 @@ func Disable(name string) (err error) { output := nginx.Reload() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxReloadFailed, output) } go syncDisable(name) diff --git a/internal/stream/enable.go b/internal/stream/enable.go index e1839090..055a2b11 100644 --- a/internal/stream/enable.go +++ b/internal/stream/enable.go @@ -2,15 +2,17 @@ package stream import ( "fmt" - "github.com/0xJacky/Nginx-UI/internal/helper" - "github.com/0xJacky/Nginx-UI/internal/nginx" - "github.com/0xJacky/Nginx-UI/internal/notification" - "github.com/go-resty/resty/v2" - "github.com/uozi-tech/cosy/logger" "net/http" "os" "runtime" "sync" + + "github.com/0xJacky/Nginx-UI/internal/helper" + "github.com/0xJacky/Nginx-UI/internal/nginx" + "github.com/0xJacky/Nginx-UI/internal/notification" + "github.com/go-resty/resty/v2" + "github.com/uozi-tech/cosy" + "github.com/uozi-tech/cosy/logger" ) // Enable enables a site by creating a symlink in sites-enabled @@ -36,12 +38,12 @@ func Enable(name string) (err error) { output := nginx.TestConf() if nginx.GetLogLevel(output) > nginx.Warn { _ = os.Remove(enabledConfigFilePath) - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxTestFailed, output) } output = nginx.Reload() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxReloadFailed, output) } go syncEnable(name) diff --git a/internal/stream/errors.go b/internal/stream/errors.go index 3bb02ec7..37c4c48d 100644 --- a/internal/stream/errors.go +++ b/internal/stream/errors.go @@ -7,4 +7,6 @@ var ( ErrStreamNotFound = e.New(40401, "stream not found") ErrDstFileExists = e.New(50001, "destination file already exists") ErrStreamIsEnabled = e.New(50002, "stream is enabled") + ErrNginxTestFailed = e.New(50003, "nginx test failed: {0}") + ErrNginxReloadFailed = e.New(50004, "nginx reload failed: {0}") ) diff --git a/internal/stream/rename.go b/internal/stream/rename.go index 2620a0b1..cf3b07d2 100644 --- a/internal/stream/rename.go +++ b/internal/stream/rename.go @@ -7,6 +7,7 @@ import ( "github.com/0xJacky/Nginx-UI/internal/notification" "github.com/0xJacky/Nginx-UI/query" "github.com/go-resty/resty/v2" + "github.com/uozi-tech/cosy" "github.com/uozi-tech/cosy/logger" "net/http" "os" @@ -49,13 +50,13 @@ func Rename(oldName string, newName string) (err error) { // test nginx configuration output := nginx.TestConf() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxTestFailed, output) } // reload nginx output = nginx.Reload() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxReloadFailed, output) } go syncRename(oldName, newName) diff --git a/internal/stream/save.go b/internal/stream/save.go index 3b815594..b766ba98 100644 --- a/internal/stream/save.go +++ b/internal/stream/save.go @@ -14,6 +14,7 @@ import ( "github.com/0xJacky/Nginx-UI/model" "github.com/0xJacky/Nginx-UI/query" "github.com/go-resty/resty/v2" + "github.com/uozi-tech/cosy" "github.com/uozi-tech/cosy/logger" ) @@ -40,13 +41,13 @@ func Save(name string, content string, overwrite bool, syncNodeIds []uint64, pos output := nginx.TestConf() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxTestFailed, output) } if postAction == model.PostSyncActionReloadNginx { output = nginx.Reload() if nginx.GetLogLevel(output) > nginx.Warn { - return fmt.Errorf("%s", output) + return cosy.WrapErrorWithParams(ErrNginxReloadFailed, output) } } }