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

me="[$(printf $0 | xargs basename)]"
# Make sure the dropbearkey progam exists
[ -f /usr/bin/dropbearkey ] || exit 0

DSS_FILE="/opt/userdata/dropbear_dss_host_key"
RSA_FILE="/opt/userdata/dropbear_rsa_host_key"

SSH_ENABLED="/opt/userdata/.ssh-enabled"

# pidof returns 1 (one) in case dropbear is NOT running
# and 0 (zero) in case it is.
DROPBEAR_IS_NOT_RUNNING=1
pidof dropbear > /dev/null
IS_DROPBEAR_RUNNING=$?

start() {
  printf "${me} Starting dropbear sshd: \\n"

  # Check for the Dropbear RSA key
  if [ ! -f "${RSA_FILE}" ]; then
    printf "${me} generating rsa key... \\n"
    /usr/bin/dropbearkey -t rsa -f $RSA_FILE > /dev/null 2>&1
  fi

  # Check for the Dropbear DSS key
  if [ ! -f "${DSS_FILE}" ]; then
    printf "${me} generating dsa key... \\n"
    /usr/bin/dropbearkey -t dss -f $DSS_FILE > /dev/null 2>&1
  fi

  printf "${me} starting daemon \\n"
  start-stop-daemon -S -q -p /var/run/dropbear.pid --exec /usr/sbin/dropbear -- -d $DSS_FILE -r $RSA_FILE
  printf "${me} starting daemon done. \\n"
}

stop() {
  printf "${me} Stopping dropbear sshd. \\n"
  start-stop-daemon -K -q -p /var/run/dropbear.pid
  killall dropbear
  printf "${me} Stopping dropbear sshd OK\\n"
}

restart() {
  stop
  start
}

disable() {
  rm -f ${SSH_ENABLED}
}

enable() {
  touch ${SSH_ENABLED}
}

# Sets root password to 'root'
reset_passwd() {
  install -m 600 /opt/gira/etc/devicestack/shadow.template.root /var/etc/shadow
}

case "$1" in
  start)
    if [ -f "${SSH_ENABLED}" ]; then
      start
    fi
    ;;
  stop)
    stop
    ;;
  restart|reload)
    restart
    ;;
  start-once)
	if [ "${IS_DROPBEAR_RUNNING}" -eq "${DROPBEAR_IS_NOT_RUNNING}" ]; then
		start
	fi
    ;;
  enable)
    enable
    ;;
  reset-passwd)
    reset_passwd
    ;;
  disable)
    disable
    ;;
  *)
    printf "%s Usage: %s {start|stop|restart|start-once|enable|disable}\\n" "$me" "$0"
    exit 1
esac

exit $?
