mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-09-27 03:36:09 +08:00
60 lines
1.3 KiB
Go
60 lines
1.3 KiB
Go
package daemon
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"io"
|
|
"net"
|
|
"net/http"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"golang.org/x/net/http2"
|
|
"golang.org/x/net/http2/h2c"
|
|
)
|
|
|
|
func TestHttpOverUnix(t *testing.T) {
|
|
file := filepath.Join(os.TempDir(), "kubevpn.socks")
|
|
client := http.Client{
|
|
Transport: &http.Transport{
|
|
Proxy: http.ProxyFromEnvironment,
|
|
TLSHandshakeTimeout: 10 * time.Second,
|
|
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", file)
|
|
},
|
|
},
|
|
}
|
|
|
|
go func() {
|
|
listener, err := net.Listen("unix", file)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer listener.Close()
|
|
downgradingServer := &http.Server{}
|
|
defer downgradingServer.Close()
|
|
var h2Server http2.Server
|
|
err = http2.ConfigureServer(downgradingServer, &h2Server)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
downgradingServer.Handler = h2c.NewHandler(http.HandlerFunc(http.DefaultServeMux.ServeHTTP), &h2Server)
|
|
downgradingServer.Serve(listener)
|
|
}()
|
|
|
|
time.Sleep(time.Second * 2)
|
|
|
|
//var resp *http.Response
|
|
resp, err := client.Get("http://test" + "/ws")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
all, _ := io.ReadAll(resp.Body)
|
|
fmt.Println(string(all))
|
|
}
|