Esempio n. 1
0
        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;
        }