2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-06 10:07:15 +08:00

feat: 更新日志接口

This commit is contained in:
耗子
2023-10-25 21:42:41 +08:00
parent a4f1c8c6fa
commit 5b83a2c067
4 changed files with 50 additions and 23 deletions

View File

@@ -118,33 +118,33 @@ func (c *InfoController) CountInfo(ctx http.Context) http.Response {
}
db, err := sql.Open("mysql", "root:"+rootPassword+"@unix(/tmp/mysql.sock)/")
defer db.Close()
if err != nil {
facades.Log().With(map[string]any{
"error": err.Error(),
}).Error("[面板][InfoController] 获取数据库列表失败")
databaseCount = -1
} else {
defer db.Close()
rows, err := db.Query("SHOW DATABASES")
defer rows.Close()
if err != nil {
facades.Log().With(map[string]any{
"error": err.Error(),
}).Error("[面板][InfoController] 获取数据库列表失败")
databaseCount = -1
}
defer rows.Close()
} else {
var databases []database
for rows.Next() {
var d database
err := rows.Scan(&d.Name)
if err != nil {
continue
}
var databases []database
for rows.Next() {
var d database
err := rows.Scan(&d.Name)
if err != nil {
continue
databases = append(databases, d)
}
databases = append(databases, d)
databaseCount = int64(len(databases))
}
databaseCount = int64(len(databases))
}
}
}
@@ -244,23 +244,45 @@ func (c *InfoController) CheckUpdate(ctx http.Context) http.Response {
if tools.VersionCompare(version, remote.Version, ">=") {
return Success(ctx, http.Json{
"update": false,
"version": remote.Version,
"name": remote.Name,
"body": remote.Body,
"date": remote.Date,
"update": false,
})
}
return Success(ctx, http.Json{
"update": true,
"version": remote.Version,
"name": remote.Name,
"body": remote.Body,
"date": remote.Date,
"update": true,
})
}
// UpdateInfo 获取更新信息
func (c *InfoController) UpdateInfo(ctx http.Context) http.Response {
version := facades.Config().GetString("panel.version")
current, err := tools.GetLatestPanelVersion()
if err != nil {
return Error(ctx, http.StatusInternalServerError, "获取最新版本失败")
}
if tools.VersionCompare(version, current.Version, ">=") {
return Error(ctx, http.StatusInternalServerError, "当前版本已是最新版本")
}
versions, err := tools.GenerateVersions(version, current.Version)
if err != nil {
return Error(ctx, http.StatusInternalServerError, "获取更新信息失败")
}
var versionInfo []tools.PanelInfo
for _, v := range versions {
info, err := tools.GetPanelVersion(v)
if err != nil {
continue
}
versionInfo = append(versionInfo, info)
}
return Success(ctx, versionInfo)
}
// Update 更新面板
func (c *InfoController) Update(ctx http.Context) http.Response {
var task models.Task

View File

@@ -8,6 +8,6 @@ func init() {
config := facades.Config()
config.Add("panel", map[string]any{
"name": "耗子Linux面板",
"version": "v2.0.58",
"version": "v2.0.56",
})
}

View File

@@ -241,6 +241,10 @@ func GetPanelVersion(version string) (PanelInfo, error) {
var output string
isChina := IsChina()
if !strings.HasPrefix(version, "v") {
version = "v" + version
}
if isChina {
output = Exec(`curl -sSL "https://jihulab.com/api/v4/projects/haozi-team%2Fpanel/releases/` + version + `"`)
} else {

View File

@@ -21,6 +21,7 @@ func Api() {
r.Middleware(middleware.Jwt()).Get("countInfo", infoController.CountInfo)
r.Middleware(middleware.Jwt()).Get("installedDbAndPhp", infoController.InstalledDbAndPhp)
r.Middleware(middleware.Jwt()).Get("checkUpdate", infoController.CheckUpdate)
r.Middleware(middleware.Jwt()).Get("updateInfo", infoController.UpdateInfo)
r.Middleware(middleware.Jwt()).Post("update", infoController.Update)
r.Middleware(middleware.Jwt()).Post("restart", infoController.Restart)
})