- Fixed tests that failed to compile due to mismatched generic parameters of HandshakeResult:
- Changed `HandshakeResult<i32>` to `HandshakeResult<i32, (), ()>`
- Changed `HandshakeResult::BadClient` to `HandshakeResult::BadClient { reader: (), writer: () }`
- Added Zeroize for all structures holding key material:
- AesCbc – key and IV are zeroized on drop
- SecureRandomInner – PRNG output buffer is zeroized on drop; local key copy in constructor is zeroized immediately after being passed to the cipher
- ObfuscationParams – all four key‑material fields are zeroized on drop
- HandshakeSuccess – all four key‑material fields are zeroized on drop
- Added protocol‑requirement documentation for legacy hashes (CodeQL suppression) in hash.rs (MD5/SHA‑1)
- Added documentation for zeroize limitations of AesCtr (opaque cipher state) in aes.rs
- Implemented silent‑mode logging and refactored initialization:
- Added LogLevel enum to config and CLI flags --silent / --log-level
- Added parse_cli() to handle --silent, --log-level, --help
- Restructured main.rs initialization order: CLI → config load → determine log level → init tracing
- Errors before tracing initialization are printed via eprintln!
- Proxy links (tg://) are printed via println! – always visible regardless of log level
- Configuration summary and operational messages are logged via info! (suppressed in silent mode)
- Connection processing errors are lowered to debug! (hidden in silent mode)
- Warning about default tls_domain moved to main (after tracing init)
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
61 lines
1.1 KiB
TOML
61 lines
1.1 KiB
TOML
[package]
|
|
name = "telemt"
|
|
version = "1.1.0"
|
|
edition = "2024"
|
|
rust-version = "1.85"
|
|
|
|
[dependencies]
|
|
# C
|
|
libc = "0.2"
|
|
|
|
# Async runtime
|
|
tokio = { version = "1.42", features = ["full", "tracing"] }
|
|
tokio-util = { version = "0.7", features = ["codec"] }
|
|
|
|
# Crypto
|
|
aes = "0.8"
|
|
ctr = "0.9"
|
|
cbc = "0.1"
|
|
sha2 = "0.10"
|
|
sha1 = "0.10"
|
|
md-5 = "0.10"
|
|
hmac = "0.12"
|
|
crc32fast = "1.4"
|
|
zeroize = { version = "1.8", features = ["derive"] }
|
|
|
|
# Network
|
|
socket2 = { version = "0.5", features = ["all"] }
|
|
|
|
# Serialization
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
toml = "0.8"
|
|
|
|
# Utils
|
|
bytes = "1.9"
|
|
thiserror = "2.0"
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
parking_lot = "0.12"
|
|
dashmap = "5.5"
|
|
lru = "0.12"
|
|
rand = "0.9"
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
hex = "0.4"
|
|
base64 = "0.22"
|
|
url = "2.5"
|
|
regex = "1.11"
|
|
crossbeam-queue = "0.3"
|
|
|
|
# HTTP
|
|
reqwest = { version = "0.12", features = ["rustls-tls"], default-features = false }
|
|
|
|
[dev-dependencies]
|
|
tokio-test = "0.4"
|
|
criterion = "0.5"
|
|
proptest = "1.4"
|
|
futures = "0.3"
|
|
|
|
[[bench]]
|
|
name = "crypto_bench"
|
|
harness = false |