| #!@STARTUP_SCRIPT_SHELL@ |
| # Donated code that was put under PD license. |
| # |
| # Stripped PRNGd out of it for the time being. |
| |
| umask 022 |
| |
| CAT=@CAT@ |
| KILL=@KILL@ |
| |
| prefix=@prefix@ |
| sysconfdir=@sysconfdir@ |
| piddir=@piddir@ |
| |
| SSHD=$prefix/sbin/sshd |
| PIDFILE=$piddir/sshd.pid |
| PidFile=`grep "^PidFile" ${sysconfdir}/sshd_config | tr "=" " " | awk '{print $2}'` |
| [ X$PidFile = X ] || PIDFILE=$PidFile |
| SSH_KEYGEN=$prefix/bin/ssh-keygen |
| HOST_KEY_DSA=$sysconfdir/ssh_host_dsa_key |
| HOST_KEY_RSA=$sysconfdir/ssh_host_rsa_key |
| @COMMENT_OUT_ECC@HOST_KEY_ECDSA=$sysconfdir/ssh_host_ecdsa_key |
| HOST_KEY_ED25519=$sysconfdir/ssh_host_ed25519_key |
| |
| |
| checkkeys() { |
| if [ ! -f $HOST_KEY_DSA ]; then |
| ${SSH_KEYGEN} -t dsa -f ${HOST_KEY_DSA} -N "" |
| fi |
| if [ ! -f $HOST_KEY_RSA ]; then |
| ${SSH_KEYGEN} -t rsa -f ${HOST_KEY_RSA} -N "" |
| fi |
| @COMMENT_OUT_ECC@ if [ ! -f $HOST_KEY_ECDSA ]; then |
| @COMMENT_OUT_ECC@ ${SSH_KEYGEN} -t ecdsa -f ${HOST_KEY_ECDSA} -N "" |
| @COMMENT_OUT_ECC@ fi |
| if [ ! -f $HOST_KEY_ED25519 ]; then |
| ${SSH_KEYGEN} -t ed25519 -f ${HOST_KEY_ED25519} -N "" |
| fi |
| } |
| |
| stop_service() { |
| if [ -r $PIDFILE -a ! -z ${PIDFILE} ]; then |
| PID=`${CAT} ${PIDFILE}` |
| fi |
| if [ ${PID:=0} -gt 1 -a ! "X$PID" = "X " ]; then |
| ${KILL} ${PID} |
| else |
| echo "Unable to read PID file" |
| fi |
| } |
| |
| start_service() { |
| # XXX We really should check if the service is already going, but |
| # XXX we will opt out at this time. - Bal |
| |
| # Check to see if we have keys that need to be made |
| checkkeys |
| |
| # Start SSHD |
| echo "starting $SSHD... \c" ; $SSHD |
| |
| sshd_rc=$? |
| if [ $sshd_rc -ne 0 ]; then |
| echo "$0: Error ${sshd_rc} starting ${SSHD}... bailing." |
| exit $sshd_rc |
| fi |
| echo done. |
| } |
| |
| case $1 in |
| |
| 'start') |
| start_service |
| ;; |
| |
| 'stop') |
| stop_service |
| ;; |
| |
| 'restart') |
| stop_service |
| start_service |
| ;; |
| |
| *) |
| echo "$0: usage: $0 {start|stop|restart}" |
| ;; |
| esac |