MCPcopy
hub / github.com/gdy666/lucky / NewTransport

Function NewTransport

thirdlib/gdylib/httputils/common.go:119–272  ·  view source on GitHub ↗

NewTransport transportNetwork 网络类型 tcp tcp4 tcp6 localAddr 指定网卡出口

(transportNetwork,
	localAddrStr string,
	secureSkipVerify bool,
	proxyType,
	proxyUrl,
	user,
	passwd string)

Source from the content-addressed store, hash-verified

117// transportNetwork 网络类型 tcp tcp4 tcp6
118// localAddr 指定网卡出口
119func NewTransport(transportNetwork,
120 localAddrStr string,
121 secureSkipVerify bool,
122 proxyType,
123 proxyUrl,
124 user,
125 passwd string) (*http.Transport, error) {
126 var transport *http.Transport
127 proxyType = strings.ToLower(proxyType)
128 ti := transportIt{
129 Network: transportNetwork,
130 LocalAddr: localAddrStr,
131 ProxyType: proxyType,
132 ProxyUrl: proxyUrl,
133 User: user,
134 Passwd: passwd,
135 SecureSkipVerify: secureSkipVerify}
136
137 globalTransportMapMutex.Lock()
138 defer globalTransportMapMutex.Unlock()
139
140 tr, ok := globalTransportMap[ti.String()]
141 if ok {
142 //log.Printf("map[%s]已存在", ti.String())
143 return tr, nil
144 }
145 //log.Printf("map[%s]未存在", ti.String())
146
147 switch proxyType {
148 case "http", "https":
149 {
150 //log.Printf("http proxy Transport network:%s", transportNetwork)
151 if !strings.Contains(proxyUrl, "http") {
152 proxyUrl = fmt.Sprintf("%s://%s", proxyType, proxyUrl)
153 }
154 urlProxy, err := url.Parse(proxyUrl)
155 if err != nil {
156 return nil, fmt.Errorf("NewTransport=>proxy url.Parse error:%s", err.Error())
157 }
158
159 if user != "" && passwd != "" {
160 urlProxy.User = url.UserPassword(user, passwd)
161 }
162
163 var localAddr net.Addr
164 localAddr = nil
165
166 if localAddrStr != "" {
167 lAddr, err := net.ResolveTCPAddr(transportNetwork, localAddrStr+":0")
168 if err != nil {
169 return nil, fmt.Errorf("NewTransport=> ResolveTCPAddr localAddr:%s error:%s", localAddrStr, err.Error())
170 }
171 localAddr = lAddr
172 }
173
174 dialer := (&net.Dialer{
175 Timeout: 30 * time.Second,
176 KeepAlive: 30 * time.Second,

Callers 1

CreateHttpClientFunction · 0.85

Calls 2

StringMethod · 0.95
ContainsMethod · 0.45

Tested by

no test coverage detected