fix proxy

This commit is contained in:
2022-05-01 19:13:27 -04:00
parent 38e964c522
commit 5e55fea0fd
6 changed files with 72 additions and 14 deletions

View File

@ -9,6 +9,9 @@ import (
)
func GetClient(proxy string) (*http.Client, error) {
if proxy == "" {
return http.DefaultClient, nil
}
proxyUrl, err := url.Parse(proxy)
if err != nil {
return nil, fmt.Errorf("failed to parse proxyUrl, url:%s, err: %w", proxy, err)
@ -28,20 +31,25 @@ func unixSocks5Proxy(path string) (*http.Client, error) {
}
ctxDialer, ok := dialer.(proxy.ContextDialer)
if !ok {
return nil, fmt.Errorf("proxy.SOCKS5 did not return a ContextDialer") // This should never happen
panic("proxy.SOCKS5 did not return a ContextDialer")
}
return &http.Client{
Transport: &http.Transport{
DialContext: ctxDialer.DialContext,
},
}, nil
trans := defaultTransport()
trans.DialContext = ctxDialer.DialContext
trans.Proxy = nil
return &http.Client{Transport: trans}, nil
}
func proxyHttp(proxyUrl *url.URL) (*http.Client, error) {
return &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxyUrl),
},
}, nil
trans := defaultTransport()
trans.Proxy = http.ProxyURL(proxyUrl)
return &http.Client{Transport: trans}, nil
}
func defaultTransport() *http.Transport {
transPtr, ok := http.DefaultTransport.(*http.Transport)
if !ok {
panic("http.DefaultTransport is not a *http.Transport")
}
trans := transPtr.Clone()
return trans
}