mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 03:07:20 +08:00
feat: 移除color包
This commit is contained in:
2
go.mod
2
go.mod
@@ -20,7 +20,6 @@ require (
|
||||
github.com/go-resty/resty/v2 v2.15.3
|
||||
github.com/go-sql-driver/mysql v1.8.1
|
||||
github.com/goccy/go-yaml v1.12.0
|
||||
github.com/gookit/color v1.5.4
|
||||
github.com/gorilla/websocket v1.5.3
|
||||
github.com/hashicorp/go-version v1.7.0
|
||||
github.com/klauspost/compress v1.17.11
|
||||
@@ -109,7 +108,6 @@ require (
|
||||
github.com/tklauser/go-sysconf v0.3.14 // indirect
|
||||
github.com/tklauser/numcpus v0.8.0 // indirect
|
||||
github.com/ulikunitz/xz v0.5.12 // indirect
|
||||
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.4 // indirect
|
||||
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 // indirect
|
||||
go.opentelemetry.io/otel v1.30.0 // indirect
|
||||
|
||||
4
go.sum
4
go.sum
@@ -164,8 +164,6 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||
github.com/gookit/color v1.5.4 h1:FZmqs7XOyGgCAxmWyPslpiok1k05wmY3SJTytgvYFs0=
|
||||
github.com/gookit/color v1.5.4/go.mod h1:pZJOeOS8DM43rXbp4AZo1n9zCU2qjpcRko0b6/QJi9w=
|
||||
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/grpc-ecosystem/grpc-gateway/v2 v2.22.0 h1:asbCHRVmodnJTuQ3qamDwqVOIjwqUPTYmYuemVOx+Ys=
|
||||
@@ -310,8 +308,6 @@ github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
|
||||
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||
github.com/urfave/cli/v3 v3.0.0-alpha9.1 h1:1fJU+bltkwN8lF4Sni/X0i1d8XwPIrS82ivZ8qsp/q4=
|
||||
github.com/urfave/cli/v3 v3.0.0-alpha9.1/go.mod h1:FnIeEMYu+ko8zP1F9Ypr3xkZMIDqW3DR92yUtY39q1Y=
|
||||
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8=
|
||||
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
|
||||
|
||||
@@ -6,7 +6,6 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/gookit/color"
|
||||
"github.com/urfave/cli/v3"
|
||||
|
||||
"github.com/TheTNB/panel/internal/app"
|
||||
@@ -46,6 +45,6 @@ func initCli() {
|
||||
Commands: route.Cli(),
|
||||
}
|
||||
if err := cmd.Run(context.Background(), os.Args); err != nil {
|
||||
color.Redln(fmt.Sprintf("|-%v", err))
|
||||
fmt.Println(fmt.Sprintf("|-%v", err))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/gookit/color"
|
||||
"github.com/shirou/gopsutil/disk"
|
||||
|
||||
"github.com/TheTNB/panel/internal/app"
|
||||
@@ -182,11 +181,11 @@ func (r *backupRepo) ClearExpired(path, prefix string, save int) error {
|
||||
for _, file := range toDelete {
|
||||
filePath := filepath.Join(path, file.Name())
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-清理过期文件:%s", filePath))
|
||||
fmt.Println(fmt.Sprintf("|-清理过期文件:%s", filePath))
|
||||
}
|
||||
if err = os.Remove(filePath); err != nil {
|
||||
if app.IsCli {
|
||||
color.Redln(fmt.Sprintf("|-清理失败:%v", err))
|
||||
fmt.Println(fmt.Sprintf("|-清理失败:%v", err))
|
||||
} else {
|
||||
return fmt.Errorf("清理失败:%v", err)
|
||||
}
|
||||
@@ -243,8 +242,8 @@ func (r *backupRepo) createWebsite(to string, name string) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String()))
|
||||
color.Greenln(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup)))
|
||||
fmt.Println(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String()))
|
||||
fmt.Println(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup)))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -290,8 +289,8 @@ func (r *backupRepo) createMySQL(to string, name string) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String()))
|
||||
color.Greenln(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup+".zip")))
|
||||
fmt.Println(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String()))
|
||||
fmt.Println(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup+".zip")))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -327,8 +326,8 @@ func (r *backupRepo) createPostgres(to string, name string) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String()))
|
||||
color.Greenln(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup+".zip")))
|
||||
fmt.Println(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String()))
|
||||
fmt.Println(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup+".zip")))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -354,8 +353,8 @@ func (r *backupRepo) createPanel(to string) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String()))
|
||||
color.Greenln(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup)))
|
||||
fmt.Println(fmt.Sprintf("|-备份耗时:%s", time.Since(start).String()))
|
||||
fmt.Println(fmt.Sprintf("|-已备份至文件:%s", filepath.Base(backup)))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -478,10 +477,10 @@ func (r *backupRepo) preCheckPath(to, path string) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-目标大小:%s", str.FormatBytes(float64(size))))
|
||||
color.Greenln(fmt.Sprintf("|-目标文件数:%d", files))
|
||||
color.Greenln(fmt.Sprintf("|-备份目录可用空间:%s", str.FormatBytes(float64(usage.Free))))
|
||||
color.Greenln(fmt.Sprintf("|-备份目录可用Inode:%d", usage.InodesFree))
|
||||
fmt.Println(fmt.Sprintf("|-目标大小:%s", str.FormatBytes(float64(size))))
|
||||
fmt.Println(fmt.Sprintf("|-目标文件数:%d", files))
|
||||
fmt.Println(fmt.Sprintf("|-备份目录可用空间:%s", str.FormatBytes(float64(usage.Free))))
|
||||
fmt.Println(fmt.Sprintf("|-备份目录可用Inode:%d", usage.InodesFree))
|
||||
}
|
||||
|
||||
if uint64(size) > usage.Free {
|
||||
@@ -504,9 +503,9 @@ func (r *backupRepo) preCheckDB(to string, size int64) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-目标大小:%s", str.FormatBytes(float64(size))))
|
||||
color.Greenln(fmt.Sprintf("|-备份目录可用空间:%s", str.FormatBytes(float64(usage.Free))))
|
||||
color.Greenln(fmt.Sprintf("|-备份目录可用Inode:%d", usage.InodesFree))
|
||||
fmt.Println(fmt.Sprintf("|-目标大小:%s", str.FormatBytes(float64(size))))
|
||||
fmt.Println(fmt.Sprintf("|-备份目录可用空间:%s", str.FormatBytes(float64(usage.Free))))
|
||||
fmt.Println(fmt.Sprintf("|-备份目录可用Inode:%d", usage.InodesFree))
|
||||
}
|
||||
|
||||
if uint64(size) > usage.Free {
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
|
||||
"github.com/go-rat/utils/hash"
|
||||
"github.com/goccy/go-yaml"
|
||||
"github.com/gookit/color"
|
||||
"github.com/spf13/cast"
|
||||
"gorm.io/gorm"
|
||||
|
||||
@@ -243,13 +242,13 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
|
||||
name := filepath.Base(url)
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-目标版本:%s", version))
|
||||
color.Greenln(fmt.Sprintf("|-下载链接:%s", url))
|
||||
color.Greenln(fmt.Sprintf("|-文件名:%s", name))
|
||||
fmt.Println(fmt.Sprintf("|-目标版本:%s", version))
|
||||
fmt.Println(fmt.Sprintf("|-下载链接:%s", url))
|
||||
fmt.Println(fmt.Sprintf("|-文件名:%s", name))
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-正在下载...")
|
||||
fmt.Println("|-正在下载...")
|
||||
}
|
||||
if _, err := shell.Execf("wget -T 120 -t 3 -O /tmp/%s %s", name, url); err != nil {
|
||||
return fmt.Errorf("下载失败:%w", err)
|
||||
@@ -262,39 +261,39 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-校验下载文件...")
|
||||
fmt.Println("|-校验下载文件...")
|
||||
}
|
||||
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 {
|
||||
if app.IsCli {
|
||||
color.Redln("|-清理校验文件失败:", err)
|
||||
fmt.Println("|-清理校验文件失败:", err)
|
||||
}
|
||||
return fmt.Errorf("清理校验文件失败:%w", err)
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-前置检查...")
|
||||
fmt.Println("|-前置检查...")
|
||||
}
|
||||
if io.Exists("/tmp/panel-storage.zip") {
|
||||
return errors.New("检测到 /tmp 存在临时文件,可能是上次更新失败所致,请运行 panel-cli fix 修复后重试")
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-备份面板数据...")
|
||||
fmt.Println("|-备份面板数据...")
|
||||
}
|
||||
// 备份面板
|
||||
backup := NewBackupRepo()
|
||||
if err := backup.Create(biz.BackupTypePanel, ""); err != nil {
|
||||
if app.IsCli {
|
||||
color.Redln("|-备份面板失败:", err)
|
||||
fmt.Println("|-备份面板失败:", 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 {
|
||||
if app.IsCli {
|
||||
color.Redln("|-备份面板数据失败:", err)
|
||||
fmt.Println("|-备份面板数据失败:", err)
|
||||
}
|
||||
return fmt.Errorf("备份面板数据失败:%w", err)
|
||||
}
|
||||
@@ -303,14 +302,14 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-清理旧版本...")
|
||||
fmt.Println("|-清理旧版本...")
|
||||
}
|
||||
if _, err := shell.Execf("rm -rf %s/panel/*", app.Root); err != nil {
|
||||
return fmt.Errorf("清理旧版本失败:%w", err)
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-解压新版本...")
|
||||
fmt.Println("|-解压新版本...")
|
||||
}
|
||||
if err := io.UnCompress(filepath.Join("/tmp", name), filepath.Join(app.Root, "panel"), io.Zip); err != nil {
|
||||
return fmt.Errorf("解压失败:%w", err)
|
||||
@@ -320,7 +319,7 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-恢复面板数据...")
|
||||
fmt.Println("|-恢复面板数据...")
|
||||
}
|
||||
if err := io.UnCompress("/tmp/panel-storage.zip", filepath.Join(app.Root, "panel"), io.Zip); err != nil {
|
||||
return fmt.Errorf("恢复面板数据失败:%w", err)
|
||||
@@ -330,7 +329,7 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-运行更新后脚本...")
|
||||
fmt.Println("|-运行更新后脚本...")
|
||||
}
|
||||
if _, err := shell.Execf("curl -fsLm 10 https://dl.cdn.haozi.net/panel/auto_update.sh | bash"); err != nil {
|
||||
return fmt.Errorf("运行面板更新后脚本失败:%w", err)
|
||||
@@ -346,14 +345,14 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-设置关键文件权限...")
|
||||
fmt.Println("|-设置关键文件权限...")
|
||||
}
|
||||
_ = io.Chmod("/usr/local/sbin/panel-cli", 0700)
|
||||
_ = io.Chmod("/etc/systemd/system/panel.service", 0700)
|
||||
_ = io.Chmod(filepath.Join(app.Root, "panel"), 0700)
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-更新完成")
|
||||
fmt.Println("|-更新完成")
|
||||
}
|
||||
|
||||
_, _ = shell.Execf("systemctl daemon-reload")
|
||||
@@ -366,7 +365,7 @@ func (r *settingRepo) UpdatePanel(version, url, checksum string) error {
|
||||
|
||||
func (r *settingRepo) FixPanel() error {
|
||||
if app.IsCli {
|
||||
color.Greenln("|-开始修复面板...")
|
||||
fmt.Println("|-开始修复面板...")
|
||||
}
|
||||
// 检查关键文件是否正常
|
||||
flag := false
|
||||
@@ -393,7 +392,7 @@ func (r *settingRepo) FixPanel() error {
|
||||
return fmt.Errorf("清理临时文件失败:%w", err)
|
||||
}
|
||||
if app.IsCli {
|
||||
color.Greenln("已清理临时文件,请运行 panel-cli update 更新面板")
|
||||
fmt.Println("已清理临时文件,请运行 panel-cli update 更新面板")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
@@ -413,12 +412,12 @@ func (r *settingRepo) FixPanel() error {
|
||||
}
|
||||
latest := list[0]
|
||||
if app.IsCli {
|
||||
color.Greenln(fmt.Sprintf("|-使用备份文件:%s", latest.Name))
|
||||
fmt.Println(fmt.Sprintf("|-使用备份文件:%s", latest.Name))
|
||||
}
|
||||
|
||||
// 解压备份文件
|
||||
if app.IsCli {
|
||||
color.Greenln("|-解压备份文件...")
|
||||
fmt.Println("|-解压备份文件...")
|
||||
}
|
||||
if err = io.Remove("/tmp/panel-fix"); err != nil {
|
||||
return fmt.Errorf("清理临时目录失败:%w", err)
|
||||
@@ -429,7 +428,7 @@ func (r *settingRepo) FixPanel() error {
|
||||
|
||||
// 移动文件到对应位置
|
||||
if app.IsCli {
|
||||
color.Greenln("|-移动备份文件...")
|
||||
fmt.Println("|-移动备份文件...")
|
||||
}
|
||||
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 {
|
||||
@@ -452,7 +451,7 @@ func (r *settingRepo) FixPanel() error {
|
||||
|
||||
// tmp目录下如果有storage备份,则解压回去
|
||||
if app.IsCli {
|
||||
color.Greenln("|-恢复面板数据...")
|
||||
fmt.Println("|-恢复面板数据...")
|
||||
}
|
||||
if io.Exists("/tmp/panel-storage.zip") {
|
||||
if err = io.UnCompress("/tmp/panel-storage.zip", filepath.Join(app.Root, "panel"), io.Zip); err != nil {
|
||||
@@ -472,7 +471,7 @@ func (r *settingRepo) FixPanel() error {
|
||||
|
||||
// 处理权限
|
||||
if app.IsCli {
|
||||
color.Greenln("|-设置关键文件权限...")
|
||||
fmt.Println("|-设置关键文件权限...")
|
||||
}
|
||||
if err = io.Chmod("/usr/local/etc/panel/config.yml", 0600); err != nil {
|
||||
return err
|
||||
@@ -488,7 +487,7 @@ func (r *settingRepo) FixPanel() error {
|
||||
}
|
||||
|
||||
if app.IsCli {
|
||||
color.Greenln("|-修复完成")
|
||||
fmt.Println("|-修复完成")
|
||||
}
|
||||
|
||||
tools.RestartPanel()
|
||||
|
||||
@@ -9,7 +9,6 @@ import (
|
||||
|
||||
"github.com/go-rat/utils/hash"
|
||||
"github.com/goccy/go-yaml"
|
||||
"github.com/gookit/color"
|
||||
"github.com/spf13/cast"
|
||||
"github.com/urfave/cli/v3"
|
||||
"gorm.io/gorm"
|
||||
@@ -56,7 +55,7 @@ func (s *CliService) Restart(ctx context.Context, cmd *cli.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln("面板服务已重启")
|
||||
fmt.Println("面板服务已重启")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -65,7 +64,7 @@ func (s *CliService) Stop(ctx context.Context, cmd *cli.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln("面板服务已停止")
|
||||
fmt.Println("面板服务已停止")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -74,7 +73,7 @@ func (s *CliService) Start(ctx context.Context, cmd *cli.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln("面板服务已启动")
|
||||
fmt.Println("面板服务已启动")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -132,32 +131,32 @@ func (s *CliService) Info(ctx context.Context, cmd *cli.Command) error {
|
||||
return fmt.Errorf("入口获取失败")
|
||||
}
|
||||
|
||||
color.Greenln(fmt.Sprintf("用户名: %s", user.Username))
|
||||
color.Greenln(fmt.Sprintf("密码: %s", password))
|
||||
color.Greenln(fmt.Sprintf("端口: %s", port))
|
||||
color.Greenln(fmt.Sprintf("入口: %s", entrance))
|
||||
fmt.Println(fmt.Sprintf("用户名: %s", user.Username))
|
||||
fmt.Println(fmt.Sprintf("密码: %s", password))
|
||||
fmt.Println(fmt.Sprintf("端口: %s", port))
|
||||
fmt.Println(fmt.Sprintf("入口: %s", entrance))
|
||||
|
||||
lv4, err := tools.GetLocalIPv4()
|
||||
if err == nil {
|
||||
color.Greenln(fmt.Sprintf("本地IPv4地址: %s://%s:%s%s", protocol, lv4, port, entrance))
|
||||
fmt.Println(fmt.Sprintf("本地IPv4地址: %s://%s:%s%s", protocol, lv4, port, entrance))
|
||||
}
|
||||
lv6, err := tools.GetLocalIPv6()
|
||||
if err == nil {
|
||||
color.Greenln(fmt.Sprintf("本地IPv6地址: %s://[%s]:%s%s", protocol, lv6, port, entrance))
|
||||
fmt.Println(fmt.Sprintf("本地IPv6地址: %s://[%s]:%s%s", protocol, lv6, port, entrance))
|
||||
}
|
||||
rv4, err := tools.GetPublicIPv4()
|
||||
if err == nil {
|
||||
color.Greenln(fmt.Sprintf("公网IPv4地址: %s://%s:%s%s", protocol, rv4, port, entrance))
|
||||
fmt.Println(fmt.Sprintf("公网IPv4地址: %s://%s:%s%s", protocol, rv4, port, entrance))
|
||||
}
|
||||
rv6, err := tools.GetPublicIPv6()
|
||||
if err == nil {
|
||||
color.Greenln(fmt.Sprintf("公网IPv6地址: %s://[%s]:%s%s", protocol, rv6, port, entrance))
|
||||
fmt.Println(fmt.Sprintf("公网IPv6地址: %s://[%s]:%s%s", protocol, rv6, port, entrance))
|
||||
}
|
||||
|
||||
color.Infoln("请根据自身网络情况自行选择合适的地址访问面板")
|
||||
color.Infoln(fmt.Sprintf("如无法访问,请检查服务器运营商安全组和防火墙是否放行%s端口", port))
|
||||
color.Infoln("若仍无法访问,可尝试运行 panel-cli https off 关闭面板HTTPS")
|
||||
color.Warnln("警告:关闭面板HTTPS后,面板安全性将大大降低,请谨慎操作")
|
||||
fmt.Println("请根据自身网络情况自行选择合适的地址访问面板")
|
||||
fmt.Println(fmt.Sprintf("如无法访问,请检查服务器运营商安全组和防火墙是否放行%s端口", port))
|
||||
fmt.Println("若仍无法访问,可尝试运行 panel-cli https off 关闭面板HTTPS")
|
||||
fmt.Println("警告:关闭面板HTTPS后,面板安全性将大大降低,请谨慎操作")
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -169,7 +168,7 @@ func (s *CliService) UserList(ctx context.Context, cmd *cli.Command) error {
|
||||
}
|
||||
|
||||
for _, user := range users {
|
||||
color.Greenln(fmt.Sprintf("ID: %d, 用户名: %s, 邮箱: %s, 创建日期: %s", user.ID, user.Username, user.Email, user.CreatedAt.Format("2006-01-02 15:04:05")))
|
||||
fmt.Println(fmt.Sprintf("ID: %d, 用户名: %s, 邮箱: %s, 创建日期: %s", user.ID, user.Username, user.Email, user.CreatedAt.Format("2006-01-02 15:04:05")))
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -199,7 +198,7 @@ func (s *CliService) UserName(ctx context.Context, cmd *cli.Command) error {
|
||||
return fmt.Errorf("用户名修改失败:%v", err)
|
||||
}
|
||||
|
||||
color.Greenln(fmt.Sprintf("用户 %s 修改为 %s 成功", oldUsername, newUsername))
|
||||
fmt.Println(fmt.Sprintf("用户 %s 修改为 %s 成功", oldUsername, newUsername))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -231,7 +230,7 @@ func (s *CliService) UserPassword(ctx context.Context, cmd *cli.Command) error {
|
||||
return fmt.Errorf("密码修改失败:%v", err)
|
||||
}
|
||||
|
||||
color.Greenln(fmt.Sprintf("用户 %s 密码修改成功", username))
|
||||
fmt.Println(fmt.Sprintf("用户 %s 密码修改成功", username))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -257,7 +256,7 @@ func (s *CliService) HTTPSOn(ctx context.Context, cmd *cli.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln("已开启HTTPS")
|
||||
fmt.Println("已开启HTTPS")
|
||||
return s.Restart(ctx, cmd)
|
||||
}
|
||||
|
||||
@@ -283,7 +282,7 @@ func (s *CliService) HTTPSOff(ctx context.Context, cmd *cli.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln("已关闭HTTPS")
|
||||
fmt.Println("已关闭HTTPS")
|
||||
return s.Restart(ctx, cmd)
|
||||
}
|
||||
|
||||
@@ -309,8 +308,8 @@ func (s *CliService) EntranceOn(ctx context.Context, cmd *cli.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln("已开启访问入口")
|
||||
color.Greenln(fmt.Sprintf("访问入口:%s", config.HTTP.Entrance))
|
||||
fmt.Println("已开启访问入口")
|
||||
fmt.Println(fmt.Sprintf("访问入口:%s", config.HTTP.Entrance))
|
||||
return s.Restart(ctx, cmd)
|
||||
}
|
||||
|
||||
@@ -336,7 +335,7 @@ func (s *CliService) EntranceOff(ctx context.Context, cmd *cli.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln("已关闭访问入口")
|
||||
fmt.Println("已关闭访问入口")
|
||||
return s.Restart(ctx, cmd)
|
||||
}
|
||||
|
||||
@@ -367,7 +366,7 @@ func (s *CliService) Port(ctx context.Context, cmd *cli.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln(fmt.Sprintf("已修改端口为 %d", port))
|
||||
fmt.Println(fmt.Sprintf("已修改端口为 %d", port))
|
||||
return s.Restart(ctx, cmd)
|
||||
}
|
||||
|
||||
@@ -386,7 +385,7 @@ func (s *CliService) WebsiteCreate(ctx context.Context, cmd *cli.Command) error
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln(fmt.Sprintf("网站 %s 创建成功", website.Name))
|
||||
fmt.Println(fmt.Sprintf("网站 %s 创建成功", website.Name))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -403,7 +402,7 @@ func (s *CliService) WebsiteRemove(ctx context.Context, cmd *cli.Command) error
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln(fmt.Sprintf("网站 %s 移除成功", website.Name))
|
||||
fmt.Println(fmt.Sprintf("网站 %s 移除成功", website.Name))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -422,7 +421,7 @@ func (s *CliService) WebsiteDelete(ctx context.Context, cmd *cli.Command) error
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln(fmt.Sprintf("网站 %s 删除成功", website.Name))
|
||||
fmt.Println(fmt.Sprintf("网站 %s 删除成功", website.Name))
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -432,47 +431,47 @@ func (s *CliService) WebsiteWrite(ctx context.Context, cmd *cli.Command) error {
|
||||
}
|
||||
|
||||
func (s *CliService) BackupWebsite(ctx context.Context, cmd *cli.Command) error {
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln("|-备份类型:网站")
|
||||
color.Greenln(fmt.Sprintf("|-备份目标:%s", cmd.String("name")))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println("|-备份类型:网站")
|
||||
fmt.Println(fmt.Sprintf("|-备份目标:%s", cmd.String("name")))
|
||||
if err := s.backupRepo.Create(biz.BackupTypeWebsite, cmd.String("name"), cmd.String("path")); err != nil {
|
||||
return fmt.Errorf("|-备份失败:%v", err)
|
||||
}
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *CliService) BackupDatabase(ctx context.Context, cmd *cli.Command) error {
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln("|-备份类型:数据库")
|
||||
color.Greenln(fmt.Sprintf("|-数据库:%s", cmd.String("type")))
|
||||
color.Greenln(fmt.Sprintf("|-备份目标:%s", cmd.String("name")))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println("|-备份类型:数据库")
|
||||
fmt.Println(fmt.Sprintf("|-数据库:%s", cmd.String("type")))
|
||||
fmt.Println(fmt.Sprintf("|-备份目标:%s", cmd.String("name")))
|
||||
if err := s.backupRepo.Create(biz.BackupType(cmd.String("type")), cmd.String("name"), cmd.String("path")); err != nil {
|
||||
return fmt.Errorf("|-备份失败:%v", err)
|
||||
}
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (s *CliService) BackupPanel(ctx context.Context, cmd *cli.Command) error {
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln("|-备份类型:面板")
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("★ 开始备份 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println("|-备份类型:面板")
|
||||
if err := s.backupRepo.Create(biz.BackupTypePanel, "", cmd.String("path")); err != nil {
|
||||
return fmt.Errorf("|-备份失败:%v", err)
|
||||
}
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("☆ 备份成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -485,18 +484,18 @@ func (s *CliService) BackupClear(ctx context.Context, cmd *cli.Command) error {
|
||||
path = cmd.String("path")
|
||||
}
|
||||
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("★ 开始清理 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("|-清理类型:%s", cmd.String("type")))
|
||||
color.Greenln(fmt.Sprintf("|-清理目标:%s", cmd.String("file")))
|
||||
color.Greenln(fmt.Sprintf("|-保留份数:%d", cmd.Int("save")))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("★ 开始清理 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("|-清理类型:%s", cmd.String("type")))
|
||||
fmt.Println(fmt.Sprintf("|-清理目标:%s", cmd.String("file")))
|
||||
fmt.Println(fmt.Sprintf("|-保留份数:%d", cmd.Int("save")))
|
||||
if err = s.backupRepo.ClearExpired(path, cmd.String("file"), int(cmd.Int("save"))); err != nil {
|
||||
return fmt.Errorf("|-清理失败:%v", err)
|
||||
}
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("☆ 清理成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("☆ 清理成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -510,17 +509,17 @@ func (s *CliService) CutoffWebsite(ctx context.Context, cmd *cli.Command) error
|
||||
path = cmd.String("path")
|
||||
}
|
||||
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("★ 开始切割日志 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln("|-切割类型:网站")
|
||||
color.Greenln(fmt.Sprintf("|-切割目标:%s", website.Name))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("★ 开始切割日志 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println("|-切割类型:网站")
|
||||
fmt.Println(fmt.Sprintf("|-切割目标:%s", website.Name))
|
||||
if err = s.backupRepo.CutoffLog(path, filepath.Join(app.Root, "wwwlogs", website.Name+".log")); err != nil {
|
||||
return err
|
||||
}
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("☆ 切割成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("☆ 切割成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -533,18 +532,18 @@ func (s *CliService) CutoffClear(ctx context.Context, cmd *cli.Command) error {
|
||||
path = cmd.String("path")
|
||||
}
|
||||
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("★ 开始清理切割日志 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("|-清理类型:%s", cmd.String("type")))
|
||||
color.Greenln(fmt.Sprintf("|-清理目标:%s", cmd.String("file")))
|
||||
color.Greenln(fmt.Sprintf("|-保留份数:%d", cmd.Int("save")))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("★ 开始清理切割日志 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("|-清理类型:%s", cmd.String("type")))
|
||||
fmt.Println(fmt.Sprintf("|-清理目标:%s", cmd.String("file")))
|
||||
fmt.Println(fmt.Sprintf("|-保留份数:%d", cmd.Int("save")))
|
||||
if err := s.backupRepo.ClearExpired(path, cmd.String("file"), int(cmd.Int("save"))); err != nil {
|
||||
return err
|
||||
}
|
||||
color.Greenln(s.hr)
|
||||
color.Greenln(fmt.Sprintf("☆ 清理成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
color.Greenln(s.hr)
|
||||
fmt.Println(s.hr)
|
||||
fmt.Println(fmt.Sprintf("☆ 清理成功 [%s]", time.Now().Format(time.DateTime)))
|
||||
fmt.Println(s.hr)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -559,7 +558,7 @@ func (s *CliService) AppInstall(ctx context.Context, cmd *cli.Command) error {
|
||||
return fmt.Errorf("应用安装失败:%v", err)
|
||||
}
|
||||
|
||||
color.Greenln(fmt.Sprintf("应用 %s 安装完成", slug))
|
||||
fmt.Println(fmt.Sprintf("应用 %s 安装完成", slug))
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -574,7 +573,7 @@ func (s *CliService) AppUnInstall(ctx context.Context, cmd *cli.Command) error {
|
||||
return fmt.Errorf("应用卸载失败:%v", err)
|
||||
}
|
||||
|
||||
color.Greenln(fmt.Sprintf("应用 %s 卸载完成", slug))
|
||||
fmt.Println(fmt.Sprintf("应用 %s 卸载完成", slug))
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -589,7 +588,7 @@ func (s *CliService) AppUpdate(ctx context.Context, cmd *cli.Command) error {
|
||||
return fmt.Errorf("应用更新失败:%v", err)
|
||||
}
|
||||
|
||||
color.Greenln(fmt.Sprintf("应用 %s 更新完成", slug))
|
||||
fmt.Println(fmt.Sprintf("应用 %s 更新完成", slug))
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -641,7 +640,7 @@ func (s *CliService) SyncTime(ctx context.Context, cmd *cli.Command) error {
|
||||
return err
|
||||
}
|
||||
|
||||
color.Greenln("时间同步成功")
|
||||
fmt.Println("时间同步成功")
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -653,7 +652,7 @@ func (s *CliService) ClearTask(ctx context.Context, cmd *cli.Command) error {
|
||||
return fmt.Errorf("任务清理失败:%v", err)
|
||||
}
|
||||
|
||||
color.Greenln("任务清理成功")
|
||||
fmt.Println("任务清理成功")
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user