mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-21 05:43:09 -06:00
WIP base refactor
This commit is contained in:
parent
29a20d1da7
commit
9a0905fe2f
|
|
@ -32,24 +32,19 @@ import (
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
|
"github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
||||||
"github.com/matrix-org/dendrite/internal"
|
"github.com/matrix-org/dendrite/internal"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
|
||||||
"github.com/matrix-org/dendrite/internal/config"
|
"github.com/matrix-org/dendrite/internal/config"
|
||||||
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/internal/transactions"
|
"github.com/matrix-org/dendrite/internal/transactions"
|
||||||
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
|
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetupAppServiceAPIComponent sets up and registers HTTP handlers for the AppServices
|
// SetupAppServiceAPIComponent sets up and registers HTTP handlers for the AppServices
|
||||||
// component.
|
// component.
|
||||||
func SetupAppServiceAPIComponent(
|
func SetupAppServiceAPIComponent(
|
||||||
base *basecomponent.BaseDendrite,
|
base *setup.Base,
|
||||||
accountsDB accounts.Database,
|
|
||||||
deviceDB devices.Database,
|
|
||||||
federation *gomatrixserverlib.FederationClient,
|
|
||||||
rsAPI roomserverAPI.RoomserverInternalAPI,
|
|
||||||
transactionsCache *transactions.Cache,
|
transactionsCache *transactions.Cache,
|
||||||
) appserviceAPI.AppServiceQueryAPI {
|
) appserviceAPI.AppServiceQueryAPI {
|
||||||
|
|
||||||
// Create a connection to the appservice postgres DB
|
// Create a connection to the appservice postgres DB
|
||||||
appserviceDB, err := storage.NewDatabase(string(base.Cfg.Database.AppService), base.Cfg.DbProperties())
|
appserviceDB, err := storage.NewDatabase(string(base.Cfg.Database.AppService), base.Cfg.DbProperties())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -69,7 +64,7 @@ func SetupAppServiceAPIComponent(
|
||||||
workerStates[i] = ws
|
workerStates[i] = ws
|
||||||
|
|
||||||
// Create bot account for this AS if it doesn't already exist
|
// Create bot account for this AS if it doesn't already exist
|
||||||
if err = generateAppServiceAccount(accountsDB, deviceDB, appservice); err != nil {
|
if err = generateAppServiceAccount(base.AccountDB, base.DeviceDB, appservice); err != nil {
|
||||||
logrus.WithFields(logrus.Fields{
|
logrus.WithFields(logrus.Fields{
|
||||||
"appservice": appservice.ID,
|
"appservice": appservice.ID,
|
||||||
}).WithError(err).Panicf("failed to generate bot account for appservice")
|
}).WithError(err).Panicf("failed to generate bot account for appservice")
|
||||||
|
|
@ -88,8 +83,8 @@ func SetupAppServiceAPIComponent(
|
||||||
inthttp.AddRoutes(appserviceQueryAPI, base.InternalAPIMux)
|
inthttp.AddRoutes(appserviceQueryAPI, base.InternalAPIMux)
|
||||||
|
|
||||||
consumer := consumers.NewOutputRoomEventConsumer(
|
consumer := consumers.NewOutputRoomEventConsumer(
|
||||||
base.Cfg, base.KafkaConsumer, accountsDB, appserviceDB,
|
base.Cfg, base.KafkaConsumer, base.AccountDB, appserviceDB,
|
||||||
rsAPI, workerStates,
|
base.RoomserverAPI(), workerStates,
|
||||||
)
|
)
|
||||||
if err := consumer.Start(); err != nil {
|
if err := consumer.Start(); err != nil {
|
||||||
logrus.WithError(err).Panicf("failed to start appservice roomserver consumer")
|
logrus.WithError(err).Panicf("failed to start appservice roomserver consumer")
|
||||||
|
|
@ -102,8 +97,8 @@ func SetupAppServiceAPIComponent(
|
||||||
|
|
||||||
// Set up HTTP Endpoints
|
// Set up HTTP Endpoints
|
||||||
routing.Setup(
|
routing.Setup(
|
||||||
base.PublicAPIMux, base.Cfg, rsAPI,
|
base.PublicAPIMux, base.Cfg, base.RoomserverAPI(),
|
||||||
accountsDB, federation, transactionsCache,
|
base.AccountDB, base.FederationClient, transactionsCache,
|
||||||
)
|
)
|
||||||
|
|
||||||
return appserviceQueryAPI
|
return appserviceQueryAPI
|
||||||
|
|
|
||||||
|
|
@ -15,37 +15,22 @@
|
||||||
package clientapi
|
package clientapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
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"
|
|
||||||
"github.com/matrix-org/dendrite/clientapi/consumers"
|
"github.com/matrix-org/dendrite/clientapi/consumers"
|
||||||
"github.com/matrix-org/dendrite/clientapi/producers"
|
"github.com/matrix-org/dendrite/clientapi/producers"
|
||||||
"github.com/matrix-org/dendrite/clientapi/routing"
|
"github.com/matrix-org/dendrite/clientapi/routing"
|
||||||
eduServerAPI "github.com/matrix-org/dendrite/eduserver/api"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
federationSenderAPI "github.com/matrix-org/dendrite/federationsender/api"
|
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
|
||||||
"github.com/matrix-org/dendrite/internal/transactions"
|
"github.com/matrix-org/dendrite/internal/transactions"
|
||||||
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
|
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetupClientAPIComponent sets up and registers HTTP handlers for the ClientAPI
|
// SetupClientAPIComponent sets up and registers HTTP handlers for the ClientAPI
|
||||||
// component.
|
// component.
|
||||||
func SetupClientAPIComponent(
|
func SetupClientAPIComponent(
|
||||||
base *basecomponent.BaseDendrite,
|
base *setup.Base,
|
||||||
deviceDB devices.Database,
|
|
||||||
accountsDB accounts.Database,
|
|
||||||
federation *gomatrixserverlib.FederationClient,
|
|
||||||
keyRing *gomatrixserverlib.KeyRing,
|
|
||||||
rsAPI roomserverAPI.RoomserverInternalAPI,
|
|
||||||
eduInputAPI eduServerAPI.EDUServerInputAPI,
|
|
||||||
asAPI appserviceAPI.AppServiceQueryAPI,
|
|
||||||
transactionsCache *transactions.Cache,
|
transactionsCache *transactions.Cache,
|
||||||
fsAPI federationSenderAPI.FederationSenderInternalAPI,
|
|
||||||
) {
|
) {
|
||||||
roomserverProducer := producers.NewRoomserverProducer(rsAPI)
|
roomserverProducer := producers.NewRoomserverProducer(base.RoomserverAPI())
|
||||||
eduProducer := producers.NewEDUServerProducer(eduInputAPI)
|
eduProducer := producers.NewEDUServerProducer(base.EDUServer())
|
||||||
|
|
||||||
userUpdateProducer := &producers.UserUpdateProducer{
|
userUpdateProducer := &producers.UserUpdateProducer{
|
||||||
Producer: base.KafkaProducer,
|
Producer: base.KafkaProducer,
|
||||||
|
|
@ -58,15 +43,16 @@ func SetupClientAPIComponent(
|
||||||
}
|
}
|
||||||
|
|
||||||
consumer := consumers.NewOutputRoomEventConsumer(
|
consumer := consumers.NewOutputRoomEventConsumer(
|
||||||
base.Cfg, base.KafkaConsumer, accountsDB, rsAPI,
|
base.Cfg, base.KafkaConsumer, base.AccountDB, base.RoomserverAPI(),
|
||||||
)
|
)
|
||||||
if err := consumer.Start(); err != nil {
|
if err := consumer.Start(); err != nil {
|
||||||
logrus.WithError(err).Panicf("failed to start room server consumer")
|
logrus.WithError(err).Panicf("failed to start room server consumer")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
keyRing := base.ServerKeyAPI().KeyRing()
|
||||||
routing.Setup(
|
routing.Setup(
|
||||||
base.PublicAPIMux, base.Cfg, roomserverProducer, rsAPI, asAPI,
|
base.PublicAPIMux, base.Cfg, roomserverProducer, base.RoomserverAPI(), base.AppserviceAPI(),
|
||||||
accountsDB, deviceDB, federation, *keyRing, userUpdateProducer,
|
base.AccountDB, base.DeviceDB, base.FederationClient, *keyRing, userUpdateProducer,
|
||||||
syncProducer, eduProducer, transactionsCache, fsAPI,
|
syncProducer, eduProducer, transactionsCache, base.FederationSender(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,24 +16,16 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/appservice"
|
"github.com/matrix-org/dendrite/appservice"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/internal/transactions"
|
"github.com/matrix-org/dendrite/internal/transactions"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "AppServiceAPI", true)
|
base := setup.NewBase(cfg, "AppServiceAPI", true)
|
||||||
|
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
accountDB := base.CreateAccountsDB()
|
|
||||||
deviceDB := base.CreateDeviceDB()
|
|
||||||
federation := base.CreateFederationClient()
|
|
||||||
rsAPI := base.RoomserverHTTPClient()
|
|
||||||
cache := transactions.New()
|
|
||||||
|
|
||||||
appservice.SetupAppServiceAPIComponent(
|
appservice.SetupAppServiceAPIComponent(base, transactions.New())
|
||||||
base, accountDB, deviceDB, federation, rsAPI, cache,
|
|
||||||
)
|
|
||||||
|
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.AppServiceAPI), string(base.Cfg.Listen.AppServiceAPI))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.AppServiceAPI), string(base.Cfg.Listen.AppServiceAPI))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,32 +16,16 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/clientapi"
|
"github.com/matrix-org/dendrite/clientapi"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/internal/transactions"
|
"github.com/matrix-org/dendrite/internal/transactions"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
|
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "ClientAPI", true)
|
base := setup.NewBase(cfg, "ClientAPI", true)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
|
clientapi.SetupClientAPIComponent(base, transactions.New())
|
||||||
accountDB := base.CreateAccountsDB()
|
|
||||||
deviceDB := base.CreateDeviceDB()
|
|
||||||
federation := base.CreateFederationClient()
|
|
||||||
|
|
||||||
serverKeyAPI := base.ServerKeyAPIClient()
|
|
||||||
keyRing := serverKeyAPI.KeyRing()
|
|
||||||
|
|
||||||
asQuery := base.AppserviceHTTPClient()
|
|
||||||
rsAPI := base.RoomserverHTTPClient()
|
|
||||||
fsAPI := base.FederationSenderHTTPClient()
|
|
||||||
eduInputAPI := base.EDUServerClient()
|
|
||||||
|
|
||||||
clientapi.SetupClientAPIComponent(
|
|
||||||
base, deviceDB, accountDB, federation, keyRing,
|
|
||||||
rsAPI, eduInputAPI, asQuery, transactions.New(), fsAPI,
|
|
||||||
)
|
|
||||||
|
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.ClientAPI), string(base.Cfg.Listen.ClientAPI))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.ClientAPI), string(base.Cfg.Listen.ClientAPI))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ import (
|
||||||
|
|
||||||
pstore "github.com/libp2p/go-libp2p-core/peerstore"
|
pstore "github.com/libp2p/go-libp2p-core/peerstore"
|
||||||
record "github.com/libp2p/go-libp2p-record"
|
record "github.com/libp2p/go-libp2p-record"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
|
|
||||||
"github.com/libp2p/go-libp2p"
|
"github.com/libp2p/go-libp2p"
|
||||||
circuit "github.com/libp2p/go-libp2p-circuit"
|
circuit "github.com/libp2p/go-libp2p-circuit"
|
||||||
|
|
@ -37,9 +37,9 @@ import (
|
||||||
"github.com/matrix-org/dendrite/internal/config"
|
"github.com/matrix-org/dendrite/internal/config"
|
||||||
)
|
)
|
||||||
|
|
||||||
// P2PDendrite is a Peer-to-Peer variant of BaseDendrite.
|
// P2PDendrite is a Peer-to-Peer variant of Base.
|
||||||
type P2PDendrite struct {
|
type P2PDendrite struct {
|
||||||
Base basecomponent.BaseDendrite
|
Base setup.Base
|
||||||
|
|
||||||
// Store our libp2p object so that we can make outgoing connections from it
|
// Store our libp2p object so that we can make outgoing connections from it
|
||||||
// later
|
// later
|
||||||
|
|
@ -54,7 +54,7 @@ type P2PDendrite struct {
|
||||||
// The componentName is used for logging purposes, and should be a friendly name
|
// The componentName is used for logging purposes, and should be a friendly name
|
||||||
// of the component running, e.g. SyncAPI.
|
// of the component running, e.g. SyncAPI.
|
||||||
func NewP2PDendrite(cfg *config.Dendrite, componentName string) *P2PDendrite {
|
func NewP2PDendrite(cfg *config.Dendrite, componentName string) *P2PDendrite {
|
||||||
baseDendrite := basecomponent.NewBaseDendrite(cfg, componentName, false)
|
baseDendrite := setup.NewBase(cfg, componentName, false)
|
||||||
|
|
||||||
ctx, cancel := context.WithCancel(context.Background())
|
ctx, cancel := context.WithCancel(context.Background())
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,21 +17,20 @@ import (
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/eduserver"
|
"github.com/matrix-org/dendrite/eduserver"
|
||||||
"github.com/matrix-org/dendrite/eduserver/cache"
|
"github.com/matrix-org/dendrite/eduserver/cache"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "EDUServerAPI", true)
|
base := setup.NewBase(cfg, "EDUServerAPI", true)
|
||||||
defer func() {
|
defer func() {
|
||||||
if err := base.Close(); err != nil {
|
if err := base.Close(); err != nil {
|
||||||
logrus.WithError(err).Warn("BaseDendrite close failed")
|
logrus.WithError(err).Warn("Base close failed")
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
deviceDB := base.CreateDeviceDB()
|
|
||||||
|
|
||||||
eduserver.SetupEDUServerComponent(base, cache.New(), deviceDB)
|
eduserver.SetupEDUServerComponent(base, cache.New())
|
||||||
|
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.EDUServer), string(base.Cfg.Listen.EDUServer))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.EDUServer), string(base.Cfg.Listen.EDUServer))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,30 +17,17 @@ package main
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/clientapi/producers"
|
"github.com/matrix-org/dendrite/clientapi/producers"
|
||||||
"github.com/matrix-org/dendrite/federationapi"
|
"github.com/matrix-org/dendrite/federationapi"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "FederationAPI", true)
|
base := setup.NewBase(cfg, "FederationAPI", true)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
|
|
||||||
accountDB := base.CreateAccountsDB()
|
|
||||||
deviceDB := base.CreateDeviceDB()
|
|
||||||
federation := base.CreateFederationClient()
|
|
||||||
serverKeyAPI := base.ServerKeyAPIClient()
|
|
||||||
keyRing := serverKeyAPI.KeyRing()
|
|
||||||
fsAPI := base.FederationSenderHTTPClient()
|
|
||||||
rsAPI := base.RoomserverHTTPClient()
|
|
||||||
asAPI := base.AppserviceHTTPClient()
|
|
||||||
// TODO: this isn't a producer
|
// TODO: this isn't a producer
|
||||||
eduProducer := producers.NewEDUServerProducer(base.EDUServerClient())
|
eduProducer := producers.NewEDUServerProducer(base.EDUServer())
|
||||||
|
|
||||||
federationapi.SetupFederationAPIComponent(
|
|
||||||
base, accountDB, deviceDB, federation, keyRing,
|
|
||||||
rsAPI, asAPI, fsAPI, eduProducer,
|
|
||||||
)
|
|
||||||
|
|
||||||
|
federationapi.SetupFederationAPIComponent(base, eduProducer)
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.FederationAPI), string(base.Cfg.Listen.FederationAPI))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.FederationAPI), string(base.Cfg.Listen.FederationAPI))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,23 +16,14 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/federationsender"
|
"github.com/matrix-org/dendrite/federationsender"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "FederationSender", true)
|
base := setup.NewBase(cfg, "FederationSender", true)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
|
federationsender.SetupFederationSenderComponent(base)
|
||||||
federation := base.CreateFederationClient()
|
|
||||||
|
|
||||||
serverKeyAPI := base.ServerKeyAPIClient()
|
|
||||||
keyRing := serverKeyAPI.KeyRing()
|
|
||||||
|
|
||||||
rsAPI := base.RoomserverHTTPClient()
|
|
||||||
federationsender.SetupFederationSenderComponent(
|
|
||||||
base, federation, rsAPI, keyRing,
|
|
||||||
)
|
|
||||||
|
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.FederationSender), string(base.Cfg.Listen.FederationSender))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.FederationSender), string(base.Cfg.Listen.FederationSender))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,19 +15,15 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/keyserver"
|
"github.com/matrix-org/dendrite/keyserver"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "KeyServer", true)
|
base := setup.NewBase(cfg, "KeyServer", true)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
|
keyserver.SetupKeyServerComponent(base)
|
||||||
accountDB := base.CreateAccountsDB()
|
|
||||||
deviceDB := base.CreateDeviceDB()
|
|
||||||
|
|
||||||
keyserver.SetupKeyServerComponent(base, deviceDB, accountDB)
|
|
||||||
|
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.KeyServer), string(base.Cfg.Listen.KeyServer))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.KeyServer), string(base.Cfg.Listen.KeyServer))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,18 +15,15 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/mediaapi"
|
"github.com/matrix-org/dendrite/mediaapi"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "MediaAPI", true)
|
base := setup.NewBase(cfg, "MediaAPI", true)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
|
mediaapi.SetupMediaAPIComponent(base)
|
||||||
deviceDB := base.CreateDeviceDB()
|
|
||||||
|
|
||||||
mediaapi.SetupMediaAPIComponent(base, deviceDB)
|
|
||||||
|
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.MediaAPI), string(base.Cfg.Listen.MediaAPI))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.MediaAPI), string(base.Cfg.Listen.MediaAPI))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,13 +26,12 @@ import (
|
||||||
"github.com/matrix-org/dendrite/federationapi"
|
"github.com/matrix-org/dendrite/federationapi"
|
||||||
"github.com/matrix-org/dendrite/federationsender"
|
"github.com/matrix-org/dendrite/federationsender"
|
||||||
"github.com/matrix-org/dendrite/internal"
|
"github.com/matrix-org/dendrite/internal"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
|
||||||
"github.com/matrix-org/dendrite/internal/config"
|
"github.com/matrix-org/dendrite/internal/config"
|
||||||
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/internal/transactions"
|
"github.com/matrix-org/dendrite/internal/transactions"
|
||||||
"github.com/matrix-org/dendrite/keyserver"
|
"github.com/matrix-org/dendrite/keyserver"
|
||||||
"github.com/matrix-org/dendrite/mediaapi"
|
"github.com/matrix-org/dendrite/mediaapi"
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi"
|
"github.com/matrix-org/dendrite/publicroomsapi"
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi/storage"
|
|
||||||
"github.com/matrix-org/dendrite/roomserver"
|
"github.com/matrix-org/dendrite/roomserver"
|
||||||
"github.com/matrix-org/dendrite/serverkeyapi"
|
"github.com/matrix-org/dendrite/serverkeyapi"
|
||||||
"github.com/matrix-org/dendrite/syncapi"
|
"github.com/matrix-org/dendrite/syncapi"
|
||||||
|
|
@ -49,7 +48,7 @@ var (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(true)
|
cfg := setup.ParseFlags(true)
|
||||||
if *enableHTTPAPIs {
|
if *enableHTTPAPIs {
|
||||||
// If the HTTP APIs are enabled then we need to update the Listen
|
// If the HTTP APIs are enabled then we need to update the Listen
|
||||||
// statements in the configuration so that we know where to find
|
// statements in the configuration so that we know where to find
|
||||||
|
|
@ -63,69 +62,43 @@ func main() {
|
||||||
cfg.Listen.ServerKeyAPI = addr
|
cfg.Listen.ServerKeyAPI = addr
|
||||||
}
|
}
|
||||||
|
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "Monolith", *enableHTTPAPIs)
|
base := setup.NewBase(cfg, "Monolith", *enableHTTPAPIs)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
|
|
||||||
accountDB := base.CreateAccountsDB()
|
serverKeyAPI := serverkeyapi.SetupServerKeyAPIComponent(base)
|
||||||
deviceDB := base.CreateDeviceDB()
|
if !base.UseHTTPAPIs {
|
||||||
federation := base.CreateFederationClient()
|
base.SetServerKeyAPI(serverKeyAPI)
|
||||||
|
|
||||||
serverKeyAPI := serverkeyapi.SetupServerKeyAPIComponent(
|
|
||||||
base, federation,
|
|
||||||
)
|
|
||||||
if base.UseHTTPAPIs {
|
|
||||||
serverKeyAPI = base.ServerKeyAPIClient()
|
|
||||||
}
|
|
||||||
keyRing := serverKeyAPI.KeyRing()
|
|
||||||
|
|
||||||
rsComponent := roomserver.SetupRoomServerComponent(
|
|
||||||
base, keyRing, federation,
|
|
||||||
)
|
|
||||||
rsAPI := rsComponent
|
|
||||||
if base.UseHTTPAPIs {
|
|
||||||
rsAPI = base.RoomserverHTTPClient()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
eduInputAPI := eduserver.SetupEDUServerComponent(
|
rsAPI := roomserver.SetupRoomServerComponent(base)
|
||||||
base, cache.New(), deviceDB,
|
if !base.UseHTTPAPIs {
|
||||||
)
|
base.SetRoomserverAPI(rsAPI)
|
||||||
if base.UseHTTPAPIs {
|
|
||||||
eduInputAPI = base.EDUServerClient()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
asAPI := appservice.SetupAppServiceAPIComponent(
|
eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New())
|
||||||
base, accountDB, deviceDB, federation, rsAPI, transactions.New(),
|
if !base.UseHTTPAPIs {
|
||||||
)
|
base.SetEDUServer(eduInputAPI)
|
||||||
if base.UseHTTPAPIs {
|
|
||||||
asAPI = base.AppserviceHTTPClient()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fsAPI := federationsender.SetupFederationSenderComponent(
|
asAPI := appservice.SetupAppServiceAPIComponent(base, transactions.New())
|
||||||
base, federation, rsAPI, keyRing,
|
if !base.UseHTTPAPIs {
|
||||||
)
|
base.SetAppserviceAPI(asAPI)
|
||||||
if base.UseHTTPAPIs {
|
|
||||||
fsAPI = base.FederationSenderHTTPClient()
|
|
||||||
}
|
}
|
||||||
rsComponent.SetFederationSenderAPI(fsAPI)
|
|
||||||
|
|
||||||
clientapi.SetupClientAPIComponent(
|
fsAPI := federationsender.SetupFederationSenderComponent(base)
|
||||||
base, deviceDB, accountDB,
|
if !base.UseHTTPAPIs {
|
||||||
federation, keyRing, rsAPI,
|
base.SetFederationSender(fsAPI)
|
||||||
eduInputAPI, asAPI, transactions.New(), fsAPI,
|
|
||||||
)
|
|
||||||
|
|
||||||
keyserver.SetupKeyServerComponent(
|
|
||||||
base, deviceDB, accountDB,
|
|
||||||
)
|
|
||||||
eduProducer := producers.NewEDUServerProducer(eduInputAPI)
|
|
||||||
federationapi.SetupFederationAPIComponent(base, accountDB, deviceDB, federation, keyRing, rsAPI, asAPI, fsAPI, eduProducer)
|
|
||||||
mediaapi.SetupMediaAPIComponent(base, 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")
|
|
||||||
}
|
}
|
||||||
publicroomsapi.SetupPublicRoomsAPIComponent(base, deviceDB, publicRoomsDB, rsAPI, federation, nil)
|
rsAPI.SetFederationSenderAPI(fsAPI)
|
||||||
syncapi.SetupSyncAPIComponent(base, deviceDB, accountDB, rsAPI, federation, cfg)
|
|
||||||
|
clientapi.SetupClientAPIComponent(base, transactions.New())
|
||||||
|
|
||||||
|
keyserver.SetupKeyServerComponent(base)
|
||||||
|
eduProducer := producers.NewEDUServerProducer(base.EDUServer())
|
||||||
|
federationapi.SetupFederationAPIComponent(base, eduProducer)
|
||||||
|
mediaapi.SetupMediaAPIComponent(base)
|
||||||
|
publicroomsapi.SetupPublicRoomsAPIComponent(base, nil)
|
||||||
|
syncapi.SetupSyncAPIComponent(base)
|
||||||
|
|
||||||
internal.SetupHTTPAPI(
|
internal.SetupHTTPAPI(
|
||||||
http.DefaultServeMux,
|
http.DefaultServeMux,
|
||||||
|
|
@ -139,7 +112,7 @@ func main() {
|
||||||
go func() {
|
go func() {
|
||||||
serv := http.Server{
|
serv := http.Server{
|
||||||
Addr: *httpBindAddr,
|
Addr: *httpBindAddr,
|
||||||
WriteTimeout: basecomponent.HTTPServerTimeout,
|
WriteTimeout: setup.HTTPServerTimeout,
|
||||||
}
|
}
|
||||||
|
|
||||||
logrus.Info("Listening on ", serv.Addr)
|
logrus.Info("Listening on ", serv.Addr)
|
||||||
|
|
@ -150,7 +123,7 @@ func main() {
|
||||||
go func() {
|
go func() {
|
||||||
serv := http.Server{
|
serv := http.Server{
|
||||||
Addr: *httpsBindAddr,
|
Addr: *httpsBindAddr,
|
||||||
WriteTimeout: basecomponent.HTTPServerTimeout,
|
WriteTimeout: setup.HTTPServerTimeout,
|
||||||
}
|
}
|
||||||
|
|
||||||
logrus.Info("Listening on ", serv.Addr)
|
logrus.Info("Listening on ", serv.Addr)
|
||||||
|
|
|
||||||
|
|
@ -15,26 +15,15 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi"
|
"github.com/matrix-org/dendrite/publicroomsapi"
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi/storage"
|
|
||||||
"github.com/sirupsen/logrus"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "PublicRoomsAPI", true)
|
base := setup.NewBase(cfg, "PublicRoomsAPI", true)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
|
publicroomsapi.SetupPublicRoomsAPIComponent(base, nil)
|
||||||
deviceDB := base.CreateDeviceDB()
|
|
||||||
|
|
||||||
rsAPI := base.RoomserverHTTPClient()
|
|
||||||
|
|
||||||
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")
|
|
||||||
}
|
|
||||||
publicroomsapi.SetupPublicRoomsAPIComponent(base, deviceDB, publicRoomsDB, rsAPI, nil, nil)
|
|
||||||
|
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.PublicRoomsAPI), string(base.Cfg.Listen.PublicRoomsAPI))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.PublicRoomsAPI), string(base.Cfg.Listen.PublicRoomsAPI))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,22 +15,16 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/roomserver"
|
"github.com/matrix-org/dendrite/roomserver"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "RoomServerAPI", true)
|
base := setup.NewBase(cfg, "RoomServerAPI", true)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
federation := base.CreateFederationClient()
|
rsAPI := roomserver.SetupRoomServerComponent(base)
|
||||||
|
rsAPI.SetFederationSenderAPI(base.FederationSender())
|
||||||
serverKeyAPI := base.ServerKeyAPIClient()
|
|
||||||
keyRing := serverKeyAPI.KeyRing()
|
|
||||||
|
|
||||||
fsAPI := base.FederationSenderHTTPClient()
|
|
||||||
rsAPI := roomserver.SetupRoomServerComponent(base, keyRing, federation)
|
|
||||||
rsAPI.SetFederationSenderAPI(fsAPI)
|
|
||||||
|
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.RoomServer), string(base.Cfg.Listen.RoomServer))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.RoomServer), string(base.Cfg.Listen.RoomServer))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,18 +15,16 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/serverkeyapi"
|
"github.com/matrix-org/dendrite/serverkeyapi"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "ServerKeyAPI", true)
|
base := setup.NewBase(cfg, "ServerKeyAPI", true)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
|
|
||||||
federation := base.CreateFederationClient()
|
serverkeyapi.SetupServerKeyAPIComponent(base)
|
||||||
|
|
||||||
serverkeyapi.SetupServerKeyAPIComponent(base, federation)
|
|
||||||
|
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.ServerKeyAPI), string(base.Cfg.Listen.ServerKeyAPI))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.ServerKeyAPI), string(base.Cfg.Listen.ServerKeyAPI))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,22 +15,16 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/syncapi"
|
"github.com/matrix-org/dendrite/syncapi"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := basecomponent.ParseFlags(false)
|
cfg := setup.ParseFlags(false)
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "SyncAPI", true)
|
base := setup.NewBase(cfg, "SyncAPI", true)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
|
|
||||||
deviceDB := base.CreateDeviceDB()
|
syncapi.SetupSyncAPIComponent(base)
|
||||||
accountDB := base.CreateAccountsDB()
|
|
||||||
federation := base.CreateFederationClient()
|
|
||||||
|
|
||||||
rsAPI := base.RoomserverHTTPClient()
|
|
||||||
|
|
||||||
syncapi.SetupSyncAPIComponent(base, deviceDB, accountDB, rsAPI, federation, cfg)
|
|
||||||
|
|
||||||
base.SetupAndServeHTTP(string(base.Cfg.Bind.SyncAPI), string(base.Cfg.Listen.SyncAPI))
|
base.SetupAndServeHTTP(string(base.Cfg.Bind.SyncAPI), string(base.Cfg.Listen.SyncAPI))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -84,3 +84,27 @@ func (f *libp2pKeyFetcher) FetcherName() string {
|
||||||
func (f *libp2pKeyFetcher) StoreKeys(ctx context.Context, results map[gomatrixserverlib.PublicKeyLookupRequest]gomatrixserverlib.PublicKeyLookupResult) error {
|
func (f *libp2pKeyFetcher) StoreKeys(ctx context.Context, results map[gomatrixserverlib.PublicKeyLookupRequest]gomatrixserverlib.PublicKeyLookupResult) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type libp2pServerKeyAPI struct {
|
||||||
|
keyRing *gomatrixserverlib.KeyRing
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *libp2pServerKeyAPI) KeyRing() *gomatrixserverlib.KeyRing {
|
||||||
|
return a.keyRing
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *libp2pServerKeyAPI) InputPublicKeys(
|
||||||
|
ctx context.Context,
|
||||||
|
request *InputPublicKeysRequest,
|
||||||
|
response *InputPublicKeysResponse,
|
||||||
|
) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (a *libp2pServerKeyAPI) QueryPublicKeys(
|
||||||
|
ctx context.Context,
|
||||||
|
request *QueryPublicKeysRequest,
|
||||||
|
response *QueryPublicKeysResponse,
|
||||||
|
) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,13 +30,14 @@ import (
|
||||||
"github.com/matrix-org/dendrite/federationapi"
|
"github.com/matrix-org/dendrite/federationapi"
|
||||||
"github.com/matrix-org/dendrite/federationsender"
|
"github.com/matrix-org/dendrite/federationsender"
|
||||||
"github.com/matrix-org/dendrite/internal"
|
"github.com/matrix-org/dendrite/internal"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
|
||||||
"github.com/matrix-org/dendrite/internal/config"
|
"github.com/matrix-org/dendrite/internal/config"
|
||||||
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/internal/transactions"
|
"github.com/matrix-org/dendrite/internal/transactions"
|
||||||
|
"github.com/matrix-org/dendrite/keyserver"
|
||||||
"github.com/matrix-org/dendrite/mediaapi"
|
"github.com/matrix-org/dendrite/mediaapi"
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi"
|
"github.com/matrix-org/dendrite/publicroomsapi"
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi/storage"
|
|
||||||
"github.com/matrix-org/dendrite/roomserver"
|
"github.com/matrix-org/dendrite/roomserver"
|
||||||
|
"github.com/matrix-org/dendrite/serverkeyapi/api"
|
||||||
"github.com/matrix-org/dendrite/syncapi"
|
"github.com/matrix-org/dendrite/syncapi"
|
||||||
go_http_js_libp2p "github.com/matrix-org/go-http-js-libp2p"
|
go_http_js_libp2p "github.com/matrix-org/go-http-js-libp2p"
|
||||||
|
|
||||||
|
|
@ -160,6 +161,19 @@ func createP2PNode(privKey ed25519.PrivateKey) (serverName string, node *go_http
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func serverKeyAPI() api.ServerKeyInternalAPI {
|
||||||
|
fetcher := &libp2pKeyFetcher{}
|
||||||
|
keyRing := gomatrixserverlib.KeyRing{
|
||||||
|
KeyFetchers: []gomatrixserverlib.KeyFetcher{
|
||||||
|
fetcher,
|
||||||
|
},
|
||||||
|
KeyDatabase: fetcher,
|
||||||
|
}
|
||||||
|
return libp2pServerKeyAPI{
|
||||||
|
keyRing: keyRing,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
cfg := &config.Dendrite{}
|
cfg := &config.Dendrite{}
|
||||||
cfg.SetDefaults()
|
cfg.SetDefaults()
|
||||||
|
|
@ -191,44 +205,27 @@ func main() {
|
||||||
if err := cfg.Derive(); err != nil {
|
if err := cfg.Derive(); err != nil {
|
||||||
logrus.Fatalf("Failed to derive values from config: %s", err)
|
logrus.Fatalf("Failed to derive values from config: %s", err)
|
||||||
}
|
}
|
||||||
base := basecomponent.NewBaseDendrite(cfg, "Monolith", false)
|
base := setup.NewBase(cfg, "Monolith", false)
|
||||||
defer base.Close() // nolint: errcheck
|
defer base.Close() // nolint: errcheck
|
||||||
|
|
||||||
accountDB := base.CreateAccountsDB()
|
base.FederationClient = createFederationClient(cfg, node)
|
||||||
deviceDB := base.CreateDeviceDB()
|
base.SetServerKeyAPI(serverKeyAPI())
|
||||||
federation := createFederationClient(cfg, node)
|
|
||||||
|
|
||||||
fetcher := &libp2pKeyFetcher{}
|
base.SetRoomserverAPI(roomserver.SetupRoomServerComponent(base))
|
||||||
keyRing := gomatrixserverlib.KeyRing{
|
base.SetEDUServer(eduserver.SetupEDUServerComponent(base, cache.New()))
|
||||||
KeyFetchers: []gomatrixserverlib.KeyFetcher{
|
base.SetAppserviceAPI(appservice.SetupAppServiceAPIComponent(base, transactions.New()))
|
||||||
fetcher,
|
base.SetFederationSender(federationsender.SetupFederationSenderComponent(base))
|
||||||
},
|
rsAPI.SetFederationSenderAPI(base.FederationSender())
|
||||||
KeyDatabase: fetcher,
|
|
||||||
}
|
|
||||||
|
|
||||||
rsAPI := roomserver.SetupRoomServerComponent(base, keyRing, federation)
|
clientapi.SetupClientAPIComponent(base, transactions.New())
|
||||||
eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New(), deviceDB)
|
|
||||||
asQuery := appservice.SetupAppServiceAPIComponent(
|
|
||||||
base, accountDB, deviceDB, federation, rsAPI, transactions.New(),
|
|
||||||
)
|
|
||||||
fedSenderAPI := federationsender.SetupFederationSenderComponent(base, federation, rsAPI, &keyRing)
|
|
||||||
rsAPI.SetFederationSenderAPI(fedSenderAPI)
|
|
||||||
p2pPublicRoomProvider := NewLibP2PPublicRoomsProvider(node, fedSenderAPI)
|
|
||||||
|
|
||||||
clientapi.SetupClientAPIComponent(
|
keyserver.SetupKeyServerComponent(base)
|
||||||
base, deviceDB, accountDB,
|
eduProducer := producers.NewEDUServerProducer(base.EDUServer())
|
||||||
federation, &keyRing, rsAPI,
|
federationapi.SetupFederationAPIComponent(base, eduProducer)
|
||||||
eduInputAPI, asQuery, transactions.New(), fedSenderAPI,
|
mediaapi.SetupMediaAPIComponent(base)
|
||||||
)
|
p2pPublicRoomProvider := NewLibP2PPublicRoomsProvider(node, base.FederationSender())
|
||||||
eduProducer := producers.NewEDUServerProducer(eduInputAPI)
|
publicroomsapi.SetupPublicRoomsAPIComponent(base, p2pPublicRoomProvider)
|
||||||
federationapi.SetupFederationAPIComponent(base, accountDB, deviceDB, federation, &keyRing, rsAPI, asQuery, fedSenderAPI, eduProducer)
|
syncapi.SetupSyncAPIComponent(base)
|
||||||
mediaapi.SetupMediaAPIComponent(base, 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")
|
|
||||||
}
|
|
||||||
publicroomsapi.SetupPublicRoomsAPIComponent(base, deviceDB, publicRoomsDB, rsAPI, federation, p2pPublicRoomProvider)
|
|
||||||
syncapi.SetupSyncAPIComponent(base, deviceDB, accountDB, rsAPI, federation, cfg)
|
|
||||||
|
|
||||||
internal.SetupHTTPAPI(
|
internal.SetupHTTPAPI(
|
||||||
http.DefaultServeMux,
|
http.DefaultServeMux,
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,11 @@
|
||||||
package eduserver
|
package eduserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
|
||||||
"github.com/matrix-org/dendrite/eduserver/api"
|
"github.com/matrix-org/dendrite/eduserver/api"
|
||||||
"github.com/matrix-org/dendrite/eduserver/cache"
|
"github.com/matrix-org/dendrite/eduserver/cache"
|
||||||
"github.com/matrix-org/dendrite/eduserver/input"
|
"github.com/matrix-org/dendrite/eduserver/input"
|
||||||
"github.com/matrix-org/dendrite/eduserver/inthttp"
|
"github.com/matrix-org/dendrite/eduserver/inthttp"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetupEDUServerComponent sets up and registers HTTP handlers for the
|
// SetupEDUServerComponent sets up and registers HTTP handlers for the
|
||||||
|
|
@ -30,13 +29,12 @@ import (
|
||||||
// allowing other components running in the same process to hit the query the
|
// allowing other components running in the same process to hit the query the
|
||||||
// APIs directly instead of having to use HTTP.
|
// APIs directly instead of having to use HTTP.
|
||||||
func SetupEDUServerComponent(
|
func SetupEDUServerComponent(
|
||||||
base *basecomponent.BaseDendrite,
|
base *setup.Base,
|
||||||
eduCache *cache.EDUCache,
|
eduCache *cache.EDUCache,
|
||||||
deviceDB devices.Database,
|
|
||||||
) api.EDUServerInputAPI {
|
) api.EDUServerInputAPI {
|
||||||
inputAPI := &input.EDUServerInputAPI{
|
inputAPI := &input.EDUServerInputAPI{
|
||||||
Cache: eduCache,
|
Cache: eduCache,
|
||||||
DeviceDB: deviceDB,
|
DeviceDB: base.DeviceDB,
|
||||||
Producer: base.KafkaProducer,
|
Producer: base.KafkaProducer,
|
||||||
OutputTypingEventTopic: string(base.Cfg.Kafka.Topics.OutputTypingEvent),
|
OutputTypingEventTopic: string(base.Cfg.Kafka.Topics.OutputTypingEvent),
|
||||||
OutputSendToDeviceEventTopic: string(base.Cfg.Kafka.Topics.OutputSendToDeviceEvent),
|
OutputSendToDeviceEventTopic: string(base.Cfg.Kafka.Topics.OutputSendToDeviceEvent),
|
||||||
|
|
|
||||||
|
|
@ -15,37 +15,24 @@
|
||||||
package federationapi
|
package federationapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
appserviceAPI "github.com/matrix-org/dendrite/appservice/api"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"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"
|
|
||||||
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
|
|
||||||
|
|
||||||
// TODO: Are we really wanting to pull in the producer from clientapi
|
// TODO: Are we really wanting to pull in the producer from clientapi
|
||||||
"github.com/matrix-org/dendrite/clientapi/producers"
|
"github.com/matrix-org/dendrite/clientapi/producers"
|
||||||
"github.com/matrix-org/dendrite/federationapi/routing"
|
"github.com/matrix-org/dendrite/federationapi/routing"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetupFederationAPIComponent sets up and registers HTTP handlers for the
|
// SetupFederationAPIComponent sets up and registers HTTP handlers for the
|
||||||
// FederationAPI component.
|
// FederationAPI component.
|
||||||
func SetupFederationAPIComponent(
|
func SetupFederationAPIComponent(
|
||||||
base *basecomponent.BaseDendrite,
|
base *setup.Base,
|
||||||
accountsDB accounts.Database,
|
|
||||||
deviceDB devices.Database,
|
|
||||||
federation *gomatrixserverlib.FederationClient,
|
|
||||||
keyRing *gomatrixserverlib.KeyRing,
|
|
||||||
rsAPI roomserverAPI.RoomserverInternalAPI,
|
|
||||||
asAPI appserviceAPI.AppServiceQueryAPI,
|
|
||||||
federationSenderAPI federationSenderAPI.FederationSenderInternalAPI,
|
|
||||||
eduProducer *producers.EDUServerProducer,
|
eduProducer *producers.EDUServerProducer,
|
||||||
) {
|
) {
|
||||||
roomserverProducer := producers.NewRoomserverProducer(rsAPI)
|
roomserverProducer := producers.NewRoomserverProducer(base.RoomserverAPI())
|
||||||
|
|
||||||
routing.Setup(
|
routing.Setup(
|
||||||
base.PublicAPIMux, base.Cfg, rsAPI, asAPI, roomserverProducer,
|
base.PublicAPIMux, base.Cfg, base.RoomserverAPI(), base.AppserviceAPI(), roomserverProducer,
|
||||||
eduProducer, federationSenderAPI, *keyRing,
|
eduProducer, base.FederationSender(), *base.ServerKeyAPI().KeyRing(),
|
||||||
federation, accountsDB, deviceDB,
|
base.FederationClient, base.AccountDB, base.DeviceDB,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,37 +23,30 @@ import (
|
||||||
"github.com/matrix-org/dendrite/federationsender/queue"
|
"github.com/matrix-org/dendrite/federationsender/queue"
|
||||||
"github.com/matrix-org/dendrite/federationsender/storage"
|
"github.com/matrix-org/dendrite/federationsender/storage"
|
||||||
"github.com/matrix-org/dendrite/federationsender/types"
|
"github.com/matrix-org/dendrite/federationsender/types"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
|
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetupFederationSenderComponent sets up and registers HTTP handlers for the
|
// SetupFederationSenderComponent sets up and registers HTTP handlers for the
|
||||||
// FederationSender component.
|
// FederationSender component.
|
||||||
func SetupFederationSenderComponent(
|
func SetupFederationSenderComponent(base *setup.Base) api.FederationSenderInternalAPI {
|
||||||
base *basecomponent.BaseDendrite,
|
|
||||||
federation *gomatrixserverlib.FederationClient,
|
|
||||||
rsAPI roomserverAPI.RoomserverInternalAPI,
|
|
||||||
keyRing *gomatrixserverlib.KeyRing,
|
|
||||||
) api.FederationSenderInternalAPI {
|
|
||||||
federationSenderDB, err := storage.NewDatabase(string(base.Cfg.Database.FederationSender), base.Cfg.DbProperties())
|
federationSenderDB, err := storage.NewDatabase(string(base.Cfg.Database.FederationSender), base.Cfg.DbProperties())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Panic("failed to connect to federation sender db")
|
logrus.WithError(err).Panic("failed to connect to federation sender db")
|
||||||
}
|
}
|
||||||
|
|
||||||
roomserverProducer := producers.NewRoomserverProducer(
|
roomserverProducer := producers.NewRoomserverProducer(
|
||||||
rsAPI, base.Cfg.Matrix.ServerName, base.Cfg.Matrix.KeyID, base.Cfg.Matrix.PrivateKey,
|
base.RoomserverAPI(), base.Cfg.Matrix.ServerName, base.Cfg.Matrix.KeyID, base.Cfg.Matrix.PrivateKey,
|
||||||
)
|
)
|
||||||
|
|
||||||
statistics := &types.Statistics{}
|
statistics := &types.Statistics{}
|
||||||
queues := queue.NewOutgoingQueues(
|
queues := queue.NewOutgoingQueues(
|
||||||
base.Cfg.Matrix.ServerName, federation, roomserverProducer, statistics,
|
base.Cfg.Matrix.ServerName, base.FederationClient, roomserverProducer, statistics,
|
||||||
)
|
)
|
||||||
|
|
||||||
rsConsumer := consumers.NewOutputRoomEventConsumer(
|
rsConsumer := consumers.NewOutputRoomEventConsumer(
|
||||||
base.Cfg, base.KafkaConsumer, queues,
|
base.Cfg, base.KafkaConsumer, queues,
|
||||||
federationSenderDB, rsAPI,
|
federationSenderDB, base.RoomserverAPI(),
|
||||||
)
|
)
|
||||||
if err = rsConsumer.Start(); err != nil {
|
if err = rsConsumer.Start(); err != nil {
|
||||||
logrus.WithError(err).Panic("failed to start room server consumer")
|
logrus.WithError(err).Panic("failed to start room server consumer")
|
||||||
|
|
@ -66,7 +59,9 @@ func SetupFederationSenderComponent(
|
||||||
logrus.WithError(err).Panic("failed to start typing server consumer")
|
logrus.WithError(err).Panic("failed to start typing server consumer")
|
||||||
}
|
}
|
||||||
|
|
||||||
queryAPI := internal.NewFederationSenderInternalAPI(federationSenderDB, base.Cfg, roomserverProducer, federation, keyRing, statistics, queues)
|
queryAPI := internal.NewFederationSenderInternalAPI(
|
||||||
|
federationSenderDB, base.Cfg, roomserverProducer, base.FederationClient, base.ServerKeyAPI().KeyRing(), statistics, queues,
|
||||||
|
)
|
||||||
inthttp.AddRoutes(queryAPI, base.InternalAPIMux)
|
inthttp.AddRoutes(queryAPI, base.InternalAPIMux)
|
||||||
|
|
||||||
return queryAPI
|
return queryAPI
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
package basecomponent
|
package setup
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"database/sql"
|
"database/sql"
|
||||||
|
|
@ -51,12 +51,12 @@ import (
|
||||||
_ "net/http/pprof"
|
_ "net/http/pprof"
|
||||||
)
|
)
|
||||||
|
|
||||||
// BaseDendrite is a base for creating new instances of dendrite. It parses
|
// Base is a base for creating new instances of dendrite. It parses
|
||||||
// command line flags and config, and exposes methods for creating various
|
// command line flags and config, and exposes methods for creating various
|
||||||
// resources. All errors are handled by logging then exiting, so all methods
|
// resources. All errors are handled by logging then exiting, so all methods
|
||||||
// should only be used during start up.
|
// should only be used during start up.
|
||||||
// Must be closed when shutting down.
|
// Must be closed when shutting down.
|
||||||
type BaseDendrite struct {
|
type Base struct {
|
||||||
componentName string
|
componentName string
|
||||||
tracerCloser io.Closer
|
tracerCloser io.Closer
|
||||||
|
|
||||||
|
|
@ -69,15 +69,27 @@ type BaseDendrite struct {
|
||||||
ImmutableCache caching.ImmutableCache
|
ImmutableCache caching.ImmutableCache
|
||||||
KafkaConsumer sarama.Consumer
|
KafkaConsumer sarama.Consumer
|
||||||
KafkaProducer sarama.SyncProducer
|
KafkaProducer sarama.SyncProducer
|
||||||
|
|
||||||
|
// internal APIs
|
||||||
|
appserviceAPI appserviceAPI.AppServiceQueryAPI
|
||||||
|
roomserverAPI roomserverAPI.RoomserverInternalAPI
|
||||||
|
eduServer eduServerAPI.EDUServerInputAPI
|
||||||
|
federationSender federationSenderAPI.FederationSenderInternalAPI
|
||||||
|
serverKeyAPI serverKeyAPI.ServerKeyInternalAPI
|
||||||
|
|
||||||
|
DeviceDB devices.Database
|
||||||
|
AccountDB accounts.Database
|
||||||
|
FederationClient *gomatrixserverlib.FederationClient
|
||||||
}
|
}
|
||||||
|
|
||||||
const HTTPServerTimeout = time.Minute * 5
|
const HTTPServerTimeout = time.Minute * 5
|
||||||
const HTTPClientTimeout = time.Second * 30
|
const HTTPClientTimeout = time.Second * 30
|
||||||
|
|
||||||
// NewBaseDendrite creates a new instance to be used by a component.
|
// NewBase creates a new instance to be used by a component.
|
||||||
// The componentName is used for logging purposes, and should be a friendly name
|
// The componentName is used for logging purposes, and should be a friendly name
|
||||||
// of the compontent running, e.g. "SyncAPI"
|
// of the compontent running, e.g. "SyncAPI"
|
||||||
func NewBaseDendrite(cfg *config.Dendrite, componentName string, useHTTPAPIs bool) *BaseDendrite {
|
// If `useHTTPAPIs` is true, HTTP clients will be made for all internal APIs.
|
||||||
|
func NewBase(cfg *config.Dendrite, componentName string, useHTTPAPIs bool) *Base {
|
||||||
internal.SetupStdLogging()
|
internal.SetupStdLogging()
|
||||||
internal.SetupHookLogging(cfg.Logging, componentName)
|
internal.SetupHookLogging(cfg.Logging, componentName)
|
||||||
internal.SetupPprof()
|
internal.SetupPprof()
|
||||||
|
|
@ -121,7 +133,7 @@ func NewBaseDendrite(cfg *config.Dendrite, componentName string, useHTTPAPIs boo
|
||||||
// directory traversal attack e.g /../../../etc/passwd
|
// directory traversal attack e.g /../../../etc/passwd
|
||||||
httpmux := mux.NewRouter().SkipClean(true)
|
httpmux := mux.NewRouter().SkipClean(true)
|
||||||
|
|
||||||
return &BaseDendrite{
|
b := &Base{
|
||||||
componentName: componentName,
|
componentName: componentName,
|
||||||
UseHTTPAPIs: useHTTPAPIs,
|
UseHTTPAPIs: useHTTPAPIs,
|
||||||
tracerCloser: closer,
|
tracerCloser: closer,
|
||||||
|
|
@ -133,15 +145,85 @@ func NewBaseDendrite(cfg *config.Dendrite, componentName string, useHTTPAPIs boo
|
||||||
KafkaConsumer: kafkaConsumer,
|
KafkaConsumer: kafkaConsumer,
|
||||||
KafkaProducer: kafkaProducer,
|
KafkaProducer: kafkaProducer,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if useHTTPAPIs {
|
||||||
|
b.appserviceAPI = b.createAppserviceHTTPClient()
|
||||||
|
b.roomserverAPI = b.createRoomserverHTTPClient()
|
||||||
|
b.eduServer = b.createEDUServerClient()
|
||||||
|
b.federationSender = b.createFederationSenderHTTPClient()
|
||||||
|
b.serverKeyAPI = b.createServerKeyAPIClient()
|
||||||
|
}
|
||||||
|
|
||||||
|
b.DeviceDB = b.createDeviceDB()
|
||||||
|
b.AccountDB = b.createAccountsDB()
|
||||||
|
b.FederationClient = b.createFederationClient()
|
||||||
|
|
||||||
|
return b
|
||||||
}
|
}
|
||||||
|
|
||||||
// Close implements io.Closer
|
// Close implements io.Closer
|
||||||
func (b *BaseDendrite) Close() error {
|
func (b *Base) Close() error {
|
||||||
return b.tracerCloser.Close()
|
return b.tracerCloser.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
// AppserviceHTTPClient returns the AppServiceQueryAPI for hitting the appservice component over HTTP.
|
// AppserviceAPI return the API or panics if one is not set.
|
||||||
func (b *BaseDendrite) AppserviceHTTPClient() appserviceAPI.AppServiceQueryAPI {
|
func (b *Base) AppserviceAPI() appserviceAPI.AppServiceQueryAPI {
|
||||||
|
if b.appserviceAPI == nil {
|
||||||
|
logrus.Panic("AppserviceAPI is unset")
|
||||||
|
}
|
||||||
|
return b.appserviceAPI
|
||||||
|
}
|
||||||
|
|
||||||
|
// RoomserverAPI return the API or panics if one is not set.
|
||||||
|
func (b *Base) RoomserverAPI() roomserverAPI.RoomserverInternalAPI {
|
||||||
|
if b.roomserverAPI == nil {
|
||||||
|
logrus.Panic("RoomserverAPI is unset")
|
||||||
|
}
|
||||||
|
return b.roomserverAPI
|
||||||
|
}
|
||||||
|
|
||||||
|
// EDUServer return the API or panics if one is not set.
|
||||||
|
func (b *Base) EDUServer() eduServerAPI.EDUServerInputAPI {
|
||||||
|
if b.eduServer == nil {
|
||||||
|
logrus.Panic("EDUServer is unset")
|
||||||
|
}
|
||||||
|
return b.eduServer
|
||||||
|
}
|
||||||
|
|
||||||
|
// FederationSender return the API or panics if one is not set.
|
||||||
|
func (b *Base) FederationSender() federationSenderAPI.FederationSenderInternalAPI {
|
||||||
|
if b.federationSender == nil {
|
||||||
|
logrus.Panic("FederationSender is unset")
|
||||||
|
}
|
||||||
|
return b.federationSender
|
||||||
|
}
|
||||||
|
|
||||||
|
// ServerKeyAPI return the API or panics if one is not set.
|
||||||
|
func (b *Base) ServerKeyAPI() serverKeyAPI.ServerKeyInternalAPI {
|
||||||
|
if b.serverKeyAPI == nil {
|
||||||
|
logrus.Panic("ServerKeyAPI is unset")
|
||||||
|
}
|
||||||
|
return b.serverKeyAPI
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) SetServerKeyAPI(a serverKeyAPI.ServerKeyInternalAPI) {
|
||||||
|
b.serverKeyAPI = a
|
||||||
|
}
|
||||||
|
func (b *Base) SetFederationSender(a federationSenderAPI.FederationSenderInternalAPI) {
|
||||||
|
b.federationSender = a
|
||||||
|
}
|
||||||
|
func (b *Base) SetEDUServer(a eduServerAPI.EDUServerInputAPI) {
|
||||||
|
b.eduServer = a
|
||||||
|
}
|
||||||
|
func (b *Base) SetRoomserverAPI(a roomserverAPI.RoomserverInternalAPI) {
|
||||||
|
b.roomserverAPI = a
|
||||||
|
}
|
||||||
|
func (b *Base) SetAppserviceAPI(a appserviceAPI.AppServiceQueryAPI) {
|
||||||
|
b.appserviceAPI = a
|
||||||
|
}
|
||||||
|
|
||||||
|
// createAppserviceHTTPClient returns the AppServiceQueryAPI for hitting the appservice component over HTTP.
|
||||||
|
func (b *Base) createAppserviceHTTPClient() appserviceAPI.AppServiceQueryAPI {
|
||||||
a, err := asinthttp.NewAppserviceClient(b.Cfg.AppServiceURL(), b.httpClient)
|
a, err := asinthttp.NewAppserviceClient(b.Cfg.AppServiceURL(), b.httpClient)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Panic("CreateHTTPAppServiceAPIs failed")
|
logrus.WithError(err).Panic("CreateHTTPAppServiceAPIs failed")
|
||||||
|
|
@ -149,8 +231,8 @@ func (b *BaseDendrite) AppserviceHTTPClient() appserviceAPI.AppServiceQueryAPI {
|
||||||
return a
|
return a
|
||||||
}
|
}
|
||||||
|
|
||||||
// RoomserverHTTPClient returns RoomserverInternalAPI for hitting the roomserver over HTTP.
|
// createRoomserverHTTPClient returns RoomserverInternalAPI for hitting the roomserver over HTTP.
|
||||||
func (b *BaseDendrite) RoomserverHTTPClient() roomserverAPI.RoomserverInternalAPI {
|
func (b *Base) createRoomserverHTTPClient() roomserverAPI.RoomserverInternalAPI {
|
||||||
rsAPI, err := rsinthttp.NewRoomserverClient(b.Cfg.RoomServerURL(), b.httpClient, b.ImmutableCache)
|
rsAPI, err := rsinthttp.NewRoomserverClient(b.Cfg.RoomServerURL(), b.httpClient, b.ImmutableCache)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Panic("RoomserverHTTPClient failed", b.httpClient)
|
logrus.WithError(err).Panic("RoomserverHTTPClient failed", b.httpClient)
|
||||||
|
|
@ -158,8 +240,8 @@ func (b *BaseDendrite) RoomserverHTTPClient() roomserverAPI.RoomserverInternalAP
|
||||||
return rsAPI
|
return rsAPI
|
||||||
}
|
}
|
||||||
|
|
||||||
// EDUServerClient returns EDUServerInputAPI for hitting the EDU server over HTTP
|
// createEDUServerClient returns EDUServerInputAPI for hitting the EDU server over HTTP
|
||||||
func (b *BaseDendrite) EDUServerClient() eduServerAPI.EDUServerInputAPI {
|
func (b *Base) createEDUServerClient() eduServerAPI.EDUServerInputAPI {
|
||||||
e, err := eduinthttp.NewEDUServerClient(b.Cfg.EDUServerURL(), b.httpClient)
|
e, err := eduinthttp.NewEDUServerClient(b.Cfg.EDUServerURL(), b.httpClient)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Panic("EDUServerClient failed", b.httpClient)
|
logrus.WithError(err).Panic("EDUServerClient failed", b.httpClient)
|
||||||
|
|
@ -167,9 +249,9 @@ func (b *BaseDendrite) EDUServerClient() eduServerAPI.EDUServerInputAPI {
|
||||||
return e
|
return e
|
||||||
}
|
}
|
||||||
|
|
||||||
// FederationSenderHTTPClient returns FederationSenderInternalAPI for hitting
|
// createFederationSenderHTTPClient returns FederationSenderInternalAPI for hitting
|
||||||
// the federation sender over HTTP
|
// the federation sender over HTTP
|
||||||
func (b *BaseDendrite) FederationSenderHTTPClient() federationSenderAPI.FederationSenderInternalAPI {
|
func (b *Base) createFederationSenderHTTPClient() federationSenderAPI.FederationSenderInternalAPI {
|
||||||
f, err := fsinthttp.NewFederationSenderClient(b.Cfg.FederationSenderURL(), b.httpClient)
|
f, err := fsinthttp.NewFederationSenderClient(b.Cfg.FederationSenderURL(), b.httpClient)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Panic("FederationSenderHTTPClient failed", b.httpClient)
|
logrus.WithError(err).Panic("FederationSenderHTTPClient failed", b.httpClient)
|
||||||
|
|
@ -177,8 +259,8 @@ func (b *BaseDendrite) FederationSenderHTTPClient() federationSenderAPI.Federati
|
||||||
return f
|
return f
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServerKeyAPIClient returns ServerKeyInternalAPI for hitting the server key API over HTTP
|
// createServerKeyAPIClient returns ServerKeyInternalAPI for hitting the server key API over HTTP
|
||||||
func (b *BaseDendrite) ServerKeyAPIClient() serverKeyAPI.ServerKeyInternalAPI {
|
func (b *Base) createServerKeyAPIClient() serverKeyAPI.ServerKeyInternalAPI {
|
||||||
f, err := skinthttp.NewServerKeyClient(
|
f, err := skinthttp.NewServerKeyClient(
|
||||||
b.Cfg.ServerKeyAPIURL(),
|
b.Cfg.ServerKeyAPIURL(),
|
||||||
b.httpClient,
|
b.httpClient,
|
||||||
|
|
@ -190,9 +272,12 @@ func (b *BaseDendrite) ServerKeyAPIClient() serverKeyAPI.ServerKeyInternalAPI {
|
||||||
return f
|
return f
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateDeviceDB creates a new instance of the device database. Should only be
|
// createDeviceDB creates a new instance of the device database. Should only be
|
||||||
// called once per component.
|
// called once per component.
|
||||||
func (b *BaseDendrite) CreateDeviceDB() devices.Database {
|
func (b *Base) createDeviceDB() devices.Database {
|
||||||
|
if b.Cfg.Database.Device == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
db, err := devices.NewDatabase(string(b.Cfg.Database.Device), b.Cfg.DbProperties(), b.Cfg.Matrix.ServerName)
|
db, err := devices.NewDatabase(string(b.Cfg.Database.Device), b.Cfg.DbProperties(), b.Cfg.Matrix.ServerName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Panicf("failed to connect to devices db")
|
logrus.WithError(err).Panicf("failed to connect to devices db")
|
||||||
|
|
@ -201,9 +286,12 @@ func (b *BaseDendrite) CreateDeviceDB() devices.Database {
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateAccountsDB creates a new instance of the accounts database. Should only
|
// createAccountsDB creates a new instance of the accounts database. Should only
|
||||||
// be called once per component.
|
// be called once per component.
|
||||||
func (b *BaseDendrite) CreateAccountsDB() accounts.Database {
|
func (b *Base) createAccountsDB() accounts.Database {
|
||||||
|
if b.Cfg.Database.Account == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
db, err := accounts.NewDatabase(string(b.Cfg.Database.Account), b.Cfg.DbProperties(), b.Cfg.Matrix.ServerName)
|
db, err := accounts.NewDatabase(string(b.Cfg.Database.Account), b.Cfg.DbProperties(), b.Cfg.Matrix.ServerName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Panicf("failed to connect to accounts db")
|
logrus.WithError(err).Panicf("failed to connect to accounts db")
|
||||||
|
|
@ -212,9 +300,9 @@ func (b *BaseDendrite) CreateAccountsDB() accounts.Database {
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
|
|
||||||
// CreateFederationClient creates a new federation client. Should only be called
|
// createFederationClient creates a new federation client. Should only be called
|
||||||
// once per component.
|
// once per component.
|
||||||
func (b *BaseDendrite) CreateFederationClient() *gomatrixserverlib.FederationClient {
|
func (b *Base) createFederationClient() *gomatrixserverlib.FederationClient {
|
||||||
return gomatrixserverlib.NewFederationClient(
|
return gomatrixserverlib.NewFederationClient(
|
||||||
b.Cfg.Matrix.ServerName, b.Cfg.Matrix.KeyID, b.Cfg.Matrix.PrivateKey,
|
b.Cfg.Matrix.ServerName, b.Cfg.Matrix.KeyID, b.Cfg.Matrix.PrivateKey,
|
||||||
)
|
)
|
||||||
|
|
@ -222,7 +310,7 @@ func (b *BaseDendrite) CreateFederationClient() *gomatrixserverlib.FederationCli
|
||||||
|
|
||||||
// SetupAndServeHTTP sets up the HTTP server to serve endpoints registered on
|
// SetupAndServeHTTP sets up the HTTP server to serve endpoints registered on
|
||||||
// ApiMux under /api/ and adds a prometheus handler under /metrics.
|
// ApiMux under /api/ and adds a prometheus handler under /metrics.
|
||||||
func (b *BaseDendrite) SetupAndServeHTTP(bindaddr string, listenaddr string) {
|
func (b *Base) SetupAndServeHTTP(bindaddr string, listenaddr string) {
|
||||||
// If a separate bind address is defined, listen on that. Otherwise use
|
// If a separate bind address is defined, listen on that. Otherwise use
|
||||||
// the listen address
|
// the listen address
|
||||||
var addr string
|
var addr string
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
|
|
||||||
package basecomponent
|
package setup
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
|
|
@ -15,18 +15,12 @@
|
||||||
package keyserver
|
package keyserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
|
||||||
"github.com/matrix-org/dendrite/keyserver/routing"
|
"github.com/matrix-org/dendrite/keyserver/routing"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetupFederationSenderComponent sets up and registers HTTP handlers for the
|
// SetupFederationSenderComponent sets up and registers HTTP handlers for the
|
||||||
// FederationSender component.
|
// FederationSender component.
|
||||||
func SetupKeyServerComponent(
|
func SetupKeyServerComponent(base *setup.Base) {
|
||||||
base *basecomponent.BaseDendrite,
|
routing.Setup(base.PublicAPIMux, base.Cfg, base.AccountDB, base.DeviceDB)
|
||||||
deviceDB devices.Database,
|
|
||||||
accountsDB accounts.Database,
|
|
||||||
) {
|
|
||||||
routing.Setup(base.PublicAPIMux, base.Cfg, accountsDB, deviceDB)
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,8 +15,7 @@
|
||||||
package mediaapi
|
package mediaapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
|
||||||
"github.com/matrix-org/dendrite/mediaapi/routing"
|
"github.com/matrix-org/dendrite/mediaapi/routing"
|
||||||
"github.com/matrix-org/dendrite/mediaapi/storage"
|
"github.com/matrix-org/dendrite/mediaapi/storage"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
|
|
@ -25,16 +24,13 @@ import (
|
||||||
|
|
||||||
// SetupMediaAPIComponent sets up and registers HTTP handlers for the MediaAPI
|
// SetupMediaAPIComponent sets up and registers HTTP handlers for the MediaAPI
|
||||||
// component.
|
// component.
|
||||||
func SetupMediaAPIComponent(
|
func SetupMediaAPIComponent(base *setup.Base) {
|
||||||
base *basecomponent.BaseDendrite,
|
|
||||||
deviceDB devices.Database,
|
|
||||||
) {
|
|
||||||
mediaDB, err := storage.Open(string(base.Cfg.Database.MediaAPI), base.Cfg.DbProperties())
|
mediaDB, err := storage.Open(string(base.Cfg.Database.MediaAPI), base.Cfg.DbProperties())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Panicf("failed to connect to media db")
|
logrus.WithError(err).Panicf("failed to connect to media db")
|
||||||
}
|
}
|
||||||
|
|
||||||
routing.Setup(
|
routing.Setup(
|
||||||
base.PublicAPIMux, base.Cfg, mediaDB, deviceDB, gomatrixserverlib.NewClient(),
|
base.PublicAPIMux, base.Cfg, mediaDB, base.DeviceDB, gomatrixserverlib.NewClient(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,33 +15,28 @@
|
||||||
package publicroomsapi
|
package publicroomsapi
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi/consumers"
|
"github.com/matrix-org/dendrite/publicroomsapi/consumers"
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi/routing"
|
"github.com/matrix-org/dendrite/publicroomsapi/routing"
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi/storage"
|
"github.com/matrix-org/dendrite/publicroomsapi/storage"
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi/types"
|
"github.com/matrix-org/dendrite/publicroomsapi/types"
|
||||||
roomserverAPI "github.com/matrix-org/dendrite/roomserver/api"
|
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
// SetupPublicRoomsAPIComponent sets up and registers HTTP handlers for the PublicRoomsAPI
|
// SetupPublicRoomsAPIComponent sets up and registers HTTP handlers for the PublicRoomsAPI
|
||||||
// component.
|
// component.
|
||||||
func SetupPublicRoomsAPIComponent(
|
func SetupPublicRoomsAPIComponent(base *setup.Base, extRoomsProvider types.ExternalPublicRoomsProvider) {
|
||||||
base *basecomponent.BaseDendrite,
|
publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI), base.Cfg.DbProperties(), base.Cfg.Matrix.ServerName)
|
||||||
deviceDB devices.Database,
|
if err != nil {
|
||||||
publicRoomsDB storage.Database,
|
logrus.WithError(err).Panicf("failed to connect to public rooms db")
|
||||||
rsAPI roomserverAPI.RoomserverInternalAPI,
|
}
|
||||||
fedClient *gomatrixserverlib.FederationClient,
|
|
||||||
extRoomsProvider types.ExternalPublicRoomsProvider,
|
|
||||||
) {
|
|
||||||
rsConsumer := consumers.NewOutputRoomEventConsumer(
|
rsConsumer := consumers.NewOutputRoomEventConsumer(
|
||||||
base.Cfg, base.KafkaConsumer, publicRoomsDB, rsAPI,
|
base.Cfg, base.KafkaConsumer, publicRoomsDB, base.RoomserverAPI(),
|
||||||
)
|
)
|
||||||
if err := rsConsumer.Start(); err != nil {
|
if err := rsConsumer.Start(); err != nil {
|
||||||
logrus.WithError(err).Panic("failed to start public rooms server consumer")
|
logrus.WithError(err).Panic("failed to start public rooms server consumer")
|
||||||
}
|
}
|
||||||
|
|
||||||
routing.Setup(base.PublicAPIMux, deviceDB, publicRoomsDB, rsAPI, fedClient, extRoomsProvider)
|
routing.Setup(base.PublicAPIMux, base.DeviceDB, publicRoomsDB, base.RoomserverAPI(), base.FederationClient, extRoomsProvider)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,12 +18,13 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/url"
|
"net/url"
|
||||||
|
|
||||||
|
"github.com/matrix-org/dendrite/internal"
|
||||||
"github.com/matrix-org/dendrite/publicroomsapi/storage/sqlite3"
|
"github.com/matrix-org/dendrite/publicroomsapi/storage/sqlite3"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
)
|
)
|
||||||
|
|
||||||
// NewPublicRoomsServerDatabase opens a database connection.
|
// NewPublicRoomsServerDatabase opens a database connection.
|
||||||
func NewPublicRoomsServerDatabase(dataSourceName string, localServerName gomatrixserverlib.ServerName) (Database, error) {
|
func NewPublicRoomsServerDatabase(dataSourceName string, dbProperties internal.DbProperties, localServerName gomatrixserverlib.ServerName) (Database, error) {
|
||||||
uri, err := url.Parse(dataSourceName)
|
uri, err := url.Parse(dataSourceName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,8 @@ package roomserver
|
||||||
import (
|
import (
|
||||||
"github.com/matrix-org/dendrite/roomserver/api"
|
"github.com/matrix-org/dendrite/roomserver/api"
|
||||||
"github.com/matrix-org/dendrite/roomserver/inthttp"
|
"github.com/matrix-org/dendrite/roomserver/inthttp"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/roomserver/internal"
|
"github.com/matrix-org/dendrite/roomserver/internal"
|
||||||
"github.com/matrix-org/dendrite/roomserver/storage"
|
"github.com/matrix-org/dendrite/roomserver/storage"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
|
@ -30,9 +29,7 @@ import (
|
||||||
// allowing other components running in the same process to hit the query the
|
// allowing other components running in the same process to hit the query the
|
||||||
// APIs directly instead of having to use HTTP.
|
// APIs directly instead of having to use HTTP.
|
||||||
func SetupRoomServerComponent(
|
func SetupRoomServerComponent(
|
||||||
base *basecomponent.BaseDendrite,
|
base *setup.Base,
|
||||||
keyRing gomatrixserverlib.JSONVerifier,
|
|
||||||
fedClient *gomatrixserverlib.FederationClient,
|
|
||||||
) api.RoomserverInternalAPI {
|
) api.RoomserverInternalAPI {
|
||||||
roomserverDB, err := storage.Open(string(base.Cfg.Database.RoomServer), base.Cfg.DbProperties())
|
roomserverDB, err := storage.Open(string(base.Cfg.Database.RoomServer), base.Cfg.DbProperties())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -46,8 +43,8 @@ func SetupRoomServerComponent(
|
||||||
OutputRoomEventTopic: string(base.Cfg.Kafka.Topics.OutputRoomEvent),
|
OutputRoomEventTopic: string(base.Cfg.Kafka.Topics.OutputRoomEvent),
|
||||||
ImmutableCache: base.ImmutableCache,
|
ImmutableCache: base.ImmutableCache,
|
||||||
ServerName: base.Cfg.Matrix.ServerName,
|
ServerName: base.Cfg.Matrix.ServerName,
|
||||||
FedClient: fedClient,
|
FedClient: base.FederationClient,
|
||||||
KeyRing: keyRing,
|
KeyRing: base.ServerKeyAPI().KeyRing(),
|
||||||
}
|
}
|
||||||
|
|
||||||
inthttp.AddRoutes(internalAPI, base.InternalAPIMux)
|
inthttp.AddRoutes(internalAPI, base.InternalAPIMux)
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import (
|
||||||
"crypto/ed25519"
|
"crypto/ed25519"
|
||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/serverkeyapi/api"
|
"github.com/matrix-org/dendrite/serverkeyapi/api"
|
||||||
"github.com/matrix-org/dendrite/serverkeyapi/internal"
|
"github.com/matrix-org/dendrite/serverkeyapi/internal"
|
||||||
"github.com/matrix-org/dendrite/serverkeyapi/inthttp"
|
"github.com/matrix-org/dendrite/serverkeyapi/inthttp"
|
||||||
|
|
@ -14,10 +14,7 @@ import (
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
func SetupServerKeyAPIComponent(
|
func SetupServerKeyAPIComponent(base *setup.Base) api.ServerKeyInternalAPI {
|
||||||
base *basecomponent.BaseDendrite,
|
|
||||||
fedClient *gomatrixserverlib.FederationClient,
|
|
||||||
) api.ServerKeyInternalAPI {
|
|
||||||
innerDB, err := storage.NewDatabase(
|
innerDB, err := storage.NewDatabase(
|
||||||
string(base.Cfg.Database.ServerKey),
|
string(base.Cfg.Database.ServerKey),
|
||||||
base.Cfg.DbProperties(),
|
base.Cfg.DbProperties(),
|
||||||
|
|
@ -35,11 +32,11 @@ func SetupServerKeyAPIComponent(
|
||||||
}
|
}
|
||||||
|
|
||||||
internalAPI := internal.ServerKeyAPI{
|
internalAPI := internal.ServerKeyAPI{
|
||||||
FedClient: fedClient,
|
FedClient: base.FederationClient,
|
||||||
OurKeyRing: gomatrixserverlib.KeyRing{
|
OurKeyRing: gomatrixserverlib.KeyRing{
|
||||||
KeyFetchers: []gomatrixserverlib.KeyFetcher{
|
KeyFetchers: []gomatrixserverlib.KeyFetcher{
|
||||||
&gomatrixserverlib.DirectKeyFetcher{
|
&gomatrixserverlib.DirectKeyFetcher{
|
||||||
Client: fedClient.Client,
|
Client: base.FederationClient.Client,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
KeyDatabase: serverKeyDB,
|
KeyDatabase: serverKeyDB,
|
||||||
|
|
@ -51,7 +48,7 @@ func SetupServerKeyAPIComponent(
|
||||||
perspective := &gomatrixserverlib.PerspectiveKeyFetcher{
|
perspective := &gomatrixserverlib.PerspectiveKeyFetcher{
|
||||||
PerspectiveServerName: ps.ServerName,
|
PerspectiveServerName: ps.ServerName,
|
||||||
PerspectiveServerKeys: map[gomatrixserverlib.KeyID]ed25519.PublicKey{},
|
PerspectiveServerKeys: map[gomatrixserverlib.KeyID]ed25519.PublicKey{},
|
||||||
Client: fedClient.Client,
|
Client: base.FederationClient.Client,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, key := range ps.Keys {
|
for _, key := range ps.Keys {
|
||||||
|
|
|
||||||
|
|
@ -19,13 +19,8 @@ import (
|
||||||
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
|
"github.com/matrix-org/dendrite/internal/setup"
|
||||||
"github.com/matrix-org/dendrite/internal/basecomponent"
|
|
||||||
"github.com/matrix-org/dendrite/internal/config"
|
|
||||||
"github.com/matrix-org/dendrite/roomserver/api"
|
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
|
||||||
"github.com/matrix-org/dendrite/syncapi/consumers"
|
"github.com/matrix-org/dendrite/syncapi/consumers"
|
||||||
"github.com/matrix-org/dendrite/syncapi/routing"
|
"github.com/matrix-org/dendrite/syncapi/routing"
|
||||||
"github.com/matrix-org/dendrite/syncapi/storage"
|
"github.com/matrix-org/dendrite/syncapi/storage"
|
||||||
|
|
@ -34,14 +29,7 @@ import (
|
||||||
|
|
||||||
// SetupSyncAPIComponent sets up and registers HTTP handlers for the SyncAPI
|
// SetupSyncAPIComponent sets up and registers HTTP handlers for the SyncAPI
|
||||||
// component.
|
// component.
|
||||||
func SetupSyncAPIComponent(
|
func SetupSyncAPIComponent(base *setup.Base) {
|
||||||
base *basecomponent.BaseDendrite,
|
|
||||||
deviceDB devices.Database,
|
|
||||||
accountsDB accounts.Database,
|
|
||||||
rsAPI api.RoomserverInternalAPI,
|
|
||||||
federation *gomatrixserverlib.FederationClient,
|
|
||||||
cfg *config.Dendrite,
|
|
||||||
) {
|
|
||||||
syncDB, err := storage.NewSyncServerDatasource(string(base.Cfg.Database.SyncAPI), base.Cfg.DbProperties())
|
syncDB, err := storage.NewSyncServerDatasource(string(base.Cfg.Database.SyncAPI), base.Cfg.DbProperties())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logrus.WithError(err).Panicf("failed to connect to sync db")
|
logrus.WithError(err).Panicf("failed to connect to sync db")
|
||||||
|
|
@ -58,10 +46,10 @@ func SetupSyncAPIComponent(
|
||||||
logrus.WithError(err).Panicf("failed to start notifier")
|
logrus.WithError(err).Panicf("failed to start notifier")
|
||||||
}
|
}
|
||||||
|
|
||||||
requestPool := sync.NewRequestPool(syncDB, notifier, accountsDB)
|
requestPool := sync.NewRequestPool(syncDB, notifier, base.AccountDB)
|
||||||
|
|
||||||
roomConsumer := consumers.NewOutputRoomEventConsumer(
|
roomConsumer := consumers.NewOutputRoomEventConsumer(
|
||||||
base.Cfg, base.KafkaConsumer, notifier, syncDB, rsAPI,
|
base.Cfg, base.KafkaConsumer, notifier, syncDB, base.RoomserverAPI(),
|
||||||
)
|
)
|
||||||
if err = roomConsumer.Start(); err != nil {
|
if err = roomConsumer.Start(); err != nil {
|
||||||
logrus.WithError(err).Panicf("failed to start room server consumer")
|
logrus.WithError(err).Panicf("failed to start room server consumer")
|
||||||
|
|
@ -88,5 +76,5 @@ func SetupSyncAPIComponent(
|
||||||
logrus.WithError(err).Panicf("failed to start send-to-device consumer")
|
logrus.WithError(err).Panicf("failed to start send-to-device consumer")
|
||||||
}
|
}
|
||||||
|
|
||||||
routing.Setup(base.PublicAPIMux, requestPool, syncDB, deviceDB, federation, rsAPI, cfg)
|
routing.Setup(base.PublicAPIMux, requestPool, syncDB, base.DeviceDB, base.FederationClient, base.RoomserverAPI(), base.Cfg)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue