]> git.llucax.com Git - software/pymin.git/blob - pymin/services/firewall/templates/iptables.sh
Raise a CommandNotFoundError if updating an object without update().
[software/pymin.git] / pymin / services / firewall / templates / iptables.sh
1 #!/bin/sh
2
3 <%!
4
5 # TODO escape shell commands more securely
6 def s(text):
7     return repr(text.encode('utf-8'))
8
9 def optional(switch, value):
10     if value is not None:
11         return '%s %s' % (switch, s(value))
12     return ''
13
14 %>
15
16 /usr/sbin/iptables -t filter -F
17
18 % for (index, rule) in enumerate(rules):
19 /usr/sbin/iptables -t filter \
20     -I ${rule.chain|s} ${index+1|s} \
21     -j ${rule.target|s} \
22     ${optional('-s', rule.src)} \
23     ${optional('-d', rule.dst)} \
24     ${optional('-p', rule.protocol)} \
25     ${optional('-m', rule.protocol)} \
26     ${optional('--sport', rule.src_port)} \
27     ${optional('--dport', rule.dst_port)}
28
29 %endfor
30
31 <%doc> vim: set filetype=python sw=4 sts=4 et : </%doc>