Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 internal void Add(FirewallRule.Directions dir)
 {
     if ((dir & FirewallRule.Directions.Inbound) != 0)
     {
         Inbound = true;
     }
     if ((dir & FirewallRule.Directions.Outbound) != 0)
     {
         Outbound = true;
     }
 }
Exemplo n.º 3
0
                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);
                    }
                }
Exemplo n.º 4
0
        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);
        }