Subversion Repositories

?revision_form?Rev ?revision_input??revision_submit??revision_endform?

Rev 39 | Rev 61 | 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