added --pty-shell to server

This commit is contained in:
2025-12-24 14:04:11 +09:00
parent 100abf9a09
commit 6912d7ede7
2 changed files with 29 additions and 13 deletions

View File

@@ -1,10 +1,18 @@
## pty and rpty access
## simple rpty access
- ./hodu server --rpc-on=0.0.0.0:9999 --ctl-on=[::1]:8888
- ./hodu server --rpc-on=0.0.0.0:9999 --ctl-on=[::1]:8888 --pty-shell=/bin/bash
- ./hodu client --rpc-to=127.0.0.1:9999 --ctl-on=[::1]:1107 --client-token=test-client --pty-shell=/bin/bash
Access `http://[::1]:8888/_rpty/xterm.html?client-token=test-client` on the server using the web browser.
On the server-side:
- Access `http://[::1]:8888/_rpty/xterm.html?client-token=test-client` using a web browser to access a pty session of a remote client.
- Access `http://[::1]:8888/_pty/xterm.html` using a web browser to access a local pty session.
On the client-side:
- Access `http://[::1]:1107/_pty/xterm.html` using a web browser to access a local pty session.
## port based proxy service
- ./hodu server --rpc-on=0.0.0.0:9999 --ctl-on=0.0.0.0:8888 --pxy-on=0.0.0.0:9998 --wpx-on=0.0.0.0:9997
- ./hodu client --rpc-to=127.0.0.1:9999 --ctl-on=127.0.0.1:1107 "127.0.0.2:22,0.0.0.0:12345,ssh,Access SSH Server"
## port based proxy service
- ./hodu server --rpc-on=0.0.0.0:9999 --ctl-on=0.0.0.0:8888 --pxy-on=0.0.0.0:9998 --wpx-on=0.0.0.0:9997

View File

@@ -376,6 +376,7 @@ func main() {
var cfgfile string
var cfgpat string
var logfile string
var pty_shell string
var cfg ServerConfig
ctl_addrs = make([]string, 0)
@@ -417,6 +418,10 @@ func main() {
cfgpat = v
return nil
})
flgs.Func("pty-shell", "specify the program to execute for pty access", func(v string) error {
pty_shell = v
return nil
})
flgs.SetOutput(io.Discard) // prevent usage output
err = flgs.Parse(os.Args[2:])
if err != nil {
@@ -455,6 +460,9 @@ func main() {
if logfile != "" {
cfg.APP.LogFile = logfile
}
if pty_shell != "" {
cfg.APP.PtyShell = pty_shell
}
err = server_main(ctl_addrs, rpc_addrs, rpx_addrs, pxy_addrs, wpx_addrs, &cfg)
if err != nil {
@@ -495,14 +503,14 @@ func main() {
cfgpat = v
return nil
})
flgs.Func("client-token", "specify a client token", func(v string) error {
client_token = v
return nil
})
flgs.Func("pty-shell", "specify the program to execute for pty access", func(v string) error {
pty_shell = v
return nil
})
flgs.Func("client-token", "specify a client token", func(v string) error {
client_token = v
return nil
})
flgs.SetOutput(io.Discard)
err = flgs.Parse(os.Args[2:])
if err != nil {
@@ -540,12 +548,12 @@ func main() {
cfg.APP.TokenText = client_token
cfg.APP.TokenFile = ""
}
if pty_shell != "" {
cfg.APP.PtyShell = pty_shell
}
if logfile != "" {
cfg.APP.LogFile = logfile
}
if pty_shell != "" {
cfg.APP.PtyShell = pty_shell
}
err = client_main(ctl_addrs, rpc_addrs, flgs.Args(), &cfg)
if err != nil {
@@ -562,8 +570,8 @@ func main() {
os.Exit(0)
wrong_usage:
fmt.Fprintf(os.Stderr, "USAGE: %s server --rpc-on=addr:port --ctl-on=addr:port --rpx-on=addr:port --pxy-on=addr:port --wpx-on=addr:port [--config-file=file] [--config-file-pattern=pattern]\n", os.Args[0])
fmt.Fprintf(os.Stderr, " %s client --rpc-to=addr:port --ctl-on=addr:port [--config-file=file] [--config-file-pattern=pattern] [--client-token=string] [peer-addr:peer-port ...]\n", os.Args[0])
fmt.Fprintf(os.Stderr, "USAGE: %s server --rpc-on=addr:port --ctl-on=addr:port --rpx-on=addr:port --pxy-on=addr:port --wpx-on=addr:port [--config-file=file] [--config-file-pattern=pattern] [--pty-shell=string]\n", os.Args[0])
fmt.Fprintf(os.Stderr, " %s client --rpc-to=addr:port --ctl-on=addr:port [--config-file=file] [--config-file-pattern=pattern] [--pty-shell=string] [--client-token=string] [peer-addr:peer-port ...]\n", os.Args[0])
fmt.Fprintf(os.Stderr, " %s version\n", os.Args[0])
os.Exit(1)