From a6c80ced23dfd3e5dbb474724b0e7869d12769a3 Mon Sep 17 00:00:00 2001 From: nghialv Date: Fri, 27 Nov 2020 23:20:29 +0900 Subject: [PATCH 1/2] Allow configure the proxy for GitHub auth client --- pkg/model/project.proto | 1 + pkg/oauth/github/github.go | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/pkg/model/project.proto b/pkg/model/project.proto index f2b4441feb..0dbea6421a 100644 --- a/pkg/model/project.proto +++ b/pkg/model/project.proto @@ -69,6 +69,7 @@ message ProjectSSOConfig { string client_secret = 2 [(validate.rules).string.min_len = 1]; string base_url = 3; string upload_url = 4; + string proxy_url = 5; } message Google { diff --git a/pkg/oauth/github/github.go b/pkg/oauth/github/github.go index a9b662e5ed..2224197acb 100644 --- a/pkg/oauth/github/github.go +++ b/pkg/oauth/github/github.go @@ -17,6 +17,7 @@ package github import ( "context" "fmt" + "net/http" "net/url" "github.com/google/go-github/v29/github" @@ -54,9 +55,22 @@ func NewOAuthClient(ctx context.Context, ClientSecret: sso.ClientSecret, Endpoint: oauth2github.Endpoint, } + + if sso.ProxyUrl != "" { + proxyURL, err := url.Parse(sso.ProxyUrl) + if err != nil { + return nil, err + } + t := http.DefaultTransport.(*http.Transport).Clone() + t.Proxy = http.ProxyURL(proxyURL) + + ctx = context.WithValue(ctx, oauth2.HTTPClient, &http.Client{Transport: t}) + } + if enterprise { return newGHEOAuthClient(ctx, sso, code, c, cfg) } + token, err := cfg.Exchange(ctx, code) if err != nil { return nil, err From 333055cf372746c5297229596b9beb829abff2e9 Mon Sep 17 00:00:00 2001 From: nghialv Date: Fri, 27 Nov 2020 23:51:41 +0900 Subject: [PATCH 2/2] Reformat --- pkg/oauth/github/github.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/oauth/github/github.go b/pkg/oauth/github/github.go index 2224197acb..96196bfefd 100644 --- a/pkg/oauth/github/github.go +++ b/pkg/oauth/github/github.go @@ -61,9 +61,9 @@ func NewOAuthClient(ctx context.Context, if err != nil { return nil, err } + t := http.DefaultTransport.(*http.Transport).Clone() t.Proxy = http.ProxyURL(proxyURL) - ctx = context.WithValue(ctx, oauth2.HTTPClient, &http.Client{Transport: t}) }