feat(rustproxy): introduce a Rust-powered proxy engine and workspace with core crates for proxy functionality, ACME/TLS support, passthrough and HTTP proxies, metrics, nftables integration, routing/security, management IPC, tests, and README updates
This commit is contained in:
98
rust/Cargo.toml
Normal file
98
rust/Cargo.toml
Normal file
@@ -0,0 +1,98 @@
|
||||
[workspace]
|
||||
resolver = "2"
|
||||
members = [
|
||||
"crates/rustproxy",
|
||||
"crates/rustproxy-config",
|
||||
"crates/rustproxy-routing",
|
||||
"crates/rustproxy-tls",
|
||||
"crates/rustproxy-passthrough",
|
||||
"crates/rustproxy-http",
|
||||
"crates/rustproxy-nftables",
|
||||
"crates/rustproxy-metrics",
|
||||
"crates/rustproxy-security",
|
||||
]
|
||||
|
||||
[workspace.package]
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
license = "MIT"
|
||||
authors = ["Lossless GmbH <hello@lossless.com>"]
|
||||
|
||||
[workspace.dependencies]
|
||||
# Async runtime
|
||||
tokio = { version = "1", features = ["full"] }
|
||||
|
||||
# Serialization
|
||||
serde = { version = "1", features = ["derive"] }
|
||||
serde_json = "1"
|
||||
|
||||
# HTTP proxy engine (hyper-based)
|
||||
hyper = { version = "1", features = ["http1", "http2", "server", "client"] }
|
||||
hyper-util = { version = "0.1", features = ["tokio", "http1", "http2", "client-legacy", "server-auto"] }
|
||||
http-body-util = "0.1"
|
||||
bytes = "1"
|
||||
|
||||
# ACME / Let's Encrypt
|
||||
instant-acme = { version = "0.7", features = ["hyper-rustls"] }
|
||||
|
||||
# TLS for passthrough SNI
|
||||
rustls = { version = "0.23", features = ["ring"] }
|
||||
tokio-rustls = "0.26"
|
||||
rustls-pemfile = "2"
|
||||
|
||||
# Self-signed cert generation for tests
|
||||
rcgen = "0.13"
|
||||
|
||||
# Temp directories for tests
|
||||
tempfile = "3"
|
||||
|
||||
# Lock-free atomics
|
||||
arc-swap = "1"
|
||||
|
||||
# Concurrent maps
|
||||
dashmap = "6"
|
||||
|
||||
# Domain wildcard matching
|
||||
glob-match = "0.2"
|
||||
|
||||
# IP/CIDR parsing
|
||||
ipnet = "2"
|
||||
|
||||
# JWT authentication
|
||||
jsonwebtoken = "9"
|
||||
|
||||
# Structured logging
|
||||
tracing = "0.1"
|
||||
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
||||
|
||||
# Error handling
|
||||
thiserror = "2"
|
||||
anyhow = "1"
|
||||
|
||||
# CLI
|
||||
clap = { version = "4", features = ["derive"] }
|
||||
|
||||
# Regex for URL rewriting
|
||||
regex = "1"
|
||||
|
||||
# Base64 for basic auth
|
||||
base64 = "0.22"
|
||||
|
||||
# Cancellation / utility
|
||||
tokio-util = "0.7"
|
||||
|
||||
# Async traits
|
||||
async-trait = "0.1"
|
||||
|
||||
# libc for uid checks
|
||||
libc = "0.2"
|
||||
|
||||
# Internal crates
|
||||
rustproxy-config = { path = "crates/rustproxy-config" }
|
||||
rustproxy-routing = { path = "crates/rustproxy-routing" }
|
||||
rustproxy-tls = { path = "crates/rustproxy-tls" }
|
||||
rustproxy-passthrough = { path = "crates/rustproxy-passthrough" }
|
||||
rustproxy-http = { path = "crates/rustproxy-http" }
|
||||
rustproxy-nftables = { path = "crates/rustproxy-nftables" }
|
||||
rustproxy-metrics = { path = "crates/rustproxy-metrics" }
|
||||
rustproxy-security = { path = "crates/rustproxy-security" }
|
||||
Reference in New Issue
Block a user