https://github.com/msantos/tcpexec-rs
tcpexec: a minimal, UCSPI inetd
https://github.com/msantos/tcpexec-rs
daemontools inetd
Last synced: about 1 year ago
JSON representation
tcpexec: a minimal, UCSPI inetd
- Host: GitHub
- URL: https://github.com/msantos/tcpexec-rs
- Owner: msantos
- License: isc
- Created: 2022-01-09T13:54:27.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-12-31T12:20:58.000Z (over 3 years ago)
- Last Synced: 2025-02-13T05:30:13.525Z (over 1 year ago)
- Topics: daemontools, inetd
- Language: Rust
- Homepage:
- Size: 5.86 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SYNOPSIS
tcpexec *IPADDR*:*PORT* *COMMAND* *...*
# DESCRIPTION
[tcpexec](https://github.com/msantos/tcpexec): a minimal,
[UCSPI](https://jdebp.uk/FGA/UCSPI.html) inetd
`tcpexec` attaches the standard input and output of a command to a
TCP socket:
* exec(3): data is not proxied via an intermediary process
* `SO_REUSEPORT`: multiple processes concurrently listen and accept data
on the same port
# EXAMPLES
## echo server
```
$ tcpexec [::1]:9090 env
$ tcpexec [::]:9090 env
$ tcpexec 127.0.0.1:9090 env
$ tcpexec 0.0.0.0:9090 env
```
## Supervised using daemontools
An echo server allowing 3 concurrent connections:
service/
├── echo1
│ └── run
├── echo2
│ └── run
└── echo3
└── run
* service/echo1/run
```
#!/bin/sh
exec tcpexec [::1]:9090 cat
```
* service/echo2/run
```
#!/bin/sh
exec tcpexec [::1]:9090 cat
```
* service/echo3/run
```
#!/bin/sh
exec tcpexec [::1]:9090 cat
```
Then run:
svscan service
# Build
cargo build
# OPTIONS
None
# ENVIRONMENT VARIABLES
PROTO
: protocol, always set to TCP
TCPREMOTEIP
: source IPv4 or IPv6 address
TCPREMOTEPORT
: source port
TCPLOCALIP
: destination IPv4 or IPv6 address
TCPLOCALPORT
: destination port