#!/sbin/runscript

MINISSDPD="/usr/sbin/minissdpd"
PIDFILE="/var/run/minissdpd.pid"

ROUTE="/bin/route"
IFCONFIG="/bin/ifconfig"

depend() {
	need net
	before miniupnpd
}

checkconfig() {
	if [ "x$MINISSDPD_IFACE" != "x" ]; then
		interfaces=$($IFCONFIG | grep "Link encap" | awk '{ print $1 }')
		for interface in $MINISSDPD_IFACE; do
			hit=0
			for available in $interfaces; do
				if [ "$interface" = "$available" ]; then
					hit=1
				fi
			done
			if [ $hit = 0 ]; then
				ewarn "Interface $interface not available"
				return 1
			fi
		done
	fi
	return 0
}

start() {
	ebegin "Starting minissdpd"
	checkconfig || return 1

	if [ "x$MINISSDPD_IFACE" = "x" ]; then
		# We assume that the default interface has an IP address
		interface=$($ROUTE | grep default | awk -- '{ print $8 }')
		IP="$($IFCONFIG $interface | grep 'inet' | sed 's/^.*inet \([0-9.]\+\).\+/\1/')"
		ARGS="-i $IP "
	else
		ARGS=""
		for interface in $MINISSDPD_IFACE; do
			# An interface may not have an IP address, so don't listen if it doesn't
			IP="$($IFCONFIG $interface | grep 'inet' | sed 's/^.*inet \([0-9.]\+\).\+/\1/')"
			if [ "x$IP" != "x" ]; then
				ARGS+="-i $IP "
			fi
		done
	fi

	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $MINISSDPD -- $ARGS
	eend $?
}

stop() {
	ebegin "Stopping minissdpd"
	start-stop-daemon --stop --pidfile "${PIDFILE}"
	eend $?
}
