private void CmbDirection_SelectionChanged(object sender, SelectionChangedEventArgs e) { directionFilter = (FirewallRule.Directions)cmbDirection.SelectedIndex; cmbDirection.Background = (cmbDirection.SelectedItem as ComboBoxItem).Background; App.SetConfig("FwRules", "Direction", (int)directionFilter); //UpdateRules(true); rulesGrid.Items.Filter = new Predicate <object>(item => RuleFilter(item)); }
internal void Add(FirewallRule.Directions dir) { if ((dir & FirewallRule.Directions.Inbound) != 0) { Inbound = true; } if ((dir & FirewallRule.Directions.Outbound) != 0) { Outbound = true; } }
internal Dir Public; // 4 internal void Add(int pro, FirewallRule.Directions dir) { if ((pro & (int)FirewallRule.Profiles.Domain) != 0) { Domain.Add(dir); } if ((pro & (int)FirewallRule.Profiles.Private) != 0) { Private.Add(dir); } if ((pro & (int)FirewallRule.Profiles.Public) != 0) { Public.Add(dir); } }
public void ApplyRules(ProgramSet progSet, UInt64 expiration = 0) { EvaluateRules(progSet, true); if (progSet.config.NetAccess == ProgramConfig.AccessLevels.Unconfigured) { return; } if (progSet.config.NetAccess == progSet.config.CurAccess) { return; } foreach (Program prog in progSet.Programs.Values) { ClearRules(prog, progSet.config.NetAccess != ProgramConfig.AccessLevels.CustomConfig); if (progSet.config.NetAccess == ProgramConfig.AccessLevels.CustomConfig) { continue; // dont create any rules } for (int i = 1; i <= 2; i++) { FirewallRule.Directions direction = (FirewallRule.Directions)i; if ((progSet.config.NetAccess == ProgramConfig.AccessLevels.InBoundAccess && direction != FirewallRule.Directions.Inbound) || (progSet.config.NetAccess == ProgramConfig.AccessLevels.OutBoundAccess && direction != FirewallRule.Directions.Outbound)) { continue; } switch (progSet.config.NetAccess) { case ProgramConfig.AccessLevels.FullAccess: case ProgramConfig.AccessLevels.InBoundAccess: case ProgramConfig.AccessLevels.OutBoundAccess: { // add and enable allow all rule FirewallRule rule = new FirewallRule(); FirewallRuleEx.SetProgID(rule, prog.ID); rule.Name = MakeRuleName(AllowAllName, expiration != 0, prog.Description); rule.Grouping = RuleGroup; rule.Action = FirewallRule.Actions.Allow; rule.Direction = direction; rule.Enabled = true; ApplyRule(prog, rule, expiration); break; } case ProgramConfig.AccessLevels.LocalOnly: { // create block rule only of we operate in blacklist mode //if (GetFilteringMode() == FilteringModes.BlackList) //{ //add and enable block rules for the internet FirewallRule rule1 = new FirewallRule(); FirewallRuleEx.SetProgID(rule1, prog.ID); rule1.Name = MakeRuleName(BlockInet, expiration != 0, prog.Description); rule1.Grouping = RuleGroup; rule1.Action = FirewallRule.Actions.Block; rule1.Direction = direction; rule1.Enabled = true; if (UwpFunc.IsWindows7OrLower) { rule1.RemoteAddresses = GetSpecialNet(FirewallRule.AddrKeywordIntErnet); } else { rule1.RemoteAddresses = FirewallRule.AddrKeywordIntErnet; } ApplyRule(prog, rule1, expiration); //} //add and enable allow rules for the lan FirewallRule rule2 = new FirewallRule(); FirewallRuleEx.SetProgID(rule2, prog.ID); rule2.Name = MakeRuleName(AllowLan, expiration != 0, prog.Description); rule2.Grouping = RuleGroup; rule2.Action = FirewallRule.Actions.Allow; rule2.Direction = direction; rule2.Enabled = true; //rule.RemoteAddresses = FirewallRule.GetSpecialNet(FirewallRule.AddrKeywordLocalSubnet); rule2.RemoteAddresses = FirewallRule.AddrKeywordLocalSubnet; ApplyRule(prog, rule2, expiration); break; } case ProgramConfig.AccessLevels.BlockAccess: { // add and enable broad block rules FirewallRule rule = new FirewallRule(); FirewallRuleEx.SetProgID(rule, prog.ID); rule.Name = MakeRuleName(BlockAllName, expiration != 0, prog.Description); rule.Grouping = RuleGroup; rule.Action = FirewallRule.Actions.Block; rule.Direction = direction; rule.Enabled = true; ApplyRule(prog, rule, expiration); break; } } } } progSet.config.CurAccess = progSet.config.NetAccess; App.engine.OnRulesUpdated(progSet); }