|
|
|
package bootstrap
|
|
|
|
|
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/cloudreve/Cloudreve/v3/pkg/conf"
|
|
|
|
"github.com/cloudreve/Cloudreve/v3/pkg/request"
|
|
|
|
"github.com/cloudreve/Cloudreve/v3/pkg/util"
|
|
|
|
"github.com/hashicorp/go-version"
|
|
|
|
)
|
|
|
|
|
|
|
|
// InitApplication 初始化应用常量
|
|
|
|
func InitApplication() {
|
|
|
|
fmt.Print(`
|
|
|
|
___ _ _
|
|
|
|
/ __\ | ___ _ _ __| |_ __ _____ _____
|
|
|
|
/ / | |/ _ \| | | |/ _ | '__/ _ \ \ / / _ \
|
|
|
|
/ /___| | (_) | |_| | (_| | | | __/\ V / __/
|
|
|
|
\____/|_|\___/ \__,_|\__,_|_| \___| \_/ \___|
|
|
|
|
|
|
|
|
V` + conf.BackendVersion + ` Commit #` + conf.LastCommit + ` Pro=` + conf.IsPro + `
|
|
|
|
================================================
|
|
|
|
|
|
|
|
`)
|
|
|
|
go CheckUpdate()
|
|
|
|
}
|
|
|
|
|
|
|
|
type GitHubRelease struct {
|
|
|
|
URL string `json:"html_url"`
|
|
|
|
Name string `json:"name"`
|
|
|
|
Tag string `json:"tag_name"`
|
|
|
|
}
|
|
|
|
|
|
|
|
// CheckUpdate 检查更新
|
|
|
|
func CheckUpdate() {
|
|
|
|
client := request.NewClient()
|
|
|
|
res, err := client.Request("GET", "https://api.github.com/repos/cloudreve/cloudreve/releases", nil).GetResponse()
|
|
|
|
if err != nil {
|
|
|
|
util.Log().Warning("更新检查失败, %s", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
var list []GitHubRelease
|
|
|
|
if err := json.Unmarshal([]byte(res), &list); err != nil {
|
|
|
|
util.Log().Warning("更新检查失败, %s", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if len(list) > 0 {
|
|
|
|
present, err1 := version.NewVersion(conf.BackendVersion)
|
|
|
|
latest, err2 := version.NewVersion(list[0].Tag)
|
|
|
|
if err1 == nil && err2 == nil && latest.GreaterThan(present) {
|
|
|
|
util.Log().Info("有新的版本 [%s] 可用,下载:%s", list[0].Name, list[0].URL)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|