TCP remote forwarding with chain

This commit is contained in:
rui.zheng 2017-08-01 21:43:39 +08:00
parent 88c204899b
commit 46cb9af130
2 changed files with 27 additions and 17 deletions

View File

@ -34,8 +34,8 @@ func main() {
go wsServer() go wsServer()
go wssServer() go wssServer()
go kcpServer() go kcpServer()
// go tcpForwardServer() go tcpForwardServer()
// go rtcpForwardServer() go tcpRemoteForwardServer()
// go rudpForwardServer() // go rudpForwardServer()
// go tcpRedirectServer() // go tcpRedirectServer()
go sshTunnelServer() go sshTunnelServer()
@ -138,10 +138,11 @@ func tcpForwardServer() {
log.Fatal(s.Serve(ln, h)) log.Fatal(s.Serve(ln, h))
} }
func rtcpForwardServer() { func tcpRemoteForwardServer() {
s := &gost.Server{} s := &gost.Server{}
ln, err := gost.TCPRemoteForwardListener( ln, err := gost.TCPRemoteForwardListener(
":1222", ":1222",
/*
gost.NewChain( gost.NewChain(
gost.Node{ gost.Node{
Protocol: "socks5", Protocol: "socks5",
@ -154,13 +155,15 @@ func rtcpForwardServer() {
}, },
}, },
), ),
*/
nil,
) )
if err != nil { if err != nil {
log.Fatal() log.Fatal()
} }
h := gost.TCPRemoteForwardHandler( h := gost.TCPRemoteForwardHandler(
":1222", ":22",
gost.AddrHandlerOption("127.0.0.1:22"), //gost.AddrHandlerOption("127.0.0.1:22"),
) )
log.Fatal(s.Serve(ln, h)) log.Fatal(s.Serve(ln, h))
} }

View File

@ -405,6 +405,7 @@ func (c *udpServerConn) SetWriteDeadline(t time.Time) error {
type tcpRemoteForwardListener struct { type tcpRemoteForwardListener struct {
addr net.Addr addr net.Addr
chain *Chain chain *Chain
ln net.Listener
closed chan struct{} closed chan struct{}
} }
@ -463,7 +464,13 @@ func (l *tcpRemoteForwardListener) accept() (conn net.Conn, err error) {
cc.Close() cc.Close()
} }
} else { } else {
err = errors.New("invalid chain") if l.ln == nil {
l.ln, err = net.Listen("tcp", l.addr.String())
if err != nil {
return
}
}
conn, err = l.ln.Accept()
} }
return return
} }