Signed-off-by: arraykeys@gmail.com <arraykeys@gmail.com>

This commit is contained in:
arraykeys@gmail.com
2017-10-26 17:13:02 +08:00
parent b02d75eb3a
commit abc7a4fa42
4 changed files with 28 additions and 14 deletions

View File

@ -239,11 +239,11 @@ func (s *HTTP) OutToTCP(useProxy bool, address string, inConn *net.Conn, req *ut
}
utils.IoBind((*inConn), outConn, func(err error) {
log.Printf("conn %s - %s - %s - %s released [%s]", inAddr, inLocalAddr, outLocalAddr, outAddr, req.Host)
log.Printf("conn %s - %s released [%s]", inAddr, outAddr, req.Host)
utils.CloseConn(inConn)
utils.CloseConn(&outConn)
})
log.Printf("conn %s - %s - %s - %s connected [%s]", inAddr, inLocalAddr, outLocalAddr, outAddr, req.Host)
log.Printf("conn %s - %s connected [%s]", inAddr, outAddr, req.Host)
return
}

View File

@ -431,11 +431,11 @@ func (s *Socks) proxyTCP(inConn *net.Conn, methodReq socks.MethodsRequest, reque
request.TCPReply(socks.REP_SUCCESS)
inAddr := (*inConn).RemoteAddr().String()
inLocalAddr := (*inConn).LocalAddr().String()
//inLocalAddr := (*inConn).LocalAddr().String()
log.Printf("conn %s - %s connected [%s]", inAddr, inLocalAddr, request.Addr())
log.Printf("conn %s - %s connected", inAddr, request.Addr())
utils.IoBind(*inConn, outConn, func(err error) {
log.Printf("conn %s - %s released [%s]", inAddr, inLocalAddr, request.Addr())
log.Printf("conn %s - %s released", inAddr, request.Addr())
utils.CloseConn(inConn)
utils.CloseConn(&outConn)
})

View File

@ -102,15 +102,15 @@ func (s *TCP) OutToTCP(inConn *net.Conn) (err error) {
return
}
inAddr := (*inConn).RemoteAddr().String()
inLocalAddr := (*inConn).LocalAddr().String()
//inLocalAddr := (*inConn).LocalAddr().String()
outAddr := outConn.RemoteAddr().String()
outLocalAddr := outConn.LocalAddr().String()
//outLocalAddr := outConn.LocalAddr().String()
utils.IoBind((*inConn), outConn, func(err error) {
log.Printf("conn %s - %s - %s - %s released", inAddr, inLocalAddr, outLocalAddr, outAddr)
log.Printf("conn %s - %s released", inAddr, outAddr)
utils.CloseConn(inConn)
utils.CloseConn(&outConn)
})
log.Printf("conn %s - %s - %s - %s connected", inAddr, inLocalAddr, outLocalAddr, outAddr)
log.Printf("conn %s - %s connected", inAddr, outAddr)
return
}
func (s *TCP) OutToUDP(inConn *net.Conn) (err error) {

View File

@ -38,8 +38,8 @@ func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(err error)) {
log.Printf("IoBind crashed , err : %s , \ntrace:%s", e, string(debug.Stack()))
}
}()
_, e := io.Copy(dst, src)
e := ioCopy(dst, src)
//_, e := io.Copy(dst, src)
e1 <- e
}()
go func() {
@ -48,8 +48,8 @@ func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(err error)) {
log.Printf("IoBind crashed , err : %s , \ntrace:%s", e, string(debug.Stack()))
}
}()
_, e := io.Copy(src, dst)
//_, e := io.Copy(src, dst)
e := ioCopy(src, dst)
e2 <- e
}()
var err error
@ -62,7 +62,21 @@ func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(err error)) {
fn(err)
}()
}
func ioCopy(dst io.ReadWriter, src io.ReadWriter) (err error) {
buf := make([]byte, 32*1024)
n := 0
for {
n, err = src.Read(buf)
if n > 0 {
if _, e := dst.Write(buf[0:n]); e != nil {
return e
}
}
if err != nil {
return
}
}
}
func TlsConnectHost(host string, timeout int, certBytes, keyBytes []byte) (conn tls.Conn, err error) {
h := strings.Split(host, ":")
port, _ := strconv.Atoi(h[1])