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 a7aa1af99..929fd3b5a 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 b18d0360c..3b5975763 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 000000000..1b20f7816 --- /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, + } +}