예제 #1
0
        public PSAzureFirewallPolicyRuleCollectionGroupWrapper GetAzureFirewallPolicyRuleGroup(string resourceGroupName, string firewallPolicyName, string name)
        {
            var settings = new JsonSerializerSettings
            {
                NullValueHandling     = NullValueHandling.Ignore,
                MissingMemberHandling = MissingMemberHandling.Ignore
            };
            var getRuleCollectionGroup = this.AzureFirewallPolicyRuleGroupClient.Get(resourceGroupName, firewallPolicyName, name);

            var ruleCollectionGroup = new PSAzureFirewallPolicyRuleCollectionGroup();

            ruleCollectionGroup.RuleCollection = new List <PSAzureFirewallPolicyBaseRuleCollection>();

            for (int ruleCollectionIndex = 0; ruleCollectionIndex < getRuleCollectionGroup.Rules.Count; ruleCollectionIndex++)
            {
                var ruleCollection = new PSAzureFirewallPolicyBaseRuleCollection();
                if (getRuleCollectionGroup.Rules[ruleCollectionIndex] is MNM.FirewallPolicyFilterRule)
                {
                    MNM.FirewallPolicyFilterRule filterRule = (MNM.FirewallPolicyFilterRule)getRuleCollectionGroup.Rules[ruleCollectionIndex];
                    PSAzureFirewallPolicyFilterRuleCollection filterRuleCollection = JsonConvert.DeserializeObject <PSAzureFirewallPolicyFilterRuleCollection>(JsonConvert.SerializeObject(getRuleCollectionGroup.Rules[ruleCollectionIndex]));
                    filterRuleCollection.RuleCollectionType = "FirewallPolicyFilterRule";
                    filterRuleCollection.Rules = new List <PSAzureFirewallPolicyRule>();
                    for (int ruleIndex = 0; ruleIndex < filterRule.RuleConditions.Count; ruleIndex++)
                    {
                        if (filterRule.RuleConditions[ruleIndex] is MNM.ApplicationRuleCondition)
                        {
                            PSAzureFirewallPolicyApplicationRule rule = JsonConvert.DeserializeObject <PSAzureFirewallPolicyApplicationRule>(JsonConvert.SerializeObject(filterRule.RuleConditions[ruleIndex]));
                            rule.RuleType = "ApplicationRuleCondition";
                            filterRuleCollection.Rules.Add(rule);
                        }
                        else
                        {
                            PSAzureFirewallPolicyNetworkRule rule = JsonConvert.DeserializeObject <PSAzureFirewallPolicyNetworkRule>(JsonConvert.SerializeObject(filterRule.RuleConditions[ruleIndex]));
                            rule.RuleType = "NetworkRuleCondition";
                            filterRuleCollection.Rules.Add(rule);
                        }
                    }
                    ruleCollectionGroup.RuleCollection.Add(filterRuleCollection);
                }
                else
                {
                    MNM.FirewallPolicyNatRule natRule = (MNM.FirewallPolicyNatRule)getRuleCollectionGroup.Rules[ruleCollectionIndex];
                    PSAzureFirewallPolicyNatRuleCollection natRuleCollection = JsonConvert.DeserializeObject <PSAzureFirewallPolicyNatRuleCollection>(JsonConvert.SerializeObject(getRuleCollectionGroup.Rules[ruleCollectionIndex]));
                    natRuleCollection.RuleCollectionType = "FirewallPolicyNatRule";
                    natRuleCollection.Rule          = JsonConvert.DeserializeObject <PSAzureFirewallPolicyNetworkRule>(JsonConvert.SerializeObject(natRule.RuleCondition));
                    natRuleCollection.Rule.RuleType = "NetworkRuleCondition";
                    ruleCollectionGroup.RuleCollection.Add(natRuleCollection);
                }
            }

            var ruleCollectionGroupWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper();

            ruleCollectionGroup.Priority             = (uint)getRuleCollectionGroup.Priority;
            ruleCollectionGroupWrapper.Properties    = ruleCollectionGroup;
            ruleCollectionGroupWrapper.Name          = getRuleCollectionGroup.Name;
            ruleCollectionGroupWrapper.Properties.Id = getRuleCollectionGroup.Id;

            return(ruleCollectionGroupWrapper);
        }
        public override void Execute()
        {
            base.Execute();

            var networkRule = new PSAzureFirewallPolicyNetworkRule
            {
                Name                 = this.Name,
                protocols            = this.Protocol?.ToList(),
                SourceAddresses      = this.SourceAddress?.ToList(),
                DestinationAddresses = this.DestinationAddress?.ToList(),
                DestinationPorts     = this.DestinationPort?.ToList(),
                RuleType             = "NetworkRuleCondition"
            };

            WriteObject(networkRule);
        }
예제 #3
0
        public override void Execute()
        {
            base.Execute();

            if (DestinationFqdn != null)
            {
                foreach (string fqdn in DestinationFqdn)
                {
                    ValidateIsFqdn(fqdn);
                }
            }

            // Only one of DestinationAddress/DestinationIpGroup or DestinationFqdns is allowed
            // Eventually we may want to have exclusitivity with IpGroup too but for now not doing that
            if (((DestinationAddress != null) || (DestinationIpGroup != null)) && (DestinationFqdn != null))
            {
                throw new ArgumentException("Both DestinationAddress or DestinationIpGroup and DestinationFqdns not allowed");
            }

            // One of DestinationAddress, DestinationIpGroup or DestinationFqdns must be present
            if ((DestinationAddress == null) && (DestinationIpGroup == null) && (DestinationFqdn == null))
            {
                throw new ArgumentException("Either DestinationAddress, DestinationIpGroup or DestinationFqdns is required");
            }

            // One of SourceAddress or SourceIpGroup must be present
            if ((SourceAddress == null) && (SourceIpGroup == null))
            {
                throw new ArgumentException("Either SourceAddress or SourceIpGroup is required.");
            }

            var networkRule = new PSAzureFirewallPolicyNetworkRule
            {
                Name                 = this.Name,
                protocols            = this.Protocol?.ToList(),
                SourceAddresses      = this.SourceAddress?.ToList(),
                SourceIpGroups       = this.SourceIpGroup?.ToList(),
                DestinationAddresses = this.DestinationAddress?.ToList(),
                DestinationIpGroups  = this.DestinationIpGroup?.ToList(),
                DestinationPorts     = this.DestinationPort?.ToList(),
                DestinationFqdns     = this.DestinationFqdn?.ToList(),
                RuleType             = "NetworkRule"
            };

            WriteObject(networkRule);
        }