From 76e992cc9ed0d9342a22e79635f53c445a57b96c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Thu, 30 May 2024 02:27:35 +0800 Subject: [PATCH] chore: fix lint --- app/console/commands/monitoring.go | 8 +++-- app/http/controllers/ssh_controller.go | 2 +- app/jobs/process_task.go | 45 ++++++++++++++++++-------- internal/services/cron.go | 40 +++++++++++------------ internal/services/plugin.go | 4 +-- internal/services/setting.go | 16 +++------ internal/services/website.go | 6 ++-- pkg/ssh/ssh.go | 12 +++---- 8 files changed, 73 insertions(+), 60 deletions(-) diff --git a/app/console/commands/monitoring.go b/app/console/commands/monitoring.go index a316b252..b788809f 100644 --- a/app/console/commands/monitoring.go +++ b/app/console/commands/monitoring.go @@ -75,7 +75,9 @@ func (receiver *Monitoring) Handle(console.Context) error { Info: info, }) if err != nil { - facades.Log().Infof("[面板] 系统监控保存失败: %s", err.Error()) + facades.Log().Tags("面板", "系统监控").With(map[string]any{ + "error": err.Error(), + }).Infof("保存失败") color.Red().Printfln(translate.Get("commands.panel:monitoring.fail")+": %s", err.Error()) return nil } @@ -86,7 +88,9 @@ func (receiver *Monitoring) Handle(console.Context) error { return nil } if _, err = facades.Orm().Query().Where("created_at < ?", carbon.Now().SubDays(days).ToDateTimeString()).Delete(&models.Monitor{}); err != nil { - facades.Log().Infof("[面板] 系统监控删除过期数据失败: %s", err.Error()) + facades.Log().Tags("面板", "系统监控").With(map[string]any{ + "error": err.Error(), + }).Infof("删除过期数据失败") return nil } diff --git a/app/http/controllers/ssh_controller.go b/app/http/controllers/ssh_controller.go index b4420a52..cc781a60 100644 --- a/app/http/controllers/ssh_controller.go +++ b/app/http/controllers/ssh_controller.go @@ -103,7 +103,7 @@ func (r *SshController) Session(ctx http.Context) http.Response { } defer ws.Close() - config := ssh.SSHClientConfigPassword( + config := ssh.ClientConfigPassword( r.setting.Get(models.SettingKeySshHost)+":"+r.setting.Get(models.SettingKeySshPort), r.setting.Get(models.SettingKeySshUser), r.setting.Get(models.SettingKeySshPassword), diff --git a/app/jobs/process_task.go b/app/jobs/process_task.go index 83a4c069..c25d4042 100644 --- a/app/jobs/process_task.go +++ b/app/jobs/process_task.go @@ -1,8 +1,7 @@ package jobs import ( - "os/exec" - + "github.com/TheTNB/panel/pkg/tools" "github.com/goravel/framework/facades" "github.com/TheTNB/panel/app/models" @@ -21,41 +20,61 @@ func (receiver *ProcessTask) Signature() string { func (receiver *ProcessTask) Handle(args ...any) error { taskID, ok := args[0].(uint) if !ok { - facades.Log().Info("[面板][ProcessTask] 任务ID参数错误") + facades.Log().Tags("面板", "异步任务").With(map[string]any{ + "args": args, + }).Infof("参数错误") return nil } var task models.Task if err := facades.Orm().Query().Where("id = ?", taskID).Get(&task); err != nil { - facades.Log().Infof("[面板][ProcessTask] 获取任务%d失败: %s", taskID, err.Error()) + facades.Log().Tags("面板", "异步任务").With(map[string]any{ + "task_id": taskID, + "error": err.Error(), + }).Infof("获取任务失败") return nil } task.Status = models.TaskStatusRunning if err := facades.Orm().Query().Save(&task); err != nil { - facades.Log().Infof("[面板][ProcessTask] 更新任务%d失败: %s", taskID, err.Error()) + facades.Log().Tags("面板", "异步任务").With(map[string]any{ + "task_id": taskID, + "error": err.Error(), + }).Infof("更新任务失败") return nil } - facades.Log().Infof("[面板][ProcessTask] 开始执行任务%d", taskID) - cmd := exec.Command("bash", "-c", task.Shell) - err := cmd.Run() - if err != nil { + facades.Log().Tags("面板", "异步任务").With(map[string]any{ + "task_id": taskID, + }).Infof("开始执行任务") + + if _, err := tools.Exec(task.Shell); err != nil { task.Status = models.TaskStatusFailed if err := facades.Orm().Query().Save(&task); err != nil { - facades.Log().Infof("[面板][ProcessTask] 更新任务%d失败: %s", taskID, err.Error()) + facades.Log().Tags("面板", "异步任务").With(map[string]any{ + "task_id": taskID, + "error": err.Error(), + }).Infof("更新任务失败") return nil } - facades.Log().Infof("[面板][ProcessTask] 任务%d执行失败: %s", taskID, err.Error()) + facades.Log().Tags("面板", "异步任务").With(map[string]any{ + "task_id": taskID, + "error": err.Error(), + }).Infof("执行任务失败") return nil } task.Status = models.TaskStatusSuccess if err := facades.Orm().Query().Save(&task); err != nil { - facades.Log().Infof("[面板][ProcessTask] 更新任务%d失败: %s", taskID, err.Error()) + facades.Log().Tags("面板", "异步任务").With(map[string]any{ + "task_id": taskID, + "error": err.Error(), + }).Infof("更新任务失败") return nil } - facades.Log().Infof("[面板][ProcessTask] 任务%d执行成功", taskID) + facades.Log().Tags("面板", "异步任务").With(map[string]any{ + "task_id": taskID, + }).Infof("执行任务成功") return nil } diff --git a/internal/services/cron.go b/internal/services/cron.go index 1400fe0d..a6aad70d 100644 --- a/internal/services/cron.go +++ b/internal/services/cron.go @@ -1,6 +1,8 @@ package services import ( + "errors" + "fmt" "strings" "github.com/TheTNB/panel/app/models" @@ -17,43 +19,39 @@ func NewCronImpl() *CronImpl { // AddToSystem 添加到系统 func (r *CronImpl) AddToSystem(cron models.Cron) error { if tools.IsRHEL() { - if _, err := tools.Exec("echo \"" + cron.Time + " " + cron.Shell + " >> " + cron.Log + " 2>&1\" >> /var/spool/cron/root"); err != nil { - return err - } - if _, err := tools.Exec("systemctl restart crond"); err != nil { - return err - } - } else { - if _, err := tools.Exec("echo \"" + cron.Time + " " + cron.Shell + " >> " + cron.Log + " 2>&1\" >> /var/spool/cron/crontabs/root"); err != nil { - return err - } - if _, err := tools.Exec("systemctl restart cron"); err != nil { + if _, err := tools.Exec(fmt.Sprintf(`echo "%s %s >> %s 2>&1" >> /var/spool/cron/root`, cron.Time, cron.Shell, cron.Log)); err != nil { return err } + return tools.ServiceRestart("crond") } - return nil + if tools.IsDebian() { + if _, err := tools.Exec(fmt.Sprintf(`echo "%s %s >> %s 2>&1" >> /var/spool/cron/crontabs/root`, cron.Time, cron.Shell, cron.Log)); err != nil { + return err + } + return tools.ServiceRestart("cron") + } + + return errors.New("不支持的系统") } // DeleteFromSystem 从系统中删除 func (r *CronImpl) DeleteFromSystem(cron models.Cron) error { - // 需要转义Shell路径的/为\/ + // 需要转义 shell 路径的/为\/ cron.Shell = strings.ReplaceAll(cron.Shell, "/", "\\/") if tools.IsRHEL() { if _, err := tools.Exec("sed -i '/" + cron.Shell + "/d' /var/spool/cron/root"); err != nil { return err } - if _, err := tools.Exec("systemctl restart crond"); err != nil { - return err - } - } else { + return tools.ServiceRestart("crond") + } + + if tools.IsDebian() { if _, err := tools.Exec("sed -i '/" + cron.Shell + "/d' /var/spool/cron/crontabs/root"); err != nil { return err } - if _, err := tools.Exec("systemctl restart cron"); err != nil { - return err - } + return tools.ServiceRestart("cron") } - return nil + return errors.New("不支持的系统") } diff --git a/internal/services/plugin.go b/internal/services/plugin.go index 5242f4a4..e179afc4 100644 --- a/internal/services/plugin.go +++ b/internal/services/plugin.go @@ -58,7 +58,7 @@ func (r *PluginImpl) All() []types.Plugin { return plugins } -// GetBySlug 根据slug获取插件 +// GetBySlug 根据 slug 获取插件 func (r *PluginImpl) GetBySlug(slug string) types.Plugin { for _, item := range r.All() { if item.Slug == slug { @@ -69,7 +69,7 @@ func (r *PluginImpl) GetBySlug(slug string) types.Plugin { return types.Plugin{} } -// GetInstalledBySlug 根据slug获取已安装的插件 +// GetInstalledBySlug 根据 slug 获取已安装的插件 func (r *PluginImpl) GetInstalledBySlug(slug string) models.Plugin { var plugin models.Plugin if err := facades.Orm().Query().Where("slug", slug).Get(&plugin); err != nil { diff --git a/internal/services/setting.go b/internal/services/setting.go index 70d3a97e..4558796b 100644 --- a/internal/services/setting.go +++ b/internal/services/setting.go @@ -2,8 +2,10 @@ package services import ( - "github.com/TheTNB/panel/app/models" "github.com/goravel/framework/facades" + + "github.com/TheTNB/panel/app/models" + "github.com/TheTNB/panel/pkg/tools" ) type SettingImpl struct { @@ -17,19 +19,11 @@ func NewSettingImpl() *SettingImpl { func (r *SettingImpl) Get(key string, defaultValue ...string) string { var setting models.Setting if err := facades.Orm().Query().Where("key", key).FirstOrFail(&setting); err != nil { - if len(defaultValue) == 0 { - return "" - } - - return defaultValue[0] + return tools.FirstElement(defaultValue) } if len(setting.Value) == 0 { - if len(defaultValue) == 0 { - return "" - } - - return defaultValue[0] + return tools.FirstElement(defaultValue) } return setting.Value diff --git a/internal/services/website.go b/internal/services/website.go index 25ee7b55..081c8fd5 100644 --- a/internal/services/website.go +++ b/internal/services/website.go @@ -460,8 +460,7 @@ func (r *WebsiteImpl) SaveConfig(config requests.SaveConfig) error { return err } - _, err = tools.Exec("systemctl reload openresty") - return err + return tools.ServiceReload("openresty") } // Delete 删除网站 @@ -495,8 +494,7 @@ func (r *WebsiteImpl) Delete(id uint) error { return err } - _, err := tools.Exec("systemctl reload openresty") - return err + return tools.ServiceReload("openresty") } // GetConfig 获取网站配置 diff --git a/pkg/ssh/ssh.go b/pkg/ssh/ssh.go index 14b2d89e..326c8b9b 100644 --- a/pkg/ssh/ssh.go +++ b/pkg/ssh/ssh.go @@ -15,7 +15,7 @@ const ( PUBLICKEY ) -type SSHClientConfig struct { +type ClientConfig struct { AuthMethod AuthMethod HostAddr string User string @@ -24,8 +24,8 @@ type SSHClientConfig struct { Timeout time.Duration } -func SSHClientConfigPassword(hostAddr, user, Password string) *SSHClientConfig { - return &SSHClientConfig{ +func ClientConfigPassword(hostAddr, user, Password string) *ClientConfig { + return &ClientConfig{ Timeout: time.Second * 5, AuthMethod: PASSWORD, HostAddr: hostAddr, @@ -34,8 +34,8 @@ func SSHClientConfigPassword(hostAddr, user, Password string) *SSHClientConfig { } } -func SSHClientConfigPulicKey(hostAddr, user, keyPath string) *SSHClientConfig { - return &SSHClientConfig{ +func ClientConfigPublicKey(hostAddr, user, keyPath string) *ClientConfig { + return &ClientConfig{ Timeout: time.Second * 5, AuthMethod: PUBLICKEY, HostAddr: hostAddr, @@ -44,7 +44,7 @@ func SSHClientConfigPulicKey(hostAddr, user, keyPath string) *SSHClientConfig { } } -func NewSSHClient(conf *SSHClientConfig) (*ssh.Client, error) { +func NewSSHClient(conf *ClientConfig) (*ssh.Client, error) { config := &ssh.ClientConfig{ Timeout: conf.Timeout, User: conf.User,