Expand description
§FerroTunnel
A production-ready, secure reverse tunnel system in Rust.
FerroTunnel is the first embeddable Rust reverse tunnel, allowing you to
integrate tunneling directly into your applications with a simple builder API.
§Features
- 🔒 Secure - Token-based authentication
- ⚡ Fast - Built on Tokio for high-performance async I/O
- 🔌 Embeddable - Use as a library in your own applications
- 🛡️ Resilient - Automatic reconnection, heartbeat monitoring
§Quick Start: Embedded Client
use ferrotunnel::Client;
#[tokio::main]
async fn main() -> ferrotunnel::Result<()> {
let mut client = Client::builder()
.server_addr("tunnel.example.com:7835")
.token("my-secret-token")
.local_addr("127.0.0.1:8080")
.build()?;
let info = client.start().await?;
println!("Connected! Session: {:?}", info.session_id);
// Keep running until Ctrl+C
tokio::signal::ctrl_c().await?;
client.shutdown().await?;
Ok(())
}§Quick Start: Embedded Server
use ferrotunnel::Server;
#[tokio::main]
async fn main() -> ferrotunnel::Result<()> {
let mut server = Server::builder()
.bind("0.0.0.0:7835".parse().unwrap())
.http_bind("0.0.0.0:8080".parse().unwrap())
.token("my-secret-token")
.build()?;
server.start().await?;
Ok(())
}§Architecture
FerroTunnel consists of several crates:
ferrotunnel- Main library with builder API (this crate)ferrotunnel-common- Shared types, errors, and utilitiesferrotunnel-protocol- Wire protocol definitions and codecferrotunnel-core- Core tunnel implementationferrotunnel-http- HTTP ingress and proxy
§Re-exports
This crate re-exports the most commonly used items from the subcrates for convenience.
Re-exports§
pub use client::Client;pub use client::ClientBuilder;pub use config::ClientConfig;pub use config::ServerConfig;pub use config::TunnelInfo;pub use server::Server;pub use server::ServerBuilder;pub use ferrotunnel_common as common;pub use ferrotunnel_core as core;pub use ferrotunnel_http as http;pub use ferrotunnel_protocol as protocol;
Modules§
- client
- Embeddable tunnel client with builder pattern.
- config
- Configuration types for
FerroTunnelclient and server. - prelude
- Prelude module for convenient imports
- server
- Embeddable tunnel server with builder pattern.
Structs§
- Tunnel
Codec - Tunnel protocol codec using length-delimited framing
Enums§
- Close
Reason - Stream close reasons
- Frame
- Wire protocol frame
- Handshake
Status - Handshake status codes
- Protocol
- Supported protocols
- Register
Status - Registration status codes
- Stream
Status - Stream status codes
- Tunnel
Error - Main error type for
FerroTunneloperations
Type Aliases§
- Result
- Result type alias