mirror of
https://github.com/tgdrive/teldrive.git
synced 2024-11-14 19:56:33 +08:00
38 lines
706 B
Go
38 lines
706 B
Go
// Taken from /iyear/tdl
|
|
|
|
package utils
|
|
|
|
import (
|
|
"net/url"
|
|
|
|
"github.com/go-faster/errors"
|
|
"github.com/iyear/connectproxy"
|
|
"golang.org/x/net/proxy"
|
|
)
|
|
|
|
type _proxy struct{}
|
|
|
|
var Proxy = _proxy{}
|
|
|
|
func init() {
|
|
connectproxy.Register(&connectproxy.Config{
|
|
InsecureSkipVerify: true,
|
|
})
|
|
}
|
|
|
|
func (p _proxy) GetDial(_url string) (proxy.ContextDialer, error) {
|
|
u, err := url.Parse(_url)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "parse proxy url")
|
|
}
|
|
dialer, err := proxy.FromURL(u, proxy.Direct)
|
|
if err != nil {
|
|
return nil, errors.Wrap(err, "proxy from url")
|
|
}
|
|
|
|
if d, ok := dialer.(proxy.ContextDialer); ok {
|
|
return d, nil
|
|
}
|
|
|
|
return nil, errors.New("proxy dialer is not ContextDialer")
|
|
}
|