#! /bin/sh
#
# chkconfig: 2345 20 20
#
PATH=/bin:/usr/bin:/sbin:/usr/sbin
set -e

# /etc/init.d/ssh: start and stop the OpenBSD "secure shell(tm)" daemon

# Autokeygen control is located in /etc/default/ssh
. /etc/default/ssh

# Uncomment the following line to allow the script to autogenerate
# the required keys if they are not on the system.
#AUTOKEYGEN=yes

test -x /usr/sbin/sshd || exit 0
( /usr/sbin/sshd -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0

if test -f /etc/default/ssh; then
    . /etc/default/ssh
fi

check_for_no_start() {
    # forget it if we're trying to start, and /etc/ssh/sshd_not_to_be_run exists
    if [ -e /etc/ssh/sshd_not_to_be_run ]; then 
	echo "OpenBSD Secure Shell server not in use (/etc/ssh/sshd_not_to_be_run)"
	exit 0
    fi
}

check_privsep_dir() {
    # Create the PrivSep empty dir if necessary
    if [ ! -d /var/run/sshd ]; then
	mkdir /var/run/sshd
	chmod 0755 /var/run/sshd
    fi
}

check_config() {
    if [ ! -e /etc/ssh/sshd_not_to_be_run ]; then
	/usr/sbin/sshd -t || exit 1
    fi
}
setupKeys()
{
	if [ ! -s /etc/ssh/ssh_host_key ]; then
		/usr/bin/ssh-keygen -b 1024 -f /etc/ssh/ssh_host_key -N "" -t rsa1
               chmod 700 /etc/ssh/ssh_host_key
	fi
	if [ ! -s /etc/ssh/ssh_host_rsa_key ]; then
		/usr/bin/ssh-keygen -d -f /etc/ssh/ssh_host_rsa_key -N "" -t rsa
               chmod 700 /etc/ssh/ssh_host_rsa_key
	fi
	if [ ! -s /etc/ssh/ssh_host_dsa_key ]; then
		/usr/bin/ssh-keygen -d -f /etc/ssh/ssh_host_dsa_key -N "" -t dsa
               chmod 700 /etc/ssh/ssh_host_dsa_key
	fi
}

checkKeys()
{
	if [ ! -s /etc/ssh/ssh_host_key ]; then
		echo "failed - no ssh_host_key!"
		exit 1
	fi
	if [ ! -s /etc/ssh/ssh_host_rsa_key ]; then
		echo "failed - no ssh_host_rsa_key!"
		exit 1
	fi
	if [ ! -s /etc/ssh/ssh_host_dsa_key ]; then
		echo "failed - no ssh_host_dsa_key!"
		exit 1
	fi
}


case "$1" in
  start)
	check_for_no_start
	check_privsep_dir
	[ "$AUTOKEYGEN" = yes ] && setupKeys
        echo -n "Starting OpenBSD Secure Shell server: "
	checkKeys
	echo -n "sshd"
	start-stop-daemon --start --quiet --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS
        echo "."
	;;
  stop)
        echo -n "Stopping OpenBSD Secure Shell server: sshd"
	start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/sshd.pid
        echo "."
	;;

  reload|force-reload)
	check_for_no_start
	check_config
        echo -n "Reloading OpenBSD Secure Shell server's configuration"
	start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd
	echo "."
	;;

  restart)
	check_config
        echo -n "Restarting OpenBSD Secure Shell server: sshd"
	start-stop-daemon --stop --quiet --oknodo --pidfile /var/run/sshd.pid
	check_for_no_start
	check_privsep_dir
	sleep 2
	start-stop-daemon --start --quiet --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd -- $SSHD_OPTS
	echo "."
	;;

  *)
	echo "Usage: /etc/init.d/ssh {start|stop|reload|force-reload|restart}"
	exit 1
esac

exit 0
