sync dropbear init script with whiterussian, fix locking and add config integration...
[openwrt/openwrt.git] / package / dropbear / files / dropbear.init
1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2006 OpenWrt.org
3 # Copyright (C) 2006 Carlos Sobrinho
4
5 config_cb() {
6 local cfg="$CONFIG_SECTION"
7 local nopasswd
8 local type
9 config_get cfgtype "$cfg" TYPE
10
11 case "$cfgtype" in
12 dropbear)
13 config_get passauth $cfg PasswordAuth
14 config_get port $cfg Port
15
16 case "$passauth" in
17 no|off|disabled|0) nopasswd=1;;
18 esac
19 DROPBEAR_ARGS="${port:+-p $port} ${nopasswd:+-s}"
20 ;;
21 esac
22 }
23
24 start() {
25 for keytype in rsa dss; do
26 # check for keys
27 key=/tmp/dropbear/dropbear_${keytype}_host_key
28 [ ! -f $key ] && {
29 # generate missing keys
30 mkdir -p /tmp/dropbear
31 [ -x /usr/bin/dropbearkey ] && {
32 /usr/bin/dropbearkey -t $keytype -f $key 2>&- >&- && exec /etc/rc.common "$initscript" start
33 } &
34 exit 0
35 }
36 done
37
38 lock /tmp/.switch2jffs
39 mkdir -p /etc/dropbear
40 mv /tmp/dropbear/dropbear_* /etc/dropbear/
41 lock -u /tmp/.switch2jffs
42
43 chown root /etc/dropbear
44 chmod 0700 /etc/dropbear
45 config_load dropbear
46 /usr/sbin/dropbear $DROPBEAR_ARGS
47 }
48
49 stop() {
50 killall dropbear
51 }