projects
/
openwrt
/
staging
/
jogo.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
procd: Add wrapper for uci_validate_section()
[openwrt/staging/jogo.git]
/
package
/
network
/
services
/
dropbear
/
files
/
dropbear.init
diff --git
a/package/network/services/dropbear/files/dropbear.init
b/package/network/services/dropbear/files/dropbear.init
index 1653efbdb38b1037c3630595b903c839887a4e52..2ea637ee1a7cc3f5c32092865d6d0a29f45d6cc0 100755
(executable)
--- a/
package/network/services/dropbear/files/dropbear.init
+++ b/
package/network/services/dropbear/files/dropbear.init
@@
-2,7
+2,7
@@
# Copyright (C) 2006-2010 OpenWrt.org
# Copyright (C) 2006 Carlos Sobrinho
# Copyright (C) 2006-2010 OpenWrt.org
# Copyright (C) 2006 Carlos Sobrinho
-START=
50
+START=
19
STOP=50
USE_PROCD=1
STOP=50
USE_PROCD=1
@@
-29,7
+29,7
@@
append_ports()
validate_section_dropbear()
{
validate_section_dropbear()
{
- uci_
validate_section dropbear dropbear "${1}
" \
+ uci_
load_validate dropbear dropbear "$1" "$2
" \
'PasswordAuth:bool:1' \
'enable:bool:1' \
'Interface:string' \
'PasswordAuth:bool:1' \
'enable:bool:1' \
'Interface:string' \
@@
-41,22
+41,23
@@
validate_section_dropbear()
'Port:list(port):22' \
'SSHKeepAlive:uinteger:300' \
'IdleTimeout:uinteger:0' \
'Port:list(port):22' \
'SSHKeepAlive:uinteger:300' \
'IdleTimeout:uinteger:0' \
- 'mdns:uinteger:1'
+ 'MaxAuthTries:uinteger:3' \
+ 'RecvWindowSize:uinteger:0' \
+ 'mdns:bool:1'
}
dropbear_instance()
{
}
dropbear_instance()
{
- local PasswordAuth enable Interface GatewayPorts \
- RootPasswordAuth RootLogin rsakeyfile \
- BannerFile Port SSHKeepAlive IdleTimeout \
- mdns ipaddrs
+ local ipaddrs
-
validate_section_dropbear "${1}"
|| {
+
[ "$2" = 0 ]
|| {
echo "validation failed"
return 1
}
[ -n "${Interface}" ] && {
echo "validation failed"
return 1
}
[ -n "${Interface}" ] && {
+ [ -n "${BOOT}" ] && return 0
+
network_get_ipaddrs_all ipaddrs "${Interface}" || {
echo "interface ${Interface} has no physdev or physdev has no suitable ip"
return 1
network_get_ipaddrs_all ipaddrs "${Interface}" || {
echo "interface ${Interface} has no physdev or physdev has no suitable ip"
return 1
@@
-78,6
+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}"
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}"
+ [ "${RecvWindowSize}" -gt 0 -a "${RecvWindowSize}" -le 1048576 ] && \
+ procd_append_param command -W "${RecvWindowSize}"
[ "${mdns}" -ne 0 ] && procd_add_mdns "ssh" "tcp" "$Port" "daemon=dropbear"
procd_set_param respawn
procd_close_instance
[ "${mdns}" -ne 0 ] && procd_add_mdns "ssh" "tcp" "$Port" "daemon=dropbear"
procd_set_param respawn
procd_close_instance
@@
-109,7
+113,15
@@
keygen()
load_interfaces()
{
config_get interface "$1" Interface
load_interfaces()
{
config_get interface "$1" Interface
- interfaces=" ${interface} ${interfaces}"
+ config_get enable "$1" enable 1
+
+ [ "${enable}" = "1" ] && interfaces=" ${interface} ${interfaces}"
+}
+
+boot()
+{
+ BOOT=1
+ start "$@"
}
start_service()
}
start_service()
@@
-120,7
+132,7
@@
start_service()
. /lib/functions/network.sh
config_load "${NAME}"
. /lib/functions/network.sh
config_load "${NAME}"
- config_foreach
dropbear_instance dropbear
+ config_foreach
validate_section_dropbear dropbear dropbear_instance
}
service_triggers()
}
service_triggers()
@@
-132,7
+144,7
@@
service_triggers()
config_load "${NAME}"
config_foreach load_interfaces dropbear
config_load "${NAME}"
config_foreach load_interfaces dropbear
- [ -n "${interfaces}" ] & {
+ [ -n "${interfaces}" ] &
&
{
for n in $interfaces ; do
procd_add_interface_trigger "interface.*" $n /etc/init.d/dropbear reload
done
for n in $interfaces ; do
procd_add_interface_trigger "interface.*" $n /etc/init.d/dropbear reload
done
@@
-141,6
+153,11
@@
service_triggers()
procd_add_validation validate_section_dropbear
}
procd_add_validation validate_section_dropbear
}
+shutdown() {
+ # close all open connections
+ killall dropbear
+}
+
killclients()
{
local ignore=''
killclients()
{
local ignore=''