Example #1
0
        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);
            }
        }
Example #2
0
 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);
     }
 }
Example #3
0
 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);
     }
 }
Example #4
0
        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);
            }
        }
Example #5
0
        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));
            }
        }
Example #7
0
        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);
        }
Example #8
0
 public FeeJob(DotNetTor.ControlPort.Client controlPort, HttpClient torHttpClient)
 {
     _controlPortClient = controlPort;
     _torHttpClient     = torHttpClient;
 }