11package main
22
33import (
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