Rev 39 | Rev 59 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 2 | magnus | 1 | #!/bin/sh | 
| 2 | # | ||
| 3 | # lsh-utils Start/stop secure shell server. | ||
| 4 | # Written by Timshel Knoll <timshel@debian.org> | ||
| 5 | # Updated by Stefan Pfetzing <dreamind@dreamind.de> | ||
| 39 | magnus | 6 | # Updated by Magnus Holmgren <magnus@debian.org> | 
| 2 | magnus | 7 | |
| 8 | ### BEGIN INIT INFO | ||
| 39 | magnus | 9 | # Provides: lsh-server | 
| 2 | magnus | 10 | # Required-Start: $local_fs $remote_fs $syslog $named $network | 
| 11 | # Required-Stop: $local_fs $remote_fs $syslog $named $network | ||
| 39 | magnus | 12 | # X-Start-Before: cman drbd smokeping vz | 
| 13 | # X-Stop-After: cman drbd smokeping vz | ||
| 2 | magnus | 14 | # Default-Start: 2 3 4 5 | 
| 15 | # Default-Stop: 0 1 6 | ||
| 16 | # Short-Description: lsh secure shell server | ||
| 17 | ### END INIT INFO | ||
| 18 | |||
| 19 | PATH=/sbin:/bin:/usr/sbin:/usr/bin | ||
| 20 | DAEMON=/usr/sbin/lshd | ||
| 21 | NAME=lshd | ||
| 22 | DESC="secure shell v2 server" | ||
| 23 | CONFIG=/etc/default/lsh-server | ||
| 39 | magnus | 24 | PIDFILE=/var/run/$NAME.pid | 
| 2 | magnus | 25 | |
| 26 | RANDOM_SEED="/var/spool/lsh/yarrow-seed-file" | ||
| 27 | HOST_KEY="/etc/lsh_host_key" | ||
| 28 | |||
| 29 | test -f $DAEMON || exit 0 | ||
| 30 | |||
| 39 | magnus | 31 | . /lib/lsb/init-functions | 
| 2 | magnus | 32 | |
| 39 | magnus | 33 | set +e | 
| 34 | |||
| 2 | magnus | 35 | if [ -r "$CONFIG" ]; then | 
| 36 |    . "$CONFIG" | ||
| 37 | fi | ||
| 38 | |||
| 39 | if [ x"$LSHD_PORT" = x ]; then | ||
| 40 | LSHD_PORT="22" | ||
| 41 | fi | ||
| 42 | |||
| 43 | case "$ENABLE_SFTP" in | ||
| 44 | true|y*|Y*) | ||
| 8 | magnus | 45 | SFTP_FLAG="--subsystems sftp=/usr/lib/lsh-server/sftp-server" | 
| 2 | magnus | 46 |     ;; | 
| 47 | *) | ||
| 48 | SFTP_FLAG="" | ||
| 49 |     ;; | ||
| 50 | esac | ||
| 51 | |||
| 39 | magnus | 52 | create_seed_and_key() { | 
| 2 | magnus | 53 | if [ ! -f "$RANDOM_SEED" ]; then | 
| 39 | magnus | 54 |       log_action_begin_msg "Creating lsh random seed file (this only needs to be done once)" | 
| 2 | magnus | 55 | DIR=$(dirname "$RANDOM_SEED") | 
| 39 | magnus | 56 | if install -d -m 700 "$DIR" && | 
| 57 | dd if=/dev/random "of=$RANDOM_SEED" bs=1 count=32 2>/dev/null && | ||
| 58 | chmod 600 "$RANDOM_SEED"; then | ||
| 59 |           log_action_end_msg 0 | ||
| 60 |       else | ||
| 61 |           log_action_end_msg 1 | ||
| 62 |           exit 1 | ||
| 63 | fi | ||
| 2 | magnus | 64 | fi | 
| 65 | |||
| 66 | if [ ! -f "$HOST_KEY" ]; then | ||
| 39 | magnus | 67 |       log_action_begin_msg "Creating lsh host key (this only needs to be done once)" | 
| 68 | lsh-keygen --server | lsh-writekey --server --output-file "$HOST_KEY" | ||
| 2 | magnus | 69 | |
| 70 | if [ ! -f "$HOST_KEY" ]; then | ||
| 39 | magnus | 71 |          log_action_end_msg 1 | 
| 72 |          exit 1 | ||
| 2 | magnus | 73 | fi | 
| 74 | |||
| 39 | magnus | 75 |       log_action_end_msg 0 | 
| 2 | magnus | 76 | fi | 
| 39 | magnus | 77 | } | 
| 2 | magnus | 78 | |
| 39 | magnus | 79 | |
| 2 | magnus | 80 | case "$1" in | 
| 81 |   start) | ||
| 39 | magnus | 82 | create_seed_and_key | 
| 83 | [ "$VERBOSE" = no ] || log_daemon_msg "Starting $DESC" "$NAME" | ||
| 84 | start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --exec $DAEMON \ | ||
| 85 | -- --daemonic --port "$LSHD_PORT" $SFTP_FLAG | ||
| 45 | magnus | 86 | ret=$? | 
| 87 | [ "$VERBOSE" = no ] || log_end_msg $ret | ||
| 2 | magnus | 88 |         ;; | 
| 89 | stop|graceful-stop) | ||
| 39 | magnus | 90 | [ "$VERBOSE" = no ] || log_daemon_msg "Gracefully stopping $DESC" "$NAME" | 
| 2 | magnus | 91 | # Signal 1 causes the "old" lsh to close up shop on its port, but | 
| 92 | # keeps running until all active connections have been closed | ||
| 39 | magnus | 93 | start-stop-daemon --stop --retry HUP/1 --quiet --pidfile $PIDFILE \ | 
| 94 | --oknodo --exec $DAEMON | ||
| 45 | magnus | 95 | ret=$? | 
| 96 | [ "$VERBOSE" = no ] || log_end_msg $ret | ||
| 2 | magnus | 97 |         ;; | 
| 98 | restart|force-reload) | ||
| 39 | magnus | 99 | create_seed_and_key | 
| 100 | [ "$VERBOSE" = no ] || log_daemon_msg "Restarting $DESC" "$NAME" | ||
| 101 | start-stop-daemon --stop --retry HUP/1 --quiet --pidfile $PIDFILE \ | ||
| 102 | --oknodo --exec $DAEMON && | ||
| 103 | start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON \ | ||
| 104 | -- --daemonic --port "$LSHD_PORT" $SFTP_FLAG | ||
| 45 | magnus | 105 | ret=$? | 
| 106 | [ "$VERBOSE" = no ] || log_end_msg $ret | ||
| 2 | magnus | 107 |         ;; | 
| 39 | magnus | 108 |   status) | 
| 109 | status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $? | ||
| 110 |         ;; | ||
| 2 | magnus | 111 | *) | 
| 112 | echo "Usage: /etc/init.d/lsh-utils {start|stop|restart|force-reload}" >&2 | ||
| 39 | magnus | 113 |         exit 3 | 
| 2 | magnus | 114 |         ;; | 
| 115 | esac |