feat: add userCredentials for nats (#19139)

This commit is contained in:
jiuker 2024-02-28 02:11:55 +08:00 committed by GitHub
parent 1dd8ef09a6
commit 0aae0180fb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 49 additions and 31 deletions

View File

@ -446,6 +446,10 @@ func SetNotifyNATS(s config.Config, natsName string, cfg target.NATSArgs) error
Key: target.NATSUsername, Key: target.NATSUsername,
Value: cfg.Username, Value: cfg.Username,
}, },
config.KV{
Key: target.NATSUserCredentials,
Value: cfg.UserCredentials,
},
config.KV{ config.KV{
Key: target.NATSPassword, Key: target.NATSPassword,
Value: cfg.Password, Value: cfg.Password,

View File

@ -946,6 +946,11 @@ func GetNotifyNATS(natsKVS map[string]config.KVS, rootCAs *x509.CertPool) (map[s
usernameEnv = usernameEnv + config.Default + k usernameEnv = usernameEnv + config.Default + k
} }
userCredentialsEnv := target.NATSUserCredentials
if k != config.Default {
userCredentialsEnv = userCredentialsEnv + config.Default + k
}
passwordEnv := target.EnvNATSPassword passwordEnv := target.EnvNATSPassword
if k != config.Default { if k != config.Default {
passwordEnv = passwordEnv + config.Default + k passwordEnv = passwordEnv + config.Default + k
@ -986,6 +991,7 @@ func GetNotifyNATS(natsKVS map[string]config.KVS, rootCAs *x509.CertPool) (map[s
Address: *address, Address: *address,
Subject: env.Get(subjectEnv, kv.Get(target.NATSSubject)), Subject: env.Get(subjectEnv, kv.Get(target.NATSSubject)),
Username: env.Get(usernameEnv, kv.Get(target.NATSUsername)), Username: env.Get(usernameEnv, kv.Get(target.NATSUsername)),
UserCredentials: env.Get(userCredentialsEnv, kv.Get(target.NATSUserCredentials)),
Password: env.Get(passwordEnv, kv.Get(target.NATSPassword)), Password: env.Get(passwordEnv, kv.Get(target.NATSPassword)),
CertAuthority: env.Get(certAuthorityEnv, kv.Get(target.NATSCertAuthority)), CertAuthority: env.Get(certAuthorityEnv, kv.Get(target.NATSCertAuthority)),
ClientCert: env.Get(clientCertEnv, kv.Get(target.NATSClientCert)), ClientCert: env.Get(clientCertEnv, kv.Get(target.NATSClientCert)),

View File

@ -67,6 +67,7 @@ const (
EnvNATSAddress = "MINIO_NOTIFY_NATS_ADDRESS" EnvNATSAddress = "MINIO_NOTIFY_NATS_ADDRESS"
EnvNATSSubject = "MINIO_NOTIFY_NATS_SUBJECT" EnvNATSSubject = "MINIO_NOTIFY_NATS_SUBJECT"
EnvNATSUsername = "MINIO_NOTIFY_NATS_USERNAME" EnvNATSUsername = "MINIO_NOTIFY_NATS_USERNAME"
NATSUserCredentials = "MINIO_NOTIFY_NATS_USER_CREDENTIALS"
EnvNATSPassword = "MINIO_NOTIFY_NATS_PASSWORD" EnvNATSPassword = "MINIO_NOTIFY_NATS_PASSWORD"
EnvNATSToken = "MINIO_NOTIFY_NATS_TOKEN" EnvNATSToken = "MINIO_NOTIFY_NATS_TOKEN"
EnvNATSTLS = "MINIO_NOTIFY_NATS_TLS" EnvNATSTLS = "MINIO_NOTIFY_NATS_TLS"
@ -94,6 +95,7 @@ type NATSArgs struct {
Address xnet.Host `json:"address"` Address xnet.Host `json:"address"`
Subject string `json:"subject"` Subject string `json:"subject"`
Username string `json:"username"` Username string `json:"username"`
UserCredentials string `json:"userCredentials"`
Password string `json:"password"` Password string `json:"password"`
Token string `json:"token"` Token string `json:"token"`
TLS bool `json:"tls"` TLS bool `json:"tls"`
@ -167,6 +169,9 @@ func (n NATSArgs) connectNats() (*nats.Conn, error) {
if n.Username != "" && n.Password != "" { if n.Username != "" && n.Password != "" {
connOpts = append(connOpts, nats.UserInfo(n.Username, n.Password)) connOpts = append(connOpts, nats.UserInfo(n.Username, n.Password))
} }
if n.UserCredentials != "" {
connOpts = append(connOpts, nats.UserCredentials(n.UserCredentials))
}
if n.Token != "" { if n.Token != "" {
connOpts = append(connOpts, nats.Token(n.Token)) connOpts = append(connOpts, nats.Token(n.Token))
} }
@ -211,6 +216,9 @@ func (n NATSArgs) connectStan() (stan.Conn, error) {
if n.Streaming.MaxPubAcksInflight > 0 { if n.Streaming.MaxPubAcksInflight > 0 {
connOpts = append(connOpts, stan.MaxPubAcksInflight(n.Streaming.MaxPubAcksInflight)) connOpts = append(connOpts, stan.MaxPubAcksInflight(n.Streaming.MaxPubAcksInflight))
} }
if n.UserCredentials != "" {
connOpts = append(connOpts, stan.NatsOptions(nats.UserCredentials(n.UserCredentials)))
}
return stan.Connect(n.Streaming.ClusterID, clientID, connOpts...) return stan.Connect(n.Streaming.ClusterID, clientID, connOpts...)
} }