prox5/mr_worldwide.go

56 lines
1.4 KiB
Go
Raw Normal View History

package prox5
import (
"crypto/tls"
"net/http"
2023-01-31 09:21:29 +00:00
"sync"
2023-02-06 16:33:42 +00:00
"time"
)
2023-01-31 09:21:29 +00:00
func (p5 *ProxyEngine) newHTTPClient() any {
2023-02-06 16:33:42 +00:00
timeout := p5.GetServerTimeout()
hc := &http.Client{
Transport: &http.Transport{
2022-11-30 19:30:59 +00:00
DialContext: p5.DialContext,
2023-01-31 09:40:48 +00:00
TLSClientConfig: &tls.Config{InsecureSkipVerify: p5.GetHTTPTLSVerificationStatus() == false}, //nolint:gosec
2022-11-30 19:30:59 +00:00
// TLSHandshakeTimeout: p5.GetServerTimeout(),
2023-01-31 09:21:29 +00:00
DisableKeepAlives: true,
DisableCompression: false,
// MaxIdleConnsPerHost: 5,
2023-02-06 16:33:42 +00:00
// MaxConnsPerHost: 0,
// IdleConnTimeout: 0,
// ResponseHeaderTimeout: 0,
// ExpectContinueTimeout: 0,
// TLSNextProto: nil,
// ProxyConnectHeader: nil,
// GetProxyConnectHeader: nil,
// MaxResponseHeaderBytes: 0,
// WriteBufferSize: 0,
// ReadBufferSize: 0,
// ForceAttemptHTTP2: false,
},
2023-02-06 16:33:42 +00:00
}
2023-02-09 14:19:34 +00:00
if timeout != time.Duration(0) {
2023-02-06 16:33:42 +00:00
hc.Timeout = timeout
}
2023-02-09 14:19:34 +00:00
return hc
}
2023-01-31 09:21:29 +00:00
// GetHTTPClient retrieves a pointer to an http.Client powered by mysteryDialer.
func (p5 *ProxyEngine) GetHTTPClient() *http.Client {
if p5.httpOptsDirty.Load() {
p5.httpClients = &sync.Pool{
New: p5.newHTTPClient,
}
p5.httpOptsDirty.Store(false)
}
return p5.httpClients.Get().(*http.Client)
}
// RoundTrip is Mr. WorldWide. Obviously. See: https://pkg.go.dev/net/http#RoundTripper
2022-10-16 10:53:04 +00:00
func (p5 *ProxyEngine) RoundTrip(req *http.Request) (*http.Response, error) {
2022-09-22 23:48:08 +00:00
return p5.GetHTTPClient().Do(req)
}