-#! /bin/sh
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
PATH=/sbin:/bin:/usr/sbin:/usr/bin
NAME=reaim
DESC="Transparent proxy for IM behind NAT"
-. /etc/functions.sh
-WAN=$(nvram get wan_ifname)
IPT=/usr/sbin/iptables
-case "$1" in
- start)
- if [ -e /var/run/$NAME.pid ]; then
- echo "$DESC: $NAME already started."
- exit 0
- fi
- echo -n "Starting $DESC: $NAME"
- $IPT -A input_rule -i $WAN -p tcp --dport 1863:1864 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 4443 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 5566 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 40000:40099 -j ACCEPT
- test -e /var/run/$NAME.pid || touch /var/run/$NAME.pid
- /usr/sbin/$NAME
- echo "."
- ;;
-
- stop)
- if [ ! -e /var/run/$NAME.pid ]; then
- echo "$DESC: $NAME is not running."
- exit 0
- fi
- echo -n "Stopping $DESC: $NAME"
- killall $NAME
- rm -f /var/run/$NAME.pid
-
- echo "."
- ;;
-
- restart|force-reload)
- if [ ! -e /var/run/$NAME.pid ]; then
- $0 start
- exit 0
- fi
- echo -n "Restarting $DESC: $NAME"
- $IPT -A input_rule -i $WAN -p tcp --dport 1863:1864 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 4443 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 5566 -j ACCEPT
- $IPT -A input_rule -i $WAN -p tcp --dport 40000:40099 -j ACCEPT
- killall $NAME
- sleep 1
- /usr/sbin/$NAME
- echo "."
- ;;
-
- *)
- N=/etc/init.d/$NAME
- echo "Usage: $N {start|stop|restart|force-reload}" >&2
- exit 1
- ;;
-
-esac
-
-exit 0
+include /lib/network
+scan_interfaces
+config_get WAN wan ifname
+
+set_rules() {
+ [ -z "$WAN" ] && exit
+ $IPT $1 input_rule -i $WAN -p tcp --dport 1863:1864 -j ACCEPT
+ $IPT $1 input_rule -i $WAN -p tcp --dport 4443 -j ACCEPT
+ $IPT $1 input_rule -i $WAN -p tcp --dport 5566 -j ACCEPT
+ $IPT $1 input_rule -i $WAN -p tcp --dport 40000:40099 -j ACCEPT
+}
+
+start() {
+ if [ -e /var/run/$NAME.pid ]; then
+ echo "$DESC: $NAME already started."
+ exit 0
+ fi
+ echo -n "Starting $DESC: $NAME"
+
+ set_rules -A
+ test -e /var/run/$NAME.pid || touch /var/run/$NAME.pid
+ /usr/sbin/$NAME
+ echo "."
+}
+
+stop() {
+ set_rules -D 2>/dev/null >/dev/null
+
+ if [ ! -e /var/run/$NAME.pid ]; then
+ echo "$DESC: $NAME is not running."
+ exit 0
+ fi
+ echo -n "Stopping $DESC: $NAME"
+
+ killall $NAME
+ rm -f /var/run/$NAME.pid
+
+ echo "."
+}