{%- from "iptables/map.jinja" import defaults,service,tables with context %} {%- if service.v4.enabled -%} # Generated by salt v{{ grains['saltversion'] }} {%- if not defaults.v4.metadata_rules %} {%- for s_name, svc in pillar.items() %} {%- if svc is mapping %} {%- if svc.get('_support', {}).get('iptables', {}).get('enabled', False) %} {%- macro load_grains_file() %}{% include s_name + '/meta/iptables.yml' %}{% endmacro %} {%- set grains_yaml = load_grains_file()|load_yaml %} {%- if grains_yaml is iterable %} {%- set grains_tables = grains_yaml.get('iptables', {}).get('tables', {}).get('v4', {}) %} {%- if grains_tables is iterable %} {%- for gt_name, gt in grains_tables.items() %} {%- if gt_name not in tables.v4 %} {%- do tables.v4.update( { gt_name: gt } ) %} {%- else %} {%- for gc_name, gc in gt.chains.items() %} {%- set gt_obj = tables.v4.get(gt_name) %} {%- if gc_name not in gt_obj.chains %} {%- do gt_obj.chains.update( { gc_name: gc } ) %} {%- else %} {%- set gc_obj = gt_obj.chains.get(gc_name) %} {%- if gc.ruleset is defined %} {%- if gc_obj.ruleset is not defined %} {%- do gc_obj.update( { 'ruleset': {} } ) %} {%- endif %} {%- for grule_id, gr in gc.ruleset.items()|sort %} {%- if grule_id not in gc_obj.ruleset %} {%- do gc_obj.ruleset.update( { grule_id: gr } ) %} {%- endif %} {%- endfor %} {%- endif %} {%- endif %} {%- endfor %} {%- endif %} {%- endfor %} {%- endif %} {%- endif %} {%- endif %} {%- endif %} {%- endfor %} {%- endif %} {%- for t_name, t in tables.v4.items() %} *{{ t_name }} {%- for c_name, c in t.chains.items() %} {%- if c_name in ('INPUT','FORWARD','OUTPUT','PREROUTING','POSTROUTING') %} {%- set policy = c.get('policy', defaults.v4.policy) %} {%- else %} {%- set policy = "- [0:0]" %} {%- endif %} :{{ c_name }} {{ policy }} {%- endfor %} {%- for c_name, c in t.chains.items() %} {%- for rule_id, r in c.get('ruleset', {}).items()|sort %} {%- set rule = r.get('rule', defaults.v4.ruleset.rule) %} {%- set action = r.get('action', defaults.v4.ruleset.action) %} {%- set params = r.get('params', defaults.v4.ruleset.params) %} {%- if rule != "" %} {%- set rule = " " + rule %} {%- endif %} {%- if action != "" %} {%- set action = " -j " + action %} {%- endif %} {%- if params != "" %} {%- set params = " " + params %} {%- endif %} -A {{ c_name }}{{ rule }}{{ action }}{{ params }} {%- endfor %} {%- endfor %} COMMIT {%- endfor %} {%- endif %}