force dialer to connect the host specified in req.URL.Host not in req.Host!

pull/253/head
Tufan Baris Yildirim 2019-09-18 13:10:53 +03:00
parent d9cf4c769a
commit bd58f3c747
1 changed files with 12 additions and 0 deletions

View File

@ -16,6 +16,7 @@
package utils
import (
"context"
"crypto/tls"
"errors"
"fmt"
@ -24,6 +25,7 @@ import (
"io/ioutil"
"math"
"math/rand"
"net"
"net/http"
"os"
"os/exec"
@ -298,6 +300,11 @@ func HttpRequest(url, method string, content interface{}, headers []string, body
}
var resp *http.Response
dialer := &net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
}
transport := &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: !verifySSL,
@ -307,6 +314,11 @@ func HttpRequest(url, method string, content interface{}, headers []string, body
ResponseHeaderTimeout: timeout,
TLSHandshakeTimeout: timeout,
Proxy: http.ProxyFromEnvironment,
DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
// redirect all connections to host specified in url
addr = req.URL.Host
return dialer.DialContext(ctx, network, addr)
},
}
client := &http.Client{
Transport: transport,