fix SSH port forwarding

This commit is contained in:
rui.zheng 2017-08-15 10:47:14 +08:00
parent 93fa95f27a
commit 71c2ca98eb

View File

@ -296,8 +296,10 @@ func serve(chain *gost.Chain) error {
case "tcp": case "tcp":
ln, err = gost.TCPListener(node.Addr) ln, err = gost.TCPListener(node.Addr)
case "rtcp": case "rtcp":
// Directly use SSH port forwarding if the last chain node is forward+ssh
if chain.LastNode().Protocol == "forward" && chain.LastNode().Transport == "ssh" { if chain.LastNode().Protocol == "forward" && chain.LastNode().Transport == "ssh" {
chain.Nodes()[len(chain.Nodes())-1].Client.Connector = gost.SSHRemoteForwardConnector() chain.Nodes()[len(chain.Nodes())-1].Client.Connector = gost.SSHRemoteForwardConnector()
chain.Nodes()[len(chain.Nodes())-1].Client.Transporter = gost.SSHForwardTransporter()
} }
ln, err = gost.TCPRemoteForwardListener(node.Addr, chain) ln, err = gost.TCPRemoteForwardListener(node.Addr, chain)
case "udp": case "udp":
@ -351,6 +353,11 @@ func serve(chain *gost.Chain) error {
case "http": case "http":
handler = gost.HTTPHandler(handlerOptions...) handler = gost.HTTPHandler(handlerOptions...)
case "tcp": case "tcp":
// Directly use SSH port forwarding if the last chain node is forward+ssh
if chain.LastNode().Protocol == "forward" && chain.LastNode().Transport == "ssh" {
chain.Nodes()[len(chain.Nodes())-1].Client.Connector = gost.SSHDirectForwardConnector()
chain.Nodes()[len(chain.Nodes())-1].Client.Transporter = gost.SSHForwardTransporter()
}
handler = gost.TCPDirectForwardHandler(node.Remote, handlerOptions...) handler = gost.TCPDirectForwardHandler(node.Remote, handlerOptions...)
case "rtcp": case "rtcp":
handler = gost.TCPRemoteForwardHandler(node.Remote, handlerOptions...) handler = gost.TCPRemoteForwardHandler(node.Remote, handlerOptions...)