]> git.llucax.com Git - software/pymin.git/blob - pymin/services/firewall/templates/iptables.sh
Give a nice error if a VPN key can't be readed (refs #22).
[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(unicode(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 /usr/sbin/iptables -t filter -P INPUT ACCEPT
19 /usr/sbin/iptables -t filter -P OUTPUT ACCEPT
20 /usr/sbin/iptables -t filter -P FORWARD ACCEPT
21
22 % for (index, rule) in enumerate(rules):
23 /usr/sbin/iptables -t filter \
24     -I ${rule.chain|s} ${index+1|s} \
25     -j ${rule.target|s} \
26     ${optional('-s', rule.src)} \
27     ${optional('-d', rule.dst)} \
28     ${optional('-p', rule.protocol)} \
29     ${optional('-m', rule.protocol)} \
30     ${optional('--sport', rule.src_port)} \
31     ${optional('--dport', rule.dst_port)}
32
33 %endfor
34
35 <%doc> vim: set filetype=python sw=4 sts=4 et : </%doc>