[DataDB] Add support for redis with TLS connection ( + integration test ) fixes #2435

This commit is contained in:
TeoV
2020-10-15 16:34:36 +03:00
committed by Dan Christian Bogos
parent 79469d9987
commit f1c823761b
17 changed files with 333 additions and 13 deletions

View File

@@ -65,6 +65,10 @@ var (
"The delay before executing the commands if the redis cluster is in the CLUSTERDOWN state")
dbQueryTimeout = cgrLoaderFlags.String("query_timeout", utils.IfaceAsString(dfltCfg.DataDbCfg().Opts[utils.QueryTimeoutCfg]),
"The timeout for queries")
dbRedisTls = cgrLoaderFlags.Bool(utils.RedisTLS, false, "Use a tls connection when connecting to redis")
dbRedisClientCertificate = cgrLoaderFlags.String(utils.RedisClientCertificate, utils.EmptyString, "Path to the client certificate")
dbRedisClientKey = cgrLoaderFlags.String(utils.RedisClientKey, utils.EmptyString, "Path to the client key")
dbRedisCACertificate = cgrLoaderFlags.String(utils.RedisCACertificate, utils.EmptyString, "Path to the CA certificate")
storDBType = cgrLoaderFlags.String("stordb_type", dfltCfg.StorDbCfg().Type,
"The type of the storDb database <*mysql|*postgres|*mongo>")
@@ -162,6 +166,20 @@ func loadConfig() (ldrCfg *config.CGRConfig) {
ldrCfg.DataDbCfg().Opts[utils.QueryTimeoutCfg] = *dbQueryTimeout
}
rdsTLS, _ := utils.IfaceAsBool(dfltCfg.DataDbCfg().Opts[utils.RedisTLS])
if *dbRedisTls != rdsTLS {
ldrCfg.DataDbCfg().Opts[utils.RedisTLS] = *dbRedisTls
}
if *dbRedisClientCertificate != utils.IfaceAsString(dfltCfg.DataDbCfg().Opts[utils.RedisClientCertificate]) {
ldrCfg.DataDbCfg().Opts[utils.RedisClientCertificate] = *dbRedisClientCertificate
}
if *dbRedisClientKey != utils.IfaceAsString(dfltCfg.DataDbCfg().Opts[utils.RedisClientKey]) {
ldrCfg.DataDbCfg().Opts[utils.RedisClientKey] = *dbRedisClientKey
}
if *dbRedisCACertificate != utils.IfaceAsString(dfltCfg.DataDbCfg().Opts[utils.RedisCACertificate]) {
ldrCfg.DataDbCfg().Opts[utils.RedisCACertificate] = *dbRedisCACertificate
}
if *dbDataEncoding != dfltCfg.GeneralCfg().DBDataEncoding {
ldrCfg.GeneralCfg().DBDataEncoding = *dbDataEncoding
}

View File

@@ -62,6 +62,10 @@ func TestLoadConfig(t *testing.T) {
utils.RedisClusterSyncCfg: "5s",
utils.RedisClusterOnDownDelayCfg: "0",
utils.RedisClusterCfg: false,
utils.RedisTLS: false,
utils.RedisClientCertificate: "",
utils.RedisClientKey: "",
utils.RedisCACertificate: "",
},
RmtConns: []string{},
RplConns: []string{},

View File

@@ -73,6 +73,10 @@ var (
"The delay before executing the commands if the redis cluster is in the CLUSTERDOWN state")
dbQueryTimeout = cgrMigratorFlags.String("query_timeout", utils.IfaceAsString(dfltCfg.DataDbCfg().Opts[utils.QueryTimeoutCfg]),
"The timeout for queries")
dbRedisTls = cgrMigratorFlags.Bool(utils.RedisTLS, false, "Use a tls connection when connecting to redis")
dbRedisClientCertificate = cgrMigratorFlags.String(utils.RedisClientCertificate, utils.EmptyString, "Path to the client certificate")
dbRedisClientKey = cgrMigratorFlags.String(utils.RedisClientKey, utils.EmptyString, "Path to the client key")
dbRedisCACertificate = cgrMigratorFlags.String(utils.RedisCACertificate, utils.EmptyString, "Path to the CA certificate")
outDataDBType = cgrMigratorFlags.String("out_datadb_type", utils.MetaDataDB,
"output DataDB type <*redis|*mongo>")
@@ -182,6 +186,20 @@ func main() {
mgrCfg.DataDbCfg().Opts[utils.QueryTimeoutCfg] = *dbQueryTimeout
}
rdsTLS, _ := utils.IfaceAsBool(dfltCfg.DataDbCfg().Opts[utils.RedisTLS])
if *dbRedisTls != rdsTLS {
mgrCfg.DataDbCfg().Opts[utils.RedisTLS] = *dbRedisTls
}
if *dbRedisClientCertificate != utils.IfaceAsString(dfltCfg.DataDbCfg().Opts[utils.RedisClientCertificate]) {
mgrCfg.DataDbCfg().Opts[utils.RedisClientCertificate] = *dbRedisClientCertificate
}
if *dbRedisClientKey != utils.IfaceAsString(dfltCfg.DataDbCfg().Opts[utils.RedisClientKey]) {
mgrCfg.DataDbCfg().Opts[utils.RedisClientKey] = *dbRedisClientKey
}
if *dbRedisCACertificate != utils.IfaceAsString(dfltCfg.DataDbCfg().Opts[utils.RedisCACertificate]) {
mgrCfg.DataDbCfg().Opts[utils.RedisCACertificate] = *dbRedisCACertificate
}
// outDataDB
if *outDataDBType == utils.MetaDataDB {
if dfltCfg.MigratorCgrCfg().OutDataDBType == mgrCfg.MigratorCgrCfg().OutDataDBType {