|
@@ -60,6 +60,43 @@ hk_config__keyfile()
|
|
|
hk_config 'keyfile' "$1"
|
|
hk_config 'keyfile' "$1"
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+hk_generate_as_needed()
|
|
|
|
|
+{
|
|
|
|
|
+ local kdir kgen ktype tdir kcount tfile
|
|
|
|
|
+ kdir='/etc/dropbear'
|
|
|
|
|
+
|
|
|
|
|
+ kgen=''
|
|
|
|
|
+ for ktype in ecdsa rsa; do
|
|
|
|
|
+ hk_verify "${kdir}/dropbear_${ktype}_host_key" && continue
|
|
|
|
|
+
|
|
|
|
|
+ kgen="${kgen} ${ktype}"
|
|
|
|
|
+ done
|
|
|
|
|
+
|
|
|
|
|
+ [ -z "${kgen}" ] && return
|
|
|
|
|
+
|
|
|
|
|
+ tdir=$(mktemp -d); chmod 0700 "${tdir}"
|
|
|
|
|
+
|
|
|
|
|
+ kcount=0
|
|
|
|
|
+ for ktype in ${kgen}; do
|
|
|
|
|
+ tfile="${tdir}/dropbear_${ktype}_host_key"
|
|
|
|
|
+
|
|
|
|
|
+ if ! _dropbearkey -t ${ktype} -f "${tfile}"; then
|
|
|
|
|
+ # unsupported key type
|
|
|
|
|
+ rm -f "${tfile}"
|
|
|
|
|
+ continue
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ kcount=$((kcount+1))
|
|
|
|
|
+ done
|
|
|
|
|
+
|
|
|
|
|
+ if [ ${kcount} -ne 0 ]; then
|
|
|
|
|
+ mkdir -p "${kdir}"; chmod 0700 "${kdir}"; chown root "${kdir}"
|
|
|
|
|
+ mv -f "${tdir}/"* "${kdir}/"
|
|
|
|
|
+ fi
|
|
|
|
|
+
|
|
|
|
|
+ rm -rf "${tdir}"
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
append_ports()
|
|
append_ports()
|
|
|
{
|
|
{
|
|
|
local ipaddrs="$1"
|
|
local ipaddrs="$1"
|
|
@@ -142,29 +179,6 @@ dropbear_instance()
|
|
|
procd_close_instance
|
|
procd_close_instance
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-keygen()
|
|
|
|
|
-{
|
|
|
|
|
- for keytype in rsa; do
|
|
|
|
|
- # check for keys
|
|
|
|
|
- key=dropbear/dropbear_${keytype}_host_key
|
|
|
|
|
- [ -f /tmp/$key -o -s /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
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
load_interfaces()
|
|
load_interfaces()
|
|
|
{
|
|
{
|
|
|
config_get interface "$1" Interface
|
|
config_get interface "$1" Interface
|
|
@@ -181,7 +195,7 @@ boot()
|
|
|
|
|
|
|
|
start_service()
|
|
start_service()
|
|
|
{
|
|
{
|
|
|
- [ -s /etc/dropbear/dropbear_rsa_host_key ] || keygen
|
|
|
|
|
|
|
+ hk_generate_as_needed
|
|
|
|
|
|
|
|
. /lib/functions.sh
|
|
. /lib/functions.sh
|
|
|
. /lib/functions/network.sh
|
|
. /lib/functions/network.sh
|