START=50
USE_PROCD=1
-udpxy_parse() {
+append_arg() {
local cfg="$1"
+ local var="$2"
+ local opt="$3"
+ local def="$4"
+ local val
- local cfg_verbose
- local cfg_status
- local cfg_mcsub_renew
- local cfg_bind
- local cfg_port
- local cfg_source
- local cfg_max_clients
- local cfg_log_file
- local cfg_buffer_size
- local cfg_buffer_messages
- local cfg_buffer_time
- local cfg_nice_increment
- local cfg_mcsub_renew
-
- config_get_bool cfg_verbose $cfg 'verbose' 0
- config_get_bool cfg_status $cfg 'status' 1
- config_get cfg_bind $cfg 'bind'
- config_get cfg_port $cfg 'port' '4022'
- config_get cfg_source $cfg 'source'
- config_get cfg_max_clients $cfg 'max_clients'
- config_get cfg_log_file $cfg 'log_file'
- config_get cfg_buffer_size $cfg 'buffer_size'
- config_get cfg_buffer_messages $cfg 'buffer_messages'
- config_get cfg_buffer_time $cfg 'buffer_time'
- config_get cfg_nice_increment $cfg 'nice_increment'
- config_get cfg_mcsub_renew $cfg 'mcsub_renew'
+ config_get val "$cfg" "$var"
+ [ -n "$val" -o -n "$def" ] && procd_append_param command $opt "${val:-$def}"
+}
+
+append_bool() {
+ local cfg="$1"
+ local var="$2"
+ local opt="$3"
+ local def="$4"
+ local val
+
+ config_get_bool val "$cfg" "$var" "$def"
+ [ "$val" = 1 ] && procd_append_param command "$opt"
+}
+
+start_instance() {
+ local cfg="$1"
+ local aux
+
+ config_get_bool aux "$cfg" 'disabled' '0'
+ [ "$aux" = 1 ] && return 1
procd_open_instance
procd_set_param command /usr/bin/udpxy
- procd_append_param command -T -p $cfg_port
- [ "$cfg_verbose" -eq 1 ] && procd_append_param command -v
- [ "$cfg_status" -eq 1 ] && procd_append_param command -S
- [ ! -z "$cfg_bind" ] && procd_append_param command -a $cfg_bind
- [ ! -z "$cfg_source" ] && procd_append_param command -m $cfg_source
- [ ! -z "$cfg_max_clients" ] && procd_append_param command -c $cfg_max_clients
- [ ! -z "$cfg_log_file" ] && procd_append_param command -l $cfg_log_file
- [ ! -z "$cfg_buffer_size" ] && procd_append_param command -B $cfg_buffer_size
- [ ! -z "$cfg_buffer_messages" ] && procd_append_param command -R $cfg_buffer_messages
- [ ! -z "$cfg_buffer_time" ] && procd_append_param command -H $cfg_buffer_time
- [ ! -z "$cfg_nice_increment" ] && procd_append_param command -n $cfg_nice_increment
- [ ! -z "$cfg_mcsub_renew" ] && procd_append_param command -M $cfg_mcsub_renew
-
- procd_set_param respawn
+ procd_append_param command "-T"
+
+ append_bool "$cfg" verbose "-V"
+ append_bool "$cfg" status "-S"
+ append_arg "$cfg" bind "-a"
+ append_arg "$cfg" port "-p"
+ append_arg "$cfg" source "-m"
+ append_arg "$cfg" max_clients "-c"
+ append_arg "$cfg" log_file "-l"
+ append_arg "$cfg" buffer_size "-B"
+ append_arg "$cfg" buffer_messages "-R"
+ append_arg "$cfg" buffer_time "-H"
+ append_arg "$cfg" nice_increment "-n"
+ append_arg "$cfg" mcsub_renew "-M"
+
+ config_get_bool aux "$cfg" 'respawn' '0'
+ [ "$aux" = 1 ] && procd_set_param respawn
+
procd_close_instance
}
+service_triggers() {
+ procd_add_reload_trigger "udpxy"
+}
+
start_service() {
config_load udpxy
- config_foreach udpxy_parse udpxy
+ config_foreach start_instance udpxy
}