🐛 fix: Fixed SOCKS5 Proxy Authentication Issue
* fix(telegram代理): 修复telegram设置socks5加用户名密码无法代理的问题 修复socks5使用代理用户名密码的时候无法连接认证的问题。
This commit is contained in:
parent
eb260652b2
commit
0f658c5a53
@ -53,8 +53,15 @@ func socks5ProxyFunc(ctx context.Context, network, addr string) (net.Conn, error
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error parsing proxy address: %w", err)
|
return nil, fmt.Errorf("error parsing proxy address: %w", err)
|
||||||
}
|
}
|
||||||
|
var auth *proxy.Auth = nil
|
||||||
proxyDialer, err := proxy.SOCKS5("tcp", proxyURL.Host, nil, proxy.Direct)
|
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 {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error creating socks5 dialer: %w", err)
|
return nil, fmt.Errorf("error creating socks5 dialer: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,15 @@ func setWSProxy(dialer *websocket.Dialer, proxyAddr string) error {
|
|||||||
case "http", "https":
|
case "http", "https":
|
||||||
dialer.Proxy = http.ProxyURL(proxyURL)
|
dialer.Proxy = http.ProxyURL(proxyURL)
|
||||||
case "socks5":
|
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 {
|
if err != nil {
|
||||||
return fmt.Errorf("error creating socks5 dialer: %w", err)
|
return fmt.Errorf("error creating socks5 dialer: %w", err)
|
||||||
}
|
}
|
||||||
|
@ -235,7 +235,6 @@ func getHttpClient() (httpClient *http.Client) {
|
|||||||
common.SysLog("failed to parse TG proxy URL: " + err.Error())
|
common.SysLog("failed to parse TG proxy URL: " + err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
switch proxyURL.Scheme {
|
switch proxyURL.Scheme {
|
||||||
case "http", "https":
|
case "http", "https":
|
||||||
httpClient = &http.Client{
|
httpClient = &http.Client{
|
||||||
@ -244,7 +243,15 @@ func getHttpClient() (httpClient *http.Client) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
case "socks5":
|
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 {
|
if err != nil {
|
||||||
common.SysLog("failed to create TG SOCKS5 dialer: " + err.Error())
|
common.SysLog("failed to create TG SOCKS5 dialer: " + err.Error())
|
||||||
return
|
return
|
||||||
|
Loading…
Reference in New Issue
Block a user