From bf855a7e5c79aad38d9bb402443c4c623e7941ea Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Mon, 13 Nov 2017 18:39:09 +0000 Subject: [PATCH] Factor out keyring initialisation (#329) Take the keyring init from the client-api-server and the monolith out to a shared file --- .../cmd/dendrite-client-api-server/main.go | 8 +---- .../cmd/dendrite-monolith-server/main.go | 8 +---- .../dendrite/common/keydb/keyring.go | 32 +++++++++++++++++++ 3 files changed, 34 insertions(+), 14 deletions(-) create mode 100644 src/github.com/matrix-org/dendrite/common/keydb/keyring.go diff --git a/src/github.com/matrix-org/dendrite/cmd/dendrite-client-api-server/main.go b/src/github.com/matrix-org/dendrite/cmd/dendrite-client-api-server/main.go index a7aa1af9..929fd3b5 100644 --- a/src/github.com/matrix-org/dendrite/cmd/dendrite-client-api-server/main.go +++ b/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 { diff --git a/src/github.com/matrix-org/dendrite/cmd/dendrite-monolith-server/main.go b/src/github.com/matrix-org/dendrite/cmd/dendrite-monolith-server/main.go index b18d0360..3b597576 100644 --- a/src/github.com/matrix-org/dendrite/cmd/dendrite-monolith-server/main.go +++ b/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() { diff --git a/src/github.com/matrix-org/dendrite/common/keydb/keyring.go b/src/github.com/matrix-org/dendrite/common/keydb/keyring.go new file mode 100644 index 00000000..1b20f781 --- /dev/null +++ b/src/github.com/matrix-org/dendrite/common/keydb/keyring.go @@ -0,0 +1,32 @@ +// 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, + } +}