#!/bin/sh /etc/rc.common START=65 STOP=10 USE_PROCD=1 PROG=/usr/sbin/bbfdmd BBFDM_JSON_INPUT="/etc/bbfdm/input.json" BBFDM_TEMP_DIR="/tmp/bbfdm" . /usr/share/libubox/jshn.sh log() { echo "${@}"|logger -t bbfdmd.init -p info } validate_bbfdm_bbfdmd_section() { uci_validate_section bbfdm bbfdmd "bbfdmd" \ 'enable:bool:true' \ 'sock:string' \ 'debug:bool:false' \ 'loglevel:uinteger:1' \ 'refresh_time:uinteger:0' \ 'transaction_timeout:uinteger:30' \ 'subprocess_level:uinteger' } configure_bbfdmd() { local enable debug sock local jlog jrefresh jtimeout jlevel config_load bbfdm validate_bbfdm_bbfdmd_section || { log "Validation of bbfdmd section failed" return 1; } [ "${enable}" -eq 0 ] && return 0 if [ -f "${BBFDM_JSON_INPUT}" ]; then echo "$(jq --arg log ${loglevel} --arg tran ${transaction_timeout} --arg refresh ${refresh_time} --arg level ${subprocess_level} '.daemon.config += {"loglevel": $log, "refresh_time": $refresh, "transaction_timeout": $tran, "subprocess_level": $level}' ${BBFDM_JSON_INPUT})" > "${BBFDM_TEMP_DIR}/input.json" fi procd_set_param command ${PROG} if [ "${debug}" -eq 1 ]; then procd_set_param stdout 1 procd_set_param stderr 1 fi if [ -f "${sock}" ]; then procd_append_param command -s "${sock}" fi } start_service() { mkdir -p ${BBFDM_TEMP_DIR} procd_open_instance "bbfdm" configure_bbfdmd procd_set_param respawn procd_close_instance "bbfdm" } service_triggers() { procd_add_reload_trigger "bbfdm" }