|
@ -2,14 +2,118 @@ |
|
|
# Copyright (C) 2006-2011 OpenWrt.org |
|
|
# Copyright (C) 2006-2011 OpenWrt.org |
|
|
|
|
|
|
|
|
START=50 |
|
|
START=50 |
|
|
|
|
|
STOP=10 |
|
|
|
|
|
|
|
|
SERVICE_USE_PID=1 |
|
|
|
|
|
|
|
|
USE_PROCD=1 |
|
|
|
|
|
|
|
|
start() { |
|
|
|
|
|
service_start /usr/sbin/xinetd -pidfile /var/run/xinetd.pid |
|
|
|
|
|
|
|
|
PROG="/usr/sbin/xinetd" |
|
|
|
|
|
|
|
|
|
|
|
PIDFILE="/var/run/xinetd.pid" |
|
|
|
|
|
|
|
|
|
|
|
CONF_FILE="/etc/config/xinetd" |
|
|
|
|
|
GENERATED_CONF_FILE="/var/run/xinetd.conf" |
|
|
|
|
|
|
|
|
|
|
|
ServiceEntry="false" |
|
|
|
|
|
ListName="" |
|
|
|
|
|
ListValue="" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# redefined callback for sections when calling config_load |
|
|
|
|
|
config_cb() { |
|
|
|
|
|
|
|
|
|
|
|
# write out last list option (from last section) if exist and clear |
|
|
|
|
|
if [ "$ListName" != "" ]; then |
|
|
|
|
|
echo -e "\t$ListName = $ListVals" >> $GENERATED_CONF_FILE |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
ListName="" |
|
|
|
|
|
ListVals="" |
|
|
|
|
|
|
|
|
|
|
|
# "close" last service entry (from last section) if exist |
|
|
|
|
|
if [ "$ServiceEntry" = "true" ]; then # at least one service section "opened" |
|
|
|
|
|
echo "}" >> $GENERATED_CONF_FILE # "close" open service section in config |
|
|
|
|
|
ServiceEntry="false" |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
if [ $# -eq 0 ]; then # end of config reached |
|
|
|
|
|
return |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
local type="$1" |
|
|
|
|
|
local name="$2" |
|
|
|
|
|
|
|
|
|
|
|
if [ "$type" = "service" ]; then |
|
|
|
|
|
|
|
|
|
|
|
if [ "$ServiceEntry" = "true" ]; then |
|
|
|
|
|
echo "}" >> $GENERATED_CONF_FILE # "close" previous opened service section in config |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
ServiceEntry="true" |
|
|
|
|
|
|
|
|
|
|
|
echo "" >> $GENERATED_CONF_FILE |
|
|
|
|
|
echo "service $name" >> $GENERATED_CONF_FILE |
|
|
|
|
|
echo "{" >> $GENERATED_CONF_FILE |
|
|
|
|
|
|
|
|
|
|
|
# redefined callback for options when calling config_load |
|
|
|
|
|
option_cb() { |
|
|
|
|
|
local option="$1" |
|
|
|
|
|
local value="$2" |
|
|
|
|
|
|
|
|
|
|
|
[ -n "$value" ] && echo -e "\t$option = $value" >> $GENERATED_CONF_FILE |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# redefined callback for lists when calling config_load |
|
|
|
|
|
list_cb() { |
|
|
|
|
|
local name="$1" |
|
|
|
|
|
local value="$2" |
|
|
|
|
|
|
|
|
|
|
|
# write out last list option if new list starts |
|
|
|
|
|
if [ "$ListName" != "" -a "$ListName" != "$name" ]; then |
|
|
|
|
|
|
|
|
|
|
|
echo -e "\t$ListName = $ListVals" >> $GENERATED_CONF_FILE |
|
|
|
|
|
|
|
|
|
|
|
ListName="" |
|
|
|
|
|
ListVals="" |
|
|
|
|
|
fi |
|
|
|
|
|
|
|
|
|
|
|
# new list option |
|
|
|
|
|
if [ -z "$ListName" ]; then |
|
|
|
|
|
|
|
|
|
|
|
ListName="$name" |
|
|
|
|
|
ListVals="$value" |
|
|
|
|
|
else |
|
|
|
|
|
ListVals="$ListVals $value" |
|
|
|
|
|
fi |
|
|
|
|
|
} |
|
|
|
|
|
else # ignore non 'service' sections |
|
|
|
|
|
return 0 |
|
|
|
|
|
fi |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
stop() { |
|
|
|
|
|
service_stop /usr/sbin/xinetd |
|
|
|
|
|
|
|
|
generate_config() { |
|
|
|
|
|
echo "# Auto-generated config file from $CONF_FILE" > $GENERATED_CONF_FILE |
|
|
|
|
|
echo "# Do not edit, changes to this file will be lost on upgrades" >> $GENERATED_CONF_FILE |
|
|
|
|
|
echo "" >> $GENERATED_CONF_FILE |
|
|
|
|
|
|
|
|
|
|
|
echo "defaults" >> $GENERATED_CONF_FILE |
|
|
|
|
|
echo "{" >> $GENERATED_CONF_FILE |
|
|
|
|
|
echo "" >> $GENERATED_CONF_FILE |
|
|
|
|
|
echo "}" >> $GENERATED_CONF_FILE |
|
|
|
|
|
echo "" >> $GENERATED_CONF_FILE |
|
|
|
|
|
echo "includedir /etc/xinetd.d" >> $GENERATED_CONF_FILE |
|
|
|
|
|
|
|
|
|
|
|
config_load xinetd |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
start_service() { |
|
|
|
|
|
generate_config |
|
|
|
|
|
|
|
|
|
|
|
procd_open_instance |
|
|
|
|
|
procd_set_param command $PROG -f $GENERATED_CONF_FILE -pidfile $PIDFILE |
|
|
|
|
|
procd_set_param respawn |
|
|
|
|
|
procd_close_instance |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
service_triggers() { |
|
|
|
|
|
procd_add_reload_trigger "xinetd" |
|
|
|
|
|
} |