Ejemplo n.º 1
0
        public override void Execute()
        {
            base.Execute();

            if (TranslatedFqdn != null)
            {
                ValidateIsFqdn(TranslatedFqdn);
            }

            var natRule = new PSAzureFirewallPolicyNatRule
            {
                Name                 = this.Name,
                Protocols            = this.Protocol?.ToList(),
                SourceAddresses      = this.SourceAddress?.ToList(),
                SourceIpGroups       = this.SourceIpGroup?.ToList(),
                DestinationAddresses = this.DestinationAddress?.ToList(),
                DestinationPorts     = this.DestinationPort?.ToList(),
                TranslatedAddress    = this.TranslatedAddress,
                TranslatedFqdn       = this.TranslatedFqdn,
                TranslatedPort       = this.TranslatedPort,
                RuleType             = "NatRule"
            };

            WriteObject(natRule);
        }
        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.RuleCollections.Count; ruleCollectionIndex++)
            {
                var ruleCollection = new PSAzureFirewallPolicyBaseRuleCollection();
                if (getRuleCollectionGroup.RuleCollections[ruleCollectionIndex] is MNM.FirewallPolicyFilterRuleCollection)
                {
                    MNM.FirewallPolicyFilterRuleCollection    filterRule           = (MNM.FirewallPolicyFilterRuleCollection)getRuleCollectionGroup.RuleCollections[ruleCollectionIndex];
                    PSAzureFirewallPolicyFilterRuleCollection filterRuleCollection = JsonConvert.DeserializeObject <PSAzureFirewallPolicyFilterRuleCollection>(JsonConvert.SerializeObject(getRuleCollectionGroup.RuleCollections[ruleCollectionIndex]));
                    filterRuleCollection.RuleCollectionType = "FirewallPolicyFilterRuleCollection";
                    filterRuleCollection.Rules = new List <PSAzureFirewallPolicyRule>();
                    for (int ruleIndex = 0; ruleIndex < filterRule.Rules.Count; ruleIndex++)
                    {
                        if (filterRule.Rules[ruleIndex] is MNM.ApplicationRule)
                        {
                            PSAzureFirewallPolicyApplicationRule rule = JsonConvert.DeserializeObject <PSAzureFirewallPolicyApplicationRule>(JsonConvert.SerializeObject(filterRule.Rules[ruleIndex]));
                            rule.RuleType = "ApplicationRule";
                            filterRuleCollection.Rules.Add(rule);
                        }
                        else
                        {
                            PSAzureFirewallPolicyNetworkRule rule = JsonConvert.DeserializeObject <PSAzureFirewallPolicyNetworkRule>(JsonConvert.SerializeObject(filterRule.Rules[ruleIndex]));
                            rule.RuleType = "NetworkRule";
                            filterRuleCollection.Rules.Add(rule);
                        }
                    }
                    ruleCollectionGroup.RuleCollection.Add(filterRuleCollection);
                }
                else
                {
                    MNM.FirewallPolicyNatRuleCollection    natRule           = (MNM.FirewallPolicyNatRuleCollection)getRuleCollectionGroup.RuleCollections[ruleCollectionIndex];
                    PSAzureFirewallPolicyNatRuleCollection natRuleCollection = JsonConvert.DeserializeObject <PSAzureFirewallPolicyNatRuleCollection>(JsonConvert.SerializeObject(getRuleCollectionGroup.RuleCollections[ruleCollectionIndex]));
                    natRuleCollection.RuleCollectionType = "FirewallPolicyNatRuleCollection";
                    natRuleCollection.Rules = new List <PSAzureFirewallPolicyNatRule>();
                    for (int ruleIndex = 0; ruleIndex < natRule.Rules.Count; ruleIndex++)
                    {
                        PSAzureFirewallPolicyNatRule rule = JsonConvert.DeserializeObject <PSAzureFirewallPolicyNatRule>(JsonConvert.SerializeObject(natRule.Rules[ruleIndex]));
                        rule.RuleType = "NatRule";
                        natRuleCollection.Rules.Add(rule);
                    }

                    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);
        }