mirror of
https://github.com/fankes/komari-agent.git
synced 2025-10-19 02:59:23 +08:00
fix: 更新版本获取逻辑,支持从环境变量读取版本号
This commit is contained in:
37
main.go
37
main.go
@@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user