func GetRule()

in pkg/azure/configbuilder.go [73:129]


func GetRule(egressrule azurefirewallrulesv1.AzureFirewallEgressRulesSpec, rule azurefirewallrulesv1.AzureFirewallEgressrulesRulesSpec, erulesSourceAddresses map[string][]string) n.BasicFirewallPolicyRule {

	sourceAddresses := erulesSourceAddresses[egressrule.Name]
	var fwRule n.BasicFirewallPolicyRule

	if rule.RuleType == "Application" {
		targetFqdns := []string{}
		targetUrls := []string{}
		var terminateTLS = false
		destinationAddresses := []string{}

		if rule.DestinationAddresses != nil {
			destinationAddresses = rule.DestinationAddresses
		}
		if rule.TargetFqdns != nil {
			targetFqdns = rule.TargetFqdns
		}
		if rule.TargetUrls != nil {
			targetUrls = rule.TargetUrls
		}
		if len(targetUrls) != 0 {
			terminateTLS = true
		}
		fwRule := &n.ApplicationRule{
			SourceIPGroups:       &(sourceAddresses),
			DestinationAddresses: &(destinationAddresses),
			TargetFqdns:          &(targetFqdns),
			TargetUrls:           &(targetUrls),
			TerminateTLS:         &(terminateTLS),
			Protocols:            GetApplicationProtocols(rule.Protocol),
			RuleType:             GetRuleType(rule.RuleType),
			Name:                 to.StringPtr(rule.RuleName),
		}
		return fwRule
	} else if rule.RuleType == "Network" {
		destinationAddresses := []string{}
		destinationFqdns := []string{}
		if rule.DestinationAddresses != nil {
			destinationAddresses = rule.DestinationAddresses
		}
		if rule.DestinationFqdns != nil {
			destinationFqdns = rule.DestinationFqdns
		}
		fwRule := &n.Rule{
			SourceIPGroups:       &(sourceAddresses),
			DestinationAddresses: &(destinationAddresses),
			DestinationFqdns:     &(destinationFqdns),
			DestinationPorts:     &(rule.DestinationPorts),
			RuleType:             GetRuleType(rule.RuleType),
			IPProtocols:          GetIpProtocols(rule.Protocol),
			Name:                 to.StringPtr(rule.RuleName),
		}
		return fwRule
	}
	return fwRule

}