[package]
name = "refractium"
version = "3.0.12"
edition = "2024"
authors = ["SirCesarium"]
description = "Extensible low-level reverse proxy for port multiplexing and protocol-based routing"
license = "MIT"
keywords = ["reverse-proxy", "multiplexer", "port-multiplexing", "protocol-routing", "tcp-proxy"]
categories = ["network-programming", "web-programming"]
repository = "https://github.com/sircesarium/refractium"
homepage = "https://github.com/sircesarium/refractium"
documentation = "https://docs.rs/refractium"
readme = "README.md"
[lints.clippy]
all = { level = "deny", priority = -1 }
unwrap_used = "deny"
expect_used = "deny"
absolute_paths = "deny"
[dependencies]
bytes = "1"
memchr = "2.8"
thiserror = "2"
tokio = { version = "1", features = ["net", "io-util", "sync", "time", "signal", "macros", "rt", "rt-multi-thread"] }
tokio-util = { version = "0.7" }
serde = { version = "1.0", features = ["derive"] }
dyn-clone = "1.0"
dashmap = "6.2.1"
rand = "0.10"
heck = "0.5"
anyhow = { version = "1", optional = true }
clap = { version = "4.6", default-features = false, features = ["derive", "std", "help", "usage", "error-context"], optional = true }
colored = { version = "3", optional = true }
toml = { version = "1.1", optional = true }
tracing = { version = "0.1", default-features = false, features = ["std"], optional = true }
tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt", "ansi", "std"], optional = true }
notify = { version = "8.0", default-features = false, features = ["macos_fsevent"], optional = true }
[features]
default = ["cli", "logging", "protocols", "watch"]
full = ["cli", "logging", "protocols", "watch", "hooks"]
cli = [
"dep:anyhow",
"dep:clap",
"dep:colored",
"dep:toml",
"dep:tracing",
"dep:tracing-subscriber",
]
logging = ["dep:tracing", "dep:tracing-subscriber"]
protocols = ["proto-http", "proto-https", "proto-ssh", "proto-dns", "proto-ftp"]
hooks = []
watch = ["dep:notify"]
proto-http = []
proto-https = []
proto-ssh = []
proto-dns = []
proto-ftp = []
[[bin]]
name = "refractium"
path = "src/main.rs"
required-features = ["cli", "logging"]
[dev-dependencies]
criterion = { version = "0.8", default-features = false, features = ["async_tokio", "cargo_bench_support"] }
[[bench]]
name = "protocol_bench"
harness = false
[[test]]
name = "hook_test"
path = "tests/hook_test.rs"
required-features = ["hooks"]
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = "abort"