diff options
| author | davy <davy.wybiral@gmail.com> | 2019-07-03 16:55:03 -0500 |
|---|---|---|
| committer | davy <davy.wybiral@gmail.com> | 2019-07-03 16:55:03 -0500 |
| commit | 442e3c6dcf35cc1ca508e617f94198637e761bc8 (patch) | |
| tree | 8d6b6210ce98385180766fa14984e2c47f779050 /vendor/golang.org/x/net/proxy/socks5.go | |
| parent | 53bc0c19fadcfb7ae9a608ed1f9f6268d1670368 (diff) | |
dep ensurev0.1.0
Diffstat (limited to 'vendor/golang.org/x/net/proxy/socks5.go')
| -rw-r--r-- | vendor/golang.org/x/net/proxy/socks5.go | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/golang.org/x/net/proxy/socks5.go b/vendor/golang.org/x/net/proxy/socks5.go new file mode 100644 index 0000000..c91651f --- /dev/null +++ b/vendor/golang.org/x/net/proxy/socks5.go @@ -0,0 +1,42 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package proxy + +import ( + "context" + "net" + + "golang.org/x/net/internal/socks" +) + +// SOCKS5 returns a Dialer that makes SOCKSv5 connections to the given +// address with an optional username and password. +// See RFC 1928 and RFC 1929. +func SOCKS5(network, address string, auth *Auth, forward Dialer) (Dialer, error) { + d := socks.NewDialer(network, address) + if forward != nil { + if f, ok := forward.(ContextDialer); ok { + d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) { + return f.DialContext(ctx, network, address) + } + } else { + d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) { + return dialContext(ctx, forward, network, address) + } + } + } + if auth != nil { + up := socks.UsernamePassword{ + Username: auth.User, + Password: auth.Password, + } + d.AuthMethods = []socks.AuthMethod{ + socks.AuthMethodNotRequired, + socks.AuthMethodUsernamePassword, + } + d.Authenticate = up.Authenticate + } + return d, nil +} |
