mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 10:17:17 +08:00
feat: 仅在cli中打印信息
This commit is contained in:
@@ -186,11 +186,15 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
}
|
||||
|
||||
name := filepath.Base(url)
|
||||
color.Greenln(fmt.Sprintf("|-目标版本:%s", version))
|
||||
color.Greenln(fmt.Sprintf("|-下载链接:%s", url))
|
||||
color.Greenln(fmt.Sprintf("|-文件名:%s", name))
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-目标版本:%s", version))
|
||||
color.Greenln(fmt.Sprintf("|-下载链接:%s", url))
|
||||
color.Greenln(fmt.Sprintf("|-文件名:%s", name))
|
||||
}
|
||||
|
||||
color.Greenln("|-正在下载...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-正在下载...")
|
||||
}
|
||||
if _, err := shell.Execf("wget -T 120 -t 3 -O /tmp/%s %s", name, url); err != nil {
|
||||
return fmt.Errorf("下载失败:%w", err)
|
||||
}
|
||||
@@ -201,41 +205,57 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
return errors.New("下载文件检查失败")
|
||||
}
|
||||
|
||||
color.Greenln("|-校验下载文件...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-校验下载文件...")
|
||||
}
|
||||
if check, err := shell.Execf("cd /tmp && sha256sum -c %s --ignore-missing", name+".sha256"); check != name+": OK" || err != nil {
|
||||
return errors.New("下载文件校验失败")
|
||||
}
|
||||
if err := io.Remove(filepath.Join("/tmp", name+".sha256")); err != nil {
|
||||
color.Redln("|-清理校验文件失败:", err)
|
||||
return err
|
||||
if app.IsCli {
|
||||
color.Redln("|-清理校验文件失败:", err)
|
||||
}
|
||||
return fmt.Errorf("清理校验文件失败:%w", err)
|
||||
}
|
||||
|
||||
color.Greenln("|-前置检查...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-前置检查...")
|
||||
}
|
||||
if io.Exists("/tmp/panel-storage.zip") {
|
||||
return errors.New("检测到 /tmp 存在临时文件,可能是上次更新失败所致,请运行 panel-cli fix 修复后重试")
|
||||
}
|
||||
|
||||
color.Greenln("|-备份面板数据...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-备份面板数据...")
|
||||
}
|
||||
// 备份面板
|
||||
backup := NewBackupRepo()
|
||||
if err := backup.Create(biz.BackupTypePanel, ""); err != nil {
|
||||
color.Redln("|-备份面板失败:", err)
|
||||
return err
|
||||
if app.IsCli {
|
||||
color.Redln("|-备份面板失败:", err)
|
||||
}
|
||||
return fmt.Errorf("备份面板失败:%w", err)
|
||||
}
|
||||
if err := io.Compress([]string{filepath.Join(app.Root, "panel/storage")}, "/tmp/panel-storage.zip", io.Zip); err != nil {
|
||||
color.Redln("|-备份面板数据失败:", err)
|
||||
return err
|
||||
if app.IsCli {
|
||||
color.Redln("|-备份面板数据失败:", err)
|
||||
}
|
||||
return fmt.Errorf("备份面板数据失败:%w", err)
|
||||
}
|
||||
if !io.Exists("/tmp/panel-storage.zip") {
|
||||
return errors.New("已备份面板数据检查失败")
|
||||
}
|
||||
|
||||
color.Greenln("|-清理旧版本...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-清理旧版本...")
|
||||
}
|
||||
if _, err := shell.Execf("rm -rf %s/panel/*", app.Root); err != nil {
|
||||
return fmt.Errorf("清理旧版本失败:%w", err)
|
||||
}
|
||||
|
||||
color.Greenln("|-解压新版本...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-解压新版本...")
|
||||
}
|
||||
if err := io.UnCompress(filepath.Join("/tmp", name), filepath.Join(app.Root, "panel"), io.Zip); err != nil {
|
||||
return fmt.Errorf("解压失败:%w", err)
|
||||
}
|
||||
@@ -243,7 +263,9 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
return errors.New("解压失败,缺失文件")
|
||||
}
|
||||
|
||||
color.Greenln("|-恢复面板数据...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-恢复面板数据...")
|
||||
}
|
||||
if err := io.UnCompress("/tmp/panel-storage.zip", filepath.Join(app.Root, "panel"), io.Zip); err != nil {
|
||||
return fmt.Errorf("恢复面板数据失败:%w", err)
|
||||
}
|
||||
@@ -251,7 +273,9 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
return errors.New("恢复面板数据失败")
|
||||
}
|
||||
|
||||
color.Greenln("|-运行升级后脚本...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-运行升级后脚本...")
|
||||
}
|
||||
if _, err := shell.Execf("curl -fsLm 10 https://dl.cdn.haozi.net/panel/auto_update.sh | bash"); err != nil {
|
||||
return fmt.Errorf("运行面板升级后脚本失败:%w", err)
|
||||
}
|
||||
@@ -265,12 +289,16 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
return fmt.Errorf("移动面板命令行工具失败:%w", err)
|
||||
}
|
||||
|
||||
color.Greenln("|-设置关键文件权限...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-设置关键文件权限...")
|
||||
}
|
||||
_ = io.Chmod("/usr/local/sbin/panel-cli", 0700)
|
||||
_ = io.Chmod("/etc/systemd/system/panel.service", 0700)
|
||||
_ = io.Chmod(filepath.Join(app.Root, "panel"), 0700)
|
||||
|
||||
color.Greenln("|-升级完成")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-升级完成")
|
||||
}
|
||||
|
||||
_, _ = shell.Execf("systemctl daemon-reload")
|
||||
_ = io.Remove("/tmp/panel-storage.zip")
|
||||
@@ -281,7 +309,9 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
}
|
||||
|
||||
func (r *settingRepo) FixPanel() error {
|
||||
color.Greenln("|-开始修复面板...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-开始修复面板...")
|
||||
}
|
||||
// 检查关键文件是否正常
|
||||
flag := false
|
||||
if !io.Exists(filepath.Join(app.Root, "panel", "web")) {
|
||||
@@ -306,7 +336,9 @@ func (r *settingRepo) FixPanel() error {
|
||||
if err := io.Remove("/tmp/panel-storage.zip"); err != nil {
|
||||
return fmt.Errorf("清理临时文件失败:%w", err)
|
||||
}
|
||||
color.Greenln("已清理临时文件,请运行 panel-cli update 升级面板")
|
||||
if app.IsCli {
|
||||
color.Greenln("已清理临时文件,请运行 panel-cli update 升级面板")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
@@ -324,10 +356,14 @@ func (r *settingRepo) FixPanel() error {
|
||||
return fmt.Errorf("未找到备份文件,无法自动修复")
|
||||
}
|
||||
latest := list[0]
|
||||
color.Greenln(fmt.Sprintf("|-使用备份文件:%s", latest.Name))
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-使用备份文件:%s", latest.Name))
|
||||
}
|
||||
|
||||
// 解压备份文件
|
||||
color.Greenln("|-解压备份文件...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-解压备份文件...")
|
||||
}
|
||||
if err = io.Remove("/tmp/panel-fix"); err != nil {
|
||||
return fmt.Errorf("清理临时目录失败:%w", err)
|
||||
}
|
||||
@@ -336,7 +372,9 @@ func (r *settingRepo) FixPanel() error {
|
||||
}
|
||||
|
||||
// 移动文件到对应位置
|
||||
color.Greenln("|-移动备份文件...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-移动备份文件...")
|
||||
}
|
||||
if io.Exists(filepath.Join("/tmp/panel-fix", "panel")) && io.IsDir(filepath.Join("/tmp/panel-fix", "panel")) {
|
||||
if err = io.Remove(filepath.Join(app.Root, "panel")); err != nil {
|
||||
return fmt.Errorf("删除目录失败:%w", err)
|
||||
@@ -357,7 +395,9 @@ func (r *settingRepo) FixPanel() error {
|
||||
}
|
||||
|
||||
// tmp目录下如果有storage备份,则解压回去
|
||||
color.Greenln("|-恢复面板数据...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-恢复面板数据...")
|
||||
}
|
||||
if io.Exists("/tmp/panel-storage.zip") {
|
||||
if err = io.UnCompress("/tmp/panel-storage.zip", filepath.Join(app.Root, "panel"), io.Zip); err != nil {
|
||||
return fmt.Errorf("恢复面板数据失败:%w", err)
|
||||
@@ -375,7 +415,9 @@ func (r *settingRepo) FixPanel() error {
|
||||
}
|
||||
|
||||
// 处理权限
|
||||
color.Greenln("|-设置关键文件权限...")
|
||||
if app.IsCli {
|
||||
color.Greenln("|-设置关键文件权限...")
|
||||
}
|
||||
if err = io.Chmod("/usr/local/etc/panel/config.yml", 0600); err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -389,8 +431,10 @@ func (r *settingRepo) FixPanel() error {
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln("|-修复完成")
|
||||
tools.RestartPanel()
|
||||
if app.IsCli {
|
||||
color.Greenln("|-修复完成")
|
||||
}
|
||||
|
||||
tools.RestartPanel()
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user