diff --git a/Makefile b/Makefile index 52aa5a8cd..81aef6f10 100644 --- a/Makefile +++ b/Makefile @@ -143,10 +143,13 @@ setup-git: ##@Development Setup Git hooks (pre-commit and pre-push) @(cd .git/hooks && ln -sf ../../git/* .) .PHONY: setup-git -build: check_go_env buildjs ##@Build Build the project - go build -ldflags="-X github.com/navidrome/navidrome/consts.gitSha=$(GIT_SHA) -X github.com/navidrome/navidrome/consts.gitTag=$(GIT_TAG)" -tags=netgo +build: check_go_env buildjs buildgo ##@Build Build the project .PHONY: build +buildgo: + go build -ldflags="-X github.com/navidrome/navidrome/consts.gitSha=$(GIT_SHA) -X github.com/navidrome/navidrome/consts.gitTag=$(GIT_TAG)" -tags=netgo +.PHONY: buildgo + buildall: deprecated build .PHONY: buildall diff --git a/cmd/root.go b/cmd/root.go index 74a15abc1..5980fea12 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -83,6 +83,7 @@ func runNavidrome(ctx context.Context) { g, ctx := errgroup.WithContext(ctx) g.Go(startServer(ctx)) + g.Go(startDLNAServer(ctx)) g.Go(startSignaller(ctx)) g.Go(startScheduler(ctx)) g.Go(startPlaybackServer(ctx)) @@ -142,6 +143,13 @@ func startServer(ctx context.Context) func() error { } } +func startDLNAServer(ctx context.Context) func() error { + return func() error { + a := CreateDLNAServer() + return a.Run(ctx, conf.Server.Address, conf.Server.Port, conf.Server.TLSCert, conf.Server.TLSKey) + } +} + // schedulePeriodicScan schedules a periodic scan of the music library, if configured. func schedulePeriodicScan(ctx context.Context) func() error { return func() error { diff --git a/cmd/wire_gen.go b/cmd/wire_gen.go index 7a9d38d92..9f8a72c33 100644 --- a/cmd/wire_gen.go +++ b/cmd/wire_gen.go @@ -8,6 +8,7 @@ package cmd import ( "context" + "github.com/google/wire" "github.com/navidrome/navidrome/adapters/lastfm" "github.com/navidrome/navidrome/adapters/listenbrainz" @@ -20,6 +21,7 @@ import ( "github.com/navidrome/navidrome/core/playback" "github.com/navidrome/navidrome/core/scrobbler" "github.com/navidrome/navidrome/db" + "github.com/navidrome/navidrome/dlna" "github.com/navidrome/navidrome/model" "github.com/navidrome/navidrome/persistence" "github.com/navidrome/navidrome/plugins" @@ -37,7 +39,6 @@ import ( _ "github.com/navidrome/navidrome/adapters/lastfm" _ "github.com/navidrome/navidrome/adapters/listenbrainz" _ "github.com/navidrome/navidrome/adapters/spotify" - _ "github.com/navidrome/navidrome/adapters/taglib" ) // Injectors from wire_injectors.go: @@ -57,6 +58,14 @@ func CreateServer() *server.Server { return serverServer } +func CreateDLNAServer() *dlna.DLNAServer { + dbDB := db.Db() + dataStore := persistence.New(dbDB) + broker := events.GetBroker() + dlnaServer := dlna.New(dataStore, broker) + return dlnaServer +} + func CreateNativeAPIRouter(ctx context.Context) *nativeapi.Router { sqlDB := db.Db() dataStore := persistence.New(sqlDB) diff --git a/cmd/wire_injectors.go b/cmd/wire_injectors.go index 56206feb6..426e917a9 100644 --- a/cmd/wire_injectors.go +++ b/cmd/wire_injectors.go @@ -15,6 +15,7 @@ import ( "github.com/navidrome/navidrome/core/playback" "github.com/navidrome/navidrome/core/scrobbler" "github.com/navidrome/navidrome/db" + "github.com/navidrome/navidrome/dlna" "github.com/navidrome/navidrome/model" "github.com/navidrome/navidrome/persistence" "github.com/navidrome/navidrome/plugins" @@ -30,6 +31,7 @@ var allProviders = wire.NewSet( core.Set, artwork.Set, server.New, + dlna.New, subsonic.New, nativeapi.New, public.New, @@ -62,6 +64,12 @@ func CreateServer() *server.Server { )) } +func CreateDLNAServer() *dlna.DLNAServer { + panic(wire.Build( + allProviders, + )) +} + func CreateNativeAPIRouter(ctx context.Context) *nativeapi.Router { panic(wire.Build( allProviders, diff --git a/go.sum b/go.sum index 769e45818..680bdf362 100644 --- a/go.sum +++ b/go.sum @@ -333,6 +333,12 @@ golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= +golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= +golang.org/x/mod v0.26.0 h1:EGMPT//Ezu+ylkCijjPc+f4Aih7sZvaAr+O3EHBxvZg= +golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=