From 226e9f90ec9e7b8cd6650715ff1df0b7ccf8f0b6 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Thu, 18 Jun 2020 13:17:29 +0100 Subject: [PATCH] Tweaks --- build/gobind/monolith.go | 19 +++++++++++-------- cmd/dendrite-demo-yggdrasil/yggconn/node.go | 3 +++ syncapi/sync/request.go | 4 ++++ syncapi/types/types.go | 11 +++++++---- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/build/gobind/monolith.go b/build/gobind/monolith.go index 5474ca546..30fdc6181 100644 --- a/build/gobind/monolith.go +++ b/build/gobind/monolith.go @@ -37,9 +37,10 @@ func (m *DendriteMonolith) Start() { logger := logrus.Logger{ Out: BindLogger{}, } + logrus.SetOutput(BindLogger{}) var err error - m.listener, err = net.Listen("tcp", "localhost:0") + m.listener, err = net.Listen("tcp", "localhost:65432") if err != nil { panic(err) } @@ -78,17 +79,15 @@ func (m *DendriteMonolith) Start() { accountDB := base.CreateAccountsDB() deviceDB := base.CreateDeviceDB() - federation := ygg.CreateFederationClient(base) + federation := base.CreateFederationClient() serverKeyAPI := &signing.YggdrasilKeys{} keyRing := serverKeyAPI.KeyRing() + userAPI := userapi.NewInternalAPI(accountDB, deviceDB, cfg.Matrix.ServerName, cfg.Derived.ApplicationServices) - userAPI := userapi.NewInternalAPI(accountDB, deviceDB, cfg.Matrix.ServerName, nil) - - rsComponent := roomserver.NewInternalAPI( + rsAPI := roomserver.NewInternalAPI( base, keyRing, federation, ) - rsAPI := rsComponent eduInputAPI := eduserver.NewInternalAPI( base, cache.New(), userAPI, @@ -100,17 +99,20 @@ func (m *DendriteMonolith) Start() { base, federation, rsAPI, keyRing, ) - rsComponent.SetFederationSenderAPI(fsAPI) + // The underlying roomserver implementation needs to be able to call the fedsender. + // This is different to rsAPI which can be the http client which doesn't need this dependency + rsAPI.SetFederationSenderAPI(fsAPI) publicRoomsDB, err := storage.NewPublicRoomsServerDatabase(string(base.Cfg.Database.PublicRoomsAPI), base.Cfg.DbProperties(), cfg.Matrix.ServerName) if err != nil { - logger.WithError(err).Panicf("failed to connect to public rooms db") + logrus.WithError(err).Panicf("failed to connect to public rooms db") } monolith := setup.Monolith{ Config: base.Cfg, AccountDB: accountDB, DeviceDB: deviceDB, + Client: gomatrixserverlib.NewClient(), FedClient: federation, KeyRing: keyRing, KafkaConsumer: base.KafkaConsumer, @@ -121,6 +123,7 @@ func (m *DendriteMonolith) Start() { FederationSenderAPI: fsAPI, RoomserverAPI: rsAPI, UserAPI: userAPI, + //ServerKeyAPI: serverKeyAPI, PublicRoomsDB: publicRoomsDB, } diff --git a/cmd/dendrite-demo-yggdrasil/yggconn/node.go b/cmd/dendrite-demo-yggdrasil/yggconn/node.go index b43c41def..c335f2eac 100644 --- a/cmd/dendrite-demo-yggdrasil/yggconn/node.go +++ b/cmd/dendrite-demo-yggdrasil/yggconn/node.go @@ -139,6 +139,9 @@ func Setup(instanceName, instancePeer, storageDirectory string) (*Node, error) { panic(err) } + n.log.Println("Public curve25519:", n.core.EncryptionPublicKey()) + n.log.Println("Public ed25519:", n.core.SigningPublicKey()) + go n.listenFromYgg() return n, nil diff --git a/syncapi/sync/request.go b/syncapi/sync/request.go index beeaa40f7..5dd92c853 100644 --- a/syncapi/sync/request.go +++ b/syncapi/sync/request.go @@ -62,6 +62,10 @@ func newSyncRequest(req *http.Request, device userapi.Device) (*syncRequest, err } since = &tok } + if since == nil { + tok := types.NewStreamToken(0, 0) + since = &tok + } timelineLimit := defaultTimelineLimit // TODO: read from stored filters too filterQuery := req.URL.Query().Get("filter") diff --git a/syncapi/types/types.go b/syncapi/types/types.go index c1f09fba5..1094416a1 100644 --- a/syncapi/types/types.go +++ b/syncapi/types/types.go @@ -98,6 +98,9 @@ func (t *StreamingToken) PDUPosition() StreamPosition { func (t *StreamingToken) EDUPosition() StreamPosition { return t.Positions[1] } +func (t *StreamingToken) String() string { + return t.syncToken.String() +} // IsAfter returns true if ANY position in this token is greater than `other`. func (t *StreamingToken) IsAfter(other StreamingToken) bool { @@ -220,8 +223,8 @@ func NewTopologyTokenFromString(tok string) (token TopologyToken, err error) { err = fmt.Errorf("token %s is not a topology token", tok) return } - if len(t.Positions) != 2 { - err = fmt.Errorf("token %s wrong number of values, got %d want 2", tok, len(t.Positions)) + if len(t.Positions) < 2 { + err = fmt.Errorf("token %s wrong number of values, got %d want at least 2", tok, len(t.Positions)) return } return TopologyToken{ @@ -247,8 +250,8 @@ func NewStreamTokenFromString(tok string) (token StreamingToken, err error) { err = fmt.Errorf("token %s is not a streaming token", tok) return } - if len(t.Positions) != 2 { - err = fmt.Errorf("token %s wrong number of values, got %d want 2", tok, len(t.Positions)) + if len(t.Positions) < 2 { + err = fmt.Errorf("token %s wrong number of values, got %d want at least 2", tok, len(t.Positions)) return } return StreamingToken{