diff options
Diffstat (limited to 'sshd_support_debian')
-rwxr-xr-x | sshd_support_debian | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/sshd_support_debian b/sshd_support_debian new file mode 100755 index 0000000..4b9577f --- /dev/null +++ b/sshd_support_debian @@ -0,0 +1,165 @@ +#! /bin/sh + +### BEGIN INIT INFO +# Provides: sshd_support +# Required-Start: $remote_fs $syslog +# Required-Stop: $remote_fs $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 1 +# Short-Description: OpenBSD Secure Shell server for RapidTunneling (tm) +### END INIT INFO + +set -e + +# /etc/init.d/ssh: start and stop the OpenBSD "secure shell(tm)" daemon for RapidTunneling (tm) + +test -x /usr/sbin/sshd || exit 0 +( /usr/sbin/sshd -\? 2>&1 | grep -q OpenSSH ) 2>/dev/null || exit 0 + +export SSHD_OOM_ADJUST=-17 +if test -f /etc/default/ssh; then + . /etc/default/ssh +fi + +. /lib/lsb/init-functions + +PID_FILE=/var/run/sshd_support.pid +SSHD_OPTS="$SSHD_OPTS -f /etc/ssh/sshd_support_config -o 'PidFile $PID_FILE'" +if [ -n "$2" ]; then + SSHD_OPTS="$SSHD_OPTS $2" +fi + +# Are we running from init? +run_by_init() { + ([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ] +} + +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 + if [ "$1" = log_end_msg ]; then + log_end_msg 0 + fi + if ! run_by_init; then + log_action_msg "OpenBSD Secure Shell server not in use (/etc/ssh/sshd_not_to_be_run)" + fi + exit 0 + fi +} + +check_dev_null() { + if [ ! -c /dev/null ]; then + if [ "$1" = log_end_msg ]; then + log_end_msg 1 || true + fi + if ! run_by_init; then + log_action_msg "/dev/null is not a character device!" + fi + exit 1 + 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 +} + +export PATH="${PATH:+$PATH:}/usr/sbin:/sbin" + +case "$1" in + start) + check_privsep_dir + check_for_no_start + check_dev_null + log_daemon_msg "Starting RapidTunneling server" "sshd_support" + if start-stop-daemon --start --quiet --oknodo --pidfile $PID_FILE --exec /usr/sbin/sshd -- $SSHD_OPTS; then + log_end_msg 0 + else + log_end_msg 1 + fi + ;; + stop) + log_daemon_msg "Stopping RapidTunneling server" "sshd_support" + if start-stop-daemon --stop --quiet --oknodo --pidfile $PID_FILE; then + log_end_msg 0 + else + log_end_msg 1 + fi + ;; + + reload|force-reload) + check_for_no_start + check_config + log_daemon_msg "Reloading RapidTunneling server's configuration" "sshd_support" + if start-stop-daemon --stop --signal 1 --quiet --oknodo --pidfile $PID_FILE --exec /usr/sbin/sshd; then + log_end_msg 0 + else + log_end_msg 1 + fi + ;; + + restart) + check_privsep_dir + check_config + log_daemon_msg "Restarting RapidTunneling server" "sshd_support" + start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $PID_FILE + check_for_no_start log_end_msg + check_dev_null log_end_msg + if start-stop-daemon --start --quiet --oknodo --pidfile $PID_FILE --exec /usr/sbin/sshd -- $SSHD_OPTS; then + log_end_msg 0 + else + log_end_msg 1 + fi + ;; + + try-restart) + check_privsep_dir + check_config + log_daemon_msg "Restarting RapidTunneling server" "sshd_support" + set +e + start-stop-daemon --stop --quiet --retry 30 --pidfile $PID_FILE + RET="$?" + set -e + case $RET in + 0) + # old daemon stopped + check_for_no_start log_end_msg + check_dev_null log_end_msg + if start-stop-daemon --start --quiet --oknodo --pidfile $PID_FILE --exec /usr/sbin/sshd -- $SSHD_OPTS; then + log_end_msg 0 + else + log_end_msg 1 + fi + ;; + 1) + # daemon not running + log_progress_msg "(not running)" + log_end_msg 0 + ;; + *) + # failed to stop + log_progress_msg "(failed to stop)" + log_end_msg 1 + ;; + esac + ;; + + status) + status_of_proc -p $PID_FILE /usr/sbin/sshd sshd_support && exit 0 || exit $? + ;; + + *) + log_action_msg "Usage: /etc/init.d/sshd_support {start|stop|reload|force-reload|restart|try-restart|status}" + exit 1 +esac + +exit 0 |