Exemple #1
0
        /// <summary>
        /// Sets proxy according to current available networks and configurations rules
        /// </summary>
        private void SetProxyAccordingToNetwork(string configName)
        {
            if (configName != null)
            {
                log.Info("Set configuration " + configName);

                NetworkConfiguration configuration = m_configurations.Find((c) => c.Name == configName);
                configuration.ProxySettings.Configure();

                // Evénement
                if (ProxyChanged != null)
                {
                    ProxyChanged(configName, null, configuration.ProxySettings, "Setting forced");
                }
            }
            else
            {
                NetworkInfo                     matchingNetwork       = null;
                NetworkConfiguration            matchingConfiguration = null;
                RulesChecker.RulesCheckerResult result = new RulesChecker.RulesCheckerResult();

                // Get current networks
                IList <NetworkInfo> currentNetworks = NetworkManager.ListAvailableNetworks();
                _currentNetworks = currentNetworks;
                foreach (var networkInfo in currentNetworks)
                {
                    log.Debug("Network " + networkInfo);
                }

                // Find matching configuration
                matchingConfiguration = FindMatchingConfiguration(currentNetworks, out result, out matchingNetwork);

                // Configurer le configuration en conséquence
                if (matchingConfiguration != null)
                {
                    matchingConfiguration.ProxySettings.Configure();
                }

                // Evénement
                if (ProxyChanged != null)
                {
                    ProxyChanged(matchingConfiguration.Name, result.Reason != Reasons.DEFAULT ? matchingNetwork : null, matchingConfiguration.ProxySettings, result.ReasonString);
                }
            }
        }
Exemple #2
0
        /// <summary>
        /// Returns the configuration that matches the given network
        /// </summary>
        /// <param name="configurations"></param>
        public NetworkConfiguration FindMatchingConfiguration(IList <NetworkInfo> networks, out RulesChecker.RulesCheckerResult result, out NetworkInfo matchingNetwork)
        {
            int countMatches = 0;
            NetworkConfiguration matchingConfiguration = null;

            result          = null;
            matchingNetwork = null;

            // Check each configuration
            foreach (NetworkConfiguration configuration in m_configurations)
            {
                using (log4net.ThreadContext.Stacks["NDC"].Push(String.Format("config {0}", configuration.Name)))
                {
                    log.InfoFormat("Checking config {0}", configuration.Name);

                    // Check each network
                    foreach (NetworkInfo net in networks)
                    {
                        log.InfoFormat("Checking network: {0} (IP: {1}, DNS: {2})", net.IfName, string.Join(",", net.NetworkIP), string.Join(",", net.DNS));

                        RulesChecker rc = new RulesChecker(configuration.NetworkRulesSet);

                        RulesChecker.RulesCheckerResult tempResult = rc.CheckRulesAgainstNetwork(net);
                        if (tempResult.Match)
                        {
                            log.InfoFormat("Match #{1}: config {0}", configuration.Name, countMatches + 1);

                            if (countMatches == 0)
                            {
                                result = tempResult;
                                matchingConfiguration = configuration;
                                matchingNetwork       = net;
                            }

                            countMatches++;
                        }
                    }
                }
            }

            return(matchingConfiguration);
        }
        /// <summary>
        /// Sets proxy according to current available networks and configurations rules
        /// </summary>
        private void SetProxyAccordingToNetwork(string configName)
        {
            if (configName != null)
            {
                log.Info("Set configuration " + configName);

                NetworkConfiguration configuration = m_configurations.Find((c) => c.Name == configName);
                configuration.ProxySettings.Configure();

                // Evénement
                if (ProxyChanged != null)
                {
                    ProxyChanged(configName, null, configuration.ProxySettings, "Setting forced");
                }
            }
            else
            {
                NetworkInfo matchingNetwork = null;
                NetworkConfiguration matchingConfiguration = null;
                RulesChecker.RulesCheckerResult result = new RulesChecker.RulesCheckerResult();

                // Get current networks
                IList<NetworkInfo> currentNetworks = NetworkManager.ListAvailableNetworks();
                _currentNetworks = currentNetworks;
                foreach (var networkInfo in currentNetworks)
                {
                    log.Debug("Network " + networkInfo);
                }

                // Find matching configuration
                matchingConfiguration = FindMatchingConfiguration(currentNetworks, out result, out matchingNetwork);

                // Configurer le configuration en conséquence
                if (matchingConfiguration != null)
                {
                    matchingConfiguration.ProxySettings.Configure();
                }

                // Evénement
                if (ProxyChanged != null)
                {
                    ProxyChanged(matchingConfiguration.Name, result.Reason != Reasons.DEFAULT ? matchingNetwork : null, matchingConfiguration.ProxySettings, result.ReasonString);
                }
            }
        }