|
83 | 83 | {%- endfor %}
|
84 | 84 | {%- endif %}
|
85 | 85 |
|
86 |
| -{%- if 'rich_rules' in zone %} |
87 |
| - {%- for rule in zone.rich_rules %} |
| 86 | +{%- macro rich_rule(rule) -%} |
88 | 87 | {%- if 'family' in rule %}
|
89 | 88 | <rule family="{{ rule.family }}">
|
90 | 89 | {%- else %}
|
|
149 | 148 | <drop/>
|
150 | 149 | {%- endif %}
|
151 | 150 | </rule>
|
| 151 | +{%- endmacro %} |
| 152 | + |
| 153 | +{%- if 'rich_rules' in zone %} |
| 154 | + {%- if zone.rich_rules is list %} |
| 155 | + {%- set rich_rules = zone.rich_rules %} |
| 156 | + {%- else %} |
| 157 | + {%- set expanded_ipset_rules = [] %} |
| 158 | + {%- for name,rule in zone.rich_rules|dictsort %} |
| 159 | + {%- if 'ipsets' in rule %} |
| 160 | + {%- for ipset in rule.ipsets %} |
| 161 | + {%- set tmp_rule = {} %} |
| 162 | + {%- set _dummy = tmp_rule.update(rule) %} |
| 163 | + {%- set _dummy = tmp_rule.update({'ipset':{'name':ipset}}) %} |
| 164 | + {%- set _dummy = expanded_ipset_rules.append(tmp_rule) %} |
| 165 | + {%- endfor %} |
| 166 | + {%- else %} |
| 167 | + {%- set _dummy = expanded_ipset_rules.append(rule) %} |
| 168 | + {%- endif %} |
| 169 | + {%- endfor %} |
| 170 | + {%- set rich_rules = [] %} |
| 171 | + {%- for rule in expanded_ipset_rules %} |
| 172 | + {%- if 'services' in rule %} |
| 173 | + {%- for service in rule.services %} |
| 174 | + {%- set tmp_rule = {} %} |
| 175 | + {%- set _dummy = tmp_rule.update(rule) %} |
| 176 | + {%- set _dummy = tmp_rule.update({'service':service}) %} |
| 177 | + {%- set _dummy = rich_rules.append(tmp_rule) %} |
| 178 | + {%- endfor %} |
| 179 | + {%- else %} |
| 180 | + {%- set _dummy = rich_rules.append(rule) %} |
| 181 | + {%- endif %} |
| 182 | + {%- endfor %} |
| 183 | + {%- endif %} |
| 184 | + {%- for rule in rich_rules %} |
| 185 | +{{ rich_rule(rule) }} |
152 | 186 | {%- endfor %}
|
153 | 187 | {%- endif %}
|
| 188 | + |
154 | 189 | </zone>
|
0 commit comments