示例#1
0
 public void OpenPrograms()
 {
     if (this.IsOpenVPNConnected())
     {
         var openPrograms = Apps.Get().FindAll(x => x.Launch);
         foreach (var program in openPrograms)
         {
             ControlHelpers.StartProcess(program.Program, "", false);
         }
     }
 }
示例#2
0
        public static void SetTorProxyForChrome()
        {
            Settings settings = Settings.Get();

            if (settings.EnableTorProxyForChrome)
            {
                //chrome.exe --proxy-server="socks5://localhost:9050" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost"
                ControlHelpers.StartProcess(Settings.ChromeExe, "--proxy-server=\"socks5://localhost:9150\" --host-resolver-rules=\"MAP * 0.0.0.0 , EXCLUDE localhost\"");
                _log.Log("Set Chrome Tor Proxy");
            }
        }
示例#3
0
        public void ClosePrograms()
        {
            var closePrograms = Apps.Get().FindAll(x => x.Close);

            foreach (var program in closePrograms)
            {
                var name = Path.GetFileName(program.Program);
                ControlHelpers.StartProcess("taskkill", "/F /IM " + name);
            }

            //await ControlHelpers.Sleep(10000);
        }
示例#4
0
        public void SetRoutesAndDNS()
        {
            Settings settings       = Settings.Get();
            string   primaryDnsIp   = settings.PrimaryDNS;
            string   secondaryDnsIp = settings.SecondaryDNS;
            bool     setDns         = false;

            foreach (var adapter in ActiveNetworkAdapters)
            {
                setDns = false;
                if (Networking.IsVPNAdapter(adapter))
                {
                    continue;
                }

                //change Dns for added security
                string name = adapter.Name;

                if (!string.IsNullOrWhiteSpace(primaryDnsIp) && primaryDnsIp != "0.0.0.0" &&
                    NetworkAdapter.OpenVpnAdapter != null && NetworkAdapter.OpenVpnAdapter.PrimaryDns != adapter.PrimaryDns)
                {
                    string primaryDns = string.Format("interface IPv4 set dnsserver \"{0}\" static {1} both", name, primaryDnsIp);
                    ControlHelpers.StartProcess(@"netsh", primaryDns);
                    setDns = true;
                }
                if (!string.IsNullOrWhiteSpace(secondaryDnsIp) && secondaryDnsIp != "0.0.0.0" &&
                    NetworkAdapter.OpenVpnAdapter != null && NetworkAdapter.OpenVpnAdapter.SecondaryDns != adapter.SecondaryDns)
                {
                    string secondaryDns = string.Format("interface ipv4 add dnsserver \"{0}\" address={1} index=2", name, secondaryDnsIp);
                    ControlHelpers.StartProcess(@"netsh", secondaryDns);
                    setDns = true;
                }


                if (setDns)
                {
                    ControlHelpers.StartProcess("route", "add 0.0.0.0 mask 192.0.0.0 " + adapter.GatewayIP);
                    ControlHelpers.StartProcess("route", "add 64.0.0.0 mask 192.0.0.0 " + adapter.GatewayIP);
                    ControlHelpers.StartProcess("route", "add 128.0.0.0 mask 192.0.0.0 " + adapter.GatewayIP);
                    ControlHelpers.StartProcess("route", "add 192.0.0.0 mask 192.0.0.0 " + adapter.GatewayIP);
                    _log.Log("Set DNS on {0} to {1}, {2}", name, primaryDnsIp, secondaryDnsIp);
                }
            }
            //if (setDns)
            //{

            //    //ControlHelpers.StartProcess(@"ipconfig.exe", @"/flushdns");
            //    //ControlHelpers.StartProcess(@"ipconfig.exe", @"/registerdns");
            //}

            ControlHelpers.StartProcess(@"ipconfig.exe", @"/flushdns");
            ControlHelpers.StartProcess(@"ipconfig.exe", @"/registerdns");
        }
示例#5
0
        public void ResetNetworkInterfaces()
        {
            Settings settings = Settings.Get();

            if (!settings.DontResetDNS || !settings.SplitRoute)
            {
                var    adapters     = GetActiveNetworkInterfaces();
                string primaryDns   = "";
                string secondaryDns = "";
                bool   setDns       = false;
                foreach (var adapter in adapters)
                {
                    if (Networking.IsVPNAdapter(adapter))
                    {
                        continue;
                    }

                    //reset dns to what it was before connecting to vpn
                    var settingsAdapter = settings.StartupNetworkAdapterDns.FirstOrDefault(x => adapter.Id == x.Id);
                    if (settingsAdapter != null)
                    {
                        if (!string.IsNullOrWhiteSpace(settingsAdapter.PrimaryDNS) &&
                            NetworkAdapter.OpenVpnAdapter != null &&
                            NetworkAdapter.OpenVpnAdapter.PrimaryDns != adapter.PrimaryDns)
                        {
                            primaryDns = string.Format("interface IPv4 set dnsserver \"{0}\" static {1} both", settingsAdapter.Name, settingsAdapter.PrimaryDNS);
                            ControlHelpers.StartProcess(@"netsh", primaryDns);
                            setDns = true;
                        }
                        if (!string.IsNullOrWhiteSpace(settingsAdapter.SecondaryDNS) &&
                            NetworkAdapter.OpenVpnAdapter != null &&
                            NetworkAdapter.OpenVpnAdapter.SecondaryDns != adapter.SecondaryDns)
                        {
                            secondaryDns = string.Format("interface ipv4 add dnsserver \"{0}\" address={1} index=2", settingsAdapter.Name, settingsAdapter.SecondaryDNS);
                            ControlHelpers.StartProcess(@"netsh", secondaryDns);
                            setDns = true;
                        }
                    }
                    else
                    {
                        SetAutoDNS(false);
                    }
                    if (setDns)
                    {
                        _log.Log("Set DNS on {0} to {1}, {2}", adapter.Name, primaryDns, secondaryDns);
                    }
                }
                ControlHelpers.StartProcess(@"ipconfig.exe", @"/registerdns");
                ControlHelpers.StartProcess(@"ipconfig.exe", @"/flushdns");
            }
            RemoveRoutes();
        }
示例#6
0
        public static async void TryReconnect(int attempt = 0)
        {
            //reset current attempt in a little bit.
            Task.Delay(15000).ContinueWith((t) => { _currentRetryAttempt = null; return; });

            if (_currentRetryAttempt != null && _currentRetryAttempt == attempt)
            {
                return;
            }
            _currentRetryAttempt = attempt;

            Settings settings = Settings.Get();

            if (!settings.VPNServer.VPNGate)
            {
                return;
            }
            if (!settings.RetryVPNGateConnect)
            {
                return;
            }

            var selectedServer = settings.SelectedVPNGateServer;

            if (selectedServer == null)
            {
                return;
            }

            bool forceCsvDownload = (attempt == 0);
            var  fastestServers   = GetFastestServersForCountry(selectedServer.CountryLong, forceCsvDownload);

            SelectServer(fastestServers[attempt]);

            //wait for interfaces to reset
            if (attempt == 0)
            {
                await ControlHelpers.Sleep(2000);
            }
            ControlHelpers.P2PVPNForm.Connect();

            if (!ControlHelpers.P2PVPNForm.Network.IsOpenVPNConnected())
            {
                TryReconnect(attempt + 1);
            }
            _currentRetryAttempt = null;
        }
示例#7
0
        public static void ShowMessageBoxYesNo(string message, string yesProcess, MessageBoxType type = MessageBoxType.Info)
        {
            string caption = "";

            if (type != MessageBoxType.Info)
            {
                caption = type.ToString();
            }
            DialogResult result = MessageBox.Show(message, caption, MessageBoxButtons.YesNo);

            if (result == DialogResult.Yes)
            {
                ControlHelpers.StartProcess(yesProcess, "");
            }
            //if (log)
            //{
            //    Logging.Log(message);
            //}
        }
示例#8
0
        public void RemoveRoutes()
        {
            var adapters = GetActiveNetworkInterfaces();

            //Settings settings = Settings.Get();
            foreach (var adapter in adapters)
            {
                if (Networking.IsVPNAdapter(adapter))
                {
                    continue;
                }

                ControlHelpers.StartProcess("route", "delete 0.0.0.0 mask 192.0.0.0 " + adapter.GatewayIP);
                ControlHelpers.StartProcess("route", "delete 64.0.0.0 mask 192.0.0.0 " + adapter.GatewayIP);
                ControlHelpers.StartProcess("route", "delete 128.0.0.0 mask 192.0.0.0 " + adapter.GatewayIP);
                ControlHelpers.StartProcess("route", "delete 192.0.0.0 mask 192.0.0.0 " + adapter.GatewayIP);
            }
            ControlHelpers.StartProcess(@"ipconfig.exe", @"/registerdns");
            ControlHelpers.StartProcess(@"ipconfig.exe", @"/flushdns");
        }
示例#9
0
        public void SetAutoDNS(bool registerAndFlush)
        {
            var adapters = GetActiveNetworkInterfaces();

            //Settings settings = Settings.Get();
            foreach (var adapter in adapters)
            {
                if (Networking.IsVPNAdapter(adapter))
                {
                    continue;
                }

                string primaryDns   = string.Format("interface IPv4 set dnsserver \"{0}\" dhcp", adapter.Name);
                string secondaryDns = string.Format("interface ip set dns \"{0}\" dhcp", adapter.Name);
                ControlHelpers.StartProcess(@"netsh", primaryDns);
                ControlHelpers.StartProcess(@"netsh", secondaryDns);
            }
            if (registerAndFlush)
            {
                ControlHelpers.StartProcess(@"ipconfig.exe", @"/registerdns");
                ControlHelpers.StartProcess(@"ipconfig.exe", @"/flushdns");
            }
        }