software captore
[rrq/hourglass.git] / setup.sh
1 #!/bin/bash
2
3 CMD=${1-start}
4 NET=192.168.249
5 TAP=tap0
6 SET=TIMO
7
8 cd $(dirname $0)
9
10 RULE=( ! -o $TAP -j TEE --gateway $NET.2 --oif $TAP )
11 case "$CMD" in
12     start)
13         # start the blocking rule
14         if iptables-save | grep -qs "match-set $SET" ; then
15             : # all fine
16         else
17             if ipset list $SET >& /dev/null ; then
18                 : # The set exists
19             else
20                 ipset create $SET hash:net
21             fi
22             iptables -A FORWARD -p tcp --dport 53 -j ACCEPT
23             iptables -A FORWARD -p udp --dport 53 -j ACCEPT
24             iptables -A FORWARD -m set --match-set $SET src -j DROP
25         fi
26         # Start the traffic listener
27         if ifconfig $TAP >& /dev/null ; then
28             echo "Already started"
29         else
30             date >> /tmp/hourglass-listener.log
31             newlisp listener.lsp >> /tmp/hourglass-listener.log 2>&1 &
32             while sleep 1 ; do
33                 ifconfig $TAP >& /dev/null && break
34                 echo $TAP not up yet
35             done
36             ifconfig $TAP $NET.1 up
37             iptables -t mangle -A FORWARD -p tcp --dport 53 -j RETURN
38             iptables -t mangle -A FORWARD -p udp --dport 53 -j RETURN
39             iptables -t mangle -A FORWARD ${RULE[@]}
40         fi
41         ;;
42     stop)
43         iptables -t mangle -F FORWARD
44         if ifconfig $TAP >& /dev/null ; then
45             pkill -2 -f listener.lsp
46         else
47             echo "Already stopped"
48         fi
49         ipset flush $SET
50         ;;
51     *)
52         echo "Unknown: $CMD"
53         ;;
54 esac