Exemple #1
0
 public IEnumerable <IPAddressRange> EnumerateIPAddresses(string ruleNamePrefix = null)
 {
     lock (this)
     {
         ruleNamePrefix = ScrubRuleNamePrefix(ruleNamePrefix);
         if (ruleNamePrefix.StartsWith(RulePrefix + "0", StringComparison.OrdinalIgnoreCase))
         {
             foreach (uint ip in blockedIPAddressesV4)
             {
                 yield return(new IPAddressRange(ip.ToIPAddress()));
             }
             foreach (UInt128 ip in blockedIPAddressesV6)
             {
                 yield return(new IPAddressRange(ip.ToIPAddress()));
             }
         }
         if (ruleNamePrefix.StartsWith(RulePrefix + "1", StringComparison.OrdinalIgnoreCase))
         {
             foreach (uint ip in allowedIPAddressesV4)
             {
                 yield return(new IPAddressRange(ip.ToIPAddress()));
             }
             foreach (UInt128 ip in allowedIPAddressesV6)
             {
                 yield return(new IPAddressRange(ip.ToIPAddress()));
             }
         }
         foreach (string key in blockRules.Keys.Where(k => k.StartsWith(ruleNamePrefix, StringComparison.OrdinalIgnoreCase)))
         {
             BlockRule rule = blockRules[key];
             foreach (IPAddressRange range in rule.EnumerateIPAddresses())
             {
                 yield return(range);
             }
         }
     }
 }