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