Signed-off-by: arraykeys@gmail.com <arraykeys@gmail.com>
This commit is contained in:
@ -239,11 +239,11 @@ func (s *HTTP) OutToTCP(useProxy bool, address string, inConn *net.Conn, req *ut
|
|||||||
}
|
}
|
||||||
|
|
||||||
utils.IoBind((*inConn), outConn, func(err error) {
|
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(inConn)
|
||||||
utils.CloseConn(&outConn)
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@ -431,11 +431,11 @@ func (s *Socks) proxyTCP(inConn *net.Conn, methodReq socks.MethodsRequest, reque
|
|||||||
|
|
||||||
request.TCPReply(socks.REP_SUCCESS)
|
request.TCPReply(socks.REP_SUCCESS)
|
||||||
inAddr := (*inConn).RemoteAddr().String()
|
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) {
|
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(inConn)
|
||||||
utils.CloseConn(&outConn)
|
utils.CloseConn(&outConn)
|
||||||
})
|
})
|
||||||
|
|||||||
@ -102,15 +102,15 @@ func (s *TCP) OutToTCP(inConn *net.Conn) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
inAddr := (*inConn).RemoteAddr().String()
|
inAddr := (*inConn).RemoteAddr().String()
|
||||||
inLocalAddr := (*inConn).LocalAddr().String()
|
//inLocalAddr := (*inConn).LocalAddr().String()
|
||||||
outAddr := outConn.RemoteAddr().String()
|
outAddr := outConn.RemoteAddr().String()
|
||||||
outLocalAddr := outConn.LocalAddr().String()
|
//outLocalAddr := outConn.LocalAddr().String()
|
||||||
utils.IoBind((*inConn), outConn, func(err error) {
|
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(inConn)
|
||||||
utils.CloseConn(&outConn)
|
utils.CloseConn(&outConn)
|
||||||
})
|
})
|
||||||
log.Printf("conn %s - %s - %s - %s connected", inAddr, inLocalAddr, outLocalAddr, outAddr)
|
log.Printf("conn %s - %s connected", inAddr, outAddr)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func (s *TCP) OutToUDP(inConn *net.Conn) (err error) {
|
func (s *TCP) OutToUDP(inConn *net.Conn) (err error) {
|
||||||
|
|||||||
@ -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()))
|
log.Printf("IoBind crashed , err : %s , \ntrace:%s", e, string(debug.Stack()))
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
e := ioCopy(dst, src)
|
||||||
_, e := io.Copy(dst, src)
|
//_, e := io.Copy(dst, src)
|
||||||
e1 <- e
|
e1 <- e
|
||||||
}()
|
}()
|
||||||
go func() {
|
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()))
|
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
|
e2 <- e
|
||||||
}()
|
}()
|
||||||
var err error
|
var err error
|
||||||
@ -62,7 +62,21 @@ func IoBind(dst io.ReadWriter, src io.ReadWriter, fn func(err error)) {
|
|||||||
fn(err)
|
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) {
|
func TlsConnectHost(host string, timeout int, certBytes, keyBytes []byte) (conn tls.Conn, err error) {
|
||||||
h := strings.Split(host, ":")
|
h := strings.Split(host, ":")
|
||||||
port, _ := strconv.Atoi(h[1])
|
port, _ := strconv.Atoi(h[1])
|
||||||
|
|||||||
Reference in New Issue
Block a user