teldrive/internal/utils/proxy.go

39 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")
}