diff --git a/config/config.go b/config/config.go index 15e77232..957ab8e1 100644 --- a/config/config.go +++ b/config/config.go @@ -186,6 +186,7 @@ type FileLoader struct { type RedisLoader struct { Addr string `json:"addr"` DB int `yaml:",omitempty" json:"db,omitempty"` + Username string `yaml:",omitempty" json:"username,omitempty"` Password string `yaml:",omitempty" json:"password,omitempty"` Key string `yaml:",omitempty" json:"key,omitempty"` Type string `yaml:",omitempty" json:"type,omitempty"` @@ -293,6 +294,7 @@ type HTTPRecorder struct { type RedisRecorder struct { Addr string `json:"addr"` DB int `yaml:",omitempty" json:"db,omitempty"` + Username string `yaml:",omitempty" json:"username,omitempty"` Password string `yaml:",omitempty" json:"password,omitempty"` Key string `yaml:",omitempty" json:"key,omitempty"` Type string `yaml:",omitempty" json:"type,omitempty"` diff --git a/config/parsing/admission/parse.go b/config/parsing/admission/parse.go index 407d9d8d..36bbe62f 100644 --- a/config/parsing/admission/parse.go +++ b/config/parsing/admission/parse.go @@ -59,6 +59,7 @@ func ParseAdmission(cfg *config.AdmissionConfig) admission.Admission { opts = append(opts, xadmission.RedisLoaderOption(loader.RedisSetLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) diff --git a/config/parsing/auth/parse.go b/config/parsing/auth/parse.go index 3e3be914..6a2047fa 100644 --- a/config/parsing/auth/parse.go +++ b/config/parsing/auth/parse.go @@ -67,6 +67,7 @@ func ParseAuther(cfg *config.AutherConfig) auth.Authenticator { opts = append(opts, xauth.RedisLoaderOption(loader.RedisHashLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) diff --git a/config/parsing/bypass/parse.go b/config/parsing/bypass/parse.go index 77c47ff7..f0c141c4 100644 --- a/config/parsing/bypass/parse.go +++ b/config/parsing/bypass/parse.go @@ -59,6 +59,7 @@ func ParseBypass(cfg *config.BypassConfig) bypass.Bypass { opts = append(opts, xbypass.RedisLoaderOption(loader.RedisSetLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) diff --git a/config/parsing/hop/parse.go b/config/parsing/hop/parse.go index d435479e..bf8b83c7 100644 --- a/config/parsing/hop/parse.go +++ b/config/parsing/hop/parse.go @@ -130,6 +130,7 @@ func ParseHop(cfg *config.HopConfig, log logger.Logger) (hop.Hop, error) { opts = append(opts, xhop.RedisLoaderOption(loader.RedisStringLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) diff --git a/config/parsing/hosts/parse.go b/config/parsing/hosts/parse.go index 1ca517ce..76aa8e5c 100644 --- a/config/parsing/hosts/parse.go +++ b/config/parsing/hosts/parse.go @@ -75,6 +75,7 @@ func ParseHostMapper(cfg *config.HostsConfig) hosts.HostMapper { opts = append(opts, xhosts.RedisLoaderOption(loader.RedisListLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) @@ -82,6 +83,7 @@ func ParseHostMapper(cfg *config.HostsConfig) hosts.HostMapper { opts = append(opts, xhosts.RedisLoaderOption(loader.RedisSetLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) diff --git a/config/parsing/ingress/parse.go b/config/parsing/ingress/parse.go index 94e37f9a..e90709f2 100644 --- a/config/parsing/ingress/parse.go +++ b/config/parsing/ingress/parse.go @@ -70,6 +70,7 @@ func ParseIngress(cfg *config.IngressConfig) ingress.Ingress { opts = append(opts, xingress.RedisLoaderOption(loader.RedisSetLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) @@ -77,6 +78,7 @@ func ParseIngress(cfg *config.IngressConfig) ingress.Ingress { opts = append(opts, xingress.RedisLoaderOption(loader.RedisHashLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) diff --git a/config/parsing/limiter/parse.go b/config/parsing/limiter/parse.go index 83068d3b..3ba4affa 100644 --- a/config/parsing/limiter/parse.go +++ b/config/parsing/limiter/parse.go @@ -57,6 +57,7 @@ func ParseTrafficLimiter(cfg *config.LimiterConfig) (lim traffic.TrafficLimiter) opts = append(opts, xtraffic.RedisLoaderOption(loader.RedisListLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) @@ -64,6 +65,7 @@ func ParseTrafficLimiter(cfg *config.LimiterConfig) (lim traffic.TrafficLimiter) opts = append(opts, xtraffic.RedisLoaderOption(loader.RedisSetLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) @@ -103,6 +105,7 @@ func ParseConnLimiter(cfg *config.LimiterConfig) (lim conn.ConnLimiter) { opts = append(opts, xconn.RedisLoaderOption(loader.RedisListLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) @@ -110,6 +113,7 @@ func ParseConnLimiter(cfg *config.LimiterConfig) (lim conn.ConnLimiter) { opts = append(opts, xconn.RedisLoaderOption(loader.RedisSetLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) @@ -149,6 +153,7 @@ func ParseRateLimiter(cfg *config.LimiterConfig) (lim rate.RateLimiter) { opts = append(opts, xrate.RedisLoaderOption(loader.RedisListLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) @@ -156,6 +161,7 @@ func ParseRateLimiter(cfg *config.LimiterConfig) (lim rate.RateLimiter) { opts = append(opts, xrate.RedisLoaderOption(loader.RedisSetLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) diff --git a/config/parsing/recorder/parse.go b/config/parsing/recorder/parse.go index d2cba61d..c8e7a421 100644 --- a/config/parsing/recorder/parse.go +++ b/config/parsing/recorder/parse.go @@ -70,18 +70,21 @@ func ParseRecorder(cfg *config.RecorderConfig) (r recorder.Recorder) { return xrecorder.RedisListRecorder(cfg.Redis.Addr, xrecorder.DBRedisRecorderOption(cfg.Redis.DB), xrecorder.KeyRedisRecorderOption(cfg.Redis.Key), + xrecorder.UsernameRedisRecorderOption(cfg.Redis.Username), xrecorder.PasswordRedisRecorderOption(cfg.Redis.Password), ) case "sset": // sorted set return xrecorder.RedisSortedSetRecorder(cfg.Redis.Addr, xrecorder.DBRedisRecorderOption(cfg.Redis.DB), xrecorder.KeyRedisRecorderOption(cfg.Redis.Key), + xrecorder.UsernameRedisRecorderOption(cfg.Redis.Username), xrecorder.PasswordRedisRecorderOption(cfg.Redis.Password), ) default: // redis set return xrecorder.RedisSetRecorder(cfg.Redis.Addr, xrecorder.DBRedisRecorderOption(cfg.Redis.DB), xrecorder.KeyRedisRecorderOption(cfg.Redis.Key), + xrecorder.UsernameRedisRecorderOption(cfg.Redis.Username), xrecorder.PasswordRedisRecorderOption(cfg.Redis.Password), ) } diff --git a/config/parsing/router/parse.go b/config/parsing/router/parse.go index b23677fc..513724a1 100644 --- a/config/parsing/router/parse.go +++ b/config/parsing/router/parse.go @@ -76,6 +76,7 @@ func ParseRouter(cfg *config.RouterConfig) router.Router { opts = append(opts, xrouter.RedisLoaderOption(loader.RedisListLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) @@ -83,6 +84,7 @@ func ParseRouter(cfg *config.RouterConfig) router.Router { opts = append(opts, xrouter.RedisLoaderOption(loader.RedisSetLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) @@ -90,6 +92,7 @@ func ParseRouter(cfg *config.RouterConfig) router.Router { opts = append(opts, xrouter.RedisLoaderOption(loader.RedisHashLoader( cfg.Redis.Addr, loader.DBRedisLoaderOption(cfg.Redis.DB), + loader.UsernameRedisLoaderOption(cfg.Redis.Username), loader.PasswordRedisLoaderOption(cfg.Redis.Password), loader.KeyRedisLoaderOption(cfg.Redis.Key), ))) diff --git a/internal/loader/redis.go b/internal/loader/redis.go index 5265a84a..14ad3c53 100644 --- a/internal/loader/redis.go +++ b/internal/loader/redis.go @@ -16,6 +16,7 @@ const ( type redisLoaderOptions struct { db int + username string password string key string } @@ -28,6 +29,12 @@ func DBRedisLoaderOption(db int) RedisLoaderOption { } } +func UsernameRedisLoaderOption(username string) RedisLoaderOption { + return func(opts *redisLoaderOptions) { + opts.username = username + } +} + func PasswordRedisLoaderOption(password string) RedisLoaderOption { return func(opts *redisLoaderOptions) { opts.password = password diff --git a/recorder/redis.go b/recorder/redis.go index 9df42e73..99ed8665 100644 --- a/recorder/redis.go +++ b/recorder/redis.go @@ -9,6 +9,7 @@ import ( type redisRecorderOptions struct { db int + username string password string key string } @@ -20,6 +21,11 @@ func DBRedisRecorderOption(db int) RedisRecorderOption { } } +func UsernameRedisRecorderOption(username string) RedisRecorderOption { + return func(opts *redisRecorderOptions) { + opts.username = username + } +} func PasswordRedisRecorderOption(password string) RedisRecorderOption { return func(opts *redisRecorderOptions) { opts.password = password