/// <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); }
/// <summary> /// Clears firewall rules /// </summary> /// <returns></returns> private static int ClearRules() { Log("Clearing firewall rules..."); Firewall.ClearRules(); return(ERR.SUCCESS); }