Beispiel #1
0
 public IEnumerable <IPAddressRange> EnumerateIPAddresses(string ruleNamePrefix = null)
 {
     lock (this)
     {
         string prefix = ScrubRuleNamePrefix(ruleNamePrefix);
         if (blockRules.TryGetValue(prefix, out MemoryFirewallRule rule))
         {
             return(rule.EnumerateIPAddressesRanges());
         }
         else if (blockRulesRanges.TryGetValue(prefix, out MemoryFirewallRuleRanges ruleRanges))
         {
             return(ruleRanges.EnumerateIPAddresses());
         }
         else if (prefix.StartsWith(RulePrefix + "Allow", StringComparison.OrdinalIgnoreCase))
         {
             return(allowRule.EnumerateIPAddressesRanges());
         }
         return(new IPAddressRange[0]);
     }
 }
Beispiel #2
0
        public override IEnumerable <IPAddressRange> EnumerateIPAddresses(string ruleNamePrefix = null)
        {
            lock (this)
            {
                List <IPAddressRange> results = new List <IPAddressRange>();
                string prefix = ScrubRuleNamePrefix(BlockRulePrefix, ruleNamePrefix);
                foreach (var rule in blockRules)
                {
                    if (string.IsNullOrWhiteSpace(ruleNamePrefix) ||
                        rule.Key.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
                    {
                        results.AddRange(rule.Value.EnumerateIPAddressesRanges());
                    }
                }
                foreach (var rule in blockRulesRanges)
                {
                    if (string.IsNullOrWhiteSpace(ruleNamePrefix) ||
                        rule.Key.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
                    {
                        results.AddRange(rule.Value.EnumerateIPAddressesRanges());
                    }
                }

                prefix = ScrubRuleNamePrefix(AllowRulePrefix, ruleNamePrefix);
                foreach (var rule in allowRuleRanges)
                {
                    if (string.IsNullOrWhiteSpace(ruleNamePrefix) ||
                        rule.Key.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
                    {
                        results.AddRange(rule.Value.EnumerateIPAddressesRanges());
                    }
                }
                if (string.IsNullOrWhiteSpace(ruleNamePrefix) ||
                    allowRule.Name.StartsWith(prefix, StringComparison.OrdinalIgnoreCase))
                {
                    results.AddRange(allowRule.EnumerateIPAddressesRanges());
                }
                return(results);
            }
        }