X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/5ac8df09f8034b9c51f02906df7bd3b2904060bc..8acecec3078028d566151d6b43c4619c1cf72c81:/package/dropbear/files/dropbear.init diff --git a/package/dropbear/files/dropbear.init b/package/dropbear/files/dropbear.init index 88fc28849..f671df787 100755 --- a/package/dropbear/files/dropbear.init +++ b/package/dropbear/files/dropbear.init @@ -1,16 +1,57 @@ -#!/bin/sh +#!/bin/sh /etc/rc.common +# Copyright (C) 2006 OpenWrt.org +START=50 +# Copyright (C) 2006 Carlos Sobrinho -for type in rsa dss; do { - # check for keys - key=/etc/dropbear/dropbear_${type}_host_key - [ ! -f $key ] && { - # generate missing keys - mkdir -p /etc/dropbear - [ -x /usr/bin/dropbearkey ] && { - /usr/bin/dropbearkey -t $type -f $key 2>&- >&- && exec $0 $* - } & - exit 0 - } -}; done +config_cb() { + local cfg="$CONFIG_SECTION" + local nopasswd + local cfgt + config_get cfgt "$cfg" TYPE -/usr/sbin/dropbear + case "$cfgt" in + dropbear) + config_get passauth $cfg PasswordAuth + config_get port $cfg Port + + case "$passauth" in + no|off|disabled|0) nopasswd=1;; + esac + DROPBEAR_ARGS="${nopasswd:+-s }${port:+-p $port}" + ;; + 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 +}