nixpkgs/pkgs/servers/ssh-script/sshd
Armijn Hemel 304f3fbe9d some small changes...probably the way it is done now (declaring the
dependencies, such as "networking" in Nix expressions) is not entirely
right, at least, trying to start them from for example this SSH script is
not the right way. A cleaner solution is being developed :)

svn path=/nixpkgs/trunk/; revision=5034
2006-03-14 13:44:28 +00:00

161 lines
2.9 KiB
Bash
Executable file

#!@bash@/bin/bash
#
# Init file for OpenSSH server daemon
#
# chkconfig: 2345 55 25
# description: OpenSSH server daemon
#
# processname: sshd
# config: /etc/ssh/ssh_host_key
# config: /etc/ssh/ssh_host_key.pub
# config: /etc/ssh/ssh_random_seed
# config: /etc/ssh/sshd_config
# pidfile: /var/run/sshd.pid
# source function library
source @initscripts@/functions
# pull in sysconfig settings
[ -f /etc/sysconfig/sshd ] && . /etc/sysconfig/sshd
RETVAL=0
prog="sshd"
softdeps="@softdeps@"
# Some functions to make the below more readable
KEYGEN=@sshd@/bin/ssh-keygen
SSHD=@sshd@/sbin/sshd
RSA1_KEY=/etc/ssh/ssh_host_key
RSA_KEY=/etc/ssh/ssh_host_rsa_key
DSA_KEY=/etc/ssh/ssh_host_dsa_key
PID_FILE=/var/run/sshd.pid
OPTIONS="-h $DSA_KEY -h RSA_KEY -h RSA1_KEY"
do_rsa1_keygen() {
if [ ! -s $RSA1_KEY ]; then
echo -n $"Generating SSH1 RSA host key: "
if $KEYGEN -q -t rsa1 -f $RSA1_KEY -C '' -N '' >&/dev/null; then
@coreutils@/bin/chmod 600 $RSA1_KEY
@coreutils@/bin/chmod 644 $RSA1_KEY.pub
success $"RSA1 key generation"
echo
else
failure $"RSA1 key generation"
echo
exit 1
fi
fi
}
do_rsa_keygen() {
if [ ! -s $RSA_KEY ]; then
echo -n $"Generating SSH2 RSA host key: "
if $KEYGEN -q -t rsa -f $RSA_KEY -C '' -N '' >&/dev/null; then
@coreutils@/bin/chmod 600 $RSA_KEY
@coreutils@/bin/chmod 644 $RSA_KEY.pub
success $"RSA key generation"
echo
else
failure $"RSA key generation"
echo
exit 1
fi
fi
}
do_dsa_keygen() {
if [ ! -s $DSA_KEY ]; then
echo -n $"Generating SSH2 DSA host key: "
if $KEYGEN -q -t dsa -f $DSA_KEY -C '' -N '' >&/dev/null; then
@coreutils@/bin/chmod 600 $DSA_KEY
@coreutils@/bin/chmod 644 $DSA_KEY.pub
success $"DSA key generation"
echo
else
failure $"DSA key generation"
echo
exit 1
fi
fi
}
do_restart_sanity_check()
{
$SSHD -t
RETVAL=$?
if [ ! "$RETVAL" = 0 ]; then
failure $"Configuration file or keys are invalid"
echo
fi
}
startService()
{
# Create keys if necessary
do_rsa1_keygen
do_rsa_keygen
do_dsa_keygen
echo -n $"Starting $prog:"
#@initscripts@/sbin/initlog -c "$SSHD $OPTIONS" && success || failure
$SSHD $OPTIONS
RETVAL=$?
[ "$RETVAL" = 0 ] && @coreutils@/bin/touch /var/lock/subsys/sshd
echo
}
stopService()
{
echo -n $"Stopping $prog:"
#killproc $SSHD -TERM
echo "blaat"
@coreutils@/bin/kill `@coreutils@/bin/cat /var/run/sshd.pid`
RETVAL=$?
[ "$RETVAL" = 0 ] && @coreutils@/bin/rm -f /var/lock/subsys/sshd
echo
}
reload()
{
echo -n $"Reloading $prog:"
killproc $SSHD -HUP
RETVAL=$?
echo
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
reload)
reload
;;
condrestart)
if [ -f /var/lock/subsys/sshd ] ; then
do_restart_sanity_check
if [ "$RETVAL" = 0 ] ; then
stop
# avoid race
sleep 3
start
fi
fi
;;
status)
status $SSHD
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}"
RETVAL=1
esac
exit $RETVAL