From ada6f04bd293bd40a472c7e9f8296be0d65ca808 Mon Sep 17 00:00:00 2001 From: Till Faelligen <2353100+S7evinK@users.noreply.github.com> Date: Mon, 20 Feb 2023 12:48:31 +0100 Subject: [PATCH] Revert "Remove keyserver config" This reverts commit 5f08ce99310a6ffae49bdd8f3571df8f9283ae46. --- build/gobind-yggdrasil/monolith.go | 1 + .../monolith/monolith.go | 1 + cmd/dendrite-demo-yggdrasil/main.go | 1 + cmd/generate-config/main.go | 1 + federationapi/consumers/keychange.go | 2 +- federationapi/federationapi.go | 2 +- setup/config/config.go | 5 ++++- setup/config/config_keyserver.go | 21 +++++++++++++++++++ test/testrig/base.go | 1 + userapi/storage/storage_test.go | 2 +- 10 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 setup/config/config_keyserver.go diff --git a/build/gobind-yggdrasil/monolith.go b/build/gobind-yggdrasil/monolith.go index 718d65e53..32af611ae 100644 --- a/build/gobind-yggdrasil/monolith.go +++ b/build/gobind-yggdrasil/monolith.go @@ -138,6 +138,7 @@ func (m *DendriteMonolith) Start() { cfg.MediaAPI.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s/dendrite-p2p-mediaapi.db", m.StorageDirectory)) cfg.SyncAPI.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s/dendrite-p2p-syncapi.db", m.StorageDirectory)) cfg.RoomServer.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s/dendrite-p2p-roomserver.db", m.StorageDirectory)) + cfg.KeyServer.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s/dendrite-p2p-keyserver.db", m.StorageDirectory)) cfg.FederationAPI.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s/dendrite-p2p-federationsender.db", m.StorageDirectory)) cfg.MediaAPI.BasePath = config.Path(fmt.Sprintf("%s/tmp", m.StorageDirectory)) cfg.MediaAPI.AbsBasePath = config.Path(fmt.Sprintf("%s/tmp", m.StorageDirectory)) diff --git a/cmd/dendrite-demo-pinecone/monolith/monolith.go b/cmd/dendrite-demo-pinecone/monolith/monolith.go index bb67af2cf..27720369e 100644 --- a/cmd/dendrite-demo-pinecone/monolith/monolith.go +++ b/cmd/dendrite-demo-pinecone/monolith/monolith.go @@ -88,6 +88,7 @@ func GenerateDefaultConfig(sk ed25519.PrivateKey, storageDir string, cacheDir st cfg.MediaAPI.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-mediaapi.db", filepath.Join(storageDir, dbPrefix))) cfg.SyncAPI.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-syncapi.db", filepath.Join(storageDir, dbPrefix))) cfg.RoomServer.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-roomserver.db", filepath.Join(storageDir, dbPrefix))) + cfg.KeyServer.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-keyserver.db", filepath.Join(storageDir, dbPrefix))) cfg.FederationAPI.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-federationsender.db", filepath.Join(storageDir, dbPrefix))) cfg.RelayAPI.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-relayapi.db", filepath.Join(storageDir, dbPrefix))) cfg.MSCs.MSCs = []string{"msc2836", "msc2946"} diff --git a/cmd/dendrite-demo-yggdrasil/main.go b/cmd/dendrite-demo-yggdrasil/main.go index 4bf419df0..d759c6a73 100644 --- a/cmd/dendrite-demo-yggdrasil/main.go +++ b/cmd/dendrite-demo-yggdrasil/main.go @@ -125,6 +125,7 @@ func main() { cfg.MediaAPI.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-mediaapi.db", filepath.Join(*instanceDir, *instanceName))) cfg.SyncAPI.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-syncapi.db", filepath.Join(*instanceDir, *instanceName))) cfg.RoomServer.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-roomserver.db", filepath.Join(*instanceDir, *instanceName))) + cfg.KeyServer.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-keyserver.db", filepath.Join(*instanceDir, *instanceName))) cfg.FederationAPI.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-federationapi.db", filepath.Join(*instanceDir, *instanceName))) cfg.MSCs.MSCs = []string{"msc2836", "msc2946"} cfg.MSCs.Database.ConnectionString = config.DataSource(fmt.Sprintf("file:%s-mscs.db", filepath.Join(*instanceDir, *instanceName))) diff --git a/cmd/generate-config/main.go b/cmd/generate-config/main.go index 641bd494f..b0707be11 100644 --- a/cmd/generate-config/main.go +++ b/cmd/generate-config/main.go @@ -36,6 +36,7 @@ func main() { if uri.IsSQLite() || uri == "" { for name, db := range map[string]*config.DatabaseOptions{ "federationapi": &cfg.FederationAPI.Database, + "keyserver": &cfg.KeyServer.Database, "mscs": &cfg.MSCs.Database, "mediaapi": &cfg.MediaAPI.Database, "roomserver": &cfg.RoomServer.Database, diff --git a/federationapi/consumers/keychange.go b/federationapi/consumers/keychange.go index cd5c79355..7d9df3d78 100644 --- a/federationapi/consumers/keychange.go +++ b/federationapi/consumers/keychange.go @@ -48,7 +48,7 @@ type KeyChangeConsumer struct { // NewKeyChangeConsumer creates a new KeyChangeConsumer. Call Start() to begin consuming from key servers. func NewKeyChangeConsumer( process *process.ProcessContext, - cfg *config.UserAPI, + cfg *config.KeyServer, js nats.JetStreamContext, queues *queue.OutgoingQueues, store storage.Database, diff --git a/federationapi/federationapi.go b/federationapi/federationapi.go index 069731251..ec482659a 100644 --- a/federationapi/federationapi.go +++ b/federationapi/federationapi.go @@ -145,7 +145,7 @@ func NewInternalAPI( logrus.WithError(err).Panic("failed to start typing consumer") } keyConsumer := consumers.NewKeyChangeConsumer( - base.ProcessContext, &base.Cfg.UserAPI, js, queues, federationDB, rsAPI, + base.ProcessContext, &base.Cfg.KeyServer, js, queues, federationDB, rsAPI, ) if err = keyConsumer.Start(); err != nil { logrus.WithError(err).Panic("failed to start key server consumer") diff --git a/setup/config/config.go b/setup/config/config.go index 2cea5f370..848766162 100644 --- a/setup/config/config.go +++ b/setup/config/config.go @@ -57,6 +57,7 @@ type Dendrite struct { AppServiceAPI AppServiceAPI `yaml:"app_service_api"` ClientAPI ClientAPI `yaml:"client_api"` FederationAPI FederationAPI `yaml:"federation_api"` + KeyServer KeyServer `yaml:"key_server"` MediaAPI MediaAPI `yaml:"media_api"` RoomServer RoomServer `yaml:"room_server"` SyncAPI SyncAPI `yaml:"sync_api"` @@ -330,6 +331,7 @@ func (c *Dendrite) Defaults(opts DefaultOpts) { c.Global.Defaults(opts) c.ClientAPI.Defaults(opts) c.FederationAPI.Defaults(opts) + c.KeyServer.Defaults(opts) c.MediaAPI.Defaults(opts) c.RoomServer.Defaults(opts) c.SyncAPI.Defaults(opts) @@ -346,7 +348,7 @@ func (c *Dendrite) Verify(configErrs *ConfigErrors) { } for _, c := range []verifiable{ &c.Global, &c.ClientAPI, &c.FederationAPI, - &c.MediaAPI, &c.RoomServer, + &c.KeyServer, &c.MediaAPI, &c.RoomServer, &c.SyncAPI, &c.UserAPI, &c.AppServiceAPI, &c.RelayAPI, &c.MSCs, } { @@ -358,6 +360,7 @@ func (c *Dendrite) Wiring() { c.Global.JetStream.Matrix = &c.Global c.ClientAPI.Matrix = &c.Global c.FederationAPI.Matrix = &c.Global + c.KeyServer.Matrix = &c.Global c.MediaAPI.Matrix = &c.Global c.RoomServer.Matrix = &c.Global c.SyncAPI.Matrix = &c.Global diff --git a/setup/config/config_keyserver.go b/setup/config/config_keyserver.go new file mode 100644 index 000000000..64710d957 --- /dev/null +++ b/setup/config/config_keyserver.go @@ -0,0 +1,21 @@ +package config + +type KeyServer struct { + Matrix *Global `yaml:"-"` + + Database DatabaseOptions `yaml:"database,omitempty"` +} + +func (c *KeyServer) Defaults(opts DefaultOpts) { + if opts.Generate { + if !opts.SingleDatabase { + c.Database.ConnectionString = "file:keyserver.db" + } + } +} + +func (c *KeyServer) Verify(configErrs *ConfigErrors) { + if c.Matrix.DatabaseOptions.ConnectionString == "" { + checkNotEmpty(configErrs, "key_server.database.connection_string", string(c.Database.ConnectionString)) + } +} diff --git a/test/testrig/base.go b/test/testrig/base.go index b7531ae2b..bb8fded21 100644 --- a/test/testrig/base.go +++ b/test/testrig/base.go @@ -78,6 +78,7 @@ func CreateBaseDendrite(t *testing.T, dbType test.DBType) (*base.BaseDendrite, f // Use a temp dir provided by go for tests, this will be cleanup by a call to t.CleanUp() tempDir := t.TempDir() cfg.FederationAPI.Database.ConnectionString = config.DataSource(filepath.Join("file://", tempDir, "federationapi.db")) + cfg.KeyServer.Database.ConnectionString = config.DataSource(filepath.Join("file://", tempDir, "keyserver.db")) cfg.MSCs.Database.ConnectionString = config.DataSource(filepath.Join("file://", tempDir, "mscs.db")) cfg.MediaAPI.Database.ConnectionString = config.DataSource(filepath.Join("file://", tempDir, "mediaapi.db")) cfg.RoomServer.Database.ConnectionString = config.DataSource(filepath.Join("file://", tempDir, "roomserver.db")) diff --git a/userapi/storage/storage_test.go b/userapi/storage/storage_test.go index 44d9e7125..b92ae1610 100644 --- a/userapi/storage/storage_test.go +++ b/userapi/storage/storage_test.go @@ -577,7 +577,7 @@ func Test_Notification(t *testing.T) { func MustCreateDatabase(t *testing.T, dbType test.DBType) (storage.Database, func()) { base, close := testrig.CreateBaseDendrite(t, dbType) - db, err := storage.NewUserDatabase(base, &base.Cfg.UserAPI.AccountDatabase, "localhost", bcrypt.MinCost, 2000, time.Second, "") + db, err := storage.NewUserDatabase(base, &base.Cfg.KeyServer.Database, "localhost", bcrypt.MinCost, 2000, time.Second, "") if err != nil { t.Fatalf("failed to create new database: %v", err) }