public void Connect() { this.EnableForm(false); if (Network.IsOpenVPNConnected()) { //connected to vpn, so dissconnect Disconnect(); //Networking.DisableDisconnect = true; Network.ScanNetworkInterfaces(); } else { Logging.SetStatus("Connecting...", Logging.Colors.Yellow); Network.SaveOriginalDnsSettings(); //not connected to vpn, so connect ControlHelpers.StartProcess("taskkill", "/F /IM openvpn-gui.exe"); ControlHelpers.StartProcess("taskkill", "/F /IM openvpn.exe"); Thread.Sleep(5000); CopyOpenVPNAssets(); OpenVPN.SecureConfigs(false); Network.EnableAllNeworkInterfaces(); Networking.DisableDisconnect = true; //wait for vpn to connect Settings settings = Settings.Get(); var openVPN = settings.OpenVPNDirectory + @"\bin\openvpn-gui.exe"; var config = settings.OpenVPNConfig; if (settings.VPNServer.VPNGate) { config = VPNGate.VpnGateConifg; } var openVPNargs = "--connect " + config; ControlHelpers.StartProcess(openVPN, openVPNargs, true, 25); //Thread.Sleep(25000); Network.ScanNetworkInterfaces(); if (Network.IsOpenVPNConnected()) { if (settings.SplitRoute) { Network.SetRoutesAndDNS(); } else { Network.SetAutoDNS(false); } Logging.SetStatus("OpenVPN Connected", Logging.Colors.Green); //ensure dns is flushed ControlHelpers.StartProcess(@"ipconfig.exe", @"/registerdns"); ControlHelpers.StartProcess(@"ipconfig.exe", @"/flushdns"); Network.OpenPrograms(); if (settings.PreventSystemSleep) { SystemUtils.PreventSleep(); } } //Thread.Sleep(60000); //Networking.DisableDisconnect = false; if (!bwFileTransfer.IsBusy) { bwFileTransfer.RunWorkerAsync(); } } this.EnableForm(); PopulateControls(); // Thread.Sleep(10000); Task.Delay(5000).Wait(); //Thread.Sleep(20000); Networking.DisableDisconnect = false; }