Skip to content

Commit

Permalink
Feat: rewrite http outbound
Browse files Browse the repository at this point in the history
  • Loading branch information
PuerNya authored and Larvan2 committed May 3, 2023
1 parent d61a5af commit 7ae3e78
Showing 1 changed file with 19 additions and 18 deletions.
37 changes: 19 additions & 18 deletions adapter/outbound/http.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"io"
"net"
"net/http"
"net/url"
"strconv"

"github.com/Dreamacro/clash/component/dialer"
Expand Down Expand Up @@ -98,34 +97,36 @@ func (h *Http) SupportWithDialer() C.NetWork {

func (h *Http) shakeHand(metadata *C.Metadata, rw io.ReadWriter) error {
addr := metadata.RemoteAddress()
req := &http.Request{
Method: http.MethodConnect,
URL: &url.URL{
Host: addr,
},
Host: addr,
Header: http.Header{
"Proxy-Connection": []string{"Keep-Alive"},
},
HeaderString := "CONNECT " + addr + " HTTP/1.1\r\n"
tempHeaders := map[string]string{
"Host": addr,
"User-Agent": "Go-http-client/1.1",
"Proxy-Connection": "Keep-Alive",
}

//增加headers
if len(h.option.Headers) != 0 {
for key, value := range h.option.Headers {
req.Header.Add(key, value)
}
for key, value := range h.option.Headers {
tempHeaders[key] = value
}

if h.user != "" && h.pass != "" {
auth := h.user + ":" + h.pass
req.Header.Add("Proxy-Authorization", "Basic "+base64.StdEncoding.EncodeToString([]byte(auth)))
tempHeaders["Proxy-Authorization"] = "Basic " + base64.StdEncoding.EncodeToString([]byte(auth))
}

for key, value := range tempHeaders {
HeaderString += key + ": " + value + "\r\n"
}

if err := req.Write(rw); err != nil {
HeaderString += "\r\n"

_, err := rw.Write([]byte(HeaderString))

if err != nil {
return err
}

resp, err := http.ReadResponse(bufio.NewReader(rw), req)
resp, err := http.ReadResponse(bufio.NewReader(rw), nil)

if err != nil {
return err
}
Expand Down

0 comments on commit 7ae3e78

Please sign in to comment.