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

# Make sure the dropbearkey progam exists
[ -f /usr/bin/dropbearkey ] || exit 0

start_counter() {
	# increase boot counter
	COUNTER_FILE="/tmp/start_cnt_sshd"
	START_COUNTER=1
	if [ -f "$COUNTER_FILE" ];
	then
		read -r START_COUNTER < $COUNTER_FILE
		START_COUNTER=$((START_COUNTER+1))
	fi
	echo "$START_COUNTER" > $COUNTER_FILE
}

start() {
 	echo -n "Starting dropbear sshd: "
	# Make sure dropbear directory exists
	if [ ! -d /etc/dropbear ] ; then
		mkdir -p /etc/dropbear
	fi
	mkdir -p /usr/etc/dropbear
	# Check for the Dropbear RSA key
	if [ ! -f /etc/dropbear/dropbear_rsa_host_key ] ; then
		echo -n "generating rsa key... "
		/usr/bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key > /dev/null 2>&1
		cp /etc/dropbear/dropbear_rsa_host_key /usr/etc/dropbear
	fi

	# Check for the Dropbear DSS key
	if [ ! -f /etc/dropbear/dropbear_dss_host_key ] ; then
		echo -n "generating dsa key... "
		/usr/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key > /dev/null 2>&1
		cp /etc/dropbear/dropbear_dss_host_key /usr/etc/dropbear
	fi
	umask 077
	start-stop-daemon -S -q -p /var/run/dropbear.pid --exec /usr/sbin/dropbear
	ret=$?
	if [ $ret -eq 0 ]; then
		start_counter
		echo "OK"
	elif [ $ret -eq 1 ]; then
		echo "Failed (already running?)"
	else
		echo "Failed"
	fi
}

stop() {
	echo -n "Stopping dropbear sshd: "
	start-stop-daemon -K -q -p /var/run/dropbear.pid
	if [ $? -eq 0 ]; then
		echo "OK"
	else
		echo "Failed"
	fi
}

restart() {
	stop
	start
}

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

exit $?

