예제 #1
0
        public static async Task DeployTorClients(int count)
        {
            var taskWaitingConfigurationEnd = new List <Task>();

            for (var i = 0; i < count; i++)
            {
                var offset = i * 3;
                var extractedToolsDirectory = Path.Combine(Path.GetTempPath(), "Tor", "TorExtracted" + i);
                var settings = new TorSharpSettings
                {
                    ZippedToolsDirectory    = Path.Combine(Path.GetTempPath(), "Tor", "TorZipped"),
                    ExtractedToolsDirectory = extractedToolsDirectory,
                    PrivoxyPort             = 1337 + offset,
                    TorSocksPort            = 1338 + offset,
                    TorControlPort          = 1339 + offset,
                    TorControlPassword      = "******" + i,
                    TorDataDirectory        = Path.Combine(extractedToolsDirectory, "DataDirectory")
                };
                var torSharpProxy = new TorSharpProxy(settings);
                await torSharpProxy.ConfigureAndStartAsync();

                ProxyList.Add($"http://localhost:{settings.PrivoxyPort}");
                taskWaitingConfigurationEnd.Add(torSharpProxy.WaitForConnectionAsync());
            }
            Task.WaitAll(taskWaitingConfigurationEnd.ToArray());
        }