diff --git a/README.md b/README.md index 1de86d6..eb91da5 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/cmd/main.go b/cmd/main.go index 5a4b59f..d56aea2 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -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)