Skip to content

Commit a7646da

Browse files
authored
Merge pull request #359 from zaquestion/tls_skip_fix
Set TLS skip verify when getting user
2 parents 2d3c105 + 01e4354 commit a7646da

File tree

2 files changed

+30
-25
lines changed

2 files changed

+30
-25
lines changed

internal/gitlab/gitlab.go

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func Init(_host, _user, _token string, allowInsecure bool) {
7777
lab.SetBaseURL(host + "/api/v4")
7878
}
7979

80-
func InitWithClientCerts(_host, _user, _token, caFile, clientKeyFile, clientCertFile string) error {
80+
func InitWithCustomCA(_host, _user, _token, caFile string) error {
8181
caCert, err := ioutil.ReadFile(caFile)
8282
if err != nil {
8383
return err
@@ -89,11 +89,6 @@ func InitWithClientCerts(_host, _user, _token, caFile, clientKeyFile, clientCert
8989
}
9090
caCertPool.AppendCertsFromPEM(caCert)
9191

92-
cert, err := tls.LoadX509KeyPair(clientCertFile, clientKeyFile)
93-
if err != nil {
94-
return err
95-
}
96-
9792
httpClient := &http.Client{
9893
Transport: &http.Transport{
9994
Proxy: http.ProxyFromEnvironment,
@@ -108,8 +103,7 @@ func InitWithClientCerts(_host, _user, _token, caFile, clientKeyFile, clientCert
108103
TLSHandshakeTimeout: 10 * time.Second,
109104
ExpectContinueTimeout: 1 * time.Second,
110105
TLSClientConfig: &tls.Config{
111-
RootCAs: caCertPool,
112-
Certificates: []tls.Certificate{cert},
106+
RootCAs: caCertPool,
113107
},
114108
},
115109
}

main.go

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package main
22

33
import (
4+
"crypto/tls"
45
"log"
6+
"net/http"
57
"os"
68
"path"
79
"strings"
@@ -52,7 +54,7 @@ func loadConfig() (string, string, string, bool) {
5254
if host != "" && user != "" && token != "" {
5355
return host, user, token, tlsSkipVerify
5456
} else if host != "" && token != "" {
55-
user = getUser(host, token)
57+
user = getUser(host, token, tlsSkipVerify)
5658
return host, user, token, tlsSkipVerify
5759
}
5860

@@ -116,17 +118,25 @@ func loadConfig() (string, string, string, bool) {
116118
if v := viper.GetString("core.token"); v != "" {
117119
cfg["token"] = v
118120
}
121+
if v := viper.GetString("core.user"); v != "" {
122+
cfg["user"] = v
123+
}
119124
if v := viper.Get("tls.skip_verify"); v != nil {
120125
tlsSkipVerify = v.(string) == "true"
121126
}
122127
host = cfg["host"].(string)
123128
token = cfg["token"].(string)
124-
user = getUser(host, token)
129+
if v, ok := cfg["user"]; ok {
130+
user = v.(string)
131+
}
132+
if user == "" {
133+
user = getUser(host, token, tlsSkipVerify)
134+
}
125135
viper.Set("core.user", user)
126136
return host, user, token, tlsSkipVerify
127137
}
128138

129-
func loadTLSCerts() (string, string, string) {
139+
func loadTLSCerts() string {
130140
c := viper.AllSettings()
131141

132142
var tls map[string]interface{}
@@ -140,27 +150,28 @@ func loadTLSCerts() (string, string, string) {
140150
tls = v
141151
}
142152

143-
for _, v := range []string{"ca_file", "cert_file", "key_file"} {
153+
for _, v := range []string{"ca_file"} {
144154
if _, ok := tls[v]; !ok {
145-
return "", "", ""
155+
return ""
146156
}
147157
}
148158

149159
if v := viper.GetString("tls.ca_file"); v != "" {
150160
tls["ca_file"] = v
151161
}
152-
if v := viper.GetString("tls.cert_file"); v != "" {
153-
tls["cert_file"] = v
154-
}
155-
if v := viper.GetString("tls.ca_file"); v != "" {
156-
tls["key_file"] = v
157-
}
158162

159-
return tls["ca_file"].(string), tls["cert_file"].(string), tls["key_file"].(string)
163+
return tls["ca_file"].(string)
160164
}
161165

162-
func getUser(host, token string) string {
163-
lab := gitlab.NewClient(nil, token)
166+
func getUser(host, token string, skipVerify bool) string {
167+
httpClient := &http.Client{
168+
Transport: &http.Transport{
169+
TLSClientConfig: &tls.Config{
170+
InsecureSkipVerify: skipVerify,
171+
},
172+
},
173+
}
174+
lab := gitlab.NewClient(httpClient, token)
164175
lab.SetBaseURL(host + "/api/v4")
165176
u, _, err := lab.Users.CurrentUser()
166177
if err != nil {
@@ -173,11 +184,11 @@ func main() {
173184
log.SetFlags(log.LstdFlags | log.Lshortfile)
174185
cmd.Version = version
175186
if !skipInit() {
176-
ca, cert, key := loadTLSCerts()
187+
ca := loadTLSCerts()
177188
h, u, t, skipVerify := loadConfig()
178189

179-
if ca != "" && cert != "" && key != "" {
180-
lab.InitWithClientCerts(h, u, t, ca, key, cert)
190+
if ca != "" {
191+
lab.InitWithCustomCA(h, u, t, ca)
181192
} else {
182193
lab.Init(h, u, t, skipVerify)
183194
}

0 commit comments

Comments
 (0)