From 58ebd3ccf4f94bea1e3626f6998bf7fcb9cc5538 Mon Sep 17 00:00:00 2001 From: Drew Weymouth Date: Thu, 17 Oct 2024 08:36:00 -0700 Subject: [PATCH] Fix #495: use custom user-agent instead of go-http-client --- backend/app.go | 4 ++-- backend/servermanager.go | 14 ++++++++++++-- go.mod | 2 +- go.sum | 4 ++-- main.go | 2 +- 5 files changed, 18 insertions(+), 8 deletions(-) diff --git a/backend/app.go b/backend/app.go index 2e43060..e2d3592 100644 --- a/backend/app.go +++ b/backend/app.go @@ -66,7 +66,7 @@ func (a *App) VersionTag() string { return a.appVersionTag } -func StartupApp(appName, displayAppName, appVersionTag, latestReleaseURL string) (*App, error) { +func StartupApp(appName, displayAppName, appVersion, appVersionTag, latestReleaseURL string) (*App, error) { var confDir, cacheDir string portableMode := false if p := checkPortablePath(); p != "" { @@ -118,7 +118,7 @@ func StartupApp(appName, displayAppName, appVersionTag, latestReleaseURL string) return nil, err } - a.ServerManager = NewServerManager(appName, a.Config, !portableMode /*use keyring*/) + a.ServerManager = NewServerManager(appName, appVersion, a.Config, !portableMode /*use keyring*/) a.PlaybackManager = NewPlaybackManager(a.bgrndCtx, a.ServerManager, a.LocalPlayer, &a.Config.Scrobbling, &a.Config.Transcoding, &a.Config.Application) a.ImageManager = NewImageManager(a.bgrndCtx, a.ServerManager, cacheDir) a.Config.Application.MaxImageCacheSizeMB = clamp(a.Config.Application.MaxImageCacheSizeMB, 1, 500) diff --git a/backend/servermanager.go b/backend/servermanager.go index 627b316..ef4c3c7 100644 --- a/backend/servermanager.go +++ b/backend/servermanager.go @@ -4,6 +4,7 @@ import ( "context" "crypto/tls" "errors" + "fmt" "log" "net/http" "time" @@ -26,6 +27,7 @@ type ServerManager struct { useKeyring bool prefetchCoverCB func(string) appName string + appVersion string config *Config onServerConnected []func() onLogout []func() @@ -33,8 +35,13 @@ type ServerManager struct { var ErrUnreachable = errors.New("server is unreachable") -func NewServerManager(appName string, config *Config, useKeyring bool) *ServerManager { - return &ServerManager{appName: appName, config: config, useKeyring: useKeyring} +func NewServerManager(appName, appVersion string, config *Config, useKeyring bool) *ServerManager { + return &ServerManager{ + appName: appName, + appVersion: appVersion, + config: config, + useKeyring: useKeyring, + } } func (s *ServerManager) SetPrefetchAlbumCoverCallback(cb func(string)) { @@ -194,8 +201,10 @@ func (s *ServerManager) connect(connection ServerConnection, password string) (m } } } else { + ua := fmt.Sprintf("%s/%s", s.appName, s.appVersion) cli = &subsonicMP.SubsonicServer{ Client: subsonic.Client{ + UserAgent: ua, Client: &http.Client{Timeout: 10 * time.Second}, BaseUrl: connection.Hostname, User: connection.Username, @@ -206,6 +215,7 @@ func (s *ServerManager) connect(connection ServerConnection, password string) (m s.checkSetInsecureSkipVerify(cli.(*subsonicMP.SubsonicServer).Client.Client) altCli = &subsonicMP.SubsonicServer{ Client: subsonic.Client{ + UserAgent: ua, Client: &http.Client{Timeout: 10 * time.Second}, BaseUrl: connection.AltHostname, User: connection.Username, diff --git a/go.mod b/go.mod index 7203b7e..c368f21 100644 --- a/go.mod +++ b/go.mod @@ -17,7 +17,7 @@ require ( github.com/pelletier/go-toml/v2 v2.0.8 github.com/quarckster/go-mpris-server v1.0.3 github.com/supersonic-app/go-mpv v0.1.0 - github.com/supersonic-app/go-subsonic v0.0.0-20240807031555-2cb1ccd78f85 + github.com/supersonic-app/go-subsonic v0.0.0-20241017150725-a5686988ef9c github.com/zalando/go-keyring v0.2.1 golang.org/x/net v0.25.0 golang.org/x/text v0.16.0 diff --git a/go.sum b/go.sum index 6fd44e0..d16be80 100644 --- a/go.sum +++ b/go.sum @@ -311,8 +311,8 @@ github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXl github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/supersonic-app/go-mpv v0.1.0 h1:U+cCnLQxmpqx5mY6nMlC0J4uIdCCXUbAjpjS04XkFu8= github.com/supersonic-app/go-mpv v0.1.0/go.mod h1:1bQz6kBQumJopXEbkiqoLxIXLy7F7yWFBvknvpAtIC0= -github.com/supersonic-app/go-subsonic v0.0.0-20240807031555-2cb1ccd78f85 h1:7PpVvIoF3kUQwqRyIJcKJui8VxbkLzqWH+Ysw1g84tU= -github.com/supersonic-app/go-subsonic v0.0.0-20240807031555-2cb1ccd78f85/go.mod h1:D+OWPXeD9owcdcoXATv5YPBGWxxVvn5k98rt5B4wMc4= +github.com/supersonic-app/go-subsonic v0.0.0-20241017150725-a5686988ef9c h1:UsXe5/TXViPgw21zO2Fgh0F/hSl0TXox0yjRc+vT6XQ= +github.com/supersonic-app/go-subsonic v0.0.0-20241017150725-a5686988ef9c/go.mod h1:D+OWPXeD9owcdcoXATv5YPBGWxxVvn5k98rt5B4wMc4= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/main.go b/main.go index 3742303..d9eb4d4 100644 --- a/main.go +++ b/main.go @@ -32,7 +32,7 @@ func main() { } // rest of flag actions are handled in backend.StartupApp - myApp, err := backend.StartupApp(res.AppName, res.DisplayName, res.AppVersionTag, res.LatestReleaseURL) + myApp, err := backend.StartupApp(res.AppName, res.DisplayName, res.AppVersion, res.AppVersionTag, res.LatestReleaseURL) if err != nil { if err != backend.ErrAnotherInstance { log.Fatalf("fatal startup error: %v", err.Error())