1 unstable release
0.1.0 | Feb 9, 2024 |
---|
#20 in #trust
175KB
3.5K
SLoC
LibCFD
A port of cloudflared (Cloudflare Tunnel Client) to Rust.
Purpose
LibCFD intends to be lightweight and programmable replacement for cloudflared and its command line wrappers. The main advantage of LibCFD is that we don't have to spawn a whole new process (that uses a garbage collected runtime) to connect to Cloudflare. Thanks to this, we can save on resources by removing the IPC and GC overheads.
Features
The currently supported features are
- Named tunnel (Zero Trust Network Access)
- Quick tunnel (TryCloudflare)
- QUIC tunnel connection
- HTTP tunnel connection (non-priority)
- Proper client information reporting (priority)
- Tunnel reconnection
- HTTP connection (kind of works, but is a footgun)
- HTTP connection wrapper
- Websocket connection (kind of works, but is an even bigger footgun)
- Websocket connection wrapper
- TCP connection (gated by named tunnel)
- Remote management (gated by named tunnel)
To Do
Aside form those already listed above, these two are some to dos I am lookning forward to
- Fix async (some futures are !Send due to capnp, there may be a need to modify capnp)
- Decouple Tokio
Performance
Work in progress. Seems to be able to hit 1gbps at least.
Examples
Http Hello World
Creates a HTTP server that sends simple "hello world" response.
cargo run --example http_hello_world
Http Download
Creates a HTTP server that sends data as fast as possible.
cargo run --example http_download
Http Download
Creates a HTTP server that receives data as fast as possible.
cargo run --example http_upload
Websocket Echo
Creates a WebSocket server that echos all received Websocket messages.
cargo run --example websocket_echo
Dependencies
~19–32MB
~604K SLoC