From: Victor Martinez <pitillo@ono.com>
Date: Sun, 6 Mar 2016 19:09:52 +0000 (+0000)
Subject: openssh: updated sshd script
X-Git-Url: http://gitweb/?a=commitdiff_plain;h=2084faa4f18d8e9d5709da3d5c473e3af0d82a68;p=crossrootfs.git

openssh: updated sshd script
---

diff --git a/openssh/sshd b/openssh/sshd
index 11a1c26..7abaf02 100755
--- a/openssh/sshd
+++ b/openssh/sshd
@@ -3,37 +3,50 @@
 # /etc/rc.d/sshd: start/stop ssh daemon
 #
 
-case $1 in
-start)
-	if [ ! -f /etc/ssh/ssh_host_key ]; then
-		/usr/bin/ssh-keygen -t rsa1 -N "" -f /etc/ssh/ssh_host_key > /dev/null
+SSD=/sbin/start-stop-daemon
+PROG=/usr/sbin/sshd
+PID=/var/run/sshd.pid
+KEYGEN=/usr/bin/ssh-keygen
+SSHDIR=/etc/ssh
+
+create_keys() {
+	if [ ! -f $SSHDIR/ssh_host_rsa_key ]; then
+		$KEYGEN -q -t rsa -b 2048 -N "" -f $SSHDIR/ssh_host_rsa_key
 	fi
-	if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
-		/usr/bin/ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key > /dev/null
+	if [ ! -f $SSHDIR/ssh_host_dsa_key ]; then
+		$KEYGEN -q -t dsa -N "" -f $SSHDIR/ssh_host_dsa_key
 	fi
-	if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then
-		/usr/bin/ssh-keygen -t dsa -N "" -f /etc/ssh/ssh_host_dsa_key > /dev/null
+	if [ ! -f $SSHDIR/ssh_host_ecdsa_key ]; then
+		$KEYGEN -q -t ecdsa -b 521 -N "" -f $SSHDIR/ssh_host_ecdsa_key
 	fi
-	if [ ! -f /etc/ssh/ssh_host_ecdsa_key ]; then
-		/usr/bin/ssh-keygen -t ecdsa -N "" -f /etc/ssh/ssh_host_ecdsa_key > /dev/null
+	if [ ! -f $SSHDIR/ssh_host_ed25519_key ]; then
+		$KEYGEN -q -t ed25519 -N "" -f $SSHDIR/ssh_host_ed25519_key
 	fi
-	/usr/sbin/sshd
+}
+
+case $1 in
+start)
+	create_keys
+	$SSD --start --pidfile $PID --exec $PROG
 	;;
 stop)
-	if [ -f /var/run/sshd.pid ]; then
-		kill $(< /var/run/sshd.pid)
-		rm -f /var/run/sshd.pid
-	else
-		killall -q /usr/sbin/sshd
-	fi
+	$SSD --stop --retry 10 --pidfile $PID
 	;;
 restart)
 	$0 stop
-	sleep 2
 	$0 start
 	;;
+status)
+	$SSD --status --pidfile $PID
+	case $? in
+	0) echo "$PROG is running with pid $(cat $PID)" ;;
+	1) echo "$PROG is not running but the pid file $PID exists" ;;
+	3) echo "$PROG is not running" ;;
+	4) echo "Unable to determine the program status" ;;
+	esac
+	;;
 *)
-	echo "usage: $0 [start|stop|restart]"
+	echo "usage: $0 [start|stop|restart|status]"
 	;;
 esac