podman

Форк
0
42 строки · 1.1 Кб
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.
4

5
package proxy
6

7
import (
8
	"context"
9
	"net"
10

11
	"golang.org/x/net/internal/socks"
12
)
13

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)
19
	if forward != nil {
20
		if f, ok := forward.(ContextDialer); ok {
21
			d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) {
22
				return f.DialContext(ctx, network, address)
23
			}
24
		} else {
25
			d.ProxyDial = func(ctx context.Context, network string, address string) (net.Conn, error) {
26
				return dialContext(ctx, forward, network, address)
27
			}
28
		}
29
	}
30
	if auth != nil {
31
		up := socks.UsernamePassword{
32
			Username: auth.User,
33
			Password: auth.Password,
34
		}
35
		d.AuthMethods = []socks.AuthMethod{
36
			socks.AuthMethodNotRequired,
37
			socks.AuthMethodUsernamePassword,
38
		}
39
		d.Authenticate = up.Authenticate
40
	}
41
	return d, nil
42
}
43

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.