6f35672d546e67827ba43cd3afa57c81f711b5eb
[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 }