tokio-multi-proxy

Crates.iotokio-multi-proxy
lib.rstokio-multi-proxy
version0.1.2
created_at2025-06-14 01:40:58.131374+00
updated_at2025-06-14 02:10:56.519957+00
descriptionA modular async proxy with TLS/mTLS and multiple transport support
homepagehttps://github.com/ahmed-masud/tokio-multi-proxy
repositoryhttps://github.com/ahmed-masud/tokio-multi-proxy
max_upload_size
id1712027
size40,865
Ahmed Masud (ahmed-masud)

documentation

https://docs.rs/tokio-multi-proxy

README

tokio-multi-proxy

Crates.io Docs.rs CI

An async, modular proxy with support for TCP, UDP, Unix sockets, TLS, and mutual TLS. Built on Tokio and Rustls.


✨ Features

  • 🔌 Raw TCP passthrough
  • 🌊 UDP datagram proxying
  • 🧱 Unix Domain Socket bridging
  • 🔐 TLS termination
  • 🔐 Mutual TLS (mTLS) authentication
  • ⚙️ Compile-time feature flags to minimize dependencies

📦 Install

Add to your Cargo.toml:

tokio-multi-proxy = { version = "0.1.0", features = ["tls", "mtls"] }

Or if using only TCP passthrough (no TLS):

tokio-multi-proxy = "0.1.0"

🚀 Examples

Run examples with:

cargo run --example tcp           # plain TCP
cargo run --example udp           # UDP
cargo run --example unix          # Unix socket
cargo run --example tls --features tls         # TLS
cargo run --example mtls --features mtls       # mTLS

🔧 Usage

TCP

tokio_multi_proxy::start_tcp("0.0.0.0:8080", "127.0.0.1:9000").await?;

TLS

tokio_multi_proxy::start_tls_tcp("0.0.0.0:443", "127.0.0.1:8080", "cert.pem", "key.pem").await?;

mTLS

tokio_multi_proxy::start_mtls_tcp("0.0.0.0:443", "127.0.0.1:8080", "cert.pem", "key.pem", "ca.pem").await?;

🛠 Features

Feature Description
passthrough Raw TCP proxying (default)
tls TLS termination support
mtls Mutual TLS (requires tls)

Enable with:

cargo build --features tls

🔐 Dev Certificate (for local testing)

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout examples/key.pem -out examples/cert.pem \
  -subj "/CN=localhost"

# Optional mTLS CA
cp examples/cert.pem examples/ca.pem

📚 Documentation


🪪 License

Licensed under either of:

  • MIT
  • Apache-2.0

👤 Author

Ahmed Masudsaf.ai
MIT/Apache dual-license. Contributions welcome!

Commit count: 14

cargo fmt