- #!/bin/sh /etc/rc.common
- # Copyright (C) 2017-2019 Yousong Zhou
-
- START=99
-
- USE_PROCD=1
-
- pservice_list_cb() {
- local val="$1"; shift
- local param="$1"; shift
-
- procd_append_param "$param" "$val"
- }
-
- pservice_instance() {
- local cfg="$1"
-
- [ "$disabled" = 0 ] || return 0
- [ -x "$command" ] || {
- echo "$command is not executable" >&2
- return 1
- }
-
- procd_open_instance "$name"
- procd_set_param command "$command"
- procd_set_param stderr "$stderr"
- procd_set_param stdout "$stdout"
- procd_set_param respawn "$respawn_threshold" "$respawn_timeout" "$respawn_maxfail"
- [ -z "$args" ] || config_list_foreach "$cfg" args pservice_list_cb command
- if [ -n "$env" ]; then
- procd_set_param env
- config_list_foreach "$cfg" env pservice_list_cb env
- fi
- if [ -n "$file" ]; then
- procd_set_param file
- config_list_foreach "$cfg" file pservice_list_cb file
- fi
- procd_close_instance
- }
-
- start_service() {
- config_load 'pservice'
- config_foreach validate_pservice_section pservice pservice_instance
- }
-
- service_triggers() {
- procd_add_validation validate_pservice_section
- }
-
- validate_pservice_section() {
- uci_load_validate pservice pservice "$1" "$2" \
- "disabled:bool:0" \
- "name:string" \
- "env:regex('^[a-zA-Z_][a-zA-Z0-9_]*=.*$')" \
- "command:file" \
- "args:string" \
- "stderr:bool:0" \
- "stdout:bool:0" \
- "respawn_threshold:uinteger:3600" \
- "respawn_timeout:uinteger:5" \
- "respawn_maxfail:uinteger:5" \
- "file:string"
- }
|