support http.sslVerify too
This commit is contained in:
parent
f83b028792
commit
7a5bd75937
@ -1,8 +1,10 @@
|
||||
package gitmedia
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"fmt"
|
||||
"github.com/github/git-media/git"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"regexp"
|
||||
@ -10,8 +12,9 @@ import (
|
||||
)
|
||||
|
||||
type Configuration struct {
|
||||
gitConfig map[string]string
|
||||
remotes []string
|
||||
gitConfig map[string]string
|
||||
remotes []string
|
||||
httpClient *http.Client
|
||||
}
|
||||
|
||||
var (
|
||||
@ -19,6 +22,22 @@ var (
|
||||
httpPrefixRe = regexp.MustCompile("\\Ahttps?://")
|
||||
)
|
||||
|
||||
func HttpClient() *http.Client {
|
||||
return Config.HttpClient()
|
||||
}
|
||||
|
||||
func (c *Configuration) HttpClient() *http.Client {
|
||||
if c.httpClient == nil {
|
||||
tr := &http.Transport{}
|
||||
sslVerify, _ := c.GitConfig("http.sslverify")
|
||||
if len(os.Getenv("GIT_SSL_NO_VERIFY")) > 0 || sslVerify == "false" {
|
||||
tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
|
||||
}
|
||||
c.httpClient = &http.Client{Transport: tr}
|
||||
}
|
||||
return c.httpClient
|
||||
}
|
||||
|
||||
func (c *Configuration) Endpoint() string {
|
||||
if url, ok := c.GitConfig("media.url"); ok {
|
||||
return url
|
||||
@ -62,7 +81,7 @@ func (c *Configuration) GitConfig(key string) (string, bool) {
|
||||
if c.gitConfig == nil {
|
||||
c.loadGitConfig()
|
||||
}
|
||||
value, ok := c.gitConfig[key]
|
||||
value, ok := c.gitConfig[strings.ToLower(key)]
|
||||
return value, ok
|
||||
}
|
||||
|
||||
@ -107,7 +126,7 @@ func (c *Configuration) loadGitConfig() {
|
||||
if len(pieces) < 2 {
|
||||
continue
|
||||
}
|
||||
key := pieces[0]
|
||||
key := strings.ToLower(pieces[0])
|
||||
c.gitConfig[key] = pieces[1]
|
||||
|
||||
keyParts := strings.Split(key, ".")
|
||||
|
@ -7,8 +7,8 @@ import (
|
||||
|
||||
func TestEndpointDefaultsToOrigin(t *testing.T) {
|
||||
config := &Configuration{
|
||||
map[string]string{"remote.origin.media": "abc"},
|
||||
[]string{},
|
||||
gitConfig: map[string]string{"remote.origin.media": "abc"},
|
||||
remotes: []string{},
|
||||
}
|
||||
|
||||
assert.Equal(t, "abc", config.Endpoint())
|
||||
@ -16,11 +16,11 @@ func TestEndpointDefaultsToOrigin(t *testing.T) {
|
||||
|
||||
func TestEndpointOverridesOrigin(t *testing.T) {
|
||||
config := &Configuration{
|
||||
map[string]string{
|
||||
gitConfig: map[string]string{
|
||||
"media.url": "abc",
|
||||
"remote.origin.media": "def",
|
||||
},
|
||||
[]string{},
|
||||
remotes: []string{},
|
||||
}
|
||||
|
||||
assert.Equal(t, "abc", config.Endpoint())
|
||||
@ -28,8 +28,8 @@ func TestEndpointOverridesOrigin(t *testing.T) {
|
||||
|
||||
func TestEndpointAddsMediaSuffix(t *testing.T) {
|
||||
config := &Configuration{
|
||||
map[string]string{"remote.origin.url": "https://example.com/foo/bar"},
|
||||
[]string{},
|
||||
gitConfig: map[string]string{"remote.origin.url": "https://example.com/foo/bar"},
|
||||
remotes: []string{},
|
||||
}
|
||||
|
||||
assert.Equal(t, "https://example.com/foo/bar.git/info/media", config.Endpoint())
|
||||
@ -37,8 +37,8 @@ func TestEndpointAddsMediaSuffix(t *testing.T) {
|
||||
|
||||
func TestBareEndpointAddsMediaSuffix(t *testing.T) {
|
||||
config := &Configuration{
|
||||
map[string]string{"remote.origin.url": "https://example.com/foo/bar.git"},
|
||||
[]string{},
|
||||
gitConfig: map[string]string{"remote.origin.url": "https://example.com/foo/bar.git"},
|
||||
remotes: []string{},
|
||||
}
|
||||
|
||||
assert.Equal(t, "https://example.com/foo/bar.git/info/media", config.Endpoint())
|
||||
@ -46,8 +46,8 @@ func TestBareEndpointAddsMediaSuffix(t *testing.T) {
|
||||
|
||||
func TestSSHEndpointAddsMediaSuffix(t *testing.T) {
|
||||
config := &Configuration{
|
||||
map[string]string{"remote.origin.url": "git@example.com:foo/bar"},
|
||||
[]string{},
|
||||
gitConfig: map[string]string{"remote.origin.url": "git@example.com:foo/bar"},
|
||||
remotes: []string{},
|
||||
}
|
||||
|
||||
assert.Equal(t, "https://example.com/foo/bar.git/info/media", config.Endpoint())
|
||||
@ -55,8 +55,8 @@ func TestSSHEndpointAddsMediaSuffix(t *testing.T) {
|
||||
|
||||
func TestBareSSHEndpointAddsMediaSuffix(t *testing.T) {
|
||||
config := &Configuration{
|
||||
map[string]string{"remote.origin.url": "git@example.com:foo/bar.git"},
|
||||
[]string{},
|
||||
gitConfig: map[string]string{"remote.origin.url": "git@example.com:foo/bar.git"},
|
||||
remotes: []string{},
|
||||
}
|
||||
|
||||
assert.Equal(t, "https://example.com/foo/bar.git/info/media", config.Endpoint())
|
||||
@ -64,8 +64,8 @@ func TestBareSSHEndpointAddsMediaSuffix(t *testing.T) {
|
||||
|
||||
func TestHTTPEndpointAddsMediaSuffix(t *testing.T) {
|
||||
config := &Configuration{
|
||||
map[string]string{"remote.origin.url": "http://example.com/foo/bar"},
|
||||
[]string{},
|
||||
gitConfig: map[string]string{"remote.origin.url": "http://example.com/foo/bar"},
|
||||
remotes: []string{},
|
||||
}
|
||||
|
||||
assert.Equal(t, "http://example.com/foo/bar.git/info/media", config.Endpoint())
|
||||
@ -73,8 +73,8 @@ func TestHTTPEndpointAddsMediaSuffix(t *testing.T) {
|
||||
|
||||
func TestBareHTTPEndpointAddsMediaSuffix(t *testing.T) {
|
||||
config := &Configuration{
|
||||
map[string]string{"remote.origin.url": "http://example.com/foo/bar.git"},
|
||||
[]string{},
|
||||
gitConfig: map[string]string{"remote.origin.url": "http://example.com/foo/bar.git"},
|
||||
remotes: []string{},
|
||||
}
|
||||
|
||||
assert.Equal(t, "http://example.com/foo/bar.git/info/media", config.Endpoint())
|
||||
|
@ -1,7 +1,6 @@
|
||||
package gitmediaclient
|
||||
|
||||
import (
|
||||
"crypto/tls"
|
||||
"encoding/base64"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
@ -151,25 +150,8 @@ func validateMediaHeader(contentType string, reader io.Reader) (bool, *gitmedia.
|
||||
return true, nil
|
||||
}
|
||||
|
||||
var httpClient *http.Client
|
||||
|
||||
func getHttpClient() *http.Client {
|
||||
if httpClient == nil {
|
||||
if len(os.Getenv("GIT_SSL_NO_VERIFY")) > 0 {
|
||||
tr := &http.Transport{
|
||||
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
|
||||
}
|
||||
httpClient = &http.Client{Transport: tr}
|
||||
} else {
|
||||
httpClient = http.DefaultClient
|
||||
}
|
||||
}
|
||||
|
||||
return httpClient
|
||||
}
|
||||
|
||||
func doRequest(req *http.Request, creds Creds) (*http.Response, *gitmedia.WrappedError) {
|
||||
res, err := getHttpClient().Do(req)
|
||||
res, err := gitmedia.HttpClient().Do(req)
|
||||
|
||||
var wErr *gitmedia.WrappedError
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user