diff --git a/Makefile b/Makefile index f40359b2f..5d4e1bce8 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ deps_frontend: deps_backend: go get -u golang.org/x/tools/cmd/cover + go get -u golang.org/x/net/proxy go get -u github.com/jteeuwen/go-bindata/... go get -u github.com/elazarl/go-bindata-assetfs/... go get -u github.com/drone/mq/... diff --git a/client/client_impl.go b/client/client_impl.go index 5f0935289..96a16a503 100644 --- a/client/client_impl.go +++ b/client/client_impl.go @@ -9,9 +9,11 @@ import ( "io/ioutil" "net/http" "net/url" + "os" "strconv" "github.com/drone/drone/model" + "golang.org/x/net/proxy" "golang.org/x/oauth2" ) @@ -76,9 +78,22 @@ func NewClientTokenTLS(uri, token string, c *tls.Config) Client { auther := config.Client(oauth2.NoContext, &oauth2.Token{AccessToken: token}) if c != nil { if trans, ok := auther.Transport.(*oauth2.Transport); ok { - trans.Base = &http.Transport{ - TLSClientConfig: c, - Proxy: http.ProxyFromEnvironment, + if os.Getenv("SOCKS_PROXY") != "" { + dialer, err := proxy.SOCKS5("tcp", os.Getenv("SOCKS_PROXY"), nil, proxy.Direct) + if err != nil { + fmt.Fprintln(os.Stderr, "can't connect to the proxy:", err) + os.Exit(1) + } + trans.Base = &http.Transport{ + TLSClientConfig: c, + Proxy: http.ProxyFromEnvironment, + Dial: dialer.Dial, + } + } else { + trans.Base = &http.Transport{ + TLSClientConfig: c, + Proxy: http.ProxyFromEnvironment, + } } } }