From c451f742aa6f963cb3d40348c77ae5058fae93a8 Mon Sep 17 00:00:00 2001 From: Nicola Murino Date: Sun, 6 Dec 2020 10:36:48 +0100 Subject: [PATCH] revertprovider: crypted provider was not supported in v4 also ensure to initialize kms before the dataprovider, it could be needed to downgrade secret from cloud kms providers --- cmd/initprovider.go | 6 ++++++ cmd/revertprovider.go | 6 ++++++ cmd/startsubsys.go | 10 +++++----- dataprovider/compat.go | 3 +++ service/service.go | 16 ++++++++-------- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/cmd/initprovider.go b/cmd/initprovider.go index 9e15d06b..028c71e6 100644 --- a/cmd/initprovider.go +++ b/cmd/initprovider.go @@ -43,6 +43,12 @@ Please take a look at the usage below to customize the options.`, logger.WarnToConsole("Unable to initialize data provider, config load error: %v", err) return } + kmsConfig := config.GetKMSConfig() + err = kmsConfig.Initialize() + if err != nil { + logger.ErrorToConsole("unable to initialize KMS: %v", err) + os.Exit(1) + } providerConf := config.GetProviderConf() logger.InfoToConsole("Initializing provider: %#v config file: %#v", providerConf.Driver, viper.ConfigFileUsed()) err = dataprovider.InitializeDatabase(providerConf, configDir) diff --git a/cmd/revertprovider.go b/cmd/revertprovider.go index 7a22061b..6a938fb3 100644 --- a/cmd/revertprovider.go +++ b/cmd/revertprovider.go @@ -32,6 +32,12 @@ Please take a look at the usage below to customize the options.`, logger.WarnToConsole("Unable to initialize data provider, config load error: %v", err) return } + kmsConfig := config.GetKMSConfig() + err = kmsConfig.Initialize() + if err != nil { + logger.ErrorToConsole("unable to initialize KMS: %v", err) + os.Exit(1) + } providerConf := config.GetProviderConf() logger.InfoToConsole("Reverting provider: %#v config file: %#v target version %v", providerConf.Driver, viper.ConfigFileUsed(), revertProviderTargetVersion) diff --git a/cmd/startsubsys.go b/cmd/startsubsys.go index cb446cc4..cf6aae9c 100644 --- a/cmd/startsubsys.go +++ b/cmd/startsubsys.go @@ -67,6 +67,11 @@ Command-line flags should be specified in the Subsystem declaration. commonConfig.IdleTimeout = 0 config.SetCommonConfig(commonConfig) common.Initialize(config.GetCommonConfig()) + kmsConfig := config.GetKMSConfig() + if err := kmsConfig.Initialize(); err != nil { + logger.Error(logSender, connectionID, "unable to initialize KMS: %v", err) + os.Exit(1) + } dataProviderConf := config.GetProviderConf() if dataProviderConf.Driver == dataprovider.SQLiteDataProviderName || dataProviderConf.Driver == dataprovider.BoltDataProviderName { logger.Debug(logSender, connectionID, "data provider %#v not supported in subsystem mode, using %#v provider", @@ -83,11 +88,6 @@ Command-line flags should be specified in the Subsystem declaration. } httpConfig := config.GetHTTPConfig() httpConfig.Initialize(configDir) - kmsConfig := config.GetKMSConfig() - if err := kmsConfig.Initialize(); err != nil { - logger.Error(logSender, connectionID, "unable to initialize KMS: %v", err) - os.Exit(1) - } user, err := dataprovider.UserExists(username) if err == nil { if user.HomeDir != filepath.Clean(homedir) && !preserveHomeDir { diff --git a/dataprovider/compat.go b/dataprovider/compat.go index 098656c2..b61626fa 100644 --- a/dataprovider/compat.go +++ b/dataprovider/compat.go @@ -277,6 +277,9 @@ func convertFsConfigToV4(fs Filesystem, username string) (compatFilesystemV4, er } fsV4.GCSConfig.Credentials = []byte(creds) } + case CryptedFilesystemProvider: + // crypted provider was not supported in v4, the configuration will be lost + fsV4.Provider = 0 } return fsV4, nil } diff --git a/service/service.go b/service/service.go index 50e07168..7863ad76 100644 --- a/service/service.go +++ b/service/service.go @@ -83,10 +83,17 @@ func (s *Service) Start() error { } common.Initialize(config.GetCommonConfig()) + kmsConfig := config.GetKMSConfig() + err := kmsConfig.Initialize() + if err != nil { + logger.Error(logSender, "", "unable to initialize KMS: %v", err) + logger.ErrorToConsole("unable to initialize KMS: %v", err) + os.Exit(1) + } providerConf := config.GetProviderConf() - err := dataprovider.Initialize(providerConf, s.ConfigDir) + err = dataprovider.Initialize(providerConf, s.ConfigDir) if err != nil { logger.Error(logSender, "", "error initializing data provider: %v", err) logger.ErrorToConsole("error initializing data provider: %v", err) @@ -110,13 +117,6 @@ func (s *Service) Start() error { httpConfig := config.GetHTTPConfig() httpConfig.Initialize(s.ConfigDir) - kmsConfig := config.GetKMSConfig() - err = kmsConfig.Initialize() - if err != nil { - logger.Error(logSender, "", "unable to initialize KMS: %v", err) - logger.ErrorToConsole("unable to initialize KMS: %v", err) - os.Exit(1) - } s.startServices()