示例#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);
        }
示例#2
0
        public override void Execute()
        {
            base.Execute();
            if (this.IsParameterBound(c => c.FirewallPolicyObject))
            {
                FirewallPolicyName = FirewallPolicyObject.Name;
                ResourceGroupName  = FirewallPolicyObject.ResourceGroupName;
            }

            var ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup
            {
                Priority       = this.Priority,
                RuleCollection = this.RuleCollection?.ToList(),
            };

            var rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper
            {
                Name       = this.Name,
                Properties = ruleGroup
            };

            var settings = new JsonSerializerSettings
            {
                NullValueHandling     = NullValueHandling.Ignore,
                MissingMemberHandling = MissingMemberHandling.Ignore
            };

            string serializedObject      = JsonConvert.SerializeObject(rcWrapper, settings);
            var    json                  = serializedObject.Replace("'", "\"");
            var    deserializedruleGroup = (MNM.FirewallPolicyRuleGroup)JsonConvert.DeserializeObject(
                json,
                typeof(MNM.FirewallPolicyRuleGroup),
                new JsonConverter[] { new Iso8601TimeSpanConverter(), new PolymorphicJsonCustomConverter <MNM.FirewallPolicyRule, MNM.FirewallPolicyRuleCondition>("ruleType", "ruleConditionType"), new TransformationJsonConverter() });

            this.AzureFirewallPolicyRuleGroupClient.CreateOrUpdate(this.ResourceGroupName, this.FirewallPolicyName, deserializedruleGroup.Name, deserializedruleGroup);
            WriteObject(rcWrapper);
        }
        public override void Execute()
        {
            base.Execute();
            var ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup();
            var rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper();

            if (this.IsParameterBound(c => c.InputObject))
            {
                this.Name = InputObject.Name;
                var resourceId = InputObject.Properties.Id;

                var resourceInfo = new ResourceIdentifier(resourceId);
                this.FirewallPolicyName = resourceInfo.ParentResource.Split('/')[1];
                this.ResourceGroupName  = resourceInfo.ResourceGroupName;

                ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup
                {
                    Priority       = this.IsParameterBound(c => c.Priority) ? Priority : InputObject.Properties.Priority,
                    RuleCollection = this.IsParameterBound(c => c.RuleCollection) ? RuleCollection.ToList() : InputObject.Properties.RuleCollection?.ToList()
                };

                rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper
                {
                    Name       = InputObject.Name,
                    Properties = ruleGroup
                };
            }
            else if (this.IsParameterBound(c => c.ResourceId))
            {
                var resourceInfo = new ResourceIdentifier(ResourceId);
                this.Name = resourceInfo.ResourceName;
                this.ResourceGroupName  = resourceInfo.ResourceGroupName;
                this.FirewallPolicyName = resourceInfo.ParentResource.Split('/')[1];
                ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup
                {
                    Priority       = Priority,
                    RuleCollection = this.RuleCollection?.ToList()
                };
                rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper
                {
                    Name       = this.Name,
                    Properties = ruleGroup
                };
            }
            else if (this.IsParameterBound(c => c.FirewallPolicyObject))
            {
                this.ResourceGroupName  = FirewallPolicyObject.ResourceGroupName;
                this.FirewallPolicyName = FirewallPolicyObject.Name;
                ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup
                {
                    Priority       = Priority,
                    RuleCollection = this.RuleCollection?.ToList()
                };
                rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper
                {
                    Name       = this.Name,
                    Properties = ruleGroup
                };
            }
            else if (this.IsParameterBound(c => c.FirewallPolicyName))
            {
                ruleGroup = new PSAzureFirewallPolicyRuleCollectionGroup
                {
                    Priority       = Priority,
                    RuleCollection = this.RuleCollection?.ToList()
                };
                rcWrapper = new PSAzureFirewallPolicyRuleCollectionGroupWrapper
                {
                    Name       = this.Name,
                    Properties = ruleGroup
                };
            }

            var settings = new JsonSerializerSettings
            {
                NullValueHandling     = NullValueHandling.Ignore,
                MissingMemberHandling = MissingMemberHandling.Ignore
            };

            string serializedObject = JsonConvert.SerializeObject(rcWrapper, settings);
            var    json             = serializedObject.Replace("'", "\"");

            var deserializedruleGroup = (MNM.FirewallPolicyRuleCollectionGroup)JsonConvert.DeserializeObject(
                json,
                typeof(MNM.FirewallPolicyRuleCollectionGroup),
                new JsonConverter[] { new Iso8601TimeSpanConverter(), new PolymorphicJsonCustomConverter <MNM.FirewallPolicyRuleCollection, MNM.FirewallPolicyRule>("ruleCollectionType", "ruleType"), new TransformationJsonConverter() });

            this.AzureFirewallPolicyRuleGroupClient.CreateOrUpdate(this.ResourceGroupName, this.FirewallPolicyName, this.Name, deserializedruleGroup);
            WriteObject(InputObject);
        }