Skip to content

Commit

Permalink
add default timeout
Browse files Browse the repository at this point in the history
  • Loading branch information
LubyRuffy committed Oct 14, 2022
1 parent c256638 commit c3381fe
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 11 deletions.
1 change: 1 addition & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
- support check cache
- optimize check?host= as concurrent, send to background
- support load exists cert firstly when tls enabled
- add default timeout

## v0.1.5 only fetch user's proxies

Expand Down
38 changes: 27 additions & 11 deletions api/check.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,25 +88,33 @@ type TransportFunc func(addr string) *http.Transport
var Transports = map[string]TransportFunc{
"http": func(addr string) *http.Transport {
u, _ := url.Parse("http://" + addr)
return &http.Transport{Proxy: http.ProxyURL(u), TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
return &http.Transport{
Proxy: http.ProxyURL(u),
}
},
"https": func(addr string) *http.Transport {
u, _ := url.Parse("https://" + addr)
return &http.Transport{Proxy: http.ProxyURL(u), TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
return &http.Transport{
Proxy: http.ProxyURL(u),
}
},
"socks4": func(addr string) *http.Transport {
return &http.Transport{DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
return socks.Dial("socks4://"+addr)("socks4", addr)
}, TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
},
}
},
"socks4a": func(addr string) *http.Transport {
return &http.Transport{DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
return socks.Dial("socks4a://"+addr)("socks4a", addr)
}, TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
},
}
},
"socks5": func(addr string) *http.Transport {
u, _ := url.Parse("socks5://" + addr)
return &http.Transport{Proxy: http.ProxyURL(u), TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}
return &http.Transport{
Proxy: http.ProxyURL(u),
}
},
}

Expand All @@ -119,6 +127,18 @@ type proxyResult struct {
IP string
}

func defaultHttpClient(tr *http.Transport) *http.Client {
tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
tr.TLSHandshakeTimeout = defaultTimeOut
tr.ResponseHeaderTimeout = defaultTimeOut
tr.IdleConnTimeout = defaultTimeOut
tr.ExpectContinueTimeout = defaultTimeOut
return &http.Client{
Transport: tr,
Timeout: defaultTimeOut,
}
}

// checkProtocolHost 第一个返回参数是是否为代理,第二个返回参数是返回的header
func checkProtocolHost(protocol string, host string) *proxyResult {
// 确定最近没有进行测试
Expand All @@ -143,9 +163,7 @@ func checkProtocolHost(protocol string, host string) *proxyResult {
}()

if transportFunc, ok := Transports[protocol]; ok {
client := http.Client{
Transport: transportFunc(host),
}
client := defaultHttpClient(transportFunc(host))

var req *http.Request
req, err = http.NewRequest("GET", defaultCheckUrl, nil)
Expand Down Expand Up @@ -236,9 +254,7 @@ func checkIpPort(ip string, port string) *proxyResult {
func supportHttps(uParsed *url.URL) bool {
var err error
if transportFunc, ok := Transports[uParsed.Scheme]; ok {
client := http.Client{
Transport: transportFunc(uParsed.Host),
}
client := defaultHttpClient(transportFunc(uParsed.Host))

var resp *http.Response
resp, err = client.Get(defaultHTTPsCheckUrl)
Expand Down

0 comments on commit c3381fe

Please sign in to comment.