@@ -15,18 +15,27 @@ import (
1515 "github.com/kentik/ktranslate/pkg/formats"
1616 "github.com/kentik/ktranslate/pkg/kt"
1717 kafka "github.com/segmentio/kafka-go"
18+ "github.com/segmentio/kafka-go/sasl"
19+ "github.com/segmentio/kafka-go/sasl/plain"
20+ "github.com/segmentio/kafka-go/sasl/scram"
1821)
1922
2023var (
2124 topic string
2225 bootstrapServers string
2326 tlsConfig string
27+ saslUser string
28+ saslPass string
29+ saslMech string
2430)
2531
2632func init () {
2733 flag .StringVar (& topic , "kafka_topic" , "" , "kafka topic to produce on" )
2834 flag .StringVar (& bootstrapServers , "bootstrap.servers" , "" , "bootstrap.servers" )
2935 flag .StringVar (& tlsConfig , "kafka.tls.config" , "" , "tls config to use for kafka. Can be basic|cert.pem,key.pem|cert.pem,key.pem,ca-cert.pem" )
36+ flag .StringVar (& saslUser , "kafka.sasl.user" , "" , "kafka user" )
37+ flag .StringVar (& saslPass , "kafka.sasl.password" , "" , "kafka password" )
38+ flag .StringVar (& saslMech , "kafka.sasl.mechanism" , "" , "plain|scram" )
3039}
3140
3241/**
@@ -115,10 +124,36 @@ func (s *KafkaSink) Init(ctx context.Context, format formats.Format, compression
115124 Balancer : & kafka.LeastBytes {},
116125 }
117126
127+ var mech sasl.Mechanism
128+
129+ if s .config .SaslMech != "" {
130+ s .Infof ("Adding Sasl Support" )
131+ switch s .config .SaslMech {
132+ case "plain" :
133+ mech = plain.Mechanism {
134+ Username : s .config .SaslUser ,
135+ Password : s .config .SaslPass ,
136+ }
137+ case "scram" :
138+ mechl , err := scram .Mechanism (scram .SHA512 , s .config .SaslUser , s .config .SaslPass )
139+ if err != nil {
140+ return err
141+ }
142+ mech = mechl
143+ default :
144+ return fmt .Errorf ("Invalid kafka.sasl.mechanism flag=%s. Valid is plain|scram" , s .config .SaslMech )
145+ }
146+ }
147+
118148 if s .tlsConf != nil {
119149 s .Infof ("Adding TLS Support" )
120150 s .kp .Transport = & kafka.Transport {
121- TLS : s .tlsConf ,
151+ TLS : s .tlsConf ,
152+ SASL : mech ,
153+ }
154+ } else if mech != nil {
155+ s .kp .Transport = & kafka.Transport {
156+ SASL : mech ,
122157 }
123158 }
124159
0 commit comments