#!/bin/sh /etc/rc.common
#
-START=90
+START=30
USE_PROCD=1
-EXTRA_COMMANDS="suspend resume query"
+EXTRA_COMMANDS="suspend resume query status"
EXTRA_HELP=" suspend Suspend adblock processing
resume Resume adblock processing
- query <DOMAIN> Query active blocklists for specific domain"
+ query <DOMAIN> Query active blocklists for specific domains
+ status Print runtime information"
adb_init="/etc/init.d/adblock"
adb_script="/usr/bin/adblock.sh"
boot()
{
- local list iface="$(uci -q get adblock.global.adb_iface)"
-
- for name in ${iface}
- do
- list="${list} network.interface.${name}"
- done
- ubus -t 60 wait_for network.interface ${list} 2>/dev/null
+ adb_boot=1
rc_procd start_service
}
start_service()
{
- if [ $("${adb_init}" enabled; printf ${?}) -eq 0 ]
+ if [ $("${adb_init}" enabled; printf "%u" ${?}) -eq 0 ]
then
+ if [ -n "${adb_boot}" ]
+ then
+ local trigger="$(uci_get adblock.global.adb_trigger)"
+ if [ "${trigger}" != "timed" ]
+ then
+ return 0
+ fi
+ fi
procd_open_instance "adblock"
procd_set_param command "${adb_script}" "${@}"
procd_set_param stdout 1
fi
}
+reload_service()
+{
+ rc_procd start_service reload
+}
+
stop_service()
{
rc_procd "${adb_script}" stop
+ rc_procd start_service
}
restart()
rc_procd "${adb_script}" query "${1}"
}
+status()
+{
+ rc_procd "${adb_script}" status
+}
+
service_triggers()
{
- local iface="$(uci -q get adblock.global.adb_iface)"
+ local trigger="$(uci_get adblock.global.adb_trigger)"
+ local delay="$(uci_get adblock.global.adb_triggerdelay)"
- for name in ${iface}
- do
- procd_add_interface_trigger "interface.*.up" "${name}" "${adb_init}" start
- done
- procd_add_config_trigger "config.change" "adblock" "${adb_init}" start
+ if [ "${trigger}" != "none" ] && [ "${trigger}" != "timed" ]
+ then
+ PROCD_RELOAD_DELAY=$((${delay:=1} * 1000))
+ procd_add_interface_trigger "interface.*.up" "${trigger}" "${adb_init}" start
+ fi
+ procd_add_reload_trigger "adblock"
}