You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
2.5 KiB
Bash

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