From 10de575f6034e89f9aefce6538cad57305ee681f Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Thu, 8 Oct 2020 11:06:04 -0700 Subject: [PATCH] parse url --- src/comm/comm.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/comm/comm.go b/src/comm/comm.go index 0a1f8ed9..56c57416 100644 --- a/src/comm/comm.go +++ b/src/comm/comm.go @@ -6,6 +6,7 @@ import ( "fmt" "io" "net" + "net/url" "time" "github.com/schollz/croc/v8/src/utils" @@ -34,13 +35,26 @@ func NewConnection(address string, timelimit ...time.Duration) (c *Comm, err err var dialer proxy.Dialer dialer, err = proxy.SOCKS5("tcp", Socks5Proxy, nil, proxy.Direct) if err != nil { - err = fmt.Errorf("proxy failed: %w", err) + err = fmt.Errorf("socks5 proxy failed: %w", err) return } connection, err = dialer.Dial("tcp", address) } else if HTTPProxy != "" && !utils.IsLocalIP(address) { + var u *url.URL + u, err = url.Parse(address) + if err != nil { + u, err = url.Parse("http://" + address) + if err != nil { + return + } + } var dialer proxy.Dialer - dialer, err = proxy.FromURL(nil, proxy.Direct) + dialer, err = proxy.FromURL(u, proxy.Direct) + if err != nil { + err = fmt.Errorf("http proxy failed: %w", err) + return + } + connection, err = dialer.Dial("tcp", address) } else { connection, err = net.DialTimeout("tcp", address, tlimit) }