From 130873c2f131f0ca4497f1899df5c1ccd748c00e Mon Sep 17 00:00:00 2001 From: George Goldberg Date: Tue, 25 Jun 2019 15:36:26 +0100 Subject: [PATCH] MM-16474: SMTP password should be redacted in system console. (#11350) Fix Santize function to be the opposite of the Desanitize function for the config file, and add a unit test for Sanitize. --- model/config.go | 9 +++++++-- model/config_test.go | 25 +++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/model/config.go b/model/config.go index 9e4c0f3691..5837c21675 100644 --- a/model/config.go +++ b/model/config.go @@ -2984,10 +2984,15 @@ func (o *Config) Sanitize() { } *o.FileSettings.PublicLinkSalt = FAKE_SETTING + if len(*o.FileSettings.AmazonS3SecretAccessKey) > 0 { *o.FileSettings.AmazonS3SecretAccessKey = FAKE_SETTING } + if o.EmailSettings.SMTPPassword != nil && len(*o.EmailSettings.SMTPPassword) > 0 { + *o.EmailSettings.SMTPPassword = FAKE_SETTING + } + if len(*o.GitLabSettings.Secret) > 0 { *o.GitLabSettings.Secret = FAKE_SETTING } @@ -2995,6 +3000,8 @@ func (o *Config) Sanitize() { *o.SqlSettings.DataSource = FAKE_SETTING *o.SqlSettings.AtRestEncryptKey = FAKE_SETTING + *o.ElasticsearchSettings.Password = FAKE_SETTING + for i := range o.SqlSettings.DataSourceReplicas { o.SqlSettings.DataSourceReplicas[i] = FAKE_SETTING } @@ -3002,6 +3009,4 @@ func (o *Config) Sanitize() { for i := range o.SqlSettings.DataSourceSearchReplicas { o.SqlSettings.DataSourceSearchReplicas[i] = FAKE_SETTING } - - *o.ElasticsearchSettings.Password = FAKE_SETTING } diff --git a/model/config_test.go b/model/config_test.go index 4edaaaa4c4..ec6e78de29 100644 --- a/model/config_test.go +++ b/model/config_test.go @@ -916,3 +916,28 @@ func TestLdapSettingsIsValid(t *testing.T) { }) } } + +func TestConfigSanitize(t *testing.T) { + c := Config{} + c.SetDefaults() + + *c.LdapSettings.BindPassword = "foo" + *c.FileSettings.AmazonS3SecretAccessKey = "bar" + *c.EmailSettings.SMTPPassword = "baz" + *c.GitLabSettings.Secret = "bingo" + c.SqlSettings.DataSourceReplicas = []string{"stuff"} + c.SqlSettings.DataSourceSearchReplicas = []string{"stuff"} + + c.Sanitize() + + assert.Equal(t, FAKE_SETTING, *c.LdapSettings.BindPassword) + assert.Equal(t, FAKE_SETTING, *c.FileSettings.PublicLinkSalt) + assert.Equal(t, FAKE_SETTING, *c.FileSettings.AmazonS3SecretAccessKey) + assert.Equal(t, FAKE_SETTING, *c.EmailSettings.SMTPPassword) + assert.Equal(t, FAKE_SETTING, *c.GitLabSettings.Secret) + assert.Equal(t, FAKE_SETTING, *c.SqlSettings.DataSource) + assert.Equal(t, FAKE_SETTING, *c.SqlSettings.AtRestEncryptKey) + assert.Equal(t, FAKE_SETTING, *c.ElasticsearchSettings.Password) + assert.Equal(t, FAKE_SETTING, c.SqlSettings.DataSourceReplicas[0]) + assert.Equal(t, FAKE_SETTING, c.SqlSettings.DataSourceSearchReplicas[0]) +}