diff --git a/backend/app/service/app_utils.go b/backend/app/service/app_utils.go index c30dee3a9..89ef72843 100644 --- a/backend/app/service/app_utils.go +++ b/backend/app/service/app_utils.go @@ -5,11 +5,6 @@ import ( "encoding/base64" "encoding/json" "fmt" - "github.com/1Panel-dev/1Panel/backend/app/api/v1/helper" - "github.com/1Panel-dev/1Panel/backend/app/dto/request" - "github.com/1Panel-dev/1Panel/backend/i18n" - "github.com/subosito/gotenv" - "gopkg.in/yaml.v3" "math" "net/http" "os" @@ -20,6 +15,12 @@ import ( "strconv" "strings" + "github.com/1Panel-dev/1Panel/backend/app/api/v1/helper" + "github.com/1Panel-dev/1Panel/backend/app/dto/request" + "github.com/1Panel-dev/1Panel/backend/i18n" + "github.com/subosito/gotenv" + "gopkg.in/yaml.v3" + "github.com/1Panel-dev/1Panel/backend/app/repo" "github.com/1Panel-dev/1Panel/backend/utils/env" @@ -187,13 +188,13 @@ func deleteAppInstall(install model.AppInstall, deleteBackup bool, forceDelete b if install.App.Key == constant.AppMysql { _ = mysqlRepo.DeleteAll(ctx) } - uploadDir := fmt.Sprintf("%s/1panel/uploads/app/%s/%s", global.CONF.System.BaseDir, install.App.Key, install.Name) + uploadDir := path.Join(global.CONF.System.BaseDir, fmt.Sprintf("1panel/uploads/app/%s/%s", install.App.Key, install.Name)) if _, err := os.Stat(uploadDir); err == nil { _ = os.RemoveAll(uploadDir) } if deleteBackup { localDir, _ := loadLocalDir() - backupDir := fmt.Sprintf("%s/app/%s/%s", localDir, install.App.Key, install.Name) + backupDir := path.Join(localDir, fmt.Sprintf("app/%s/%s", install.App.Key, install.Name)) if _, err := os.Stat(backupDir); err == nil { _ = os.RemoveAll(backupDir) } diff --git a/backend/app/service/backup_app.go b/backend/app/service/backup_app.go index 8bfead38c..c93075108 100644 --- a/backend/app/service/backup_app.go +++ b/backend/app/service/backup_app.go @@ -34,7 +34,7 @@ func (u *BackupService) AppBackup(req dto.CommonBackup) error { } timeNow := time.Now().Format("20060102150405") - backupDir := fmt.Sprintf("%s/app/%s/%s", localDir, req.Name, req.DetailName) + backupDir := path.Join(localDir, fmt.Sprintf("app/%s/%s", req.Name, req.DetailName)) fileName := fmt.Sprintf("%s_%s.tar.gz", req.DetailName, timeNow) if err := handleAppBackup(&install, backupDir, fileName); err != nil { @@ -149,7 +149,7 @@ func handleAppRecover(install *model.AppInstall, recoverFile string, isRollback } if !isRollback { - rollbackFile := fmt.Sprintf("%s/original/app/%s_%s.tar.gz", global.CONF.System.BaseDir, install.Name, time.Now().Format("20060102150405")) + rollbackFile := path.Join(global.CONF.System.BaseDir, fmt.Sprintf("original/app/%s_%s.tar.gz", install.Name, time.Now().Format("20060102150405"))) if err := handleAppBackup(install, path.Dir(rollbackFile), path.Base(rollbackFile)); err != nil { return fmt.Errorf("backup app %s for rollback before recover failed, err: %v", install.Name, err) } diff --git a/backend/app/service/backup_mysql.go b/backend/app/service/backup_mysql.go index c302f1dbc..63870660b 100644 --- a/backend/app/service/backup_mysql.go +++ b/backend/app/service/backup_mysql.go @@ -23,7 +23,7 @@ func (u *BackupService) MysqlBackup(req dto.CommonBackup) error { } timeNow := time.Now().Format("20060102150405") - targetDir := fmt.Sprintf("%s/database/mysql/%s/%s", localDir, req.Name, req.DetailName) + targetDir := path.Join(localDir, fmt.Sprintf("database/mysql/%s/%s", req.Name, req.DetailName)) fileName := fmt.Sprintf("%s_%s.sql.gz", req.DetailName, timeNow) if err := handleMysqlBackup(req.DetailName, targetDir, fileName); err != nil { @@ -137,7 +137,7 @@ func handleMysqlRecover(req dto.CommonRecover, isRollback bool) error { } if isRollback { - rollbackFile := fmt.Sprintf("%s/original/database/%s_%s.sql.gz", global.CONF.System.BaseDir, req.DetailName, time.Now().Format("20060102150405")) + rollbackFile := path.Join(global.CONF.System.BaseDir, fmt.Sprintf("original/database/%s_%s.sql.gz", req.DetailName, time.Now().Format("20060102150405"))) if err := cli.Backup(client.BackupInfo{ Name: req.DetailName, Format: dbInfo.Format, diff --git a/backend/app/service/backup_redis.go b/backend/app/service/backup_redis.go index 09e9cae77..be0c4c69a 100644 --- a/backend/app/service/backup_redis.go +++ b/backend/app/service/backup_redis.go @@ -43,7 +43,7 @@ func (u *BackupService) RedisBackup() error { fileName = fmt.Sprintf("%s.tar.gz", timeNow) } } - backupDir := fmt.Sprintf("%s/database/redis/%s", localDir, redisInfo.Name) + backupDir := path.Join(localDir, fmt.Sprintf("database/redis/%s", redisInfo.Name)) if err := handleRedisBackup(redisInfo, backupDir, fileName); err != nil { return err } @@ -143,7 +143,7 @@ func handleRedisRecover(redisInfo *repo.RootInfo, recoverFile string, isRollback suffix = "tar.gz" } } - rollbackFile := fmt.Sprintf("%s/original/database/redis/%s_%s.%s", global.CONF.System.BaseDir, redisInfo.Name, time.Now().Format("20060102150405"), suffix) + rollbackFile := path.Join(global.CONF.System.BaseDir, fmt.Sprintf("original/database/redis/%s_%s.%s", redisInfo.Name, time.Now().Format("20060102150405"), suffix)) if err := handleRedisBackup(redisInfo, path.Dir(rollbackFile), path.Base(rollbackFile)); err != nil { return fmt.Errorf("backup database %s for rollback before recover failed, err: %v", redisInfo.Name, err) } diff --git a/backend/app/service/backup_website.go b/backend/app/service/backup_website.go index 43a4f311d..b25645917 100644 --- a/backend/app/service/backup_website.go +++ b/backend/app/service/backup_website.go @@ -31,7 +31,7 @@ func (u *BackupService) WebsiteBackup(req dto.CommonBackup) error { } timeNow := time.Now().Format("20060102150405") - backupDir := fmt.Sprintf("%s/website/%s", localDir, req.Name) + backupDir := path.Join(localDir, fmt.Sprintf("website/%s", req.Name)) fileName := fmt.Sprintf("%s_%s.tar.gz", website.PrimaryDomain, timeNow) if err := handleWebsiteBackup(&website, backupDir, fileName); err != nil { return err @@ -103,7 +103,7 @@ func handleWebsiteRecover(website *model.Website, recoverFile string, isRollback isOk := false if !isRollback { - rollbackFile := fmt.Sprintf("%s/original/website/%s_%s.tar.gz", global.CONF.System.BaseDir, website.Alias, time.Now().Format("20060102150405")) + rollbackFile := path.Join(global.CONF.System.BaseDir, fmt.Sprintf("original/website/%s_%s.tar.gz", website.Alias, time.Now().Format("20060102150405"))) if err := handleWebsiteBackup(website, path.Dir(rollbackFile), path.Base(rollbackFile)); err != nil { return fmt.Errorf("backup website %s for rollback before recover failed, err: %v", website.Alias, err) } diff --git a/backend/app/service/cronjob_helper.go b/backend/app/service/cronjob_helper.go index 72a9cce74..1c9c67573 100644 --- a/backend/app/service/cronjob_helper.go +++ b/backend/app/service/cronjob_helper.go @@ -124,7 +124,7 @@ func (u *CronjobService) handleBackup(cronjob *model.Cronjob, startTime time.Tim return strings.Join(paths, ","), err default: fileName := fmt.Sprintf("directory%s_%s.tar.gz", strings.ReplaceAll(cronjob.SourceDir, "/", "_"), startTime.Format("20060102150405")) - backupDir := fmt.Sprintf("%s/%s/%s", localDir, cronjob.Type, cronjob.Name) + backupDir := path.Join(localDir, fmt.Sprintf("%s/%s", cronjob.Type, cronjob.Name)) itemFileDir := fmt.Sprintf("%s/%s", cronjob.Type, cronjob.Name) global.LOG.Infof("handle tar %s to %s", backupDir, fileName) if err := handleTar(cronjob.SourceDir, backupDir, fileName, cronjob.ExclusionRules); err != nil { @@ -285,7 +285,7 @@ func (u *CronjobService) handleDatabase(cronjob model.Cronjob, backup model.Back return paths, err } record.Name = dbInfo.MysqlName - backupDir := fmt.Sprintf("%s/database/mysql/%s/%s", localDir, record.Name, dbName) + backupDir := path.Join(localDir, fmt.Sprintf("database/mysql/%s/%s", record.Name, dbName)) record.FileName = fmt.Sprintf("db_%s_%s.sql.gz", dbName, startTime.Format("20060102150405")) if err = handleMysqlBackup(dbName, backupDir, record.FileName); err != nil { return paths, err @@ -429,7 +429,7 @@ func (u *CronjobService) handleWebsite(cronjob model.Cronjob, backup model.Backu if err != nil { return paths, err } - backupDir := fmt.Sprintf("%s/website/%s", localDir, website.PrimaryDomain) + backupDir := path.Join(localDir, fmt.Sprintf("website/%s", website.PrimaryDomain)) record.FileDir = backupDir itemFileDir := strings.TrimPrefix(backupDir, localDir+"/") if !cronjob.KeepLocal && backup.Type != "LOCAL" { diff --git a/backend/app/service/database_mysql.go b/backend/app/service/database_mysql.go index a47f1f2d7..e2beb9e0b 100644 --- a/backend/app/service/database_mysql.go +++ b/backend/app/service/database_mysql.go @@ -7,6 +7,7 @@ import ( "fmt" "os" "os/exec" + "path" "regexp" "strconv" "strings" @@ -221,7 +222,7 @@ func (u *MysqlService) Delete(ctx context.Context, req dto.MysqlDBDelete) error return err } - uploadDir := fmt.Sprintf("%s/1panel/uploads/database/mysql/%s/%s", global.CONF.System.BaseDir, app.Name, db.Name) + uploadDir := path.Join(global.CONF.System.BaseDir, fmt.Sprintf("1panel/uploads/database/mysql/%s/%s", app.Name, db.Name)) if _, err := os.Stat(uploadDir); err == nil { _ = os.RemoveAll(uploadDir) } @@ -230,7 +231,7 @@ func (u *MysqlService) Delete(ctx context.Context, req dto.MysqlDBDelete) error if err != nil && !req.ForceDelete { return err } - backupDir := fmt.Sprintf("%s/database/mysql/%s/%s", localDir, db.MysqlName, db.Name) + backupDir := path.Join(localDir, fmt.Sprintf("database/mysql/%s/%s", db.MysqlName, db.Name)) if _, err := os.Stat(backupDir); err == nil { _ = os.RemoveAll(backupDir) } diff --git a/backend/app/service/database_redis.go b/backend/app/service/database_redis.go index 18b13a9e5..9bf0b7f06 100644 --- a/backend/app/service/database_redis.go +++ b/backend/app/service/database_redis.go @@ -6,6 +6,7 @@ import ( "fmt" "os" "os/exec" + "path" "path/filepath" "strings" @@ -163,7 +164,7 @@ func (u *RedisService) SearchBackupListWithPage(req dto.PageInfo) (int64, interf if err != nil { return 0, nil, err } - backupDir := fmt.Sprintf("%s/database/redis/%s", localDir, redisInfo.Name) + backupDir := path.Join(localDir, fmt.Sprintf("database/redis/%s", redisInfo.Name)) _ = filepath.Walk(backupDir, func(path string, info os.FileInfo, err error) error { if err != nil { return nil diff --git a/backend/app/service/setting.go b/backend/app/service/setting.go index 87a7931f3..dc3764e2b 100644 --- a/backend/app/service/setting.go +++ b/backend/app/service/setting.go @@ -7,6 +7,7 @@ import ( "encoding/pem" "fmt" "os" + "path" "strconv" "strings" "time" @@ -172,7 +173,7 @@ func (u *SettingService) UpdatePort(port uint) error { } func (u *SettingService) UpdateSSL(c *gin.Context, req dto.SSLUpdate) error { - secretDir := global.CONF.System.BaseDir + "/1panel/secret/" + secretDir := path.Join(global.CONF.System.BaseDir, "1panel/secret/") if req.SSL == "disable" { if err := settingRepo.Update("SSL", "disable"); err != nil { return err @@ -278,16 +279,16 @@ func (u *SettingService) LoadFromCert() (*dto.SSLInfo, error) { } switch sslType.Value { case "import": - if _, err := os.Stat(global.CONF.System.BaseDir + "/1panel/secret/server.crt"); err != nil { + if _, err := os.Stat(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.crt")); err != nil { return nil, fmt.Errorf("load server.crt file failed, err: %v", err) } - certFile, _ := os.ReadFile(global.CONF.System.BaseDir + "/1panel/secret/server.crt") + certFile, _ := os.ReadFile(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.crt")) data.Cert = string(certFile) - if _, err := os.Stat(global.CONF.System.BaseDir + "/1panel/secret/server.key"); err != nil { + if _, err := os.Stat(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.key")); err != nil { return nil, fmt.Errorf("load server.key file failed, err: %v", err) } - keyFile, _ := os.ReadFile(global.CONF.System.BaseDir + "/1panel/secret/server.key") + keyFile, _ := os.ReadFile(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.key")) data.Key = string(keyFile) case "select": sslID, err := settingRepo.Get(settingRepo.WithByKey("SSLID")) @@ -341,7 +342,7 @@ func (u *SettingService) UpdatePassword(c *gin.Context, old, new string) error { func loadInfoFromCert() (*dto.SSLInfo, error) { var info dto.SSLInfo - certFile := global.CONF.System.BaseDir + "/1panel/secret/server.crt" + certFile := path.Join(global.CONF.System.BaseDir, "1panel/secret/server.crt") if _, err := os.Stat(certFile); err != nil { return &info, err } @@ -374,11 +375,11 @@ func loadInfoFromCert() (*dto.SSLInfo, error) { } func checkCertValid(domain string) error { - certificate, err := os.ReadFile(global.CONF.System.BaseDir + "/1panel/secret/server.crt.tmp") + certificate, err := os.ReadFile(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.crt.tmp")) if err != nil { return err } - key, err := os.ReadFile(global.CONF.System.BaseDir + "/1panel/secret/server.key.tmp") + key, err := os.ReadFile(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.key.tmp")) if err != nil { return err } diff --git a/backend/app/service/snapshot.go b/backend/app/service/snapshot.go index 21b82f541..566af243b 100644 --- a/backend/app/service/snapshot.go +++ b/backend/app/service/snapshot.go @@ -5,6 +5,7 @@ import ( "encoding/json" "fmt" "os" + "path" "strings" "time" @@ -126,7 +127,7 @@ func (u *SnapshotService) SnapshotCreate(req dto.SnapshotCreate) error { timeNow := time.Now().Format("20060102150405") versionItem, _ := settingRepo.Get(settingRepo.WithByKey("SystemVersion")) - rootDir := fmt.Sprintf("%s/system/1panel_%s_%s", localDir, versionItem.Value, timeNow) + rootDir := path.Join(localDir, fmt.Sprintf("system/1panel_%s_%s", versionItem.Value, timeNow)) backupPanelDir := fmt.Sprintf("%s/1panel", rootDir) _ = os.MkdirAll(backupPanelDir, os.ModePerm) backupDockerDir := fmt.Sprintf("%s/docker", rootDir) @@ -180,7 +181,8 @@ func (u *SnapshotService) SnapshotCreate(req dto.SnapshotCreate) error { return } - if err := u.handlePanelDatas(snap.ID, fileOp, "snapshot", global.CONF.System.BaseDir+"/1panel", backupPanelDir, localDir, dockerDataDir); err != nil { + dataDir := path.Join(global.CONF.System.BaseDir, "1panel") + if err := u.handlePanelDatas(snap.ID, fileOp, "snapshot", dataDir, backupPanelDir, localDir, dockerDataDir); err != nil { updateSnapshotStatus(snap.ID, constant.StatusFailed, err.Error()) return } @@ -190,7 +192,7 @@ func (u *SnapshotService) SnapshotCreate(req dto.SnapshotCreate) error { BaseDir: global.CONF.System.BaseDir, DockerDataDir: dockerDataDir, BackupDataDir: localDir, - PanelDataDir: global.CONF.System.BaseDir + "/1panel", + PanelDataDir: dataDir, LiveRestoreEnabled: liveRestoreStatus, } if err := u.saveJson(snapJson, rootDir); err != nil { @@ -198,7 +200,7 @@ func (u *SnapshotService) SnapshotCreate(req dto.SnapshotCreate) error { return } - if err := handleTar(rootDir, fmt.Sprintf("%s/system", localDir), fmt.Sprintf("1panel_%s_%s.tar.gz", versionItem.Value, timeNow), ""); err != nil { + if err := handleTar(rootDir, path.Join(localDir, "system"), fmt.Sprintf("1panel_%s_%s.tar.gz", versionItem.Value, timeNow), ""); err != nil { updateSnapshotStatus(snap.ID, constant.StatusFailed, err.Error()) return } @@ -207,7 +209,7 @@ func (u *SnapshotService) SnapshotCreate(req dto.SnapshotCreate) error { global.LOG.Infof("start to upload snapshot to %s, please wait", backup.Type) _ = snapshotRepo.Update(snap.ID, map[string]interface{}{"status": constant.StatusUploading}) - localPath := fmt.Sprintf("%s/system/1panel_%s_%s.tar.gz", localDir, versionItem.Value, timeNow) + localPath := path.Join(localDir, fmt.Sprintf("system/1panel_%s_%s.tar.gz", versionItem.Value, timeNow)) itemBackupPath := strings.TrimLeft(backup.BackupPath, "/") itemBackupPath = strings.TrimRight(itemBackupPath, "/") if ok, err := backupAccount.Upload(localPath, fmt.Sprintf("%s/system_snapshot/1panel_%s_%s.tar.gz", itemBackupPath, versionItem.Value, timeNow)); err != nil || !ok { @@ -216,7 +218,7 @@ func (u *SnapshotService) SnapshotCreate(req dto.SnapshotCreate) error { return } _ = snapshotRepo.Update(snap.ID, map[string]interface{}{"status": constant.StatusSuccess}) - _ = os.RemoveAll(fmt.Sprintf("%s/system/1panel_%s_%s.tar.gz", localDir, versionItem.Value, timeNow)) + _ = os.RemoveAll(path.Join(localDir, fmt.Sprintf("system/1panel_%s_%s.tar.gz", versionItem.Value, timeNow))) global.LOG.Infof("upload snapshot to %s success", backup.Type) }() @@ -248,7 +250,7 @@ func (u *SnapshotService) SnapshotRecover(req dto.SnapshotRecover) error { if err != nil { return err } - baseDir := fmt.Sprintf("%s/system/%s", localDir, snap.Name) + baseDir := path.Join(localDir, fmt.Sprintf("system/%s", snap.Name)) if _, err := os.Stat(baseDir); err != nil && os.IsNotExist(err) { _ = os.MkdirAll(baseDir, os.ModePerm) } @@ -300,7 +302,7 @@ func (u *SnapshotService) SnapshotRecover(req dto.SnapshotRecover) error { _ = os.MkdirAll(u.OriginalPath, os.ModePerm) snapJson.OldBaseDir = global.CONF.System.BaseDir - snapJson.OldPanelDataDir = global.CONF.System.BaseDir + "/1panel" + snapJson.OldPanelDataDir = path.Join(global.CONF.System.BaseDir, "1panel") snapJson.OldBackupDataDir = localDir recoverPanelDir := fmt.Sprintf("%s/%s/1panel", baseDir, snap.Name) liveRestore := false @@ -397,7 +399,7 @@ func (u *SnapshotService) SnapshotRollback(req dto.SnapshotRecover) error { } fileOp := files.NewFileOp() - rootDir := fmt.Sprintf("%s/system/%s/%s", localDir, snap.Name, snap.Name) + rootDir := path.Join(localDir, fmt.Sprintf("system/%s/%s", snap.Name, snap.Name)) _ = settingRepo.Update("SystemStatus", "Rollbacking") _ = snapshotRepo.Update(snap.ID, map[string]interface{}{"rollback_status": constant.StatusWaiting}) @@ -728,8 +730,9 @@ func (u *SnapshotService) Delete(req dto.BatchDeleteReq) error { return err } for _, snap := range backups { - if _, err := os.Stat(fmt.Sprintf("%s/system/%s/%s.tar.gz", localDir, snap.Name, snap.Name)); err == nil { - _ = os.Remove(fmt.Sprintf("%s/system/%s/%s.tar.gz", localDir, snap.Name, snap.Name)) + itemFile := path.Join(localDir, fmt.Sprintf("system/%s/%s.tar.gz", snap.Name, snap.Name)) + if _, err := os.Stat(itemFile); err == nil { + _ = os.Remove(itemFile) } } if err := snapshotRepo.Delete(commonRepo.WithIdsIn(req.Ids)); err != nil { diff --git a/backend/app/service/website.go b/backend/app/service/website.go index 61d11401f..c127bac08 100644 --- a/backend/app/service/website.go +++ b/backend/app/service/website.go @@ -9,8 +9,6 @@ import ( "encoding/pem" "errors" "fmt" - "github.com/1Panel-dev/1Panel/backend/utils/compose" - "github.com/1Panel-dev/1Panel/backend/utils/env" "os" "path" "reflect" @@ -19,6 +17,9 @@ import ( "strings" "time" + "github.com/1Panel-dev/1Panel/backend/utils/compose" + "github.com/1Panel-dev/1Panel/backend/utils/env" + "github.com/1Panel-dev/1Panel/backend/app/api/v1/helper" "github.com/1Panel-dev/1Panel/backend/utils/cmd" "github.com/1Panel-dev/1Panel/backend/utils/common" @@ -424,13 +425,13 @@ func (w WebsiteService) DeleteWebsite(req request.WebsiteDelete) error { if req.DeleteBackup { localDir, _ := loadLocalDir() - backupDir := fmt.Sprintf("%s/website/%s", localDir, website.Alias) + backupDir := path.Join(localDir, fmt.Sprintf("website/%s", website.Alias)) if _, err := os.Stat(backupDir); err == nil { _ = os.RemoveAll(backupDir) } global.LOG.Infof("delete website %s backups successful", website.Alias) } - uploadDir := fmt.Sprintf("%s/1panel/uploads/website/%s", global.CONF.System.BaseDir, website.Alias) + uploadDir := path.Join(global.CONF.System.BaseDir, fmt.Sprintf("1panel/uploads/website/%s", website.Alias)) if _, err := os.Stat(uploadDir); err == nil { _ = os.RemoveAll(uploadDir) } diff --git a/backend/init/viper/viper.go b/backend/init/viper/viper.go index 896bb957b..1b2a5d381 100644 --- a/backend/init/viper/viper.go +++ b/backend/init/viper/viper.go @@ -47,9 +47,6 @@ func Init() { password = loadParams("ORIGINAL_PASSWORD") entrance = loadParams("ORIGINAL_ENTRANCE") - if strings.HasSuffix(baseDir, "/") { - baseDir = baseDir[:strings.LastIndex(baseDir, "/")] - } reader := bytes.NewReader(conf.AppYaml) if err := v.ReadConfig(reader); err != nil { panic(fmt.Errorf("Fatal error config file: %s \n", err)) @@ -88,12 +85,12 @@ func Init() { global.CONF = serverConfig global.CONF.System.BaseDir = baseDir global.CONF.System.IsDemo = v.GetBool("system.is_demo") - global.CONF.System.DataDir = global.CONF.System.BaseDir + "/1panel" - global.CONF.System.Cache = global.CONF.System.DataDir + "/cache" - global.CONF.System.Backup = global.CONF.System.DataDir + "/backup" - global.CONF.System.DbPath = global.CONF.System.DataDir + "/db" - global.CONF.System.LogPath = global.CONF.System.DataDir + "/log" - global.CONF.System.TmpDir = global.CONF.System.DataDir + "/tmp" + global.CONF.System.DataDir = path.Join(global.CONF.System.BaseDir, "1panel") + global.CONF.System.Cache = path.Join(global.CONF.System.DataDir, "cache") + global.CONF.System.Backup = path.Join(global.CONF.System.DataDir, "backup") + global.CONF.System.DbPath = path.Join(global.CONF.System.DataDir, "db") + global.CONF.System.LogPath = path.Join(global.CONF.System.DataDir, "log") + global.CONF.System.TmpDir = path.Join(global.CONF.System.DataDir, "tmp") global.CONF.System.Port = port global.CONF.System.Version = version global.CONF.System.Username = username diff --git a/backend/server/server.go b/backend/server/server.go index 032a06a3b..8b4a6b78f 100644 --- a/backend/server/server.go +++ b/backend/server/server.go @@ -6,6 +6,7 @@ import ( "fmt" "net/http" "os" + "path" "time" "github.com/1Panel-dev/1Panel/backend/init/app" @@ -58,11 +59,11 @@ func Start() { panic(err) } } else { - certificate, err := os.ReadFile(global.CONF.System.BaseDir + "/1panel/secret/server.crt") + certificate, err := os.ReadFile(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.crt")) if err != nil { panic(err) } - key, err := os.ReadFile(global.CONF.System.BaseDir + "/1panel/secret/server.key") + key, err := os.ReadFile(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.key")) if err != nil { panic(err) } diff --git a/backend/utils/ssl/ssl.go b/backend/utils/ssl/ssl.go index 15a48f0fc..1f0a9916d 100644 --- a/backend/utils/ssl/ssl.go +++ b/backend/utils/ssl/ssl.go @@ -9,6 +9,7 @@ import ( "math/big" "net" "os" + "path" "time" "github.com/1Panel-dev/1Panel/backend/global" @@ -90,7 +91,7 @@ func GenerateSSL(domain string) error { pemBytes = append(pemBytes, pem.EncodeToMemory(clientCertBlock)...) pemBytes = append(pemBytes, pem.EncodeToMemory(interCertBlock)...) pemBytes = append(pemBytes, pem.EncodeToMemory(rootCertBlock)...) - certOut, err := os.OpenFile(global.CONF.System.BaseDir+"/1panel/secret/server.crt.tmp", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) + certOut, err := os.OpenFile(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.crt.tmp"), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) if err != nil { return err } @@ -99,7 +100,7 @@ func GenerateSSL(domain string) error { return err } - keyOut, err := os.OpenFile(global.CONF.System.BaseDir+"/1panel/secret/server.key.tmp", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) + keyOut, err := os.OpenFile(path.Join(global.CONF.System.BaseDir, "1panel/secret/server.key.tmp"), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) if err != nil { return err }