- Add SessionRevocationStore trait with InMemoryRevocationStore and RedisRevocationStore - Wire Redis store when REDIS_URL in config.cache, fallback in-memory - Session revocation by session_id persists across restarts when using Redis Co-authored-by: Cursor <cursoragent@cursor.com>
192 lines
4 KiB
TOML
192 lines
4 KiB
TOML
[package]
|
|
name = "stream_server"
|
|
version = "0.2.0"
|
|
edition = "2021"
|
|
authors = ["Stream Server Team <team@streamserver.com>"]
|
|
description = "High-performance audio streaming server with advanced features"
|
|
license = "MIT"
|
|
repository = "https://github.com/your-org/veza-stream-server"
|
|
default-run = "stream_server"
|
|
|
|
[[bin]]
|
|
name = "stream_server"
|
|
path = "src/main.rs"
|
|
|
|
[[bin]]
|
|
name = "simple_stream_server"
|
|
path = "src/simple_stream_server.rs"
|
|
|
|
[dependencies]
|
|
# Core web framework
|
|
axum = { version = "0.8", features = ["macros", "multipart", "ws"] }
|
|
axum-tungstenite = "0.1"
|
|
# ALIGNED WITH ORIGIN: Tokio 1.35 (was 1.0)
|
|
tokio = { version = "1.35", features = ["full"] }
|
|
tokio-tungstenite = "0.21"
|
|
tower = { version = "0.4", features = ["full"] }
|
|
tower-http = { version = "0.5", features = ["fs", "cors", "compression-gzip", "compression-br", "trace", "timeout"] }
|
|
hyper = { version = "1.0", features = ["full"] }
|
|
|
|
# Production performance & concurrency
|
|
dashmap = "5.5"
|
|
parking_lot = "0.12"
|
|
rayon = "1.10"
|
|
crossbeam = "0.8"
|
|
flume = "0.11"
|
|
|
|
# Serialization
|
|
serde = { version = "1.0", features = ["derive"] }
|
|
serde_json = "1.0"
|
|
toml = "0.8"
|
|
bincode = "1.3"
|
|
|
|
# Async utilities
|
|
futures = "0.3"
|
|
futures-util = "0.3"
|
|
async-channel = "2.1"
|
|
|
|
# Logging and tracing
|
|
tracing = "0.1"
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "chrono"] }
|
|
tracing-appender = "0.2"
|
|
|
|
# Audio processing & codecs
|
|
symphonia = { version = "0.5", features = ["all"] }
|
|
hound = "3.5"
|
|
minimp3 = "0.5"
|
|
rubato = "0.15"
|
|
# opus = "0.3" # Requires cmake
|
|
# lame = "0.1" # May require native dependencies
|
|
# fdkaac = { version = "0.7", optional = true } # Not available on crates.io
|
|
|
|
# Streaming protocols
|
|
# webrtc = "0.7" # Complex native dependencies
|
|
# webrtc-util = "0.7"
|
|
m3u8-rs = "5.0"
|
|
|
|
# FFT and signal processing
|
|
rustfft = "6.2"
|
|
apodize = "1.0"
|
|
dasp = "0.11"
|
|
|
|
# Compression
|
|
brotli = "3.4"
|
|
lz4_flex = "0.11"
|
|
zstd = "0.13"
|
|
|
|
# Database & Cache
|
|
sqlx = { version = "0.7", features = ["runtime-tokio-rustls", "postgres", "chrono", "uuid"] }
|
|
redis = { version = "0.25", features = ["tokio-comp", "connection-manager"] }
|
|
deadpool-redis = "0.15"
|
|
|
|
# Metadata extraction
|
|
id3 = "1.13"
|
|
metaflac = "0.2"
|
|
|
|
# Memory management and optimization
|
|
bytes = "1.5"
|
|
memmap2 = "0.9"
|
|
|
|
# HTTP client
|
|
reqwest = { version = "0.11", features = ["json", "stream"] }
|
|
|
|
# Utilities
|
|
veza-common = { path = "../veza-common" }
|
|
uuid = { version = "1.6", features = ["v4", "serde"] }
|
|
chrono = { version = "0.4", features = ["serde"] }
|
|
thiserror = "1.0"
|
|
anyhow = "1.0"
|
|
async-trait = "0.1"
|
|
|
|
# Cryptography and security
|
|
sha2 = "0.10"
|
|
hmac = "0.12"
|
|
jsonwebtoken = { version = "10", features = ["aws_lc_rs"] }
|
|
bcrypt = "0.15"
|
|
ring = "0.17"
|
|
|
|
# Configuration
|
|
clap = { version = "4.4", features = ["derive"] }
|
|
|
|
# Metrics and monitoring
|
|
prometheus = "0.13"
|
|
metrics-exporter-prometheus = "0.13"
|
|
metrics = "0.22"
|
|
|
|
# File watching
|
|
notify = "6.1"
|
|
|
|
# Rate limiting
|
|
governor = "0.6"
|
|
|
|
# Environment variables
|
|
dotenv = "0.15"
|
|
|
|
# Regex
|
|
regex = "1.10"
|
|
|
|
# Random number generation
|
|
rand = "0.8"
|
|
|
|
# System information
|
|
sysinfo = "0.30"
|
|
num_cpus = "1.0"
|
|
|
|
# LRU Cache
|
|
lru = "0.12"
|
|
|
|
# Process management
|
|
daemonize = "0.5"
|
|
|
|
# Lazy static initialization
|
|
once_cell = "1.19"
|
|
lazy_static = "1.4"
|
|
|
|
# Validation et sécurité
|
|
subtle = "2.4"
|
|
mime_guess = "2.0"
|
|
tokio-util = { version = "0.7", features = ["codec"] }
|
|
headers = "0.4"
|
|
axum-extra = { version = "0.9", features = ["typed-header"] }
|
|
hex = "0.4"
|
|
url = "2.5"
|
|
|
|
# gRPC support
|
|
tonic = { version = "0.11", features = ["transport", "prost"] }
|
|
prost = "0.12"
|
|
prost-types = "0.12"
|
|
tokio-stream = { version = "0.1", features = ["sync"] }
|
|
|
|
# RabbitMQ client (ORIGIN Architecture - Event Bus)
|
|
lapin = "2.3"
|
|
|
|
[build-dependencies]
|
|
tonic-build = "0.11"
|
|
|
|
[dev-dependencies]
|
|
tokio-test = "0.4"
|
|
tempfile = "3.8"
|
|
criterion = "0.5"
|
|
|
|
[[bench]]
|
|
name = "http_range_bench"
|
|
harness = false
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = true
|
|
codegen-units = 1
|
|
panic = "abort"
|
|
strip = true
|
|
|
|
[profile.dev]
|
|
opt-level = 0
|
|
debug = true
|
|
overflow-checks = true
|
|
|
|
[features]
|
|
default = ["tracing"]
|
|
metrics = []
|
|
tracing = ["tracing-subscriber/json"]
|
|
redis = []
|
|
jaeger = []
|