#!/bin/sh /etc/rc.common
|
|
#
|
|
|
|
START=99
|
|
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
|
EXTRA_COMMANDS="toggle cfgup"
|
|
EXTRA_HELP=" toggle Toggle adblocking 'on' or 'off'
|
|
cfgup Update the adblock configuration file"
|
|
|
|
adb_debug=0
|
|
if [ $((adb_debug)) -eq 0 ]
|
|
then
|
|
exec 2>/dev/null
|
|
fi
|
|
adb_pid="${$}"
|
|
adb_script="/usr/bin/adblock-update.sh"
|
|
adb_dnsdir="/tmp/dnsmasq.d"
|
|
adb_dnshidedir="${adb_dnsdir}/.adb_hidden"
|
|
adb_dnsprefix="adb_list"
|
|
adb_pidfile="/var/run/adblock.pid"
|
|
adb_log="$(which logger)"
|
|
adb_uci="$(which uci)"
|
|
|
|
if [ -t 1 ]
|
|
then
|
|
log_parm="-s"
|
|
unset bg_parm
|
|
else
|
|
unset log_parm
|
|
bg_parm="&"
|
|
fi
|
|
|
|
if [ -r "${adb_pidfile}" ]
|
|
then
|
|
"${adb_log}" ${log_parm} -t "adblock[${adb_pid}] error" "adblock service already running ($(cat ${adb_pidfile}))" 2>&1
|
|
exit 255
|
|
fi
|
|
|
|
rm_config()
|
|
{
|
|
local value opt section="${1}" options="adb_src_timestamp adb_src_count"
|
|
for opt in ${options}
|
|
do
|
|
"${adb_uci}" -q delete "adblock.${section}.${opt}"
|
|
done
|
|
}
|
|
|
|
boot()
|
|
{
|
|
return 0
|
|
}
|
|
|
|
start()
|
|
{
|
|
eval "${adb_script}" ${bg_parm}
|
|
return 0
|
|
}
|
|
|
|
restart()
|
|
{
|
|
restart="true"
|
|
stop
|
|
start
|
|
}
|
|
|
|
reload()
|
|
{
|
|
restart="true"
|
|
stop
|
|
start
|
|
}
|
|
|
|
stop()
|
|
{
|
|
cfg_check="$(${adb_uci} -q get "adblock.global.adb_overall_count")"
|
|
if [ -n "${cfg_check}" ] && [ -z "${restart}" ]
|
|
then
|
|
. "/lib/functions.sh"
|
|
config_load adblock
|
|
config_foreach rm_config source
|
|
"${adb_uci}" -q delete "adblock.global.adb_dnstoggle"
|
|
"${adb_uci}" -q delete "adblock.global.adb_overall_count"
|
|
"${adb_uci}" -q delete "adblock.global.adb_percentage"
|
|
"${adb_uci}" -q delete "adblock.global.adb_lastrun"
|
|
"${adb_uci}" -q commit "adblock"
|
|
fi
|
|
fw_check="$(iptables -w -vnL | grep -Fo "adb-")"
|
|
if [ -n "${fw_check}" ] && [ -z "${restart}" ]
|
|
then
|
|
iptables-save -t nat | grep -Fv -- "adb-" | iptables-restore
|
|
iptables-save -t filter | grep -Fv -- "adb-" | iptables-restore
|
|
if [ -n "$(lsmod | grep -F "ip6table_nat")" ]
|
|
then
|
|
ip6tables-save -t nat | grep -Fv -- "adb-" | ip6tables-restore
|
|
ip6tables-save -t filter | grep -Fv -- "adb-" | ip6tables-restore
|
|
fi
|
|
fi
|
|
if [ -d "${adb_dnshidedir}" ]
|
|
then
|
|
find "${adb_dnshidedir}" -maxdepth 1 -type f -name "${adb_dnsprefix}*" -exec mv -f "{}" "${adb_dnsdir}" \;
|
|
fi
|
|
dns_check="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}*" -print -exec rm -f "{}" \;)"
|
|
if [ -n "${dns_check}" ]
|
|
then
|
|
rm -rf "${adb_dnshidedir}"
|
|
/etc/init.d/dnsmasq restart
|
|
fi
|
|
www_check="$(pgrep -f "uhttpd -h /www/adblock")"
|
|
if [ -n "${www_check}" ]
|
|
then
|
|
for pid in ${www_check}
|
|
do
|
|
kill -9 "${pid}"
|
|
done
|
|
fi
|
|
if [ -n "${cfg_check}" ] || [ -n "${fw_check}" ] || [ -n "${dns_check}" ] || [ -n "${www_check}" ]
|
|
then
|
|
"${adb_log}" ${log_parm} -t "adblock[${adb_pid}] info " "all adblock related services stopped" 2>&1
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
toggle()
|
|
{
|
|
if [ "$(${adb_uci} -q get "adblock.global.adb_restricted")" = "1" ]
|
|
then
|
|
adb_uci="$(which true)"
|
|
fi
|
|
if [ -d "${adb_dnshidedir}" ]
|
|
then
|
|
list_dns="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}*" -print)"
|
|
list_dnshide="$(find "${adb_dnshidedir}" -maxdepth 1 -type f -name "${adb_dnsprefix}*" -print)"
|
|
if [ -n "${list_dns}" ]
|
|
then
|
|
mv -f "${adb_dnsdir}/${adb_dnsprefix}"* "${adb_dnshidedir}"
|
|
"${adb_uci}" -q set "adblock.global.adb_dnstoggle=off"
|
|
"${adb_uci}" -q commit "adblock"
|
|
/etc/init.d/dnsmasq restart
|
|
"${adb_log}" ${log_parm} -t "adblock[${adb_pid}] info " "toggle for adblocking switched 'off'" 2>&1
|
|
elif [ -n "${list_dnshide}" ]
|
|
then
|
|
mv -f "${adb_dnshidedir}/${adb_dnsprefix}"* "${adb_dnsdir}"
|
|
"${adb_uci}" -q set "adblock.global.adb_dnstoggle=on"
|
|
"${adb_uci}" -q commit "adblock"
|
|
/etc/init.d/dnsmasq restart
|
|
"${adb_log}" ${log_parm} -t "adblock[${adb_pid}] info " "toggle for adblocking switched 'on'" 2>&1
|
|
fi
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
cfgup()
|
|
{
|
|
stop
|
|
cp -pf "/etc/adblock/adblock.conf.default" "/etc/config/adblock"
|
|
rc=$?
|
|
if [ $((rc)) -eq 0 ]
|
|
then
|
|
"${adb_log}" ${log_parm} -t "adblock[${adb_pid}] info " "default adblock configuration applied, please check the settings in '/etc/config/adblock'" 2>&1
|
|
else
|
|
"${adb_log}" ${log_parm} -t "adblock[${adb_pid}] info " "default adblock configuration not found, please re-install the package via 'opkg install adblock --force-maintainer'" 2>&1
|
|
fi
|
|
}
|