summaryrefslogtreecommitdiffstats
path: root/src/main.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-28 04:53:40 +0100
committertv <tv@krebsco.de>2026-10-28 04:53:40 +0100
commit81515a196b527b79a5d2230a1aeca1ff4769d69d (patch)
tree20899dcbb651a95e03f71722c19b0793a13fb71d /src/main.rs
parent54a8c79840c7b96064ed1677bd39bd6e04dec7ba (diff)
add tor transport
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/main.rs b/src/main.rs
index f2494d8..a95d764 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -53,7 +53,10 @@ async fn main() -> Result<()> {
let args = &config.settings;
// Read before anything starts, so a bad key file fails right away.
- let node_key = identity::NodeKey::load(&args.node_key_file, args.create_node_key)?;
+ let node_key = Arc::new(identity::NodeKey::load(
+ &args.node_key_file,
+ args.create_node_key,
+ )?);
info!(node_id = %node_key.id(), "Node identity");
let swarm_key = match &args.swarm_key_file {
Some(path) => Some(Arc::new(swarm::auth::SwarmKey::from_file(path)?)),
@@ -222,6 +225,22 @@ async fn main() -> Result<()> {
)?),
)
}
+ #[cfg(feature = "tor")]
+ "tor" => {
+ let state_dir = args
+ .tor_state_dir
+ .clone()
+ .context("tor needs tor-state-dir")?;
+ let transport = tokio::select! {
+ transport = transport::tor::TorTransport::start(transport::tor::TorConfig {
+ key: Arc::clone(&node_key),
+ state_dir,
+ port: args.tor_port,
+ }) => transport?,
+ _ = stopped(stop.clone()) => return Ok(()),
+ };
+ ("tor", Arc::new(transport) as Arc<dyn Transport>)
+ }
other => anyhow::bail!("transports: no {other} in this build"),
};
debug!(
@@ -250,7 +269,7 @@ async fn main() -> Result<()> {
let node = node::Node::new(node::NodeConfig {
transport,
identity: Some(transport::identity::IdentityConfig {
- key: Arc::new(node_key),
+ key: Arc::clone(&node_key),
scheme,
more: transports.collect(),
}),