1 // Copyright 2011 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
11 "golang.org/x/net/internal/socks"
14 // SOCKS5 returns a Dialer that makes SOCKSv5 connections to the given
15 // address with an optional username and password.
16 // See RFC 1928 and RFC 1929.
17 func SOCKS5(network, address string, auth *Auth, forward Dialer) (Dialer, error) {
18 d := socks.NewDialer(network, address)
20 d.ProxyDial = func(_ context.Context, network string, address string) (net.Conn, error) {
21 return forward.Dial(network, address)
25 up := socks.UsernamePassword{
27 Password: auth.Password,
29 d.AuthMethods = []socks.AuthMethod{
30 socks.AuthMethodNotRequired,
31 socks.AuthMethodUsernamePassword,
33 d.Authenticate = up.Authenticate