mirror of
https://github.com/zap-proto/zapd.git
synced 2026-10-30 15:06:58 +00:00
cargo publish refused v1.1.8: the KMS helper it downloaded sat in the working tree as an uncommitted file. Claude-Session: https://claude.ai/code/session_01M8RoubcPN71KgJuZ8LdBUL
64 lines
2.1 KiB
TOML
64 lines
2.1 KiB
TOML
[workspace]
|
|
members = [".", "python"]
|
|
|
|
[package]
|
|
name = "zapd"
|
|
version = "1.1.9"
|
|
edition = "2021"
|
|
rust-version = "1.81"
|
|
description = "The ZAP router — embedded in every ZAP process; one per user login, elected by lock"
|
|
license = "MIT OR Apache-2.0"
|
|
repository = "https://github.com/zap-proto/zapd"
|
|
keywords = ["zap", "zapd", "router", "broker", "rpc"]
|
|
categories = ["network-programming"]
|
|
|
|
# The router is a library: every process that speaks ZAP embeds it and the
|
|
# lock elects one of them. The `zapd` binary is the operator's tool — `pair`
|
|
# and `ls` — and never serves.
|
|
[lib]
|
|
path = "src/lib.rs"
|
|
|
|
[[bin]]
|
|
name = "zapd"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
# The router is schema-agnostic: it never parses a payload, so it depends on NO
|
|
# ZAP schema crate and no capnp. It moves opaque ZAP frames on tokio alone.
|
|
tokio = { version = "1", features = ["rt-multi-thread", "net", "io-util", "sync", "time", "macros"] }
|
|
tracing = "0.1"
|
|
directories = "5"
|
|
# The browser door: a loopback WebSocket, because a browser extension can open
|
|
# nothing else. Handshake only — no TLS, no client connector in the router.
|
|
tokio-tungstenite = { version = "0.30", default-features = false, features = ["handshake"] }
|
|
futures-util = { version = "0.3", default-features = false, features = ["sink", "std"] }
|
|
# Pairing: HMAC-SHA256 challenge-response over a 32-byte token; the token
|
|
# never crosses the wire.
|
|
hmac = "0.13"
|
|
sha2 = "0.11"
|
|
getrandom = "0.4"
|
|
|
|
# Unix: the fcntl(2) record lock (the election), getuid(2) and gethostname(2).
|
|
[target.'cfg(unix)'.dependencies]
|
|
libc = "0.2"
|
|
|
|
# Windows: LockFileEx (the election), the pipe's server pid, SIDs and DACLs.
|
|
[target.'cfg(windows)'.dependencies]
|
|
windows-sys = { version = "0.61", features = [
|
|
"Win32_Foundation",
|
|
"Win32_Security",
|
|
"Win32_Security_Authorization",
|
|
"Win32_Storage_FileSystem",
|
|
"Win32_System_IO",
|
|
"Win32_System_Pipes",
|
|
"Win32_System_Threading",
|
|
] }
|
|
|
|
[dev-dependencies]
|
|
tokio = { version = "1", features = ["rt-multi-thread", "macros", "time", "net", "io-util"] }
|
|
|
|
[profile.release]
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|