#!/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" }