#!/bin/sh /etc/rc.common START=98 STOP=10 USE_PROCD=1 . /usr/lib/configsync_lib.sh PATH_TO_APPLY_EVENT=/usr/bin my_logger() { logger -t configsync "${@}" } service_triggers() { procd_add_reload_trigger_with_argument ${MY_SERVICE_NAME} ${CS_SERVICES_TO_SYNC} } reload_service() { #-------------------------------------------------------------- # event trigger for system config changes -> copy to configsync #-------------------------------------------------------------- my_logger "reload_service: received parameters: $@" SERVICE_ENABLE=$(uci_get ${MY_SERVICE_NAME} global enabled 0) # check if the configsync system configuration has changed for CHANGED_FILE in "$@"; do if [ "${CHANGED_FILE}" = "wireless" ] && [ -f /tmp/cs_omit_wireless ]; then my_logger "reload_service: omitting wireless" update_md5sum wireless rm -f /tmp/cs_omit_wireless fi if [ "${CHANGED_FILE}" = "${MY_SERVICE_NAME}" ]; then my_logger "reload_service: stop/start" stop start fi done if [ ${SERVICE_ENABLE} -eq 1 ]; then # wait until configfiles are not in use wait_stable_config 0 5 # check if other system configurations has changed for SERVICE in ${CS_SERVICES_TO_SYNC}; do if [ -s $CS_SERVICELIST ] || ! check_md5sum ${SERVICE} ; then killall configsync_event_delay.sh ${PATH_TO_APPLY_EVENT}/configsync_event_delay.sh "$@" & break fi done else my_logger "${MY_SERVICE_NAME} service not running -> trigger ignored" fi } start_service() { my_logger "start_service:" if [ ! -f $CS_MD5SUMS ]; then >$CS_MD5SUMS fi if [ ! -f $CS_SERVICELIST ]; then >$CS_SERVICELIST fi if [ ! -f $CS_IMPORTSERVICELIST ]; then >$CS_IMPORTSERVICELIST fi if [ ! -s $CS_TEMP_CONFIG_PATH ]; then mkdir $CS_TEMP_CONFIG_PATH rm -rf $CS_TEMP_CONFIG_PATH/* fi START_SERVICE=$(uci_get ${MY_SERVICE_NAME} global enabled 0) if [ ${START_SERVICE} -ne 0 ]; then ETH_MAC_ADDR=$(cat /sys/class/net/br-lan/address) procd_open_instance procd_set_param command setsid /usr/bin/${MY_SERVICE_NAME}_handler.sh START ${ETH_MAC_ADDR} procd_set_param stdout 1 # forward stdout to logd procd_set_param stderr 1 # same for stderr procd_close_instance fi } stop_service() { /usr/bin/${MY_SERVICE_NAME}_handler.sh STOP }