1
1
package main
2
2
3
3
import (
4
+ "crypto/tls"
4
5
"log"
6
+ "net/http"
5
7
"os"
6
8
"path"
7
9
"strings"
@@ -52,7 +54,7 @@ func loadConfig() (string, string, string, bool) {
52
54
if host != "" && user != "" && token != "" {
53
55
return host , user , token , tlsSkipVerify
54
56
} else if host != "" && token != "" {
55
- user = getUser (host , token )
57
+ user = getUser (host , token , tlsSkipVerify )
56
58
return host , user , token , tlsSkipVerify
57
59
}
58
60
@@ -116,17 +118,25 @@ func loadConfig() (string, string, string, bool) {
116
118
if v := viper .GetString ("core.token" ); v != "" {
117
119
cfg ["token" ] = v
118
120
}
121
+ if v := viper .GetString ("core.user" ); v != "" {
122
+ cfg ["user" ] = v
123
+ }
119
124
if v := viper .Get ("tls.skip_verify" ); v != nil {
120
125
tlsSkipVerify = v .(string ) == "true"
121
126
}
122
127
host = cfg ["host" ].(string )
123
128
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
+ }
125
135
viper .Set ("core.user" , user )
126
136
return host , user , token , tlsSkipVerify
127
137
}
128
138
129
- func loadTLSCerts () ( string , string , string ) {
139
+ func loadTLSCerts () string {
130
140
c := viper .AllSettings ()
131
141
132
142
var tls map [string ]interface {}
@@ -140,27 +150,28 @@ func loadTLSCerts() (string, string, string) {
140
150
tls = v
141
151
}
142
152
143
- for _ , v := range []string {"ca_file" , "cert_file" , "key_file" } {
153
+ for _ , v := range []string {"ca_file" } {
144
154
if _ , ok := tls [v ]; ! ok {
145
- return "" , "" , ""
155
+ return ""
146
156
}
147
157
}
148
158
149
159
if v := viper .GetString ("tls.ca_file" ); v != "" {
150
160
tls ["ca_file" ] = v
151
161
}
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
- }
158
162
159
- return tls ["ca_file" ].(string ), tls [ "cert_file" ].( string ), tls [ "key_file" ].( string )
163
+ return tls ["ca_file" ].(string )
160
164
}
161
165
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 )
164
175
lab .SetBaseURL (host + "/api/v4" )
165
176
u , _ , err := lab .Users .CurrentUser ()
166
177
if err != nil {
@@ -173,11 +184,11 @@ func main() {
173
184
log .SetFlags (log .LstdFlags | log .Lshortfile )
174
185
cmd .Version = version
175
186
if ! skipInit () {
176
- ca , cert , key := loadTLSCerts ()
187
+ ca := loadTLSCerts ()
177
188
h , u , t , skipVerify := loadConfig ()
178
189
179
- if ca != "" && cert != "" && key != "" {
180
- lab .InitWithClientCerts (h , u , t , ca , key , cert )
190
+ if ca != "" {
191
+ lab .InitWithCustomCA (h , u , t , ca )
181
192
} else {
182
193
lab .Init (h , u , t , skipVerify )
183
194
}
0 commit comments