#!/bin/sh
#
# Starts dropbear sshd.
#

# Make sure this load is used for test
[ -f /tmp/DEBUG ] || exit 0

start() {
	# Make sure dropbear directory exists.
	#  /etc/dropbear links to /tmp/dropbear, which we can write to.
	if mkdir -p /config/dropbear; then
		ln -sf /config/dropbear /tmp
	else
		mkdir -p /tmp/dropbear
	fi

	# Check for the dropbear keys
	umask 077
	K1=/etc/dropbear/dropbear_rsa_host_key
	K2=/etc/dropbear/dropbear_dss_host_key
	if ! dropbearkey -y -f $K1 >/dev/null 2>&1; then
		[ -e "$K1" ] && echo "BUG: $K1 existed, but invalid!"
		rm -f $K1
		dropbearkey -t rsa -f $K1
	fi
	if ! dropbearkey -y -f $K2 >/dev/null 2>&1; then
		[ -e "$K2" ] && echo "BUG: $K2 existed, but invalid!"
		rm -f $K2
		dropbearkey -t dss -f $K2
	fi

	babysit 60 dropbear -s -F -E 2>&1 | logos dropbear &
}
stop() {
	# we could use pkill dropbear here, but then it would kill running
	# ssh sessions, which is not what we want.  So use the pidfile
	# instead.  But we do want to make sure the babysitter stays dead.
	pkillwait -f 'babysit [0-9]+ dropbear'
	start-stop-daemon -K -q -p /var/run/dropbear.pid
}
restart() {
	stop
	start
}

case "$1" in
  start)
  	start
	;;
  stop)
  	stop
	;;
  restart|reload)
  	restart
	;;
  *)
	echo "Usage: $0 {start|stop|restart}"
	exit 1
esac
