@@ -101,11 +101,19 @@ class CoderCLIManager @JvmOverloads constructor(
101
101
fun downloadCLI (): Boolean {
102
102
val etag = getBinaryETag()
103
103
val conn = remoteBinaryURL.openConnection() as HttpURLConnection
104
+ if (settings.headerCommand.isNotBlank()){
105
+ // get headers
106
+ val headersFromHeaderCommand = CoderRestClient .getHeaders(deploymentURL,settings.headerCommand)
107
+ for ((key, value) in headersFromHeaderCommand) {
108
+ conn.setRequestProperty(key, value)
109
+ }
110
+ }
104
111
if (etag != null ) {
105
112
logger.info(" Found existing binary at $localBinaryPath ; calculated hash as $etag " )
106
113
conn.setRequestProperty(" If-None-Match" , " \" $etag \" " )
107
114
}
108
115
conn.setRequestProperty(" Accept-Encoding" , " gzip" )
116
+
109
117
if (conn is HttpsURLConnection ) {
110
118
conn.sslSocketFactory = coderSocketFactory(settings)
111
119
conn.hostnameVerifier = CoderHostnameVerifier (settings.tlsAlternateHostname)
@@ -172,13 +180,17 @@ class CoderCLIManager @JvmOverloads constructor(
172
180
*/
173
181
fun login (token : String ): String {
174
182
logger.info(" Storing CLI credentials in $coderConfigPath " )
183
+ logger.info(" Storing CLI credentials in $coderConfigPath " )
184
+
175
185
return exec(
176
186
" login" ,
177
187
deploymentURL.toString(),
178
188
" --token" ,
179
189
token,
180
190
" --global-config" ,
181
191
coderConfigPath.toString(),
192
+ " --header-command" ,
193
+ settings.headerCommand
182
194
)
183
195
}
184
196
@@ -364,6 +376,7 @@ class CoderCLIManager @JvmOverloads constructor(
364
376
private fun exec (vararg args : String ): String {
365
377
val stdout = ProcessExecutor ()
366
378
.command(localBinaryPath.toString(), * args)
379
+ .environment(" CODER_HEADER_COMMAND" ,settings.headerCommand)
367
380
.exitValues(0 )
368
381
.readOutput(true )
369
382
.execute()
0 commit comments