chore: indicate jetkvm version from user-agent

This commit is contained in:
Siyuan Miao 2025-06-12 20:45:22 +02:00
parent b822b73a03
commit 97b00c6ffc
5 changed files with 19 additions and 1 deletions

View File

@ -223,6 +223,7 @@ func handleCloudRegister(c *gin.Context) {
return return
} }
apiReq.Header.Set("Content-Type", "application/json") apiReq.Header.Set("Content-Type", "application/json")
apiReq.Header.Set("User-Agent", httpUserAgent)
apiResp, err := client.Do(apiReq) apiResp, err := client.Do(apiReq)
if err != nil { if err != nil {
@ -537,6 +538,8 @@ func rpcDeregisterDevice() error {
} }
req.Header.Set("Authorization", "Bearer "+config.CloudToken) req.Header.Set("Authorization", "Bearer "+config.CloudToken)
req.Header.Set("User-Agent", httpUserAgent)
client := &http.Client{Timeout: CloudAPIRequestTimeout} client := &http.Client{Timeout: CloudAPIRequestTimeout}
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {

View File

@ -57,6 +57,7 @@ func (t *TimeSync) queryMultipleHttp(urls []string, timeout time.Duration) (now
ctx, ctx,
url, url,
timeout, timeout,
t.httpUserAgent,
) )
duration := time.Since(startTime) duration := time.Since(startTime)
@ -111,6 +112,7 @@ func queryHttpTime(
ctx context.Context, ctx context.Context,
url string, url string,
timeout time.Duration, timeout time.Duration,
httpUserAgent string,
) (now *time.Time, response *http.Response, err error) { ) (now *time.Time, response *http.Response, err error) {
client := http.Client{ client := http.Client{
Timeout: timeout, Timeout: timeout,
@ -119,6 +121,10 @@ func queryHttpTime(
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err
} }
if httpUserAgent != "" {
req.Header.Set("User-Agent", httpUserAgent)
}
resp, err := client.Do(req) resp, err := client.Do(req)
if err != nil { if err != nil {
return nil, nil, err return nil, nil, err

View File

@ -32,6 +32,8 @@ type TimeSync struct {
httpUrls []string httpUrls []string
networkConfig *network.NetworkConfig networkConfig *network.NetworkConfig
httpUserAgent string
rtcDevicePath string rtcDevicePath string
rtcDevice *os.File //nolint:unused rtcDevice *os.File //nolint:unused
rtcLock *sync.Mutex rtcLock *sync.Mutex
@ -45,6 +47,7 @@ type TimeSyncOptions struct {
PreCheckFunc func() (bool, error) PreCheckFunc func() (bool, error)
Logger *zerolog.Logger Logger *zerolog.Logger
NetworkConfig *network.NetworkConfig NetworkConfig *network.NetworkConfig
HttpUserAgent string
} }
type SyncMode struct { type SyncMode struct {
@ -71,6 +74,7 @@ func NewTimeSync(opts *TimeSyncOptions) *TimeSync {
preCheckFunc: opts.PreCheckFunc, preCheckFunc: opts.PreCheckFunc,
ntpServers: defaultNTPServers, ntpServers: defaultNTPServers,
httpUrls: defaultHTTPUrls, httpUrls: defaultHTTPUrls,
httpUserAgent: opts.HttpUserAgent,
networkConfig: opts.NetworkConfig, networkConfig: opts.NetworkConfig,
} }

View File

@ -2,6 +2,7 @@ package kvm
import ( import (
"context" "context"
"fmt"
"net/http" "net/http"
"os" "os"
"os/signal" "os/signal"
@ -12,6 +13,7 @@ import (
) )
var appCtx context.Context var appCtx context.Context
var httpUserAgent string = fmt.Sprintf("jetkvm-app/%s", builtAppVersion)
func Main() { func Main() {
LoadConfig() LoadConfig()
@ -25,6 +27,8 @@ func Main() {
logger.Warn().Err(err).Msg("failed to get local version") logger.Warn().Err(err).Msg("failed to get local version")
} }
httpUserAgent = fmt.Sprintf("jetkvm-app/%s jetkvm-system/%s", appVersionLocal, systemVersionLocal)
logger.Info(). logger.Info().
Interface("system_version", systemVersionLocal). Interface("system_version", systemVersionLocal).
Interface("app_version", appVersionLocal). Interface("app_version", appVersionLocal).

3
ota.go
View File

@ -88,6 +88,7 @@ func fetchUpdateMetadata(ctx context.Context, deviceId string, includePreRelease
if err != nil { if err != nil {
return nil, fmt.Errorf("error creating request: %w", err) return nil, fmt.Errorf("error creating request: %w", err)
} }
req.Header.Set("User-Agent", httpUserAgent)
resp, err := http.DefaultClient.Do(req) resp, err := http.DefaultClient.Do(req)
if err != nil { if err != nil {
@ -131,7 +132,7 @@ func downloadFile(ctx context.Context, path string, url string, downloadProgress
if err != nil { if err != nil {
return fmt.Errorf("error creating request: %w", err) return fmt.Errorf("error creating request: %w", err)
} }
req.Header.Set("User-Agent", httpUserAgent)
client := http.Client{ client := http.Client{
Timeout: 10 * time.Minute, Timeout: 10 * time.Minute,
Transport: &http.Transport{ Transport: &http.Transport{