diff --git a/cmd/dendrite-demo-libp2p/main.go b/cmd/dendrite-demo-libp2p/main.go index 600b0fb6f..d1e16db70 100644 --- a/cmd/dendrite-demo-libp2p/main.go +++ b/cmd/dendrite-demo-libp2p/main.go @@ -152,7 +152,7 @@ func main() { ) asAPI := appservice.NewInternalAPI(&base.Base, accountDB, deviceDB, rsAPI) appservice.AddPublicRoutes(base.Base.PublicAPIMux, &cfg, rsAPI, accountDB, federation, transactions.New()) - fsAPI := federationsender.SetupFederationSenderComponent( + fsAPI := federationsender.NewInternalAPI( &base.Base, federation, rsAPI, keyRing, ) rsAPI.SetFederationSenderAPI(fsAPI) @@ -163,8 +163,8 @@ func main() { eduInputAPI, asAPI, transactions.New(), fsAPI, ) eduProducer := producers.NewEDUServerProducer(eduInputAPI) - federationapi.AddPublicRoutes(&base.Base, accountDB, deviceDB, federation, keyRing, rsAPI, asAPI, fsAPI, eduProducer) - mediaapi.SetupMediaAPIComponent(&base.Base, deviceDB) + federationapi.AddPublicRoutes(base.Base.PublicAPIMux, base.Base.Cfg, accountDB, deviceDB, federation, keyRing, rsAPI, asAPI, fsAPI, eduProducer) + mediaapi.AddPublicRoutes(base.Base.PublicAPIMux, base.Base.Cfg, deviceDB) publicRoomsDB, err := storage.NewPublicRoomsServerDatabaseWithPubSub(string(base.Base.Cfg.Database.PublicRoomsAPI), base.LibP2PPubsub, cfg.Matrix.ServerName) if err != nil { logrus.WithError(err).Panicf("failed to connect to public rooms db") diff --git a/cmd/dendrite-federation-api-server/main.go b/cmd/dendrite-federation-api-server/main.go index 8b0ae55f0..7481299e9 100644 --- a/cmd/dendrite-federation-api-server/main.go +++ b/cmd/dendrite-federation-api-server/main.go @@ -37,7 +37,7 @@ func main() { eduProducer := producers.NewEDUServerProducer(base.EDUServerClient()) federationapi.AddPublicRoutes( - base, accountDB, deviceDB, federation, keyRing, + base.PublicAPIMux, base.Cfg, accountDB, deviceDB, federation, keyRing, rsAPI, asAPI, fsAPI, eduProducer, ) diff --git a/cmd/dendrite-federation-sender-server/main.go b/cmd/dendrite-federation-sender-server/main.go index 651eb257f..7b60ad055 100644 --- a/cmd/dendrite-federation-sender-server/main.go +++ b/cmd/dendrite-federation-sender-server/main.go @@ -30,9 +30,10 @@ func main() { keyRing := serverKeyAPI.KeyRing() rsAPI := base.RoomserverHTTPClient() - federationsender.SetupFederationSenderComponent( + fsAPI := federationsender.NewInternalAPI( base, federation, rsAPI, keyRing, ) + federationsender.AddInternalRoutes(base.InternalAPIMux, fsAPI) base.SetupAndServeHTTP(string(base.Cfg.Bind.FederationSender), string(base.Cfg.Listen.FederationSender)) diff --git a/cmd/dendrite-key-server/main.go b/cmd/dendrite-key-server/main.go index a8accbcb3..5dccc3004 100644 --- a/cmd/dendrite-key-server/main.go +++ b/cmd/dendrite-key-server/main.go @@ -27,7 +27,7 @@ func main() { accountDB := base.CreateAccountsDB() deviceDB := base.CreateDeviceDB() - keyserver.SetupKeyServerComponent(base, deviceDB, accountDB) + keyserver.AddPublicRoutes(base.PublicAPIMux, base.Cfg, deviceDB, accountDB) base.SetupAndServeHTTP(string(base.Cfg.Bind.KeyServer), string(base.Cfg.Listen.KeyServer)) diff --git a/cmd/dendrite-media-api-server/main.go b/cmd/dendrite-media-api-server/main.go index 018559383..5c65fad05 100644 --- a/cmd/dendrite-media-api-server/main.go +++ b/cmd/dendrite-media-api-server/main.go @@ -26,7 +26,7 @@ func main() { deviceDB := base.CreateDeviceDB() - mediaapi.SetupMediaAPIComponent(base, deviceDB) + mediaapi.AddPublicRoutes(base.PublicAPIMux, base.Cfg, deviceDB) base.SetupAndServeHTTP(string(base.Cfg.Bind.MediaAPI), string(base.Cfg.Listen.MediaAPI)) diff --git a/cmd/dendrite-monolith-server/main.go b/cmd/dendrite-monolith-server/main.go index 189efc71e..711ebaadf 100644 --- a/cmd/dendrite-monolith-server/main.go +++ b/cmd/dendrite-monolith-server/main.go @@ -101,10 +101,11 @@ func main() { asAPI = base.AppserviceHTTPClient() } - fsAPI := federationsender.SetupFederationSenderComponent( + fsAPI := federationsender.NewInternalAPI( base, federation, rsAPI, keyRing, ) if base.UseHTTPAPIs { + federationsender.AddInternalRoutes(base.InternalAPIMux, fsAPI) fsAPI = base.FederationSenderHTTPClient() } rsComponent.SetFederationSenderAPI(fsAPI) @@ -115,12 +116,12 @@ func main() { eduInputAPI, asAPI, transactions.New(), fsAPI, ) - keyserver.SetupKeyServerComponent( - base, deviceDB, accountDB, + keyserver.AddPublicRoutes( + base.PublicAPIMux, base.Cfg, deviceDB, accountDB, ) eduProducer := producers.NewEDUServerProducer(eduInputAPI) - federationapi.AddPublicRoutes(base, accountDB, deviceDB, federation, keyRing, rsAPI, asAPI, fsAPI, eduProducer) - mediaapi.SetupMediaAPIComponent(base, deviceDB) + federationapi.AddPublicRoutes(base.PublicAPIMux, base.Cfg, accountDB, deviceDB, federation, keyRing, rsAPI, asAPI, fsAPI, eduProducer) + mediaapi.AddPublicRoutes(base.PublicAPIMux, base.Cfg, deviceDB) publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI), base.Cfg.DbProperties(), cfg.Matrix.ServerName) if err != nil { logrus.WithError(err).Panicf("failed to connect to public rooms db") diff --git a/cmd/dendritejs/main.go b/cmd/dendritejs/main.go index a7531deec..58b33e40f 100644 --- a/cmd/dendritejs/main.go +++ b/cmd/dendritejs/main.go @@ -211,7 +211,7 @@ func main() { asQuery := appservice.NewInternalAPI( base, accountDB, deviceDB, rsAPI, ) - fedSenderAPI := federationsender.SetupFederationSenderComponent(base, federation, rsAPI, &keyRing) + fedSenderAPI := federationsender.NewInternalAPI(base, federation, rsAPI, &keyRing) rsAPI.SetFederationSenderAPI(fedSenderAPI) p2pPublicRoomProvider := NewLibP2PPublicRoomsProvider(node, fedSenderAPI) @@ -221,8 +221,8 @@ func main() { eduInputAPI, asQuery, transactions.New(), fedSenderAPI, ) eduProducer := producers.NewEDUServerProducer(eduInputAPI) - federationapi.AddPublicRoutes(base, accountDB, deviceDB, federation, &keyRing, rsAPI, asQuery, fedSenderAPI, eduProducer) - mediaapi.SetupMediaAPIComponent(base, deviceDB) + federationapi.AddPublicRoutes(base.PublicAPIMux, base.Cfg, accountDB, deviceDB, federation, &keyRing, rsAPI, asQuery, fedSenderAPI, eduProducer) + mediaapi.AddPublicRoutes(base.PublicAPIMux, base.Cfg, deviceDB) publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI), cfg.Matrix.ServerName) if err != nil { logrus.WithError(err).Panicf("failed to connect to public rooms db") diff --git a/eduserver/eduserver.go b/eduserver/eduserver.go index f5d8694db..c14be3f67 100644 --- a/eduserver/eduserver.go +++ b/eduserver/eduserver.go @@ -33,7 +33,7 @@ func AddInternalRoutes(internalMux *mux.Router, inputAPI api.EDUServerInputAPI) } // NewInternalAPI returns a concerete implementation of the internal API. Callers -// can call functions directly on the returned API or via an HTTP interface using AddRoutes. +// can call functions directly on the returned API or via an HTTP interface using AddInternalRoutes. func NewInternalAPI( base *basecomponent.BaseDendrite, eduCache *cache.EDUCache, diff --git a/federationapi/federationapi.go b/federationapi/federationapi.go index ebaef17aa..7aecd272b 100644 --- a/federationapi/federationapi.go +++ b/federationapi/federationapi.go @@ -15,11 +15,12 @@ package federationapi import ( + "github.com/gorilla/mux" appserviceAPI "github.com/matrix-org/dendrite/appservice/api" "github.com/matrix-org/dendrite/clientapi/auth/storage/accounts" "github.com/matrix-org/dendrite/clientapi/auth/storage/devices" federationSenderAPI "github.com/matrix-org/dendrite/federationsender/api" - "github.com/matrix-org/dendrite/internal/basecomponent" + "github.com/matrix-org/dendrite/internal/config" roomserverAPI "github.com/matrix-org/dendrite/roomserver/api" // TODO: Are we really wanting to pull in the producer from clientapi @@ -30,7 +31,8 @@ import ( // AddPublicRoutes sets up and registers HTTP handlers on the base API muxes for the FederationAPI component. func AddPublicRoutes( - base *basecomponent.BaseDendrite, + router *mux.Router, + cfg *config.Dendrite, accountsDB accounts.Database, deviceDB devices.Database, federation *gomatrixserverlib.FederationClient, @@ -43,7 +45,7 @@ func AddPublicRoutes( roomserverProducer := producers.NewRoomserverProducer(rsAPI) routing.Setup( - base.PublicAPIMux, base.Cfg, rsAPI, asAPI, roomserverProducer, + router, cfg, rsAPI, asAPI, roomserverProducer, eduProducer, federationSenderAPI, *keyRing, federation, accountsDB, deviceDB, ) diff --git a/federationsender/federationsender.go b/federationsender/federationsender.go index e25c27237..e3e0ef9d8 100644 --- a/federationsender/federationsender.go +++ b/federationsender/federationsender.go @@ -15,6 +15,7 @@ package federationsender import ( + "github.com/gorilla/mux" "github.com/matrix-org/dendrite/federationsender/api" "github.com/matrix-org/dendrite/federationsender/consumers" "github.com/matrix-org/dendrite/federationsender/internal" @@ -29,9 +30,15 @@ import ( "github.com/sirupsen/logrus" ) -// SetupFederationSenderComponent sets up and registers HTTP handlers for the -// FederationSender component. -func SetupFederationSenderComponent( +// AddInternalRoutes registers HTTP handlers for the internal API. Invokes functions +// on the given input API. +func AddInternalRoutes(router *mux.Router, intAPI api.FederationSenderInternalAPI) { + inthttp.AddRoutes(intAPI, router) +} + +// NewInternalAPI returns a concerete implementation of the internal API. Callers +// can call functions directly on the returned API or via an HTTP interface using AddInternalRoutes. +func NewInternalAPI( base *basecomponent.BaseDendrite, federation *gomatrixserverlib.FederationClient, rsAPI roomserverAPI.RoomserverInternalAPI, @@ -66,8 +73,5 @@ func SetupFederationSenderComponent( logrus.WithError(err).Panic("failed to start typing server consumer") } - queryAPI := internal.NewFederationSenderInternalAPI(federationSenderDB, base.Cfg, roomserverProducer, federation, keyRing, statistics, queues) - inthttp.AddRoutes(queryAPI, base.InternalAPIMux) - - return queryAPI + return internal.NewFederationSenderInternalAPI(federationSenderDB, base.Cfg, roomserverProducer, federation, keyRing, statistics, queues) } diff --git a/keyserver/keyserver.go b/keyserver/keyserver.go index 4e785cbc7..1eb730541 100644 --- a/keyserver/keyserver.go +++ b/keyserver/keyserver.go @@ -15,18 +15,18 @@ package keyserver import ( + "github.com/gorilla/mux" "github.com/matrix-org/dendrite/clientapi/auth/storage/accounts" "github.com/matrix-org/dendrite/clientapi/auth/storage/devices" - "github.com/matrix-org/dendrite/internal/basecomponent" + "github.com/matrix-org/dendrite/internal/config" "github.com/matrix-org/dendrite/keyserver/routing" ) -// SetupFederationSenderComponent sets up and registers HTTP handlers for the -// FederationSender component. -func SetupKeyServerComponent( - base *basecomponent.BaseDendrite, +// AddPublicRoutes registers HTTP handlers for CS API calls +func AddPublicRoutes( + router *mux.Router, cfg *config.Dendrite, deviceDB devices.Database, accountsDB accounts.Database, ) { - routing.Setup(base.PublicAPIMux, base.Cfg, accountsDB, deviceDB) + routing.Setup(router, cfg, accountsDB, deviceDB) } diff --git a/mediaapi/mediaapi.go b/mediaapi/mediaapi.go index b5bec3907..d4e260ea4 100644 --- a/mediaapi/mediaapi.go +++ b/mediaapi/mediaapi.go @@ -15,26 +15,26 @@ package mediaapi import ( + "github.com/gorilla/mux" "github.com/matrix-org/dendrite/clientapi/auth/storage/devices" - "github.com/matrix-org/dendrite/internal/basecomponent" + "github.com/matrix-org/dendrite/internal/config" "github.com/matrix-org/dendrite/mediaapi/routing" "github.com/matrix-org/dendrite/mediaapi/storage" "github.com/matrix-org/gomatrixserverlib" "github.com/sirupsen/logrus" ) -// SetupMediaAPIComponent sets up and registers HTTP handlers for the MediaAPI -// component. -func SetupMediaAPIComponent( - base *basecomponent.BaseDendrite, +// AddPublicRoutes sets up and registers HTTP handlers for the MediaAPI component. +func AddPublicRoutes( + router *mux.Router, cfg *config.Dendrite, deviceDB devices.Database, ) { - mediaDB, err := storage.Open(string(base.Cfg.Database.MediaAPI), base.Cfg.DbProperties()) + mediaDB, err := storage.Open(string(cfg.Database.MediaAPI), cfg.DbProperties()) if err != nil { logrus.WithError(err).Panicf("failed to connect to media db") } routing.Setup( - base.PublicAPIMux, base.Cfg, mediaDB, deviceDB, gomatrixserverlib.NewClient(), + router, cfg, mediaDB, deviceDB, gomatrixserverlib.NewClient(), ) }