From 2dfccdd2a908545f6207438c6b83acc8fcd28306 Mon Sep 17 00:00:00 2001 From: ssongliu <73214554+ssongliu@users.noreply.github.com> Date: Wed, 12 Mar 2025 22:47:03 +0800 Subject: [PATCH] fix: Fix the problem that the cache clears deleted log files by mistake (#8135) --- agent/app/repo/task.go | 5 +++ agent/app/service/backup.go | 2 +- agent/app/service/device_clean.go | 31 ++++++++++++++----- agent/app/service/snapshot_recover.go | 10 +++--- core/app/service/backup.go | 2 +- core/log/writer.go | 5 +-- frontend/src/views/ai/model/index.vue | 2 +- .../setting/backup-account/operate/index.vue | 4 ++- frontend/src/views/toolbox/clean/index.vue | 1 + 9 files changed, 45 insertions(+), 17 deletions(-) diff --git a/agent/app/repo/task.go b/agent/app/repo/task.go index 5f9f291d0..716a12539 100644 --- a/agent/app/repo/task.go +++ b/agent/app/repo/task.go @@ -21,6 +21,7 @@ type ITaskRepo interface { UpdateRunningTaskToFailed() error CountExecutingTask() (int64, error) Delete(opts ...DBOption) error + DeleteAll() error WithByID(id string) DBOption WithResourceID(id uint) DBOption @@ -118,3 +119,7 @@ func (u TaskRepo) Delete(opts ...DBOption) error { } return db.Delete(&model.Task{}).Error } + +func (u TaskRepo) DeleteAll() error { + return global.TaskDB.Where("1 = 1").Delete(&model.Task{}).Error +} diff --git a/agent/app/service/backup.go b/agent/app/service/backup.go index e17e0622a..653205595 100644 --- a/agent/app/service/backup.go +++ b/agent/app/service/backup.go @@ -247,7 +247,7 @@ func (u *BackupService) Update(req dto.BackupOperate) error { } if newBackup.Type == constant.OneDrive || newBackup.Type == constant.GoogleDrive { - if err := loadRefreshTokenByCode(&backup); err != nil { + if err := loadRefreshTokenByCode(&newBackup); err != nil { return err } } diff --git a/agent/app/service/device_clean.go b/agent/app/service/device_clean.go index 736856b6d..7678f99c3 100644 --- a/agent/app/service/device_clean.go +++ b/agent/app/service/device_clean.go @@ -244,7 +244,7 @@ func (u *DeviceService) Clean(req []dto.Clean) { continue } for _, file := range files { - if file.Name() == "1Panel.log" || file.IsDir() { + if file.Name() == "1Panel-Core.log" || file.Name() == "1Panel.log" || file.IsDir() { continue } dropFileOrDir(path.Join(global.Dir.BaseDir, logPath, file.Name())) @@ -253,10 +253,24 @@ func (u *DeviceService) Clean(req []dto.Clean) { dropFileOrDir(path.Join(global.Dir.BaseDir, logPath, item.Name)) } case "task_log": - pathItem := path.Join(global.Dir.BaseDir, logPath, item.Name) - dropFileOrDir(pathItem) - if len(item.Name) != 0 { - _ = taskRepo.Delete(repo.WithByType(item.Name)) + if len(item.Name) == 0 { + files, _ := os.ReadDir(path.Join(global.Dir.BaseDir, logPath)) + if len(files) == 0 { + continue + } + for _, file := range files { + if file.Name() == "ssl" || !file.IsDir() { + continue + } + dropFileOrDir(path.Join(global.Dir.BaseDir, logPath, file.Name())) + } + _ = taskRepo.DeleteAll() + } else { + pathItem := path.Join(global.Dir.BaseDir, logPath, item.Name) + dropFileOrDir(pathItem) + if len(item.Name) != 0 { + _ = taskRepo.Delete(repo.WithByType(item.Name)) + } } case "images": dropImages() @@ -326,7 +340,7 @@ func systemClean(taskItem *task.Task) error { if logFiles[i].IsDir() { continue } - if logFiles[i].Name() != "1Panel.log" { + if logFiles[i].Name() != "1Panel.log" && logFiles[i].Name() != "1Panel-Core.log" { dropWithTask(path.Join(logPath, logFiles[i].Name()), taskItem, &size, &fileCount) } } @@ -591,7 +605,10 @@ func loadTreeWithAllFile(isCheck bool, originalPath, treeType, pathItem string, return lists } for _, file := range files { - if treeType == "system_log" && (file.Name() == "1Panel.log" || file.IsDir()) { + if treeType == "upload" && (file.Name() == "theme" && file.IsDir()) { + continue + } + if treeType == "system_log" && (file.Name() == "1Panel-Core.log" || file.Name() == "1Panel.log" || file.IsDir()) { continue } if (treeType == "upload" || treeType == "download") && file.IsDir() && (file.Name() == "app" || file.Name() == "database" || file.Name() == "website" || file.Name() == "directory") { diff --git a/agent/app/service/snapshot_recover.go b/agent/app/service/snapshot_recover.go index 398caac0b..506fd0d8d 100644 --- a/agent/app/service/snapshot_recover.go +++ b/agent/app/service/snapshot_recover.go @@ -247,10 +247,12 @@ func backupBeforeRecover(name string, itemHelper *snapRecoverHelper) error { if err != nil { return err } - err = itemHelper.FileOp.CopyFile("/etc/docker/daemon.json", baseDir) - itemHelper.Task.LogWithStatus(i18n.GetWithName("SnapCopy", "/etc/docker/daemon.json"), err) - if err != nil { - return err + if itemHelper.FileOp.Stat("/etc/docker/daemon.json") { + err = itemHelper.FileOp.CopyFile("/etc/docker/daemon.json", baseDir) + itemHelper.Task.LogWithStatus(i18n.GetWithName("SnapCopy", "/etc/docker/daemon.json"), err) + if err != nil { + return err + } } return nil } diff --git a/core/app/service/backup.go b/core/app/service/backup.go index 2cc130316..aa3ab9952 100644 --- a/core/app/service/backup.go +++ b/core/app/service/backup.go @@ -211,7 +211,7 @@ func (u *BackupService) Update(req dto.BackupOperate) error { newBackup.Credential = string(itemCredential) if newBackup.Type == constant.OneDrive || newBackup.Type == constant.GoogleDrive { - if err := u.loadRefreshTokenByCode(&backup); err != nil { + if err := u.loadRefreshTokenByCode(&newBackup); err != nil { return err } } diff --git a/core/log/writer.go b/core/log/writer.go index 3f0d1abca..38c62d6bb 100644 --- a/core/log/writer.go +++ b/core/log/writer.go @@ -1,7 +1,6 @@ package log import ( - "github.com/1Panel-dev/1Panel/core/constant" "log" "os" "path" @@ -12,6 +11,8 @@ import ( "time" "unsafe" + "github.com/1Panel-dev/1Panel/core/constant" + "github.com/1Panel-dev/1Panel/core/global" ) @@ -85,7 +86,7 @@ func NewWriterFromConfig(c *Config) (RollingWriter, error) { return nil, err } filepath := FilePath(c) - file, err := os.OpenFile(filepath, os.O_RDWR|os.O_CREATE|os.O_APPEND, constant.DirPerm) + file, err := os.OpenFile(filepath, os.O_RDWR|os.O_CREATE|os.O_APPEND, constant.FilePerm) if err != nil { return nil, err } diff --git a/frontend/src/views/ai/model/index.vue b/frontend/src/views/ai/model/index.vue index 299ebe646..b212507b8 100644 --- a/frontend/src/views/ai/model/index.vue +++ b/frontend/src/views/ai/model/index.vue @@ -175,7 +175,7 @@ - + diff --git a/frontend/src/views/setting/backup-account/operate/index.vue b/frontend/src/views/setting/backup-account/operate/index.vue index 0017f224a..c9a9554fa 100644 --- a/frontend/src/views/setting/backup-account/operate/index.vue +++ b/frontend/src/views/setting/backup-account/operate/index.vue @@ -570,8 +570,10 @@ const changeType = async () => { switch (dialogData.value.rowData!.type) { case 'COS': case 'OSS': - case 'S3': dialogData.value.rowData.varsJson['scType'] = 'Standard'; + break; + case 'S3': + dialogData.value.rowData.varsJson['scType'] = 'STANDARD'; dialogData.value.rowData.varsJson['mode'] = 'virtual hosted'; break; case 'KODO': diff --git a/frontend/src/views/toolbox/clean/index.vue b/frontend/src/views/toolbox/clean/index.vue index 204e572db..5e347e818 100644 --- a/frontend/src/views/toolbox/clean/index.vue +++ b/frontend/src/views/toolbox/clean/index.vue @@ -641,6 +641,7 @@ function load18n(label: string) { case 'Container': case 'App': case 'System': + case 'Website': return i18n.global.t('menu.' + label.toLowerCase()); case 'RuntimeExtension': return i18n.global.t('website.runtime');