add mws dialer

This commit is contained in:
ginuerzh
2021-12-17 14:05:59 +08:00
parent bfe5eae172
commit 8e31e532e4
23 changed files with 795 additions and 137 deletions

View File

@ -57,7 +57,11 @@ func (c *httpConnector) Connect(ctx context.Context, conn net.Conn, network, add
Host: address,
ProtoMajor: 1,
ProtoMinor: 1,
Header: make(http.Header),
Header: c.md.header,
}
if req.Header == nil {
req.Header = http.Header{}
}
req.Header.Set("Proxy-Connection", "keep-alive")
@ -68,10 +72,6 @@ func (c *httpConnector) Connect(ctx context.Context, conn net.Conn, network, add
"Basic "+base64.StdEncoding.EncodeToString([]byte(u+":"+p)))
}
for k, v := range c.md.headers {
req.Header.Set(k, v)
}
switch network {
case "tcp", "tcp4", "tcp6":
if _, ok := conn.(net.PacketConn); ok {

View File

@ -2,6 +2,7 @@ package http
import (
"fmt"
"net/http"
"net/url"
"strings"
"time"
@ -12,14 +13,14 @@ import (
type metadata struct {
connectTimeout time.Duration
User *url.Userinfo
headers map[string]string
header http.Header
}
func (c *httpConnector) parseMetadata(md md.Metadata) (err error) {
const (
connectTimeout = "timeout"
user = "user"
headers = "headers"
header = "header"
)
c.md.connectTimeout = md.GetDuration(connectTimeout)
@ -33,12 +34,12 @@ func (c *httpConnector) parseMetadata(md md.Metadata) (err error) {
}
}
if mm, _ := md.Get(headers).(map[interface{}]interface{}); len(mm) > 0 {
m := make(map[string]string)
if mm, _ := md.Get(header).(map[interface{}]interface{}); len(mm) > 0 {
h := http.Header{}
for k, v := range mm {
m[fmt.Sprintf("%v", k)] = fmt.Sprintf("%v", v)
h.Add(fmt.Sprintf("%v", k), fmt.Sprintf("%v", v))
}
c.md.headers = m
c.md.header = h
}
return