mirror of
https://github.com/openwrt/openwrt.git
synced 2025-04-14 14:37:33 +00:00
dropbear: rewrite init script startup logic to handle both host key files
Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
This commit is contained in:
parent
6145e59881
commit
5eb7864aad
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user