openssh: handle multiple ports and simplify init script
[feed/packages.git] / net / openssh / files / sshd.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2006-2011 OpenWrt.org
3
4 START=50
5 STOP=50
6
7 USE_PROCD=1
8 PROG=/usr/sbin/sshd
9
10 start_service() {
11 for type in rsa ecdsa ed25519
12 do
13 # check for keys
14 key=/etc/ssh/ssh_host_${type}_key
15 [ ! -f $key ] && {
16 # generate missing keys
17 [ -x /usr/bin/ssh-keygen ] && {
18 /usr/bin/ssh-keygen -N '' -t $type -f $key 2>&- >&-
19 }
20 }
21 done
22 mkdir -m 0700 -p /var/empty
23
24 local lport=$(awk '/^Port / { print $2; exit }' /etc/ssh/sshd_config)
25 [ -z $lport ] && lport=22
26
27 procd_open_instance
28 procd_add_mdns "ssh" "tcp" "$lport"
29 procd_set_param command $PROG -D
30 procd_close_instance
31 }
32
33 shutdown() {
34 local pid
35
36 stop
37
38 # kill active clients
39 for pid in $(pidof sshd)
40 do
41 [ "$pid" == "$$" ] && continue
42 [ -e "/proc/$pid/stat" ] && kill $pid
43 done
44 }