stdiotunnel
Tunneling via stdin and stdout.
This project is useful for forwarding temporary port via docker exec.
Why not socat?, because socat cannot multiplex multiple connection with single stdio stream
example
create fifo by
mkfifo pipe1
mkfifo pipe2
run server by
./stdiotunnel server tcp::8081 < pipe1 > pipe2
open another terminal, and run client by
./stdiotunnel client tcp:127.0.0.1:8091 > pipe1 < pipe2
every request to :8081 will be forwarded to 127.0.0.1:8091
example forwarding ssh agent socket to container via docker exec
create fifo
mkfifo p1 p2
run client
./stdiotunnel client unix:$SSH_AUTH_SOCK < p1 > p2
open another terminal, and run server
docker exec -i <ctrid> sh -c 'rm -rf /tmp/ssh-agent; exec /stdiotunnel server unix:/tmp/ssh-agent' > p1 < p2
check if ssh agent works
docker exec <ctrid> sh -c 'export SSH_AUTH_SOCK=/tmp/ssh-agent; exec ssh-add -L'
KNOWN BUG
because this project using HTTP/2 protocol for multiplexing the connection, so it's limited to maximal stream available for single connection, see this