Factor out keyring initialisation
Take the keyring init from the client-api-server and the monolith out to a
shared file
MODIFY
src/github.com/matrix-org/dendrite/cmd/dendrite-client-api-server/main.go
src/github.com/matrix-org/dendrite/cmd/dendrite-client-api-server/main.go
@@ -98,13 +98,7 @@ func main() {
log.Panicf("Failed to setup key database(%q): %s", cfg.Database.ServerKey, err.Error())
}
- keyRing := gomatrixserverlib.KeyRing{
- KeyFetchers: []gomatrixserverlib.KeyFetcher{
- // TODO: Use perspective key fetchers for production.
- &gomatrixserverlib.DirectKeyFetcher{Client: federation.Client},
- },
- KeyDatabase: keyDB,
- }
+ keyRing := keydb.CreateKeyRing(federation.Client, keyDB)
kafkaConsumer, err := sarama.NewConsumer(cfg.Kafka.Addresses, nil)
if err != nil {

MODIFY
src/github.com/matrix-org/dendrite/cmd/dendrite-monolith-server/main.go
src/github.com/matrix-org/dendrite/cmd/dendrite-monolith-server/main.go
@@ -194,13 +194,7 @@ func (m *monolith) setupFederation() {
m.cfg.Matrix.ServerName, m.cfg.Matrix.KeyID, m.cfg.Matrix.PrivateKey,
)
- m.keyRing = gomatrixserverlib.KeyRing{
- KeyFetchers: []gomatrixserverlib.KeyFetcher{
- // TODO: Use perspective key fetchers for production.
- &gomatrixserverlib.DirectKeyFetcher{Client: m.federation.Client},
- },
- KeyDatabase: m.keyDB,
- }
+ m.keyRing = keydb.CreateKeyRing(m.federation.Client, m.keyDB)
}
func (m *monolith) setupKafka() {

ADD
src/github.com/matrix-org/dendrite/common/keydb/keyring.go
+// Copyright 2017 New Vector Ltd
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package keydb
+
+import "github.com/matrix-org/gomatrixserverlib"
+
+// CreateKeyRing creates and configures a KeyRing object.
+//
+// It creates the necessary key fetchers and collects them into a KeyRing
+// backed by the given KeyDatabase.
+func CreateKeyRing(client gomatrixserverlib.Client,
+ keyDB gomatrixserverlib.KeyDatabase) gomatrixserverlib.KeyRing {
+ return gomatrixserverlib.KeyRing{
+ KeyFetchers: []gomatrixserverlib.KeyFetcher{
+ // TODO: Use perspective key fetchers for production.
+ &gomatrixserverlib.DirectKeyFetcher{Client: client},
+ },
+ KeyDatabase: keyDB,
+ }
+}

Factor out keyring initialisation (#329)

Take the keyring init from the client-api-server and the monolith out to a
shared file