v0 agent final version (#90)

This commit is contained in:
naiba 2024-11-23 22:28:51 +08:00 committed by GitHub
parent 069fc302fe
commit 34faa8d63a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -17,9 +17,7 @@ import (
"strings" "strings"
"time" "time"
"github.com/blang/semver"
"github.com/ebi-yade/altsvc-go" "github.com/ebi-yade/altsvc-go"
"github.com/nezhahq/go-github-selfupdate/selfupdate"
"github.com/nezhahq/service" "github.com/nezhahq/service"
ping "github.com/prometheus-community/pro-bing" ping "github.com/prometheus-community/pro-bing"
"github.com/quic-go/quic-go/http3" "github.com/quic-go/quic-go/http3"
@ -227,14 +225,14 @@ func run() {
go monitor.UpdateIP(agentCliParam.UseIPv6CountryCode, agentCliParam.IPReportPeriod) go monitor.UpdateIP(agentCliParam.UseIPv6CountryCode, agentCliParam.IPReportPeriod)
// 定时检查更新 // 定时检查更新
if _, err := semver.Parse(version); err == nil && !agentCliParam.DisableAutoUpdate { // if _, err := semver.Parse(version); err == nil && !agentCliParam.DisableAutoUpdate {
doSelfUpdate(true) // doSelfUpdate(true)
go func() { // go func() {
for range time.Tick(20 * time.Minute) { // for range time.Tick(20 * time.Minute) {
doSelfUpdate(true) // doSelfUpdate(true)
} // }
}() // }()
} // }
var err error var err error
var conn *grpc.ClientConn var conn *grpc.ClientConn
@ -383,8 +381,8 @@ func doTask(task *pb.Task) {
handleTcpPingTask(task, &result) handleTcpPingTask(task, &result)
case model.TaskTypeCommand: case model.TaskTypeCommand:
handleCommandTask(task, &result) handleCommandTask(task, &result)
case model.TaskTypeUpgrade: // case model.TaskTypeUpgrade:
handleUpgradeTask(task, &result) // handleUpgradeTask(task, &result)
case model.TaskTypeTerminalGRPC: case model.TaskTypeTerminalGRPC:
handleTerminalTask(task) handleTerminalTask(task)
return return
@ -443,36 +441,36 @@ func reportState(lastReportHostInfo time.Time) time.Time {
return lastReportHostInfo return lastReportHostInfo
} }
// doSelfUpdate 执行更新检查 如果更新成功则会结束进程 // // doSelfUpdate 执行更新检查 如果更新成功则会结束进程
func doSelfUpdate(useLocalVersion bool) { // func doSelfUpdate(useLocalVersion bool) {
v := semver.MustParse("0.1.0") // v := semver.MustParse("0.1.0")
if useLocalVersion { // if useLocalVersion {
v = semver.MustParse(version) // v = semver.MustParse(version)
} // }
printf("检查更新: %v", v) // printf("检查更新: %v", v)
var latest *selfupdate.Release // var latest *selfupdate.Release
var err error // var err error
if monitor.CachedCountryCode != "cn" && !agentCliParam.UseGiteeToUpgrade { // if monitor.CachedCountryCode != "cn" && !agentCliParam.UseGiteeToUpgrade {
latest, err = selfupdate.UpdateSelf(v, "nezhahq/agent") // latest, err = selfupdate.UpdateSelf(v, "nezhahq/agent")
} else { // } else {
latest, err = selfupdate.UpdateSelfGitee(v, "naibahq/agent") // latest, err = selfupdate.UpdateSelfGitee(v, "naibahq/agent")
} // }
if err != nil { // if err != nil {
printf("更新失败: %v", err) // printf("更新失败: %v", err)
return // return
} // }
if !latest.Version.Equals(v) { // if !latest.Version.Equals(v) {
printf("已经更新至: %v, 正在结束进程", latest.Version) // printf("已经更新至: %v, 正在结束进程", latest.Version)
os.Exit(1) // os.Exit(1)
} // }
} // }
func handleUpgradeTask(*pb.Task, *pb.TaskResult) { // func handleUpgradeTask(*pb.Task, *pb.TaskResult) {
if agentCliParam.DisableForceUpdate { // if agentCliParam.DisableForceUpdate {
return // return
} // }
doSelfUpdate(false) // doSelfUpdate(false)
} // }
func handleTcpPingTask(task *pb.Task, result *pb.TaskResult) { func handleTcpPingTask(task *pb.Task, result *pb.TaskResult) {
host, port, err := net.SplitHostPort(task.GetData()) host, port, err := net.SplitHostPort(task.GetData())