258fa072aa
The discovery module defines the seam: DiscoveryProvider (subscribe/ announce over 32-byte TopicKeys) and a signed Announcement carrying root hash, ed25519 author, metadata and provider addresses. Signatures cover a deterministic postcard encoding including the topic (no cross- channel replay) and the provider identities (addresses stay refreshable hints). LanDiscovery conforms to the trait — mdns sightings become locally-authored announcements, one per pinned root — and the daemon's auto-sync now runs entirely through it: verify, index unconditionally, fetch only for trusted authors from allowlisted providers on already- pinned incomplete roots. The milestone-4 real-mdns sync test passes unchanged through the new path. Verification unit tests cover round trip, tampered root, wrong topic, forged author, mismatched signing key, and serde survival. docs/redoal-integration.md sketches the gesture-topic gossip provider against this contract. Also: fix a flaky hang in the socket-activation test (dup2(3,3) leaves CLOEXEC set when the listener already sits on fd 3; parent's listener copy masked daemon death), and give the test client a read-timeout hang guard. Add a top-level README. Dependencies: ed25519-dalek (Signature type; same implementation iroh keys use), postcard (deterministic signed encoding, iroh's canonical compact codec). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
52 lines
1.6 KiB
TOML
52 lines
1.6 KiB
TOML
[package]
|
|
name = "varde-daemon"
|
|
description = "varde: content-addressed blob mirror daemon on iroh"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
repository.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[[bin]]
|
|
name = "varde-daemon"
|
|
path = "src/main.rs"
|
|
|
|
[dependencies]
|
|
varde-proto = { workspace = true }
|
|
iroh = { workspace = true, features = ["discovery-local-network"] }
|
|
iroh-blobs = { workspace = true }
|
|
rand = "0.8"
|
|
# The next three exist to interoperate with iroh-blobs trait signatures
|
|
# and channels; all are already in the dependency tree via iroh.
|
|
n0-future = "0.1"
|
|
async-channel = "2"
|
|
futures-lite = "2"
|
|
bytes = "1"
|
|
# Feature-gated D-Bus client for NetworkManager metered status.
|
|
zbus = { version = "5", optional = true, default-features = false, features = ["tokio"] }
|
|
# Announcement signatures: same ed25519 implementation iroh keys use,
|
|
# postcard is the deterministic encoding signed over.
|
|
ed25519-dalek = "2"
|
|
postcard = { version = "1", features = ["use-std"] }
|
|
iroh-io = { workspace = true }
|
|
reflink-copy = { workspace = true }
|
|
anyhow = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
tokio = { workspace = true }
|
|
toml = { workspace = true }
|
|
tracing = { workspace = true }
|
|
tracing-subscriber = { workspace = true }
|
|
|
|
[features]
|
|
# Metered-connection detection via NetworkManager over D-Bus. On by
|
|
# default; disable for systems without D-Bus (they run as unmetered).
|
|
default = ["metered"]
|
|
metered = ["dep:zbus"]
|
|
|
|
[dev-dependencies]
|
|
tempfile = "3"
|
|
proptest = "1"
|
|
tokio = { workspace = true, features = ["test-util"] }
|