aboutsummaryrefslogtreecommitdiff
path: root/net/openssh/files/sshd.init
blob: a75daae4cd3f9229be0183c505d266f6c7aa6ec1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org

START=50
STOP=50

USE_PROCD=1
PROG=/usr/sbin/sshd

start_service() {
	for type in rsa ecdsa ed25519; do {
		# check for keys
		key=/etc/ssh/ssh_host_${type}_key
		[ ! -f $key ] && {
			# generate missing keys
			[ -x /usr/bin/ssh-keygen ] && {
				/usr/bin/ssh-keygen -N '' -t $type -f $key 2>&- >&-
			}
		}
	}; done
	mkdir -m 0700 -p /var/empty

	local lport=`grep ^Port /etc/ssh/sshd_config | cut -d " " -f 2`
	[ -z $lport ] && lport=22

	procd_open_instance
	procd_add_mdns "ssh" "tcp" "$lport"
	procd_set_param command $PROG -D
	procd_close_instance
}

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
}