#!/bin/sh
# Start/stop/restart the dropbear secure shell server:

dropbear_start() {
  # Create host keys if needed.
  if [ ! -f /etc/dropbear/dropbear_rsa_host_key ]; then
    /usr/bin/dropbearkey -t rsa -f /etc/dropbear/dropbear_rsa_host_key
  fi
  if [ ! -f /etc/dropbear/dropbear_dss_host_key ]; then
    /usr/bin/dropbearkey -t dss -f /etc/dropbear/dropbear_dss_host_key
  fi
  if [ ! -f /etc/dropbear/dropbear_ecdsa_host_key ]; then
    /usr/bin/dropbearkey -t ecdsa -f /etc/dropbear/dropbear_ecdsa_host_key
  fi
  /usr/sbin/dropbear 2>> /var/log/dropbear.log
}

dropbear_stop() {
  killall dropbear
}

dropbear_restart() {
  if [ -r /var/run/dropbear.pid ]; then
    echo "WARNING: killing listener process only.  To kill every dropbear process, you "
    echo "         must use 'rc.dropbear stop'.  'rc.dropbear restart' kills only the "
    echo "         parent dropbear to allow an admin logged in through dropbear to use "
    echo "         'rc.dropbear restart' without being cut off.  If dropbear has been "
    echo "         upgraded, new connections will now use the new version, which should "
    echo "         be a safe enough approach." 
    kill $(cat /var/run/dropbear.pid)
  else
    echo "WARNING: There does not appear to be a parent instance of dropbear running."
    echo "         If you really want to kill all running instances of dropbear "
    echo "         (including any sessions currently in use), run "
    echo "         '/etc/rc.d/rc.dropbear stop' instead."
    exit 1
  fi
  sleep 1
  dropbear_start
}

case "$1" in
'start')
  dropbear_start
  ;;
'stop')
  dropbear_stop
  ;;
'restart')
  dropbear_restart
  ;;
*)
  echo "usage $0 start|stop|restart"
esac