#
f_envload()
{
- # source in openwrt function library
+ # source in system function library
#
if [ -r "/lib/functions.sh" ]
then
. "/lib/functions.sh"
else
rc=110
- f_log "openwrt function library not found" "${rc}"
+ f_log "system function library not found" "${rc}"
f_exit
fi
- # source in openwrt network library
+ # source in system network library
#
if [ -r "/lib/functions/network.sh" ]
then
. "/lib/functions/network.sh"
else
rc=115
- f_log "openwrt network library not found" "${rc}"
+ f_log "system network library not found" "${rc}"
f_exit
fi
f_exit
fi
- # get list with all installed openwrt packages
+ # get list with all installed packages
#
pkg_list="$(opkg list-installed)"
if [ -z "${pkg_list}" ]
then
rc=120
- f_log "empty openwrt package list" "${rc}"
+ f_log "empty package list" "${rc}"
f_exit
fi
adb_tmpdir="$(mktemp -p /tmp -d)"
adb_dnsdir="/tmp/dnsmasq.d"
adb_dnsprefix="adb_list"
- adb_fetch="/usr/bin/wget"
- adb_uci="/sbin/uci"
+ adb_uci="$(which uci)"
+ adb_iptv4="$(which iptables)"
+ adb_iptv6="$(which ip6tables)"
+ adb_fetch="$(which wget-ssl)"
unset adb_srclist adb_revsrclist adb_errsrclist
# get lan ip addresses
network_get_ipaddr6 adb_ipv6 "${adb_lanif}"
if [ -z "${adb_ipv4}" ] && [ -z "${adb_ipv6}" ]
then
- rc=135
+ rc=130
f_log "no valid IPv4/IPv6 configuration found (${adb_lanif}), please set 'adb_lanif' manually" "${rc}"
f_exit
fi
+
+ # get system release level
+ #
+ adb_sysver="$(printf "${pkg_list}" | grep "^base-files -")"
+ adb_sysver="${adb_sysver##*-}"
}
# f_envcheck: check/set environment prerequisites
# check general package dependencies
#
+ f_depend "busybox"
+ f_depend "uci"
f_depend "uhttpd"
f_depend "wget"
f_depend "iptables"
then
if [ $((av_space)) -le 2000 ]
then
- rc=140
+ rc=135
f_log "not enough free space in '${adb_tmpdir}' (avail. ${av_space} kb)" "${rc}"
f_exit
else
fi
fi
else
- rc=145
+ rc=140
f_log "temp directory not found" "${rc}"
f_exit
fi
adb_dnsformat="awk -v ipv6="${adb_nullipv6}" '{print \"address=/\"\$0\"/\"ipv6}'"
fi
else
- rc=150
+ rc=145
f_log "please enable the local dns server to use adblock" "${rc}"
f_exit
fi
# check running firewall
#
- check="$(/usr/sbin/iptables -vnL | grep -F "DROP")"
+ check="$(${adb_iptv4} -vnL | grep -F "DROP")"
if [ -z "${check}" ]
then
- rc=155
+ rc=150
f_log "please enable the local firewall to use adblock" "${rc}"
f_exit
fi
check="$(printf "${pkg_list}" | grep "^${package} -")"
if [ -z "${check}" ]
then
- rc=160
+ rc=155
f_log "package '${package}' not found" "${rc}"
f_exit
fi
#
f_firewall()
{
- local ipt
- local iptv4="/usr/sbin/iptables"
- local iptv6="/usr/sbin/ip6tables"
+ local ipt="${adb_iptv4}"
local proto="${1}"
local table="${2}"
local ctype="${3}"
local notes="${5}"
local rules="${6}"
- # select appropriate iptables executable
+ # select appropriate iptables executable for IPv6
#
- if [ "${proto}" = "IPv4" ]
+ if [ "${proto}" = "IPv6" ]
then
- ipt="${iptv4}"
- else
- ipt="${iptv6}"
+ ipt="${adb_iptv6}"
fi
# check whether iptables rule already applied and proceed accordingly
f_cntconfig
f_log "adblock lists with overall ${adb_count} domains loaded"
else
- rc=165
+ rc=160
f_log "dnsmasq restart failed, please check 'logread' output" "${rc}"
fi
fi
{
local ipv4_adblock=0
local ipv6_adblock=0
- local iptv4="/usr/sbin/iptables"
- local iptv6="/usr/sbin/ip6tables"
# delete temporary files & directories
#
then
if [ -n "${adb_wanif4}" ]
then
- ipv4_adblock="$(${iptv4} -t nat -vnL | awk '$11 ~ /^adb-nat$/ {sum += $1} END {printf sum}')"
- ipv4_adblock="$((${ipv4_adblock} + $(${iptv4} -vnL | awk '$11 ~ /^adb-(fwd|out)$/ {sum += $1} END {printf sum}')))"
+ ipv4_adblock="$(${adb_iptv4} -t nat -vnL | awk '$11 ~ /^adb-nat$/ {sum += $1} END {printf sum}')"
+ ipv4_adblock="$((${ipv4_adblock} + $(${adb_iptv4} -vnL | awk '$11 ~ /^adb-(fwd|out)$/ {sum += $1} END {printf sum}')))"
fi
if [ -n "${adb_wanif6}" ]
then
- ipv6_adblock="$(${iptv6} -t nat -vnL | awk '$10 ~ /^adb-nat$/ {sum += $1} END {printf sum}')"
- ipv6_adblock="$((${ipv6_adblock} + $(${iptv6} -vnL | awk '$10 ~ /^adb-(fwd|out)$/ {sum += $1} END {printf sum}')))"
+ ipv6_adblock="$(${adb_iptv6} -t nat -vnL | awk '$10 ~ /^adb-nat$/ {sum += $1} END {printf sum}')"
+ ipv6_adblock="$((${ipv6_adblock} + $(${adb_iptv6} -vnL | awk '$10 ~ /^adb-(fwd|out)$/ {sum += $1} END {printf sum}')))"
fi
if [ -n "$(${adb_uci} -q changes adblock)" ]
then
${adb_uci} -q commit "adblock"
fi
f_log "firewall statistics (IPv4/IPv6): ${ipv4_adblock}/${ipv6_adblock} ad related packets blocked"
- f_log "domain adblock processing finished successfully (${adb_scriptver}, ${openwrt_version}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
+ f_log "domain adblock processing finished successfully (${adb_scriptver}, ${adb_sysver}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
elif [ $((rc)) -gt 0 ]
then
if [ -n "$(${adb_uci} -q changes adblock)" ]
then
${adb_uci} -q revert "adblock"
fi
- f_log "domain adblock processing failed (${adb_scriptver}, ${openwrt_version}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
+ f_log "domain adblock processing failed (${adb_scriptver}, ${adb_sysver}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
else
rc=0
fi