aboutsummaryrefslogtreecommitdiff
path: root/vendor/golang.org/x/net/proxy/socks5.go
diff options
context:
space:
mode:
authorJordan <me@jordan.im>2023-12-16 17:41:01 -0700
committerJordan <me@jordan.im>2023-12-16 17:41:01 -0700
commit7ecc048ae012a631bc3f0dcbd62f6190384ea0cd (patch)
treef8dd09feb67af740fb92d13c458e602f9bee8d45 /vendor/golang.org/x/net/proxy/socks5.go
parenta3dac1a28fdc9e42d85c4686858c64597cf1a15b (diff)
downloadkeep-main.tar.gz
keep-main.zip
misc: go get -u; go mod tidy; go mod vendorHEADmain
Diffstat (limited to 'vendor/golang.org/x/net/proxy/socks5.go')
-rw-r--r--vendor/golang.org/x/net/proxy/socks5.go42
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
+}