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
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
|
|
}
|