procd: convert services to the new validation api

Signed-off-by: John Crispin <blogic@openwrt.org>

SVN-Revision: 38787
This commit is contained in:
John Crispin 2013-11-13 10:49:41 +00:00
parent 130d7de07f
commit 1f93857092
2 changed files with 67 additions and 72 deletions

View File

@ -12,8 +12,6 @@ PIDCOUNT=0
EXTRA_COMMANDS="killclients" EXTRA_COMMANDS="killclients"
EXTRA_HELP=" killclients Kill ${NAME} processes except servers and yourself" EXTRA_HELP=" killclients Kill ${NAME} processes except servers and yourself"
dropbear_instance()
{
append_ports() append_ports()
{ {
local ifname="$1" local ifname="$1"
@ -34,54 +32,48 @@ dropbear_instance()
done done
} }
validate_section_dropbear()
{
uci_validate_section dropbear dropbear "${1}" \
'PasswordAuth:bool:1' \
'enable:bool:1' \
'Interface:string' \
'GatewayPorts:integer:0' \
'RootPasswordAuth:bool:1' \
'RootLogin:bool:1' \
'rsakeyfile:file' \
'dsskeyfile:file' \
'BannerFile:file' \
'Port:list(port):22'
return $?
}
local section="$1" dropbear_instance()
{
local PasswordAuth enable Interface GatewayPorts \
RootPasswordAuth RootLogin rsakeyfile \
dsskeyfile BannerFile Port
# check if section is enabled (default) validate_section_dropbear "${1}" || {
local enabled echo "validation failed"
config_get_bool enabled "${section}" enable 1 return 1
[ "${enabled}" -eq 0 ] && return 1 }
# increase pid file count to handle multiple instances correctly [ "${enable}" = "0" ] && return 1
PIDCOUNT="$(( ${PIDCOUNT} + 1))" PIDCOUNT="$(( ${PIDCOUNT} + 1))"
local pid_file="/var/run/${NAME}.${PIDCOUNT}.pid" local pid_file="/var/run/${NAME}.${PIDCOUNT}.pid"
procd_open_instance procd_open_instance
procd_set_param command "$PROG" -F -P "$pid_file" procd_set_param command "$PROG" -F -P "$pid_file"
[ "${PasswordAuth}" -eq 0 ] && procd_append_param command -s
# prepare parameters (initialise with pid file) [ "${GatewayPorts}" -eq 1 ] && procd_append_param command -a
local val [ "${RootPasswordAuth}" -eq 0 ] && procd_append_param command -g
[ "${RootLogin}" -eq 0 ] && procd_append_param command -w
# A) password authentication [ -n "${rsakeyfile}" ] && procd_append_param command -r "${rsakeyfile}"
config_get_bool val "${section}" PasswordAuth 1 [ -n "${dsskeyfile}" ] && procd_append_param command -d "${dsskeyfile}"
[ "${val}" -eq 0 ] && procd_append_param command -s [ -n "${BannerFile}" ] && procd_append_param command -b "${BannerFile}"
[ -n "${interface}" ] && network_get_device interface "${interface}"
# B) listen interface and port append_ports "${interface}" "${Port}"
local port
local interface
config_get interface "${section}" Interface
[ -n "$interface" ] && network_get_device interface "$interface"
config_get port "${section}" Port 22
append_ports "$interface" "$port"
# C) banner file
config_get val "${section}" BannerFile
[ -f "${val}" ] && procd_append_param command -b "${val}"
# D) gatewayports
config_get_bool val "${section}" GatewayPorts 0
[ "${val}" -eq 1 ] && procd_append_param command -a
# E) root password authentication
config_get_bool val "${section}" RootPasswordAuth 1
[ "${val}" -eq 0 ] && procd_append_param command -g
# F) root login
config_get_bool val "${section}" RootLogin 1
[ "${val}" -eq 0 ] && procd_append_param command -w
# G) host keys
config_get val "${section}" rsakeyfile
[ -f "${val}" ] && procd_append_param command -r "${val}"
config_get val "${section}" dsskeyfile
[ -f "${val}" ] && procd_append_param command -d "${val}"
procd_close_instance procd_close_instance
} }
@ -123,6 +115,7 @@ start_service()
service_triggers() service_triggers()
{ {
procd_add_reload_trigger "dropbear" procd_add_reload_trigger "dropbear"
procd_add_validation validate_section_dropbear
} }
killclients() killclients()

View File

@ -6,26 +6,27 @@ START=98
USE_PROCD=1 USE_PROCD=1
PROG=/usr/sbin/ntpd PROG=/usr/sbin/ntpd
validate_ntp_section() {
uci_validate_section system timeserver "${1}" \
'server:list(string)' 'enable_server:bool:0'
}
start_service() { start_service() {
local peers local server enable_server peer
local args="-n"
local enable_server
config_load system validate_ntp_section ntp || {
config_get peers ntp server echo "validation failed"
config_get_bool enable_server ntp enable_server 0 return 1
}
[ $enable_server -eq 0 -a -z "$peers" ] && return [ $enable_server -eq 0 -a -z "$server" ] && return
procd_open_instance procd_open_instance
procd_set_param command "$PROG" -n procd_set_param command "$PROG" -n
[ $enable_server -ne 0 ] && procd_append_param command -l [ "$enable_server" = "1" ] && procd_append_param command -l
[ -n "$peers" ] && { for peer in "$server"; do
local peer
for peer in $peers; do
procd_append_param command -p $peer procd_append_param command -p $peer
done done
}
procd_set_param respawn procd_set_param respawn
procd_close_instance procd_close_instance
} }
@ -33,4 +34,5 @@ start_service() {
service_triggers() service_triggers()
{ {
procd_add_reload_trigger "system" procd_add_reload_trigger "system"
procd_add_validation validate_ntp_section
} }