From b99f31ae6b4b5668882472a4c1fe3ff70b60abe8 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Thu, 30 Apr 2020 16:41:47 +0100 Subject: [PATCH] Wire AS API into roomserver again --- cmd/dendrite-client-api-server/main.go | 1 + cmd/dendrite-demo-libp2p/main.go | 1 + cmd/dendrite-federation-api-server/main.go | 1 + cmd/dendrite-federation-sender-server/main.go | 5 ++--- cmd/dendrite-public-rooms-api-server/main.go | 3 +++ cmd/dendrite-room-server/main.go | 3 ++- cmd/dendrite-sync-api-server/main.go | 2 ++ roomserver/api/api.go | 5 +++-- roomserver/api/http.go | 19 ++++++++----------- 9 files changed, 23 insertions(+), 17 deletions(-) diff --git a/cmd/dendrite-client-api-server/main.go b/cmd/dendrite-client-api-server/main.go index b5a27f456..1ce66db2c 100644 --- a/cmd/dendrite-client-api-server/main.go +++ b/cmd/dendrite-client-api-server/main.go @@ -38,6 +38,7 @@ func main() { asQuery := base.CreateHTTPAppServiceAPIs() rsAPI := base.CreateHTTPRoomserverAPIs() fsAPI := base.CreateHTTPFederationSenderAPIs() + rsAPI.SetFederationSenderAPI(fsAPI) eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New()) clientapi.SetupClientAPIComponent( diff --git a/cmd/dendrite-demo-libp2p/main.go b/cmd/dendrite-demo-libp2p/main.go index 7573dcc80..4f639ca36 100644 --- a/cmd/dendrite-demo-libp2p/main.go +++ b/cmd/dendrite-demo-libp2p/main.go @@ -160,6 +160,7 @@ func main() { fsAPI := federationsender.SetupFederationSenderComponent( &base.Base, federation, rsAPI, &keyRing, ) + rsAPI.SetFederationSenderAPI(fsAPI) clientapi.SetupClientAPIComponent( &base.Base, deviceDB, accountDB, diff --git a/cmd/dendrite-federation-api-server/main.go b/cmd/dendrite-federation-api-server/main.go index b407a11e9..d829326a7 100644 --- a/cmd/dendrite-federation-api-server/main.go +++ b/cmd/dendrite-federation-api-server/main.go @@ -37,6 +37,7 @@ func main() { rsAPI := base.CreateHTTPRoomserverAPIs() asAPI := base.CreateHTTPAppServiceAPIs() + rsAPI.SetFederationSenderAPI(fsAPI) eduInputAPI := eduserver.SetupEDUServerComponent(base, cache.New()) eduProducer := producers.NewEDUServerProducer(eduInputAPI) diff --git a/cmd/dendrite-federation-sender-server/main.go b/cmd/dendrite-federation-sender-server/main.go index df922af54..0daac1bcb 100644 --- a/cmd/dendrite-federation-sender-server/main.go +++ b/cmd/dendrite-federation-sender-server/main.go @@ -28,12 +28,11 @@ func main() { federation := base.CreateFederationClient() keyDB := base.CreateKeyDB() keyRing := keydb.CreateKeyRing(federation.Client, keyDB, cfg.Matrix.KeyPerspectives) - rsAPI := base.CreateHTTPRoomserverAPIs() - - federationsender.SetupFederationSenderComponent( + fsAPI := federationsender.SetupFederationSenderComponent( base, federation, rsAPI, &keyRing, ) + rsAPI.SetFederationSenderAPI(fsAPI) base.SetupAndServeHTTP(string(base.Cfg.Bind.FederationSender), string(base.Cfg.Listen.FederationSender)) diff --git a/cmd/dendrite-public-rooms-api-server/main.go b/cmd/dendrite-public-rooms-api-server/main.go index 170bf4957..fca39a2fe 100644 --- a/cmd/dendrite-public-rooms-api-server/main.go +++ b/cmd/dendrite-public-rooms-api-server/main.go @@ -28,7 +28,10 @@ func main() { deviceDB := base.CreateDeviceDB() + fsAPI := base.CreateHTTPFederationSenderAPIs() rsAPI := base.CreateHTTPRoomserverAPIs() + rsAPI.SetFederationSenderAPI(fsAPI) + publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI)) if err != nil { logrus.WithError(err).Panicf("failed to connect to public rooms db") diff --git a/cmd/dendrite-room-server/main.go b/cmd/dendrite-room-server/main.go index 7d63a8390..3de13c663 100644 --- a/cmd/dendrite-room-server/main.go +++ b/cmd/dendrite-room-server/main.go @@ -30,8 +30,9 @@ func main() { federation := base.CreateFederationClient() keyRing := keydb.CreateKeyRing(federation.Client, keyDB, cfg.Matrix.KeyPerspectives) + asAPI := base.CreateHTTPAppServiceAPIs() fsAPI := base.CreateHTTPFederationSenderAPIs() - rsAPI := roomserver.SetupRoomServerComponent(base, keyRing, federation, nil) // TODO: AS API here + rsAPI := roomserver.SetupRoomServerComponent(base, keyRing, federation, asAPI) // TODO: AS API here rsAPI.SetFederationSenderAPI(fsAPI) base.SetupAndServeHTTP(string(base.Cfg.Bind.RoomServer), string(base.Cfg.Listen.RoomServer)) diff --git a/cmd/dendrite-sync-api-server/main.go b/cmd/dendrite-sync-api-server/main.go index 259447af2..cc5156984 100644 --- a/cmd/dendrite-sync-api-server/main.go +++ b/cmd/dendrite-sync-api-server/main.go @@ -28,7 +28,9 @@ func main() { accountDB := base.CreateAccountsDB() federation := base.CreateFederationClient() + fsAPI := base.CreateHTTPFederationSenderAPIs() rsAPI := base.CreateHTTPRoomserverAPIs() + rsAPI.SetFederationSenderAPI(fsAPI) syncapi.SetupSyncAPIComponent(base, deviceDB, accountDB, rsAPI, federation, cfg) diff --git a/roomserver/api/api.go b/roomserver/api/api.go index aea31a8b0..c12dbddde 100644 --- a/roomserver/api/api.go +++ b/roomserver/api/api.go @@ -9,8 +9,9 @@ import ( // RoomserverInputAPI is used to write events to the room server. type RoomserverInternalAPI interface { // needed to avoid chicken and egg scenario when setting up the - // interdependencies between the roomserver and the FS input API - SetFederationSenderAPI(fsInputAPI fsAPI.FederationSenderInternalAPI) + // interdependencies between the roomserver and other input APIs + SetFederationSenderAPI(fsAPI fsAPI.FederationSenderInternalAPI) + InputRoomEvents( ctx context.Context, request *InputRoomEventsRequest, diff --git a/roomserver/api/http.go b/roomserver/api/http.go index 66021377b..d643526bd 100644 --- a/roomserver/api/http.go +++ b/roomserver/api/http.go @@ -5,15 +5,13 @@ import ( "net/http" "github.com/matrix-org/dendrite/common/caching" - fsAPI "github.com/matrix-org/dendrite/federationsender/api" + fsInputAPI "github.com/matrix-org/dendrite/federationsender/api" ) type httpRoomserverInternalAPI struct { - roomserverURL string - httpClient *http.Client - // The federation sender API allows us to send federation - // requests from the new perform input requests, still TODO. - fsInputAPI fsAPI.FederationSenderInternalAPI + roomserverURL string + httpClient *http.Client + fsAPI fsInputAPI.FederationSenderInternalAPI immutableCache caching.ImmutableCache } @@ -29,9 +27,8 @@ func NewRoomserverInternalAPIHTTP( return nil, errors.New("NewRoomserverInternalAPIHTTP: httpClient is ") } return &httpRoomserverInternalAPI{ - roomserverURL: roomserverURL, - httpClient: httpClient, - //fsInputAPI: fsInputAPI, + roomserverURL: roomserverURL, + httpClient: httpClient, immutableCache: immutableCache, }, nil } @@ -39,6 +36,6 @@ func NewRoomserverInternalAPIHTTP( // SetFederationSenderInputAPI passes in a federation sender input API reference // so that we can avoid the chicken-and-egg problem of both the roomserver input API // and the federation sender input API being interdependent. -func (h *httpRoomserverInternalAPI) SetFederationSenderAPI(fsInputAPI fsAPI.FederationSenderInternalAPI) { - h.fsInputAPI = fsInputAPI +func (h *httpRoomserverInternalAPI) SetFederationSenderAPI(fsAPI fsInputAPI.FederationSenderInternalAPI) { + h.fsAPI = fsAPI }