#!/bin/sh /etc/rc.common
-# Copyright (C) 2006 OpenWrt.org
+# Copyright (C) 2006-2011 OpenWrt.org
+
START=50
+STOP=50
+ESSENTIAL_PROCESSES="ssh sshd"
+
+SERVICE_USE_PID=1
+
start() {
for type in rsa dsa; do {
[ ! -f $key ] && {
# generate missing keys
[ -x /usr/bin/ssh-keygen ] && {
- /usr/bin/ssh-keygen -N '' -t $type -f $key 2>&- >&- && exec /etc/rc.common "$initscript" start
- } &
- exit 0
+ /usr/bin/ssh-keygen -N '' -t $type -f $key 2>&- >&-
+ }
}
}; done
- mkdir -p /var/empty
- /usr/sbin/sshd
+ user_exists sshd 22 || user_add sshd 22 22 sshd /var/empty
+ group_exists sshd 22 || group_add sshd 22
+ mkdir -m 0700 -p /var/empty
+ service_start /usr/sbin/sshd
}
stop() {
- killall sshd
+ service_stop /usr/sbin/sshd
+}
+
+shutdown() {
+ local pid
+ local pids
+ local pid_mine
+
+ stop
+
+ # kill active clients
+ pid_mine="$$"
+ pids="$(pidof sshd)"
+ for pid in $pids; do
+ [ "$pid" = "$pid_mine" ] && continue
+ [ -e "/proc/$pid/stat" ] && kill $pid
+ done
}