Files
waf-platform/EdgeAdmin/internal/web/actions/default/settings/updates/index.go

172 lines
4.5 KiB
Go

// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
package updates
import (
"encoding/json"
"fmt"
teaconst "github.com/TeaOSLab/EdgeAdmin/internal/const"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/systemconfigs"
"github.com/iwind/TeaGo/maps"
)
type IndexAction struct {
actionutils.ParentAction
}
func (this *IndexAction) Init() {
this.Nav("", "updates", "")
}
func (this *IndexAction) RunGet(params struct {
DoCheck bool
}) {
this.Data["version"] = teaconst.Version
this.Data["doCheck"] = params.DoCheck
// 是否正在升级
this.Data["isUpgrading"] = isUpgrading
this.Data["isUpgradingDB"] = isUpgradingDB
this.Data["upgradeProgress"] = fmt.Sprintf("%.2f", upgradeProgress*100)
if isUpgrading {
this.Data["doCheck"] = false
}
valueResp, err := this.RPC().SysSettingRPC().ReadSysSetting(this.AdminContext(), &pb.ReadSysSettingRequest{Code: systemconfigs.SettingCodeCheckUpdates})
if err != nil {
this.ErrorPage(err)
return
}
var valueJSON = valueResp.ValueJSON
var config = systemconfigs.NewCheckUpdatesConfig()
if len(valueJSON) > 0 {
err = json.Unmarshal(valueJSON, config)
if err != nil {
this.ErrorPage(err)
return
}
}
this.Data["config"] = config
this.Show()
}
func (this *IndexAction) RunPost(params struct {
}) {
// valueResp, err := this.RPC().SysSettingRPC().ReadSysSetting(this.AdminContext(), &pb.ReadSysSettingRequest{Code: systemconfigs.SettingCodeCheckUpdates})
// if err != nil {
// this.ErrorPage(err)
// return
// }
// var valueJSON = valueResp.ValueJSON
// var config = systemconfigs.NewCheckUpdatesConfig()
// if len(valueJSON) > 0 {
// err = json.Unmarshal(valueJSON, config)
// if err != nil {
// this.ErrorPage(err)
// return
// }
// }
// type Response struct {
// Code int `json:"code"`
// Message string `json:"message"`
// Data interface{} `json:"data"`
// }
// var apiURL = teaconst.UpdatesURL
// apiURL = strings.ReplaceAll(apiURL, "${os}", runtime.GOOS)
// apiURL = strings.ReplaceAll(apiURL, "${arch}", runtime.GOARCH)
// apiURL = strings.ReplaceAll(apiURL, "${version}", teaconst.Version)
// resp, err := http.Get(apiURL)
// if err != nil {
// this.Data["result"] = maps.Map{
// "isOk": false,
// "message": "读取更新信息失败:" + err.Error(),
// }
// this.Success()
// return
// }
// defer func() {
// _ = resp.Body.Close()
// }()
// data, err := io.ReadAll(resp.Body)
// if err != nil {
// this.Data["result"] = maps.Map{
// "isOk": false,
// "message": "读取更新信息失败:" + err.Error(),
// }
// this.Success()
// return
// }
// var apiResponse = &Response{}
// err = json.Unmarshal(data, apiResponse)
// if err != nil {
// this.Data["result"] = maps.Map{
// "isOk": false,
// "message": "解析更新信息失败:" + err.Error(),
// }
// this.Success()
// return
// }
// if apiResponse.Code != 200 {
// this.Data["result"] = maps.Map{
// "isOk": false,
// "message": "解析更新信息失败:" + apiResponse.Message,
// }
// this.Success()
// return
// }
// var m = maps.NewMap(apiResponse.Data)
// var dlHost = m.GetString("host")
// var versions = m.GetSlice("versions")
// if len(versions) > 0 {
// for _, version := range versions {
// var vMap = maps.NewMap(version)
// if vMap.GetString("code") == "admin" {
// var latestVersion = vMap.GetString("version")
// if stringutil.VersionCompare(teaconst.Version, latestVersion) < 0 {
// // 是否已忽略
// if len(config.IgnoredVersion) > 0 && stringutil.VersionCompare(config.IgnoredVersion, latestVersion) >= 0 {
// continue
// }
// this.Data["result"] = maps.Map{
// "isOk": true,
// "version": latestVersion,
// "message": "有最新的版本 v" + latestVersion + " 可以更新",
// "hasNew": true,
// "dlURL": dlHost + vMap.GetString("url"),
// "day": vMap.GetString("day"),
// "description": vMap.GetString("description"),
// "docURL": vMap.GetString("docURL"),
// }
// this.Success()
// return
// } else {
// this.Data["result"] = maps.Map{
// "isOk": true,
// "message": "你已安装最新版本,无需更新",
// }
// this.Success()
// return
// }
// }
// }
// }
this.Data["result"] = maps.Map{
"isOk": false,
"message": "没有发现更新的版本",
}
this.Success()
}