X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fopenwrt.git;a=blobdiff_plain;f=package%2Fnetwork%2Fservices%2Fdropbear%2Ffiles%2Fdropbear.init;h=3d8cb2ca5e372121e3f1c29fa5aca3d49e6c5a10;hp=01d88afd17d563acf4ffc7580133e69e9194e507;hb=d413c75d24f9fe231b992c47b1367b095f4571fc;hpb=8a7a9394700455150c3c7a372565b96294ed05e4 diff --git a/package/network/services/dropbear/files/dropbear.init b/package/network/services/dropbear/files/dropbear.init index 01d88afd17..3d8cb2ca5e 100755 --- a/package/network/services/dropbear/files/dropbear.init +++ b/package/network/services/dropbear/files/dropbear.init @@ -41,7 +41,8 @@ validate_section_dropbear() 'Port:list(port):22' \ 'SSHKeepAlive:uinteger:300' \ 'IdleTimeout:uinteger:0' \ - 'mdns:uinteger:1' + 'MaxAuthTries:uinteger:3' \ + 'mdns:bool:1' } dropbear_instance() @@ -49,7 +50,7 @@ dropbear_instance() local PasswordAuth enable Interface GatewayPorts \ RootPasswordAuth RootLogin rsakeyfile \ BannerFile Port SSHKeepAlive IdleTimeout \ - mdns ipaddrs + MaxAuthTries mdns ipaddrs validate_section_dropbear "${1}" || { echo "validation failed" @@ -78,7 +79,9 @@ dropbear_instance() append_ports "${ipaddrs}" "${Port}" [ "${IdleTimeout}" -ne 0 ] && procd_append_param command -I "${IdleTimeout}" [ "${SSHKeepAlive}" -ne 0 ] && procd_append_param command -K "${SSHKeepAlive}" + [ "${MaxAuthTries}" -ne 0 ] && procd_append_param command -T "${MaxAuthTries}" [ "${mdns}" -ne 0 ] && procd_add_mdns "ssh" "tcp" "$Port" "daemon=dropbear" + procd_set_param respawn procd_close_instance } @@ -105,6 +108,14 @@ keygen() chmod 0700 /etc/dropbear } +load_interfaces() +{ + config_get interface "$1" Interface + config_get enable "$1" enable 1 + + [ "${enable}" = "1" ] && interfaces=" ${interface} ${interfaces}" +} + start_service() { [ -s /etc/dropbear/dropbear_rsa_host_key ] || keygen @@ -118,7 +129,19 @@ start_service() service_triggers() { - procd_add_reload_trigger "dropbear" + local interfaces + + procd_add_config_trigger "config.change" "dropbear" /etc/init.d/dropbear reload + + config_load "${NAME}" + config_foreach load_interfaces dropbear + + [ -n "${interfaces}" ] && { + for n in $interfaces ; do + procd_add_interface_trigger "interface.*" $n /etc/init.d/dropbear reload + done + } + procd_add_validation validate_section_dropbear }