blob: 1b644859d35690b05a8859a1f07acb9909c25df4 [file] [log] [blame]
#!/bin/sh
# manage miniupnpd and minissdpd, the IGD/NAT-DMP daemons
# this script must be restarted ($0 restart) if the wan address or interface changes
# this script should be run before catawampus (S85catawampus) since catawampus may restart it
# if /tmp/upnpd-enabled is not present, it will be a no-op (catawampus manages that file)
# dhclient-script runs restart upnpd
enabler=/tmp/upnpd-enabled
start()
{
if [ ! -f "$enabler" ]; then
echo "$enabler does not exist, refusing to start."
return
fi
if [ ! -s /config/upnp.uuid ]; then
uuidgen >/config/upnp.uuid
fi
uuid=$(cat /config/upnp.uuid)
sn=$(serial)
model=$(cat /etc/platform)
if [ -e /config/nickname ]; then
friendly=$(cat /config/nickname)
else
friendly=$(uname -n)
fi
lanipv4=$(ip -4 -o addr show br0)
lanipv4=${lanipv4#* inet }
lanipv4=${lanipv4%%/*}
version="Google Fiber $(cat /etc/version) UPnP/1.1 MiniUPnPd"
wan=$(activewan)
if [ -z "$wan" ]; then
echo "no wan interface is active, refusing to start."
return
fi
set -- \
miniupnpd -i "$wan" -a "$lanipv4" -u "$uuid" \
-s "$sn" -m "$model" -z "$friendly" -N -d -V "$version"
echo "Running:" "$@"
babysit 10 "$@" 2>&1 | logos upnpd &
}
stop()
{
killpid /var/run/miniupnpd.pid
iptables -F MINIUPNPD
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
isrunning)
if [ -f /var/run/miniupnpd.pid ]; then
exit 0
else
exit 1
fi
;;
*)
echo "Usage: $0 {start|stop|restart|isrunning}"
exit 1
;;
esac
exit 0