diff --git a/common/requester/http_client.go b/common/requester/http_client.go index c74909c4..17f76ce0 100644 --- a/common/requester/http_client.go +++ b/common/requester/http_client.go @@ -53,8 +53,15 @@ func socks5ProxyFunc(ctx context.Context, network, addr string) (net.Conn, error if err != nil { return nil, fmt.Errorf("error parsing proxy address: %w", err) } - - proxyDialer, err := proxy.SOCKS5("tcp", proxyURL.Host, nil, proxy.Direct) + var auth *proxy.Auth = nil + password, isSetPassword := proxyURL.User.Password() + if isSetPassword { + auth = &proxy.Auth{ + User: proxyURL.User.Username(), + Password: password, + } + } + proxyDialer, err := proxy.SOCKS5("tcp", proxyURL.Host, auth, proxy.Direct) if err != nil { return nil, fmt.Errorf("error creating socks5 dialer: %w", err) } diff --git a/common/requester/ws_client.go b/common/requester/ws_client.go index 2ea865d7..30000072 100644 --- a/common/requester/ws_client.go +++ b/common/requester/ws_client.go @@ -38,7 +38,15 @@ func setWSProxy(dialer *websocket.Dialer, proxyAddr string) error { case "http", "https": dialer.Proxy = http.ProxyURL(proxyURL) case "socks5": - socks5Proxy, err := proxy.SOCKS5("tcp", proxyURL.Host, nil, proxy.Direct) + var auth *proxy.Auth = nil + password, isSetPassword := proxyURL.User.Password() + if isSetPassword { + auth = &proxy.Auth{ + User: proxyURL.User.Username(), + Password: password, + } + } + socks5Proxy, err := proxy.SOCKS5("tcp", proxyURL.Host, auth, proxy.Direct) if err != nil { return fmt.Errorf("error creating socks5 dialer: %w", err) } diff --git a/common/telegram/common.go b/common/telegram/common.go index 6e22c687..bb3284d1 100644 --- a/common/telegram/common.go +++ b/common/telegram/common.go @@ -235,7 +235,6 @@ func getHttpClient() (httpClient *http.Client) { common.SysLog("failed to parse TG proxy URL: " + err.Error()) return } - switch proxyURL.Scheme { case "http", "https": httpClient = &http.Client{ @@ -244,7 +243,15 @@ func getHttpClient() (httpClient *http.Client) { }, } case "socks5": - dialer, err := proxy.SOCKS5("tcp", proxyURL.Host, nil, proxy.Direct) + var auth *proxy.Auth = nil + password, isSetPassword := proxyURL.User.Password() + if isSetPassword { + auth = &proxy.Auth{ + User: proxyURL.User.Username(), + Password: password, + } + } + dialer, err := proxy.SOCKS5("tcp", proxyURL.Host, auth, proxy.Direct) if err != nil { common.SysLog("failed to create TG SOCKS5 dialer: " + err.Error()) return