@@ -12,6 +12,8 @@ import (
12
12
"io/ioutil"
13
13
"log"
14
14
"net"
15
+ "net/http"
16
+ "net/url"
15
17
"os"
16
18
"path/filepath"
17
19
"strings"
@@ -319,8 +321,11 @@ func main() {
319
321
instDir := filepath .Join (tmpDir , "installer" )
320
322
os .MkdirAll (instDir , 0o755 )
321
323
324
+ transport := setupTransportWithProxy ()
325
+ opts := crane .WithTransport (transport )
326
+
322
327
log .Printf ("pulling image %s" , imageFlag )
323
- img , err := crane .Pull (imageFlag )
328
+ img , err := crane .Pull (imageFlag , opts )
324
329
must ("pull image" , err )
325
330
326
331
log .Print ("extracting image layers" )
@@ -460,3 +465,23 @@ func setupLoop(path string) (string, *os.File) {
460
465
}
461
466
return loop , lf
462
467
}
468
+
469
+ /* ---------------- setup transport that respects proxy settings -------------------------------------- */
470
+ func setupTransportWithProxy () * http.Transport {
471
+ transport := http .DefaultTransport .(* http.Transport ).Clone ()
472
+ transport .Proxy = func (req * http.Request ) (* url.URL , error ) {
473
+ proxyURL , err := http .ProxyFromEnvironment (req )
474
+ if err != nil {
475
+ log .Printf ("Warning: error reading proxy settings: %v" , err )
476
+ return nil , nil // Fallback to direct connection on error.
477
+ }
478
+
479
+ if proxyURL != nil {
480
+ log .Printf ("Using proxy: %s" , proxyURL .String ())
481
+ } else {
482
+ log .Printf ("No proxy configured, using direct connection" )
483
+ }
484
+ return proxyURL , nil
485
+ }
486
+ return transport
487
+ }
0 commit comments