Fix config Sanitize fields missing from desanitize, causing FakeSetting to be persisted (#36619) (#36653)
* Add TestDesanitizeRemovesAllFakeSettings to catch future omissions Walks every string field in the config after a Sanitize+desanitize round-trip and fails if any still holds FakeSetting. This catches the case where a field is added to Sanitize without a corresponding desanitize entry. * Fix ElasticsearchSettings.ClientKey being incorrectly masked as a secret ClientKey is a file path, not a secret value. Masking it caused the asterisk string to be persisted to the database on config writes, which broke TLS client auth on restart. * Fix desanitize missing entries for fields added in 504fb96fdd98 504fb96fdd98 masked five fields in Sanitize without adding the corresponding desanitize entries, meaning a config save through the API would permanently overwrite those fields with FakeSetting: - FileSettings.ExportAmazonS3SecretAccessKey - ServiceSettings.GoogleDeveloperKey - ServiceSettings.GiphySdkKey - CacheSettings.RedisPassword - AutoTranslationSettings.LibreTranslate.APIKey * fixup! Add TestDesanitizeRemovesAllFakeSettings to catch future omissions * fixup! Fix desanitize missing entries for fields added in 504fb96fdd98 --------- Co-authored-by: Mattermost Build <build@mattermost.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
d9a55e394c
Коммит
79ba3d3d83
@@ -4884,10 +4884,6 @@ func (o *Config) Sanitize(pluginManifests []*Manifest, opts *SanitizeOptions) {
|
||||
*o.ElasticsearchSettings.Password = FakeSetting
|
||||
}
|
||||
|
||||
if o.ElasticsearchSettings.ClientKey != nil && *o.ElasticsearchSettings.ClientKey != "" {
|
||||
*o.ElasticsearchSettings.ClientKey = FakeSetting
|
||||
}
|
||||
|
||||
for i := range o.SqlSettings.DataSourceReplicas {
|
||||
o.SqlSettings.DataSourceReplicas[i] = sanitizeDataSourceField(o.SqlSettings.DataSourceReplicas[i], "SqlSettings.DataSourceReplicas")
|
||||
}
|
||||
|
||||
@@ -1519,7 +1519,6 @@ func TestConfigSanitize(t *testing.T) {
|
||||
*c.OpenIdSettings.Secret = "secret"
|
||||
*c.ServiceSettings.GoogleDeveloperKey = "google-api-key"
|
||||
*c.ServiceSettings.GiphySdkKey = "giphy-sdk-key"
|
||||
*c.ElasticsearchSettings.ClientKey = "/path/to/client-key.pem"
|
||||
c.SqlSettings.DataSourceReplicas = []string{"stuff"}
|
||||
c.SqlSettings.DataSourceSearchReplicas = []string{"stuff"}
|
||||
c.SqlSettings.ReplicaLagSettings = []*ReplicaLagSettings{{
|
||||
@@ -1540,7 +1539,6 @@ func TestConfigSanitize(t *testing.T) {
|
||||
assert.Equal(t, FakeSetting, *c.SqlSettings.DataSource)
|
||||
assert.Equal(t, FakeSetting, *c.SqlSettings.AtRestEncryptKey)
|
||||
assert.Equal(t, FakeSetting, *c.ElasticsearchSettings.Password)
|
||||
assert.Equal(t, FakeSetting, *c.ElasticsearchSettings.ClientKey)
|
||||
assert.Equal(t, FakeSetting, *c.ServiceSettings.GoogleDeveloperKey)
|
||||
assert.Equal(t, FakeSetting, *c.ServiceSettings.GiphySdkKey)
|
||||
assert.Equal(t, FakeSetting, c.SqlSettings.DataSourceReplicas[0])
|
||||
|
||||
Ссылка в новой задаче
Block a user