pub async fn configure_tor(
controller: &mut Controller,
state: &VanguardState,
config: &Config,
) -> Result<()>Expand description
Configures Tor with the current vanguard settings.
Sets Tor configuration options to enforce the vanguard guard layers. This function is called after vanguard state is updated to apply the new guard sets to Tor.
§Configuration Options Set
| Option | Description | Condition |
|---|---|---|
NumEntryGuards | Number of layer 1 guards | If > 0 |
NumDirectoryGuards | Number of directory guards | If > 0 |
GuardLifetime | Layer 1 guard lifetime | If > 0 days |
HSLayer2Nodes | Layer 2 guard fingerprints | Always |
HSLayer3Nodes | Layer 3 guard fingerprints | If num_layer3 > 0 |
§Arguments
controller- The Tor controllerstate- The current vanguard state containing guard setsconfig- The vanguards configuration
§Returns
Returns Ok(()) on successful configuration.
§Errors
Returns Error::Control if Tor configuration fails. This typically
indicates an incompatible Tor version (requires 0.3.3.x or newer).
§Tor Version Requirements
HSLayer2Nodes: Requires Tor 0.3.3.0+HSLayer3Nodes: Requires Tor 0.3.3.0+
§Example
use stem_rs::controller::Controller;
use vanguards_rs::vanguards::VanguardState;
use vanguards_rs::config::Config;
use vanguards_rs::control::configure_tor;
let mut controller = Controller::from_port("127.0.0.1:9051".parse().unwrap()).await?;
controller.authenticate(None).await?;
let state = VanguardState::new("/tmp/vanguards.state");
let config = Config::default();
configure_tor(&mut controller, &state, &config).await?;§See Also
VanguardState::layer2_guardset- Get layer 2 fingerprint stringVanguardState::layer3_guardset- Get layer 3 fingerprint string