X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/5ac8df09f8034b9c51f02906df7bd3b2904060bc..b33efd033e4c3d8fe87acce450c267840a28492b:/package/dropbear/files/dropbear.init

diff --git a/package/dropbear/files/dropbear.init b/package/dropbear/files/dropbear.init
index 88fc28849..b629c1e48 100755
--- a/package/dropbear/files/dropbear.init
+++ b/package/dropbear/files/dropbear.init
@@ -1,16 +1,56 @@
-#!/bin/sh
+#!/bin/sh /etc/rc.common
+# Copyright (C) 2006 OpenWrt.org
+# 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
+}