diff options
| author | tv <tv@krebsco.de> | 2026-10-28 04:53:40 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-10-28 04:53:40 +0100 |
| commit | 81515a196b527b79a5d2230a1aeca1ff4769d69d (patch) | |
| tree | 20899dcbb651a95e03f71722c19b0793a13fb71d /src/main.rs | |
| parent | 54a8c79840c7b96064ed1677bd39bd6e04dec7ba (diff) | |
add tor transport
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 23 |
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(), }), |
