#! /bin/sh SMARTDNS_BIN=/opt/usr/sbin/smartdns SMARTDNS_CONF=/opt/etc/smartdns/smartdns.conf SMARTDNS_PID="/var/run/smartdns.pid" SMARTDNS_PORT=535 set_iptable() { IPS="`ifconfig | grep "inet addr" | grep -v ":127" | grep "Bcast" | awk '{print $2}' | awk -F: '{print $2}'`" for IP in $IPS do iptables -t nat -A PREROUTING -p udp -d $IP --dport 53 -j REDIRECT --to-ports $SMARTDNS_PORT done } clear_iptable() { IPS="`ifconfig | grep "inet addr" | grep -v ":127" | grep "Bcast" | awk '{print $2}' | awk -F: '{print $2}'`" for IP in $IPS do iptables -t nat -D PREROUTING -p udp -d $IP --dport 53 -j REDIRECT --to-ports $SMARTDNS_PORT done } case "$1" in start) set_iptable if [ $? -ne 0 ]; then exit 1 fi $SMARTDNS_BIN -c $SMARTDNS_CONF -p $SMARTDNS_PID if [ $? -ne 0 ]; then clear_iptable fi ;; status) pid="`cat $SMARTDNS_PID 2>/dev/null`" if [ -z "$pid" ]; then echo "smartdns not running." return 0 fi if [ -d "/proc/$pid" ]; then echo "smartdns running" return 0; fi echo "smartdns not running." return 0; ;; stop) clear_iptable pid="`cat $SMARTDNS_PID 2>/dev/null`" kill -9 $pid 2>/dev/null ;; force-reload|restart) $0 stop $0 start ;; enable) nvram set apps_state_enable=2 nvram set apps_state_error=0 nvram set apps_state_install=5 nvram set apps_state_action=install nvram set apps_u2ec_ex=2 ;; firewall-start) $0 restart ;; *) ;; esac