feat(listener): add stdio listener for SSH ProxyCommand support
The stdio listener wraps os.Stdin/os.Stdout as a net.Listener that accepts exactly one connection. It enables GOST to be used as an SSH ProxyCommand, where the parent process (SSH) pipes the transport byte stream through the child process's standard I/O. Usage: gost -L stdio://example.com:22 -F http://proxy:8080 The URL host:port is treated as the forwarding target and converted to a forward node in buildServiceConfig. The standard forward handler then routes traffic through the configured chain to the destination. Fixes go-gost/gost#433
This commit is contained in:
@@ -466,6 +466,17 @@ func buildServiceConfig(url *url.URL) ([]*config.ServiceConfig, error) {
|
||||
}
|
||||
}
|
||||
|
||||
// stdio listener uses url.Host as the forwarding target.
|
||||
if listener == "stdio" && len(nodes) == 0 && url.Host != "" {
|
||||
nodes = append(nodes, &config.ForwardNodeConfig{
|
||||
Name: fmt.Sprintf("%starget-0", namePrefix),
|
||||
Addr: url.Host,
|
||||
})
|
||||
if handler == "auto" {
|
||||
handler = "tcp"
|
||||
}
|
||||
}
|
||||
|
||||
if len(nodes) > 0 {
|
||||
if len(services) == 1 {
|
||||
services[0].Forwarder = &config.ForwarderConfig{
|
||||
|
||||
Reference in New Issue
Block a user