S50smartdns 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. #! /bin/sh
  2. SMARTDNS_BIN=/opt/usr/sbin/smartdns
  3. SMARTDNS_CONF=/opt/etc/smartdns/smartdns.conf
  4. SMARTDNS_PID="/var/run/smartdns.pid"
  5. SMARTDNS_PORT=535
  6. set_iptable()
  7. {
  8. IPS="`ifconfig | grep "inet addr" | grep -v ":127" | grep "Bcast" | awk '{print $2}' | awk -F: '{print $2}'`"
  9. for IP in $IPS
  10. do
  11. iptables -t nat -A PREROUTING -p udp -d $IP --dport 53 -j REDIRECT --to-ports $SMARTDNS_PORT
  12. done
  13. }
  14. clear_iptable()
  15. {
  16. IPS="`ifconfig | grep "inet addr" | grep -v ":127" | grep "Bcast" | awk '{print $2}' | awk -F: '{print $2}'`"
  17. for IP in $IPS
  18. do
  19. iptables -t nat -D PREROUTING -p udp -d $IP --dport 53 -j REDIRECT --to-ports $SMARTDNS_PORT
  20. done
  21. }
  22. case "$1" in
  23. start)
  24. set_iptable
  25. if [ $? -ne 0 ]; then
  26. exit 1
  27. fi
  28. $SMARTDNS_BIN -c $SMARTDNS_CONF -p $SMARTDNS_PID
  29. if [ $? -ne 0 ]; then
  30. clear_iptable
  31. fi
  32. ;;
  33. status)
  34. pid="`cat $SMARTDNS_PID 2>/dev/null`"
  35. if [ -z "$pid" ]; then
  36. echo "smartdns not running."
  37. return 0
  38. fi
  39. if [ -d "/proc/$pid" ]; then
  40. echo "smartdns running"
  41. return 0;
  42. fi
  43. echo "smartdns not running."
  44. return 0;
  45. ;;
  46. stop)
  47. clear_iptable
  48. pid="`cat $SMARTDNS_PID 2>/dev/null`"
  49. kill -9 $pid 2>/dev/null
  50. ;;
  51. force-reload|restart)
  52. $0 stop
  53. $0 start
  54. ;;
  55. enable)
  56. nvram set apps_state_enable=2
  57. nvram set apps_state_error=0
  58. nvram set apps_state_install=5
  59. nvram set apps_state_action=install
  60. nvram set apps_u2ec_ex=2
  61. ;;
  62. firewall-start)
  63. $0 restart
  64. ;;
  65. *)
  66. ;;
  67. esac