コード例 #1
0
 /// <summary>
 /// Applies firewall rules
 /// </summary>
 private static int ApplyRules(IPVersion Version)
 {
     Log("Applying firewall Rules...");
     try
     {
         var FWRanges = Cache.SelectedRanges
                        .Select(m => new RangeSet()
         {
             Direction = m.Direction,
             Ranges    = Cache
                         .GetAddresses(m)
                         .Select(n => new CIDR(n, true))
                         .Where(n => Version.HasFlag(n.Type))
                         .ToArray()
         })
                        .Where(m => m.Ranges.Length > 0)
                        .ToArray();
         Debug("Clearing existing firewall rules...");
         Debug("Removed {0} rules...", Firewall.ClearRules());
         Debug("Adding new rules...");
         Firewall.BlockRanges(FWRanges);
         Log("Blocked {0} ranges in {1} rules", FWRanges.SelectMany(m => m.Ranges).Count(), FWRanges.Length);
     }
     catch (Exception ex)
     {
         Log("Error: {0}", ex.Message);
         return(ERR.RULE_ERROR);
     }
     return(ERR.SUCCESS);
 }
コード例 #2
0
 /// <summary>
 /// Clears firewall rules
 /// </summary>
 /// <returns></returns>
 private static int ClearRules()
 {
     Log("Clearing firewall rules...");
     Firewall.ClearRules();
     return(ERR.SUCCESS);
 }