|
|
|
@ -60,6 +60,43 @@ hk_config__keyfile()
|
|
|
|
|
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()
|
|
|
|
|
{
|
|
|
|
|
local ipaddrs="$1"
|
|
|
|
@ -142,29 +179,6 @@ dropbear_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()
|
|
|
|
|
{
|
|
|
|
|
config_get interface "$1" Interface
|
|
|
|
@ -181,7 +195,7 @@ boot()
|
|
|
|
|
|
|
|
|
|
start_service()
|
|
|
|
|
{
|
|
|
|
|
[ -s /etc/dropbear/dropbear_rsa_host_key ] || keygen
|
|
|
|
|
hk_generate_as_needed
|
|
|
|
|
|
|
|
|
|
. /lib/functions.sh
|
|
|
|
|
. /lib/functions/network.sh
|
|
|
|
|