This commit is contained in:
nadoo 2018-11-21 20:28:46 +08:00
parent 266578d67d
commit 2813e80a98
4 changed files with 17 additions and 17 deletions

View File

@ -16,7 +16,8 @@ checkduration=30
dnsserver=208.67.222.222:53
# specify destinations
#include=office.list
include=office.list
domain=example1.com
domain=example2.com
# matches ip

View File

@ -162,8 +162,8 @@ func (s *HTTP) Serve(c net.Conn) {
uri := u.String()
var reqBuf bytes.Buffer
writeFirstLine(method, uri, proto, &reqBuf)
writeHeaders(reqHeader, &reqBuf)
writeFirstLine(&reqBuf, method, uri, proto)
writeHeaders(&reqBuf, reqHeader)
// send request to remote server
rc.Write(reqBuf.Bytes())
@ -194,8 +194,8 @@ func (s *HTTP) Serve(c net.Conn) {
respHeader.Set("Connection", "close")
var respBuf bytes.Buffer
writeFirstLine(proto, code, status, &respBuf)
writeHeaders(respHeader, &respBuf)
writeFirstLine(&respBuf, proto, code, status)
writeHeaders(&respBuf, respHeader)
log.F("[http] %s <-> %s", c.RemoteAddr(), tgt)
c.Write(respBuf.Bytes())
@ -309,7 +309,7 @@ func cleanHeaders(header textproto.MIMEHeader) {
header.Del("Upgrade")
}
func writeFirstLine(s1, s2, s3 string, buf *bytes.Buffer) {
func writeFirstLine(buf *bytes.Buffer, s1, s2, s3 string) {
buf.Write([]byte(s1))
buf.Write([]byte(" "))
buf.Write([]byte(s2))
@ -318,18 +318,15 @@ func writeFirstLine(s1, s2, s3 string, buf *bytes.Buffer) {
buf.Write([]byte("\r\n"))
}
func writeHeaders(header textproto.MIMEHeader, buf *bytes.Buffer) {
func writeHeaders(buf *bytes.Buffer, header textproto.MIMEHeader) {
for key, values := range header {
for _, v := range values {
buf.Write([]byte(key))
buf.Write([]byte(": "))
for k, v := range values {
buf.Write([]byte(v))
if k > 0 {
buf.Write([]byte(" "))
}
}
buf.Write([]byte("\r\n"))
}
}
//header ended
buf.Write([]byte("\r\n"))

View File

@ -75,9 +75,8 @@ func (p *MixedProxy) ListenAndServe(c net.Conn) {
if c == nil {
go p.socks5.ListenAndServeUDP()
l, err := net.Listen("tcp", p.addr)
//l, err := net.Listen("tcp", p.addr)
l, err := net.Listen("tcp", p.addr)
if err != nil {
log.F("[mixed] failed to listen on %s: %v", p.addr, err)
return

View File

@ -207,10 +207,13 @@ func (c *Conn) DecodeRespHeader() error {
}
stream := cipher.NewCFBDecrypter(block, c.respBodyIV[:])
buf := make([]byte, 4)
if _, err := io.ReadFull(c.Conn, buf); err != nil {
_, err = io.ReadFull(c.Conn, buf)
if err != nil {
return err
}
stream.XORKeyStream(buf, buf)
if buf[0] != c.reqRespV {