summaryrefslogtreecommitdiffstats
path: root/package/dropbear/files/dropbear.init
blob: ef69e9017603105f9a5d7c56e42d05b2c2fe7ba5 (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
47
48
49
50
51
52
53
54
55
56
#!/bin/sh /etc/rc.common
# Copyright (C) 2006 OpenWrt.org
# Copyright (C) 2006 Carlos Sobrinho

config_cb() {
	local cfg="$CONFIG_SECTION"
	local nopasswd
	local type
	config_get cfgtype "$cfg" TYPE

	case "$cfgtype" in
		dropbear)
			config_get passauth $cfg PasswordAuth
			config_get port $cfg Port

			case "$passauth" in
				no|off|disabled|0) nopasswd=1;;
			esac
			DROPBEAR_ARGS="${port:+-p $port} ${nopasswd:+-s}"
		;;
	esac
}

keygen() {
	for keytype in rsa dss; do
		# check for keys
		key=dropbear/dropbear_${keytype}_host_key
		[ -f /tmp/$key -o -f /etc/$key ] || {
			# generate missing keys
			mkdir -p /tmp/dropbear
			[ -x /usr/bin/dropbearkey ] && {
				/usr/bin/dropbearkey -t $keytype -f /tmp/$key 2>&- >&- && exec /etc/rc.common "$initscript" start
			} &
		exit 0
		}
	done

	lock /tmp/.switch2jffs
	mkdir -p /etc/dropbear
	mv /tmp/dropbear/dropbear_* /etc/dropbear/
	lock -u /tmp/.switch2jffs
	chown root /etc/dropbear
	chmod 0700 /etc/dropbear
}

start() {
	[ -f /etc/dropbear/dropbear_rsa_host_key -a \
	  -f /etc/dropbear/dropbear_dss_host_key ] || keygen
	
	config_load dropbear
	/usr/sbin/dropbear $DROPBEAR_ARGS
}

stop() {
	killall dropbear
}