server side on target node:
- bpshd daemon listens on a local ipn endpoint with bp_receive
- command payload is forked into actual program invocation
- program output / exit code is relayed back to requestor with bp_send
- multiple commands may run in parallel
client side on user node:
- bpsh: opens a local ipn service / permanently listen on inbound data with bp_receive
- exposes REPL terminal to user (behaves serial: after each command initiated waits for the result and exit from server)
- on key ENTER send current line with bp_send
- inbound data handled analogue to ssh (print data received / re-show prompt on exit signal)
- if no local ipn service is given a ephemeral service id is used
- nice to have: implement shell detection and stdin forwarding for non-TTY invocation, eg:
cat /stream-this-local-file | bpsh -h ipn:1,5 -c "tee /to-this-file-on-remote"
multiple local bpsh instances can be started and be run in parallel against the same server, if all bpsh have a differing service number.
server and client: mark bundles with an order id for bundle ordering on receiver side
config:
- server:
- mandatory: ipn listen endpoint
- optional: whitelist requestor ipn, whitelist commands, bpsec requirement, command timeout, command max output
- client:
- options given as cli arguments
- mandatory: remote ipn
- optional: local ipn, show progress bar based on expected response time
server side on target node:
client side on user node:
cat /stream-this-local-file | bpsh -h ipn:1,5 -c "tee /to-this-file-on-remote"multiple local bpsh instances can be started and be run in parallel against the same server, if all bpsh have a differing service number.
server and client: mark bundles with an order id for bundle ordering on receiver side
config: