diff --git a/broker.go b/broker.go index 739f001ed..53c7f8e6f 100644 --- a/broker.go +++ b/broker.go @@ -156,6 +156,8 @@ func (b *Broker) Open(conf *Config) error { if conf.Net.TLS.Enable { b.conn, b.connErr = tls.DialWithDialer(&dialer, "tcp", b.addr, conf.Net.TLS.Config) + } else if conf.Net.Proxy.Enable { + b.conn, b.connErr = conf.Net.Proxy.Dialer.Dial("tcp", b.addr) } else { b.conn, b.connErr = dialer.Dial("tcp", b.addr) } diff --git a/config.go b/config.go index ab651d2c6..dca186ea6 100644 --- a/config.go +++ b/config.go @@ -10,6 +10,7 @@ import ( "time" "github.com/rcrowley/go-metrics" + "golang.org/x/net/proxy" ) const defaultClientID = "sarama" @@ -85,6 +86,14 @@ type Config struct { // network being dialed. // If nil, a local address is automatically chosen. LocalAddr net.Addr + + Proxy struct { + // Whether or not to use proxy when connecting to the broker + // (defaults to false). + Enable bool + // The proxy dialer to use enabled (defaults to nil). + Dialer proxy.Dialer + } } // Metadata is the namespace for metadata management properties used by the diff --git a/go.mod b/go.mod index 97eeb8136..3f2f3541e 100644 --- a/go.mod +++ b/go.mod @@ -14,6 +14,5 @@ require ( github.com/stretchr/testify v1.3.0 github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c github.com/xdg/stringprep v1.0.0 // indirect - golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25 // indirect - golang.org/x/text v0.3.0 // indirect + golang.org/x/net v0.0.0-20190327091125-710a502c58a2 ) diff --git a/go.sum b/go.sum index fb55402f3..4bde1a231 100644 --- a/go.sum +++ b/go.sum @@ -30,6 +30,9 @@ github.com/xdg/stringprep v1.0.0 h1:d9X0esnoa3dFsV0FG35rAT0RIhYFlPq7MiP+DW89La0= github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25 h1:jsG6UpNLt9iAsb0S2AGW28DveNzzgmbXR+ENoPjUeIU= golang.org/x/crypto v0.0.0-20190228161510-8dd112bcdc25/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2 h1:17UhVDrPb40BH5k6cyeb2V/7QlBNdo/a0+r0dtK+Utw= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=