mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-09-27 03:36:09 +08:00
62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package daemon
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
"net"
|
|
"net/http"
|
|
"strings"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestName(t *testing.T) {
|
|
httpc := http.Client{
|
|
Transport: &http.Transport{
|
|
DialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
|
|
var d net.Dialer
|
|
d.Timeout = 30 * time.Second
|
|
d.KeepAlive = 30 * time.Second
|
|
return d.DialContext(ctx, "unix", GetSockPath(false))
|
|
},
|
|
},
|
|
}
|
|
|
|
resp, err := httpc.Get("http://test" + "/ws")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
//c.Transport = transport // use the unix dialer
|
|
//uri := fmt.Sprintf("http://%s/%s", daemon.GetSockPath(false), "ws")
|
|
//resp, err := c.Get(uri)
|
|
//if err != nil {
|
|
// fmt.Println(err.Error())
|
|
// return
|
|
//}
|
|
all, _ := io.ReadAll(resp.Body)
|
|
fmt.Println(string(all))
|
|
}
|
|
|
|
type unixDialer struct {
|
|
net.Dialer
|
|
}
|
|
|
|
// overriding net.Dialer.Dial to force unix socket connection
|
|
func (d *unixDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {
|
|
parts := strings.Split(address, ":")
|
|
return d.Dialer.Dial("unix", parts[0])
|
|
}
|
|
|
|
// copied from http.DefaultTransport with minimal changes
|
|
var transport http.RoundTripper = &http.Transport{
|
|
Proxy: http.ProxyFromEnvironment,
|
|
DialContext: (&unixDialer{net.Dialer{
|
|
Timeout: 30 * time.Second,
|
|
KeepAlive: 30 * time.Second,
|
|
},
|
|
}).DialContext,
|
|
TLSHandshakeTimeout: 10 * time.Second,
|
|
}
|