[package] name = "quicproquo-server" version = "0.1.0" edition.workspace = true description = "Delivery Service and Authentication Service for quicproquo." license = "AGPL-3.0-only" repository.workspace = true [features] traffic-resistance = [] webtransport = ["dep:h3", "dep:h3-quinn", "dep:h3-webtransport", "dep:http"] [[bin]] name = "qpq-server" path = "src/main.rs" [dependencies] quicproquo-core = { path = "../quicproquo-core" } quicproquo-proto = { path = "../quicproquo-proto" } quicproquo-plugin-api = { path = "../quicproquo-plugin-api" } quicproquo-kt = { path = "../quicproquo-kt" } quicproquo-rpc = { path = "../quicproquo-rpc" } # Dynamic plugin loading libloading = "0.8" # Serialisation + RPC capnp = { workspace = true } capnp-rpc = { workspace = true } prost = { workspace = true } bytes = { workspace = true } # Async tokio = { workspace = true } tokio-util = { workspace = true } futures = { workspace = true } # Server utilities dashmap = { workspace = true } hex = { workspace = true } sha2 = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } quinn = { workspace = true } quinn-proto = { workspace = true } rustls = { workspace = true } rcgen = { workspace = true } x509-parser = { workspace = true } # Crypto — OPAQUE PAKE opaque-ke = { workspace = true } rand = { workspace = true } subtle = { workspace = true } zeroize = { workspace = true } # Database rusqlite = { workspace = true } # Error handling anyhow = { workspace = true } thiserror = { workspace = true } bincode = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } # CLI clap = { workspace = true } toml = { version = "0.8" } # WebSocket JSON-RPC bridge for browser clients tokio-tungstenite = "0.26" base64 = "0.22" # Metrics (Prometheus) metrics = "0.22" metrics-exporter-prometheus = "0.15" # mDNS service announcement for local mesh / Freifunk node discovery. mdns-sd = "0.12" # WebTransport (HTTP/3) — feature-gated, for browser clients. h3 = { version = "0.0.8", optional = true } h3-quinn = { version = "0.0.10", features = ["datagram"], optional = true } h3-webtransport = { version = "0.1", optional = true } http = { version = "1", optional = true } [lints] workspace = true [dev-dependencies] tempfile = "3"