fix: 更新版本获取逻辑,支持从环境变量读取版本号

This commit is contained in:
Akizon77
2025-05-03 21:13:40 +08:00
parent d4b66e86f9
commit aa7c52ffa4

37
main.go
View File

@@ -7,6 +7,7 @@ import (
"io" "io"
"log" "log"
"net/http" "net/http"
"os"
"strings" "strings"
"time" "time"
@@ -17,11 +18,20 @@ import (
) )
var ( var (
currentVersion = "v0.0.2" CurrentVersion = getVersionFromEnv()
repo = "komari-monitor/komari-agent" repo = "komari-monitor/komari-agent"
) )
func getVersionFromEnv() string {
version := "v0.0.2"
if v := os.Getenv("GITHUB_RELEASE_VERSION"); v != "" {
version = v
}
return version
}
func main() { func main() {
log.Printf("Komari Agent %s\n", CurrentVersion)
localConfig, err := config.LoadConfig() localConfig, err := config.LoadConfig()
if err != nil { if err != nil {
log.Fatalln("Failed to load local config:", err) log.Fatalln("Failed to load local config:", err)
@@ -30,10 +40,15 @@ func main() {
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true} http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
} }
err = uploadBasicInfo(localConfig.Endpoint, localConfig.Token) go func() {
if err != nil { ticker := time.NewTicker(time.Duration(time.Minute * 15))
log.Fatalln("Failed to upload basic info:", err) for range ticker.C {
} err = uploadBasicInfo(localConfig.Endpoint, localConfig.Token)
if err != nil {
log.Fatalln("Failed to upload basic info:", err)
}
}
}()
websocketEndpoint := strings.TrimSuffix(localConfig.Endpoint, "/") + "/api/clients/report?token=" + localConfig.Token websocketEndpoint := strings.TrimSuffix(localConfig.Endpoint, "/") + "/api/clients/report?token=" + localConfig.Token
websocketEndpoint = "ws" + strings.TrimPrefix(websocketEndpoint, "http") websocketEndpoint = "ws" + strings.TrimPrefix(websocketEndpoint, "http")
@@ -62,7 +77,7 @@ func main() {
log.Println("Attempting to connect to WebSocket...") log.Println("Attempting to connect to WebSocket...")
retry := 0 retry := 0
for retry < localConfig.MaxRetries { for retry < localConfig.MaxRetries {
conn, err = connectWebSocket(websocketEndpoint, localConfig.Endpoint, localConfig.Token) conn, err = connectWebSocket(websocketEndpoint)
if err == nil { if err == nil {
log.Println("WebSocket connected") log.Println("WebSocket connected")
go handleWebSocketMessages(localConfig, conn, make(chan struct{})) go handleWebSocketMessages(localConfig, conn, make(chan struct{}))
@@ -98,7 +113,7 @@ func main() {
func update_komari() { func update_komari() {
// 初始化 Updater // 初始化 Updater
updater := update.NewUpdater(currentVersion, repo) updater := update.NewUpdater(CurrentVersion, repo)
// 检查并更新 // 检查并更新
err := updater.CheckAndUpdate() err := updater.CheckAndUpdate()
@@ -108,7 +123,7 @@ func update_komari() {
} }
// connectWebSocket attempts to establish a WebSocket connection and upload basic info // connectWebSocket attempts to establish a WebSocket connection and upload basic info
func connectWebSocket(websocketEndpoint, endpoint, token string) (*websocket.Conn, error) { func connectWebSocket(websocketEndpoint string) (*websocket.Conn, error) {
dialer := &websocket.Dialer{ dialer := &websocket.Dialer{
HandshakeTimeout: 5 * time.Second, HandshakeTimeout: 5 * time.Second,
} }
@@ -117,12 +132,6 @@ func connectWebSocket(websocketEndpoint, endpoint, token string) (*websocket.Con
return nil, err return nil, err
} }
// Upload basic info after successful connection
if err := uploadBasicInfo(endpoint, token); err != nil {
log.Println("Failed to upload basic info:", err)
// Note: We don't return error here to allow the connection to proceed
}
return conn, nil return conn, nil
} }