lxd/util/http.go
func HTTPClient(certificate string, proxy proxyFunc) (*http.Client, error) {
	var err error
	var cert *x509.Certificate

	if certificate != "" {
		certBlock, _ := pem.Decode([]byte(certificate))
		if certBlock == nil {
			return nil, fmt.Errorf("Invalid certificate")
		}

		cert, err = x509.ParseCertificate(certBlock.Bytes)
		if err != nil {
			return nil, err
		}
	}

	tlsConfig, err := shared.GetTLSConfig("", "", "", cert)
	if err != nil {
		return nil, err
	}

	tr := &http.Transport{
		TLSClientConfig:   tlsConfig,
		Dial:              shared.RFC3493Dialer,
		Proxy:             proxy,
		DisableKeepAlives: true,
	}

	myhttp := http.Client{
		Transport: tr,
	}

	// Setup redirect policy
	myhttp.CheckRedirect = func(req *http.Request, via []*http.Request) error {
		// Replicate the headers
		req.Header = via[len(via)-1].Header

		return nil
	}

	return &myhttp, nil
}
func HTTPClient(certificate string, proxy proxyFunc) (*http.Client, error) {
	var err error
	var cert *x509.Certificate

	if certificate != "" {
		certBlock, _ := pem.Decode([]byte(certificate))
		if certBlock == nil {
			return nil, fmt.Errorf("Invalid certificate")
		}

		cert, err = x509.ParseCertificate(certBlock.Bytes)
		if err != nil {
			return nil, err
		}
	}

	tlsConfig, err := shared.GetTLSConfig("", "", "", cert)
	if err != nil {
		return nil, err
	}

	tr := &http.Transport{
		TLSClientConfig:   tlsConfig,
		Dial:              shared.RFC3493Dialer,
		Proxy:             proxy,
		DisableKeepAlives: true,
	}

	myhttp := http.Client{
		Transport: tr,
	}

	// Setup redirect policy
	myhttp.CheckRedirect = func(req *http.Request, via []*http.Request) error {
		// Replicate the headers
		req.Header = via[len(via)-1].Header

		return nil
	}

	return &myhttp, nil
}
func HTTPClient ( certificate string , proxy proxyFunc ) ( * http . Client , error ) { var err error var cert * x509 . Certificate if certificate != " " { certBlock , _ := pem . Decode ( [ ] byte ( certificate ) ) if certBlock == nil { return nil , fmt . Errorf ( " " ) } cert , err = x509 . ParseCertificate ( certBlock . Bytes ) if err != nil { return nil , err } } tlsConfig , err := shared . GetTLSConfig ( " " , " " , " " , cert ) if err != nil { return nil , err } tr := & http . Transport { TLSClientConfig : tlsConfig , Dial : shared . RFC3493Dialer , Proxy : proxy , DisableKeepAlives : true , } myhttp := http . Client { Transport : tr , } // Setup redirect policy myhttp . CheckRedirect = func ( req * http . Request , via [ ] * http . Request ) error { // Replicate the headers req . Header = via [ len ( via ) - 1 ] . Header return nil } return & myhttp , nil }
// HTTPClient returns an http.Client using the given certificate and proxy.
HTTPClient returns an http . Client using the given certificate and proxy .