Commit 71c2ca98 authored by rui.zheng's avatar rui.zheng

fix SSH port forwarding

parent 93fa95f2
...@@ -296,8 +296,10 @@ func serve(chain *gost.Chain) error { ...@@ -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 { ...@@ -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...)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment