diff --git a/app/console/commands/panel.go b/app/console/commands/panel.go index f1ca4ebf..e2a3868f 100644 --- a/app/console/commands/panel.go +++ b/app/console/commands/panel.go @@ -290,7 +290,10 @@ func (receiver *Panel) Handle(ctx console.Context) error { color.Redln("|-压缩失败: " + err.Error()) return nil } - tools.Remove("/tmp/" + backupFile) + if err := tools.Remove("/tmp/" + backupFile); err != nil { + color.Redln("|-删除失败: " + err.Error()) + return nil + } color.Greenln("|-压缩成功") color.Greenln("|-开始移动") if err := tools.Mv("/tmp/"+backupFile+".zip", path+"/"+backupFile+".zip"); err != nil { @@ -327,7 +330,10 @@ func (receiver *Panel) Handle(ctx console.Context) error { color.Redln("|-压缩失败: " + err.Error()) return nil } - tools.Remove("/tmp/" + backupFile) + if err := tools.Remove("/tmp/" + backupFile); err != nil { + color.Redln("|-删除失败: " + err.Error()) + return nil + } color.Greenln("|-压缩成功") color.Greenln("|-开始移动") if err := tools.Mv("/tmp/"+backupFile+".zip", path+"/"+backupFile+".zip"); err != nil { @@ -360,7 +366,10 @@ func (receiver *Panel) Handle(ctx console.Context) error { for i := cast.ToInt(save); i < len(filteredFiles); i++ { fileToDelete := filepath.Join(path, filteredFiles[i].Name()) color.Yellowln("|-清理备份: " + fileToDelete) - tools.Remove(fileToDelete) + if err := tools.Remove(fileToDelete); err != nil { + color.Redln("|-清理失败: " + err.Error()) + return nil + } } color.Greenln("|-清理完成") color.Greenln(hr) @@ -428,7 +437,10 @@ func (receiver *Panel) Handle(ctx console.Context) error { for i := cast.ToInt(save); i < len(filteredFiles); i++ { fileToDelete := filepath.Join("/www/wwwlogs", filteredFiles[i].Name()) color.Yellowln("|-清理日志: " + fileToDelete) - tools.Remove(fileToDelete) + if err := tools.Remove(fileToDelete); err != nil { + color.Redln("|-清理失败: " + err.Error()) + return nil + } } color.Greenln("|-清理完成") color.Greenln(hr) diff --git a/app/http/controllers/cron_controller.go b/app/http/controllers/cron_controller.go index ea488c0b..89bbb2e1 100644 --- a/app/http/controllers/cron_controller.go +++ b/app/http/controllers/cron_controller.go @@ -235,7 +235,9 @@ func (r *CronController) Delete(ctx http.Context) http.Response { if err := r.cron.DeleteFromSystem(cron); err != nil { return Error(ctx, http.StatusInternalServerError, err.Error()) } - tools.Remove(cron.Shell) + if err := tools.Remove(cron.Shell); err != nil { + return Error(ctx, http.StatusInternalServerError, err.Error()) + } if _, err := facades.Orm().Query().Delete(&cron); err != nil { facades.Log().Request(ctx.Request()).Tags("面板", "计划任务").With(map[string]any{ diff --git a/app/http/controllers/plugins/mysql57_controller.go b/app/http/controllers/plugins/mysql57_controller.go index 7be8e684..cc505359 100644 --- a/app/http/controllers/plugins/mysql57_controller.go +++ b/app/http/controllers/plugins/mysql57_controller.go @@ -556,7 +556,9 @@ func (r *Mysql57Controller) DeleteBackup(ctx http.Context) http.Response { backupPath := r.setting.Get(models.SettingKeyBackupPath) + "/mysql" fileName := ctx.Request().Input("name") - tools.Remove(backupPath + "/" + fileName) + if err := tools.Remove(backupPath + "/" + fileName); err != nil { + return controllers.Error(ctx, http.StatusInternalServerError, err.Error()) + } return controllers.Success(ctx, nil) } diff --git a/app/http/controllers/plugins/mysql80_controller.go b/app/http/controllers/plugins/mysql80_controller.go index eb7986b6..4617cb2e 100644 --- a/app/http/controllers/plugins/mysql80_controller.go +++ b/app/http/controllers/plugins/mysql80_controller.go @@ -556,7 +556,9 @@ func (r *Mysql80Controller) DeleteBackup(ctx http.Context) http.Response { backupPath := r.setting.Get(models.SettingKeyBackupPath) + "/mysql" fileName := ctx.Request().Input("name") - tools.Remove(backupPath + "/" + fileName) + if err := tools.Remove(backupPath + "/" + fileName); err != nil { + return controllers.Error(ctx, http.StatusInternalServerError, err.Error()) + } return controllers.Success(ctx, nil) } diff --git a/app/http/controllers/plugins/postgresql15_controller.go b/app/http/controllers/plugins/postgresql15_controller.go index a448179a..99a9e561 100644 --- a/app/http/controllers/plugins/postgresql15_controller.go +++ b/app/http/controllers/plugins/postgresql15_controller.go @@ -489,7 +489,9 @@ func (r *Postgresql15Controller) DeleteBackup(ctx http.Context) http.Response { backupPath := r.setting.Get(models.SettingKeyBackupPath) + "/postgresql" fileName := ctx.Request().Input("name") - tools.Remove(backupPath + "/" + fileName) + if err := tools.Remove(backupPath + "/" + fileName); err != nil { + return controllers.Error(ctx, http.StatusInternalServerError, err.Error()) + } return controllers.Success(ctx, nil) } diff --git a/app/http/controllers/plugins/postgresql16_controller.go b/app/http/controllers/plugins/postgresql16_controller.go index 328dca5d..58face10 100644 --- a/app/http/controllers/plugins/postgresql16_controller.go +++ b/app/http/controllers/plugins/postgresql16_controller.go @@ -489,7 +489,9 @@ func (r *Postgresql16Controller) DeleteBackup(ctx http.Context) http.Response { backupPath := r.setting.Get(models.SettingKeyBackupPath) + "/postgresql" fileName := ctx.Request().Input("name") - tools.Remove(backupPath + "/" + fileName) + if err := tools.Remove(backupPath + "/" + fileName); err != nil { + return controllers.Error(ctx, http.StatusInternalServerError, err.Error()) + } return controllers.Success(ctx, nil) } diff --git a/app/http/controllers/plugins/s3fs_controller.go b/app/http/controllers/plugins/s3fs_controller.go index b4d14e4e..ece431b2 100644 --- a/app/http/controllers/plugins/s3fs_controller.go +++ b/app/http/controllers/plugins/s3fs_controller.go @@ -192,7 +192,9 @@ func (r *S3fsController) Delete(ctx http.Context) http.Response { if mountCheck, err := tools.Exec("mount -a 2>&1"); err != nil { return controllers.Error(ctx, http.StatusInternalServerError, "检测到/etc/fstab有误: "+mountCheck) } - tools.Remove("/etc/passwd-s3fs-" + cast.ToString(mount.ID)) + if err := tools.Remove("/etc/passwd-s3fs-" + cast.ToString(mount.ID)); err != nil { + return controllers.Error(ctx, http.StatusInternalServerError, err.Error()) + } var newS3fsList []S3fsMount for _, s := range s3fsList { diff --git a/app/http/controllers/plugins/supervisor_controller.go b/app/http/controllers/plugins/supervisor_controller.go index 2e617139..90ed4687 100644 --- a/app/http/controllers/plugins/supervisor_controller.go +++ b/app/http/controllers/plugins/supervisor_controller.go @@ -471,17 +471,23 @@ func (r *SupervisorController) DeleteProcess(ctx http.Context) http.Response { var err error if tools.IsRHEL() { logPath, err = tools.Exec(`cat '/etc/supervisord.d/` + process + `.conf' | grep stdout_logfile= | awk -F "=" '{print $2}'`) - tools.Remove(`/etc/supervisord.d/` + process + `.conf`) + if err := tools.Remove(`/etc/supervisord.d/` + process + `.conf`); err != nil { + return controllers.Error(ctx, http.StatusInternalServerError, err.Error()) + } } else { logPath, err = tools.Exec(`cat '/etc/supervisor/conf.d/` + process + `.conf' | grep stdout_logfile= | awk -F "=" '{print $2}'`) - tools.Remove(`/etc/supervisor/conf.d/` + process + `.conf`) + if err := tools.Remove(`/etc/supervisor/conf.d/` + process + `.conf`); err != nil { + return controllers.Error(ctx, http.StatusInternalServerError, err.Error()) + } } if err != nil { return controllers.Error(ctx, http.StatusInternalServerError, "无法从进程"+process+"的配置文件中获取日志路径") } - tools.Remove(logPath) + if err := tools.Remove(logPath); err != nil { + return controllers.Error(ctx, http.StatusInternalServerError, err.Error()) + } if out, err := tools.Exec(`supervisorctl reread`); err != nil { return controllers.Error(ctx, http.StatusInternalServerError, out) } diff --git a/app/http/controllers/plugins/toolbox_controller.go b/app/http/controllers/plugins/toolbox_controller.go index 892ad9a8..18a3f780 100644 --- a/app/http/controllers/plugins/toolbox_controller.go +++ b/app/http/controllers/plugins/toolbox_controller.go @@ -219,7 +219,9 @@ func (r *ToolBoxController) SetTimezone(ctx http.Context) http.Response { return controllers.Error(ctx, http.StatusUnprocessableEntity, "时区不能为空") } - tools.Exec("timedatectl set-timezone " + timezone) + if out, err := tools.Exec("timedatectl set-timezone " + timezone); err != nil { + return controllers.Error(ctx, http.StatusUnprocessableEntity, out) + } return controllers.Success(ctx, nil) } @@ -274,7 +276,9 @@ func (r *ToolBoxController) SetRootPassword(ctx http.Context) http.Response { } password = strings.ReplaceAll(password, `'`, `\'`) - tools.Exec(`yes '` + password + `' | passwd root`) + if out, err := tools.Exec(`yes '` + password + `' | passwd root`); err != nil { + return controllers.Error(ctx, http.StatusUnprocessableEntity, out) + } return controllers.Success(ctx, nil) } diff --git a/app/http/controllers/website_controller.go b/app/http/controllers/website_controller.go index 27642960..70895731 100644 --- a/app/http/controllers/website_controller.go +++ b/app/http/controllers/website_controller.go @@ -312,7 +312,10 @@ func (r *WebsiteController) ClearLog(ctx http.Context) http.Response { return ErrorSystem(ctx) } - tools.Remove("/www/wwwlogs/" + website.Name + ".log") + if err := tools.Remove("/www/wwwlogs/" + website.Name + ".log"); err != nil { + return Error(ctx, http.StatusInternalServerError, err.Error()) + } + return Success(ctx, nil) } @@ -507,8 +510,8 @@ func (r *WebsiteController) DeleteBackup(ctx http.Context) http.Response { } } - if !tools.Remove(backupPath + "/" + deleteBackupRequest.Name) { - return Error(ctx, http.StatusInternalServerError, "删除备份失败") + if err := tools.Remove(backupPath + "/" + deleteBackupRequest.Name); err != nil { + return Error(ctx, http.StatusInternalServerError, err.Error()) } return Success(ctx, nil) diff --git a/app/services/backup.go b/app/services/backup.go index f87dc6dd..be3b6459 100644 --- a/app/services/backup.go +++ b/app/services/backup.go @@ -184,7 +184,9 @@ func (s *BackupImpl) MysqlBackup(database string) error { if _, err := tools.Exec("cd " + backupPath + " && zip -r " + backupPath + "/" + backupFile + ".zip " + backupFile); err != nil { return err } - tools.Remove(backupPath + "/" + backupFile) + if err := tools.Remove(backupPath + "/" + backupFile); err != nil { + return err + } return os.Unsetenv("MYSQL_PWD") } @@ -302,8 +304,7 @@ func (s *BackupImpl) PostgresqlBackup(database string) error { return err } - tools.Remove(backupPath + "/" + backupFile) - return nil + return tools.Remove(backupPath + "/" + backupFile) } // PostgresqlRestore PostgreSQL恢复 diff --git a/app/services/website.go b/app/services/website.go index c8b42ecb..e1dc10c6 100644 --- a/app/services/website.go +++ b/app/services/website.go @@ -420,7 +420,9 @@ func (r *WebsiteImpl) SaveConfig(config requests.SaveConfig) error { } } else { if tools.Exists(root + ".user.ini") { - tools.Remove(root + ".user.ini") + if err := tools.Remove(root + ".user.ini"); err != nil { + return err + } } } @@ -534,11 +536,21 @@ func (r *WebsiteImpl) Delete(id uint) error { return err } - tools.Remove("/www/server/vhost/" + website.Name + ".conf") - tools.Remove("/www/server/vhost/rewrite/" + website.Name + ".conf") - tools.Remove("/www/server/vhost/ssl/" + website.Name + ".pem") - tools.Remove("/www/server/vhost/ssl/" + website.Name + ".key") - tools.Remove(website.Path) + if err := tools.Remove("/www/server/vhost/" + website.Name + ".conf"); err != nil { + return err + } + if err := tools.Remove("/www/server/vhost/rewrite/" + website.Name + ".conf"); err != nil { + return err + } + if err := tools.Remove("/www/server/vhost/ssl/" + website.Name + ".pem"); err != nil { + return err + } + if err := tools.Remove("/www/server/vhost/ssl/" + website.Name + ".key"); err != nil { + return err + } + if err := tools.Remove(website.Path); err != nil { + return err + } _, err := tools.Exec("systemctl reload openresty") return err diff --git a/pkg/tools/system.go b/pkg/tools/system.go index eba53eb4..1a6016c6 100644 --- a/pkg/tools/system.go +++ b/pkg/tools/system.go @@ -31,13 +31,8 @@ func Read(path string) (string, error) { } // Remove 删除文件/目录 -// TODO 重构带 error 返回 -func Remove(path string) bool { - if err := os.RemoveAll(path); err != nil { - return false - } - - return true +func Remove(path string) error { + return os.RemoveAll(path) } // Exec 执行 shell 命令 diff --git a/pkg/tools/system_test.go b/pkg/tools/system_test.go index eae141c4..86015de4 100644 --- a/pkg/tools/system_test.go +++ b/pkg/tools/system_test.go @@ -46,7 +46,7 @@ func (s *SystemHelperTestSuite) TestRemove() { err := os.WriteFile(filePath, []byte("test data"), 0644) s.Nil(err) - s.True(Remove(filePath)) + s.Nil(Remove(filePath)) } func (s *SystemHelperTestSuite) TestExec() {