go_study/fabric-main/integration/nwo/operational_client.go

63 lines
1.5 KiB
Go

/*
Copyright IBM Corp All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package nwo
import (
"crypto/tls"
"crypto/x509"
"io/ioutil"
"net/http"
"path/filepath"
"time"
. "github.com/onsi/gomega"
)
func OrdererOperationalClients(n *Network, o *Orderer) (authClient, unauthClient *http.Client) {
return operationalClients(n, n.OrdererLocalTLSDir(o))
}
func PeerOperationalClients(n *Network, p *Peer) (authClient, unauthClient *http.Client) {
return operationalClients(n, n.PeerLocalTLSDir(p))
}
func operationalClients(n *Network, tlsDir string) (authClient, unauthClient *http.Client) {
fingerprint := "http::" + tlsDir
if d := n.throttleDuration(fingerprint); d > 0 {
time.Sleep(d)
}
clientCert, err := tls.LoadX509KeyPair(
filepath.Join(tlsDir, "server.crt"),
filepath.Join(tlsDir, "server.key"),
)
Expect(err).NotTo(HaveOccurred())
clientCertPool := x509.NewCertPool()
caCert, err := ioutil.ReadFile(filepath.Join(tlsDir, "ca.crt"))
Expect(err).NotTo(HaveOccurred())
clientCertPool.AppendCertsFromPEM(caCert)
authenticatedClient := &http.Client{
Transport: &http.Transport{
MaxIdleConnsPerHost: -1,
TLSClientConfig: &tls.Config{
Certificates: []tls.Certificate{clientCert},
RootCAs: clientCertPool,
},
},
}
unauthenticatedClient := &http.Client{
Transport: &http.Transport{
MaxIdleConnsPerHost: -1,
TLSClientConfig: &tls.Config{RootCAs: clientCertPool},
},
}
return authenticatedClient, unauthenticatedClient
}