/// <summary> /// Returns a connected and authenticated a Tor control client for the running Tor process. The caller is /// responsible for disposing of the returned control client. /// </summary> /// <returns>The Tor control client that is already connected and authenticated.</returns> public async Task <TorControlClient> GetControlClientAsync() { var client = new TorControlClient(); await client.ConnectAsync(TorHostName, _settings.TorSettings.ControlPort).ConfigureAwait(false); await client.AuthenticateAsync(_settings.TorSettings.ControlPassword).ConfigureAwait(false); return(client); }
public async Task <string> GetCircuitStatusAsync() { using (var client = new TorControlClient()) { await client.ConnectAsync("localhost", _settings.TorControlPort).ConfigureAwait(false); await client.AuthenticateAsync(_settings.TorControlPassword).ConfigureAwait(false); return(await client.GetInfoAsync("circuit-status")); } }
public async Task GetNewIdentityAsync() { using (var client = new TorControlClient()) { await client.ConnectAsync("localhost", _settings.TorControlPort).ConfigureAwait(false); await client.AuthenticateAsync(_settings.TorControlPassword).ConfigureAwait(false); await client.CleanCircuitsAsync(); } }
public async Task <string> CloseCircuitAsync(string circuitId) { using (var client = new TorControlClient()) { await client.ConnectAsync("localhost", _settings.TorControlPort).ConfigureAwait(false); await client.AuthenticateAsync(_settings.TorControlPassword).ConfigureAwait(false); return(await client.CloseCircuitAsync(circuitId)); } }
public async Task <string> GetNetworkStatusForORAsync(string orName) { using (var client = new TorControlClient()) { await client.ConnectAsync("localhost", _settings.TorControlPort).ConfigureAwait(false); await client.AuthenticateAsync(_settings.TorControlPassword).ConfigureAwait(false); return(await client.GetInfoAsync($"ns/name/{orName}")); } }
public async Task CanDisposeAfterFailedConnect() { TorControlClient client = null; try { client = new TorControlClient(); await client.ConnectAsync("300.0.0.0", 12345); } catch { } finally { client.Dispose(); } }