public void SendCommands(string command, SecureString password) { if (string.IsNullOrEmpty(command)) { throw new ArgumentException("Command cannot be null or empty!", nameof(command)); } if (password == null) { throw new ArgumentNullException(nameof(password)); } try { using (var insecurePassword = password.Insecure()) { var controlPortClient = new DotNetTor.ControlPort.Client(controlHost, ControlPort, insecurePassword.Value); var result = controlPortClient.SendCommandAsync(command).GetAwaiter().GetResult(); } } catch (DotNetTor.TorException ex) { console.WriteLine(ex.Message); } }
public FeeService(Network network, DotNetTor.ControlPort.Client torControlPortClient = null, bool disposeTorControl = false, HttpMessageHandler handler = null, bool disposeHandler = false) { TorControlPortClient = torControlPortClient; DisposeTorControl = disposeTorControl; Network = network ?? throw new ArgumentNullException(nameof(network)); if (network == Network.Main) { BlockCypherClient = new BlockCypherClient(Network.Main, handler, disposeHandler); } else { // BlockCypher doesn't support anything else BlockCypherClient = new BlockCypherClient(Network.TestNet, handler, disposeHandler); } }
public FeeService(Network network, DotNetTor.ControlPort.Client torControlPortClient = null, bool disposeTorControl = false, HttpMessageHandler handler = null, bool disposeHandler = false) { TorControlPortClient = torControlPortClient; DisposeTorControl = disposeTorControl; Network = network ?? throw new ArgumentNullException(nameof(network)); Semaphore = new SemaphoreSlim(1, 1); // don't make async requests, linux and mac can fail for no reason if (network == Network.Main) { BlockCypherClient = new BlockCypherClient(Network.Main, handler, disposeHandler); } else { // BlockCypher doesn't support anything else BlockCypherClient = new BlockCypherClient(Network.TestNet, handler, disposeHandler); } }
public void ChangeCircuit(SecureString password) { if (password == null) { throw new ArgumentNullException(nameof(password)); } try { using (var insecurePassword = password.Insecure()) { var controlPortClient = new DotNetTor.ControlPort.Client(controlHost, ControlPort, insecurePassword.Value); controlPortClient.ChangeCircuitAsync().Wait(); } } catch (DotNetTor.TorException ex) { console.WriteLine(ex.Message); } }
public void InitializeConnectSocket(SecureString password) { if (password == null) { throw new ArgumentNullException(nameof(password)); } try { using (var insecurePassword = password.Insecure()) { var controlPortClient = new DotNetTor.ControlPort.Client(controlHost, ControlPort, insecurePassword.Value); controlPortClient.InitializeConnectSocketAsync(new CancellationToken()).Wait(); } } catch (DotNetTor.TorException ex) { console.WriteLine(ex.Message); } }
public TorConnectResult Connect() { var requestUri = "http://icanhazip.com/"; try { _HttpClient = new HttpClient(new SocksPortHandler(Options.TorProxy.Address, socksPort: Options.TorProxy.SocksPort)); var message = _HttpClient.GetAsync(requestUri).Result; this.TorIP = message.Content.ReadAsStringAsync().Result.Trim('\n').Trim('\r'); Logger.LogInformation("Your Tor IP: {0}", this.TorIP); // 3. Change Tor IP var controlPortClient = new DotNetTor.ControlPort.Client(Options.TorProxy.Address, controlPort: Options.TorProxy.ControlPort, password: Options.TorProxy.ControlPassword); controlPortClient.ChangeCircuitAsync().Wait(); // 4. Get changed Tor IP message = _HttpClient.GetAsync(requestUri).Result; this.CurrentTorIP = message.Content.ReadAsStringAsync().Result.Trim('\n').Trim('\r'); Logger.LogInformation("Your other Tor IP: {0}", this.CurrentTorIP); this.Connected = true; this.ConnectionError = string.Empty; return(new TorConnectResult(this.CurrentTorIP, null)); } catch (Exception ex) { this.ConnectionError = ex.Message; if (ex.InnerException != null) { AppendInnerException(ex.InnerException); } Logger.LogError(this.ConnectionError, $"Error while connecting to TOR at {this.Address}:{this.SocksPort}"); return(new TorConnectResult(string.Empty, ex)); } }
public async Task <bool> CircuitEstablished(SecureString password) { if (password == null) { throw new ArgumentNullException(nameof(password)); } bool hasCircuit = false; try { using (var insecurePassword = password.Insecure()) { var controlPortClient = new DotNetTor.ControlPort.Client(controlHost, ControlPort, insecurePassword.Value); hasCircuit = await controlPortClient.IsCircuitEstablishedAsync(); } } catch (DotNetTor.TorException ex) { console.WriteLine(ex.Message); } return(hasCircuit); }
public FeeJob(DotNetTor.ControlPort.Client controlPort, HttpClient torHttpClient) { _controlPortClient = controlPort; _torHttpClient = torHttpClient; }