1
Files
qnap-rc-scripts/upnpd.sh
2016-09-04 22:20:40 +03:00

96 lines
2.4 KiB
Bash
Executable File

#!/bin/sh
PATH=/bin:/sbin:/usr/bin:/usr/sbin
UPNPD="/sbin/upnpd"
BOND_SUP=`/sbin/getcfg "Network" "BONDING Support" -d "FALSE"`
ADV_BOND_SUP=`/sbin/getcfg "Network" "Advanced Bonding Support" -d "FALSE"`
ETH0STATUS=`/bin/cat /sys/class/net/eth0/operstate 2>>/dev/null`
ETH1STATUS=`/bin/cat /sys/class/net/eth1/operstate 2>>/dev/null`
EXTIFACE="eth0"
INTIFACE="eth0"
ALLOW_MULTICAST="FALSE"
RETVAL=0
IS_GATEWAY_EXIT=0
if [ "$BOND_SUP" = "TRUE" ]; then
EXTIFACE="bond0"
INTIFACE="bond0"
else
if [ "$ETH0STATUS" = "up" ]; then
EXTIFACE="eth0"
INTIFACE="eth0"
else
if [ "$ETH1STATUS" = "up" ]; then
EXTIFACE="eth1"
INTIFACE="eth1"
fi
fi
fi
if [ "x$ADV_BOND_SUP" = "xTRUE" ]; then
EXTIFACE=`/sbin/getcfg "Network" "Default GW Device" -d "eth0"`
INTIFACE=$EXTIFACE
fi
ckeck_gateway_is_exit()
{
/bin/ip route | /bin/grep "^default" > /tmp/nasroute.org
while read LINE
do
interface=`/bin/echo $LINE | /bin/cut -d ' ' -f 5`
gateway=`/bin/echo $LINE | /bin/cut -d ' ' -f 3`
if [ x"${interface}" = x"${INTIFACE}" ] ; then
/bin/echo " get $interface gateway = $gateway"
/bin/ping -q -c 3 $gateway 1>>/dev/null 2>>/dev/null
[ $? = 0 ] && IS_GATEWAY_EXIT=1
break;
fi
done < /tmp/nasroute.org
/bin/rm -f /tmp/nasroute.org 2>>/dev/null
}
case "$1" in
start)
[ `/sbin/getcfg "UPnP Service" "Enable" -d TRUE` = "FALSE" ] && exit 1
[ -f "$UPNPD" ] || exit 1
if [ -f /var/lock/subsys/upnpd ]; then
/bin/echo "upnpd service seems already be running"
exit 1
fi
echo -n "Starting upnpd:"
ckeck_gateway_is_exit
if [ $IS_GATEWAY_EXIT = 0 ];then
/bin/echo "Gateway failed. UPnP Discovery Service stopped."
#/sbin/write_log "[Network Service Discovery] Gateway failed. UPnP Discovery Service stopped." 2
exit 1
fi
[ "$ALLOW_MULTICAST" = "TRUE" ] && route add -net 239.0.0.0 netmask 255.0.0.0 $INTIFACE
/sbin/gen_upnp_desc
[ $? != 0 ] && exit 1
/sbin/daemon_mgr upnpd start "$UPNPD $EXTIFACE $INTIFACE"
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/upnpd
echo "."
;;
stop)
echo -n "Shutting down upnpd services:"
/sbin/daemon_mgr upnpd stop "$UPNPD $EXTIFACE $INTIFACE"
/bin/sleep 5
/sbin/pidof upnpd
[ $? = 0 ] && /bin/kill `/sbin/pidof upnpd`
/bin/rm -f /var/lock/subsys/upnpd
echo "."
;;
restart)
$0 stop
/bin/sleep 5
$0 start
;;
*)
echo "Usage: /etc/init.d/upnpd.sh {start|stop|restart}"
exit 1
esac
exit $RETVAL