fix docs, error handling and managed proxy auth
Signed-off-by: Sanskar Jaiswal <jaiswalsanskar078@gmail.com>
This commit is contained in:
parent
ec45a612b1
commit
972d1cac2a
|
@ -735,7 +735,7 @@ func (r *GitRepositoryReconciler) gitCheckout(ctx context.Context,
|
||||||
// managed GIT transport only affects the libgit2 implementation
|
// managed GIT transport only affects the libgit2 implementation
|
||||||
if managed.Enabled() && obj.Spec.GitImplementation == sourcev1.LibGit2Implementation {
|
if managed.Enabled() && obj.Spec.GitImplementation == sourcev1.LibGit2Implementation {
|
||||||
// We set the TransportOptionsURL of this set of authentication options here by constructing
|
// We set the TransportOptionsURL of this set of authentication options here by constructing
|
||||||
// a unique ID that won't clash in a multi tenant environment. This unique ID is used by
|
// a unique URL that won't clash in a multi tenant environment. This unique URL is used by
|
||||||
// libgit2 managed transports. This enables us to bypass the inbuilt credentials callback in
|
// libgit2 managed transports. This enables us to bypass the inbuilt credentials callback in
|
||||||
// libgit2, which is inflexible and unstable.
|
// libgit2, which is inflexible and unstable.
|
||||||
if strings.HasPrefix(obj.Spec.URL, "http") {
|
if strings.HasPrefix(obj.Spec.URL, "http") {
|
||||||
|
@ -745,7 +745,7 @@ func (r *GitRepositoryReconciler) gitCheckout(ctx context.Context,
|
||||||
} else {
|
} else {
|
||||||
e := &serror.Stalling{
|
e := &serror.Stalling{
|
||||||
Err: fmt.Errorf("git repository URL has invalid transport type: '%s'", obj.Spec.URL),
|
Err: fmt.Errorf("git repository URL has invalid transport type: '%s'", obj.Spec.URL),
|
||||||
Reason: sourcev1.GitOperationFailedReason,
|
Reason: sourcev1.URLInvalidReason,
|
||||||
}
|
}
|
||||||
return nil, e
|
return nil, e
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ func Enabled(feature string) (bool, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable disables the specified feature. If the feature is not
|
// Disable disables the specified feature. If the feature is not
|
||||||
// present, it's a no-op
|
// present, it's a no-op.
|
||||||
func Disable(feature string) {
|
func Disable(feature string) {
|
||||||
if _, ok := features[feature]; ok {
|
if _, ok := features[feature]; ok {
|
||||||
features[feature] = false
|
features[feature] = false
|
||||||
|
|
2
main.go
2
main.go
|
@ -316,7 +316,7 @@ func main() {
|
||||||
if optimize, _ := feathelper.Enabled(features.OptimizedGitClones); optimize {
|
if optimize, _ := feathelper.Enabled(features.OptimizedGitClones); optimize {
|
||||||
features.Disable(features.OptimizedGitClones)
|
features.Disable(features.OptimizedGitClones)
|
||||||
setupLog.Info(
|
setupLog.Info(
|
||||||
"disabling optimzied git clones; git clones can only be optimized when using managed transort",
|
"disabling optimized git clones; git clones can only be optimized when using managed transport",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,7 +47,6 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"crypto/tls"
|
"crypto/tls"
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"encoding/base64"
|
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
@ -212,12 +211,6 @@ func createClientRequest(targetURL string, action git2go.SmartServiceAction,
|
||||||
if authOpts != nil {
|
if authOpts != nil {
|
||||||
if len(authOpts.Username) > 0 {
|
if len(authOpts.Username) > 0 {
|
||||||
req.SetBasicAuth(authOpts.Username, authOpts.Password)
|
req.SetBasicAuth(authOpts.Username, authOpts.Password)
|
||||||
if t.Proxy != nil {
|
|
||||||
t.ProxyConnectHeader.Set(
|
|
||||||
"Authorization",
|
|
||||||
"Basic "+basicAuth(authOpts.Username, authOpts.Password),
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if len(authOpts.CAFile) > 0 {
|
if len(authOpts.CAFile) > 0 {
|
||||||
certPool := x509.NewCertPool()
|
certPool := x509.NewCertPool()
|
||||||
|
@ -413,9 +406,3 @@ func (self *httpSmartSubtransportStream) sendRequest() error {
|
||||||
self.sentRequest = true
|
self.sentRequest = true
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// From: https://github.com/golang/go/blob/go1.18/src/net/http/client.go#L418
|
|
||||||
func basicAuth(username, password string) string {
|
|
||||||
auth := username + ":" + password
|
|
||||||
return base64.StdEncoding.EncodeToString([]byte(auth))
|
|
||||||
}
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ type TransportOptions struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// transportOpts maps a unique url to a set of transport options.
|
// transportOpts maps a unique URL to a set of transport options.
|
||||||
transportOpts = make(map[string]TransportOptions, 0)
|
transportOpts = make(map[string]TransportOptions, 0)
|
||||||
m sync.RWMutex
|
m sync.RWMutex
|
||||||
)
|
)
|
||||||
|
|
|
@ -472,8 +472,6 @@ func Test_ManagedHTTPCheckout(t *testing.T) {
|
||||||
g.Expect(err).ToNot(HaveOccurred())
|
g.Expect(err).ToNot(HaveOccurred())
|
||||||
defer server.StopHTTP()
|
defer server.StopHTTP()
|
||||||
|
|
||||||
// Force managed transport to be enabled
|
|
||||||
|
|
||||||
repoPath := "test.git"
|
repoPath := "test.git"
|
||||||
err = server.InitRepo("../testdata/git/repo", git.DefaultBranch, repoPath)
|
err = server.InitRepo("../testdata/git/repo", git.DefaultBranch, repoPath)
|
||||||
g.Expect(err).ToNot(HaveOccurred())
|
g.Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
|
@ -320,10 +320,10 @@ func TestCheckoutStrategyForImplementation_Proxied(t *testing.T) {
|
||||||
defer proxyServer.Close()
|
defer proxyServer.Close()
|
||||||
|
|
||||||
// Set the proxy env vars for both HTTP and HTTPS because go-git caches them.
|
// Set the proxy env vars for both HTTP and HTTPS because go-git caches them.
|
||||||
os.Setenv("HTTPS_PROXY", fmt.Sprintf("http://%s", proxyAddr))
|
os.Setenv("HTTPS_PROXY", fmt.Sprintf("http://smth:else@%s", proxyAddr))
|
||||||
defer os.Unsetenv("HTTPS_PROXY")
|
defer os.Unsetenv("HTTPS_PROXY")
|
||||||
|
|
||||||
os.Setenv("HTTP_PROXY", fmt.Sprintf("http://%s", proxyAddr))
|
os.Setenv("HTTP_PROXY", fmt.Sprintf("http://smth:else@%s", proxyAddr))
|
||||||
defer os.Unsetenv("HTTP_PROXY")
|
defer os.Unsetenv("HTTP_PROXY")
|
||||||
|
|
||||||
os.Setenv("NO_PROXY", "*.0.2.1")
|
os.Setenv("NO_PROXY", "*.0.2.1")
|
||||||
|
|
Loading…
Reference in New Issue