adblock: release 1.3.0
* revised hotplug script * remove wget package dependency * support uclient-fetch or wget with ssl support * documentation update Signed-off-by: Dirk Brenken <dev@brenken.org>
This commit is contained in:
parent
fbd4a7c746
commit
f96f354ad1
5 changed files with 102 additions and 64 deletions
|
@ -7,7 +7,7 @@
|
||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=adblock
|
PKG_NAME:=adblock
|
||||||
PKG_VERSION:=1.2.8
|
PKG_VERSION:=1.3.0
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=1
|
||||||
PKG_LICENSE:=GPL-3.0+
|
PKG_LICENSE:=GPL-3.0+
|
||||||
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
|
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
|
||||||
|
@ -18,7 +18,6 @@ define Package/$(PKG_NAME)
|
||||||
SECTION:=net
|
SECTION:=net
|
||||||
CATEGORY:=Network
|
CATEGORY:=Network
|
||||||
TITLE:=Powerful adblock script to block ad/abuse domains
|
TITLE:=Powerful adblock script to block ad/abuse domains
|
||||||
DEPENDS:=+wget
|
|
||||||
PKGARCH:=all
|
PKGARCH:=all
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@ A lot of people already use adblocker plugins within their desktop browsers, but
|
||||||
* [LEDE project](https://www.lede-project.org), tested with trunk > r98
|
* [LEDE project](https://www.lede-project.org), tested with trunk > r98
|
||||||
* usual setup with enabled 'iptables', 'dnsmasq' and 'uhttpd' - dump AP modes without these basics are _not_ supported!
|
* usual setup with enabled 'iptables', 'dnsmasq' and 'uhttpd' - dump AP modes without these basics are _not_ supported!
|
||||||
* additional required software packages:
|
* additional required software packages:
|
||||||
* wget
|
* a download utility: 'uclient-fetch' and 'wget' (full versions with ssl support) are supported. Normally you should use 'wget', it's quite stable and supports the online timestamp checks. If you need a smaller memory footprint try 'uclient-fetch' without openssl dependency. The default ustream ssl backend 'libustream-polarssl' has issues with certain https sites and is currently not supported. To change the ssl backend see example below.
|
||||||
* optional: 'kmod-ipt-nat6' for IPv6 support
|
* optional: 'kmod-ipt-nat6' for IPv6 support
|
||||||
* the above dependencies and requirements will be checked during package installation & script runtime
|
* the above dependencies and requirements will be checked during package installation & script runtime
|
||||||
|
|
||||||
|
@ -123,6 +123,13 @@ A lot of people already use adblocker plugins within their desktop browsers, but
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
|
**example to change the ssl backend for 'uclient-fetch':**
|
||||||
|
<pre><code>
|
||||||
|
opkg update
|
||||||
|
opkg remove --force-depends libustream-polarssl
|
||||||
|
opkg install libustream-mbedtls
|
||||||
|
</code></pre>
|
||||||
|
|
||||||
**example cronjob for a regular block list update:**
|
**example cronjob for a regular block list update:**
|
||||||
<pre><code>
|
<pre><code>
|
||||||
# configuration found in /etc/crontabs/root
|
# configuration found in /etc/crontabs/root
|
||||||
|
|
|
@ -21,7 +21,6 @@ adb_minspace=12000
|
||||||
adb_forcedns=1
|
adb_forcedns=1
|
||||||
adb_fetchttl=5
|
adb_fetchttl=5
|
||||||
adb_restricted=0
|
adb_restricted=0
|
||||||
adb_fetch="$(which wget)"
|
|
||||||
adb_uci="$(which uci)"
|
adb_uci="$(which uci)"
|
||||||
unset adb_revsrclist
|
unset adb_revsrclist
|
||||||
|
|
||||||
|
@ -135,7 +134,7 @@ f_envcheck()
|
||||||
f_exit
|
f_exit
|
||||||
elif [ "${adb_cfgver#*.}" != "${adb_mincfgver#*.}" ]
|
elif [ "${adb_cfgver#*.}" != "${adb_mincfgver#*.}" ]
|
||||||
then
|
then
|
||||||
outdate_ok="true"
|
outdated_ok="true"
|
||||||
fi
|
fi
|
||||||
if [ "${adb_enabled}" != "1" ]
|
if [ "${adb_enabled}" != "1" ]
|
||||||
then
|
then
|
||||||
|
@ -212,13 +211,76 @@ f_envcheck()
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# check general package dependencies
|
||||||
|
#
|
||||||
|
f_depend "busybox"
|
||||||
|
f_depend "uci"
|
||||||
|
f_depend "uhttpd"
|
||||||
|
f_depend "iptables"
|
||||||
|
f_depend "kmod-ipt-nat"
|
||||||
|
|
||||||
|
# check ipv6 related package dependencies
|
||||||
|
#
|
||||||
|
if [ -n "${adb_wanif6}" ]
|
||||||
|
then
|
||||||
|
f_depend "ip6tables" "true"
|
||||||
|
if [ "${package_ok}" = "false" ]
|
||||||
|
then
|
||||||
|
f_log "package 'ip6tables' not found, IPv6 support will be disabled"
|
||||||
|
unset adb_wanif6
|
||||||
|
else
|
||||||
|
f_depend "kmod-ipt-nat6" "true"
|
||||||
|
if [ "${package_ok}" = "false" ]
|
||||||
|
then
|
||||||
|
f_log "package 'kmod-ipt-nat6' not found, IPv6 support will be disabled"
|
||||||
|
unset adb_wanif6
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check uclient-fetch/wget dependencies
|
||||||
|
#
|
||||||
|
f_depend "uclient-fetch" "true"
|
||||||
|
if [ "${package_ok}" = "true" ]
|
||||||
|
then
|
||||||
|
f_depend "libustream-polarssl" "true"
|
||||||
|
if [ "${package_ok}" = "false" ]
|
||||||
|
then
|
||||||
|
adb_fetch="$(which uclient-fetch)"
|
||||||
|
fetch_parm="-q --timeout=${adb_fetchttl}"
|
||||||
|
response_parm="--spider"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ -z "${adb_fetch}" ]
|
||||||
|
then
|
||||||
|
f_depend "wget" "true"
|
||||||
|
if [ "${package_ok}" = "true" ]
|
||||||
|
then
|
||||||
|
adb_fetch="$(which wget)"
|
||||||
|
fetch_parm="--no-config --quiet --tries=1 --no-cache --no-cookies --max-redirect=0 --dns-timeout=${adb_fetchttl} --connect-timeout=${adb_fetchttl} --read-timeout=${adb_fetchttl}"
|
||||||
|
response_parm="--spider --server-response"
|
||||||
|
else
|
||||||
|
rc=-1
|
||||||
|
f_log "please install 'uclient-fetch' or 'wget' with ssl support to use adblock"
|
||||||
|
f_exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check ca-certificate package and set fetch parm accordingly
|
||||||
|
#
|
||||||
|
f_depend "ca-certificates" "true"
|
||||||
|
if [ "${package_ok}" = "false" ]
|
||||||
|
then
|
||||||
|
fetch_parm="${fetch_parm} --no-check-certificate"
|
||||||
|
fi
|
||||||
|
|
||||||
# start normal processing/logging
|
# start normal processing/logging
|
||||||
#
|
#
|
||||||
f_log "domain adblock processing started (${adb_scriptver}, ${adb_sysver}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
|
f_log "domain adblock processing started (${adb_scriptver}, ${adb_sysver}, $(/bin/date "+%d.%m.%Y %H:%M:%S"))"
|
||||||
|
|
||||||
# log partially outdated config
|
# log partially outdated config
|
||||||
#
|
#
|
||||||
if [ "${outdate_ok}" = "true" ]
|
if [ "${outdated_ok}" = "true" ]
|
||||||
then
|
then
|
||||||
f_log "partially outdated adblock config (${adb_mincfgver} vs. ${adb_cfgver}), please run '/etc/init.d/adblock cfgup' to update your configuration"
|
f_log "partially outdated adblock config (${adb_mincfgver} vs. ${adb_cfgver}), please run '/etc/init.d/adblock cfgup' to update your configuration"
|
||||||
fi
|
fi
|
||||||
|
@ -237,34 +299,6 @@ f_envcheck()
|
||||||
f_log "Restricted mode enabled"
|
f_log "Restricted mode enabled"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# check general package dependencies
|
|
||||||
#
|
|
||||||
f_depend "busybox"
|
|
||||||
f_depend "uci"
|
|
||||||
f_depend "uhttpd"
|
|
||||||
f_depend "wget"
|
|
||||||
f_depend "iptables"
|
|
||||||
f_depend "kmod-ipt-nat"
|
|
||||||
|
|
||||||
# check ipv6 related package dependencies
|
|
||||||
#
|
|
||||||
if [ -n "${adb_wanif6}" ]
|
|
||||||
then
|
|
||||||
check="$(printf "${pkg_list}" | grep "^ip6tables -")"
|
|
||||||
if [ -z "${check}" ]
|
|
||||||
then
|
|
||||||
f_log "package 'ip6tables' not found, IPv6 support will be disabled"
|
|
||||||
unset adb_wanif6
|
|
||||||
else
|
|
||||||
check="$(printf "${pkg_list}" | grep "^kmod-ipt-nat6 -")"
|
|
||||||
if [ -z "${check}" ]
|
|
||||||
then
|
|
||||||
f_log "package 'kmod-ipt-nat6' not found, IPv6 support will be disabled"
|
|
||||||
unset adb_wanif6
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check dns hideout directory
|
# check dns hideout directory
|
||||||
#
|
#
|
||||||
if [ -d "${adb_dnshidedir}" ]
|
if [ -d "${adb_dnshidedir}" ]
|
||||||
|
@ -274,15 +308,6 @@ f_envcheck()
|
||||||
mkdir -p -m 660 "${adb_dnshidedir}"
|
mkdir -p -m 660 "${adb_dnshidedir}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# check ca-certificates package and set fetch parms accordingly
|
|
||||||
#
|
|
||||||
fetch_parm="--no-config --quiet --tries=1 --no-cache --no-cookies --max-redirect=0 --dns-timeout=${adb_fetchttl} --connect-timeout=${adb_fetchttl} --read-timeout=${adb_fetchttl}"
|
|
||||||
check="$(printf "${pkg_list}" | grep "^ca-certificates -")"
|
|
||||||
if [ -z "${check}" ]
|
|
||||||
then
|
|
||||||
fetch_parm="${fetch_parm} --no-check-certificate"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check adblock temp directory
|
# check adblock temp directory
|
||||||
#
|
#
|
||||||
adb_tmpfile="$(mktemp -tu)"
|
adb_tmpfile="$(mktemp -tu)"
|
||||||
|
@ -386,10 +411,9 @@ f_envcheck()
|
||||||
f_firewall "IPv6" "nat" "PREROUTING" "adb-nat" "1" "nat" "-p tcp --dport 80 -j DNAT --to-destination [${adb_ipv6}]:${adb_nullport}"
|
f_firewall "IPv6" "nat" "PREROUTING" "adb-nat" "1" "nat" "-p tcp --dport 80 -j DNAT --to-destination [${adb_ipv6}]:${adb_nullport}"
|
||||||
f_firewall "IPv6" "nat" "PREROUTING" "adb-nat" "2" "nat" "-p tcp --dport 443 -j DNAT --to-destination [${adb_ipv6}]:${adb_nullportssl}"
|
f_firewall "IPv6" "nat" "PREROUTING" "adb-nat" "2" "nat" "-p tcp --dport 443 -j DNAT --to-destination [${adb_ipv6}]:${adb_nullportssl}"
|
||||||
fi
|
fi
|
||||||
if [ "${fw_done}" = "true" ]
|
if [ "${firewall_ok}" = "true" ]
|
||||||
then
|
then
|
||||||
f_log "created volatile firewall rulesets"
|
f_log "created volatile firewall rulesets"
|
||||||
fw_done="false"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# check volatile uhttpd instance configuration
|
# check volatile uhttpd instance configuration
|
||||||
|
@ -409,10 +433,9 @@ f_envcheck()
|
||||||
f_uhttpd "adbIPv6_80" "1" "-p [${adb_ipv6}]:${adb_nullport}"
|
f_uhttpd "adbIPv6_80" "1" "-p [${adb_ipv6}]:${adb_nullport}"
|
||||||
f_uhttpd "adbIPv6_443" "0" "-p [${adb_ipv6}]:${adb_nullportssl}"
|
f_uhttpd "adbIPv6_443" "0" "-p [${adb_ipv6}]:${adb_nullportssl}"
|
||||||
fi
|
fi
|
||||||
if [ "${uhttpd_done}" = "true" ]
|
if [ "${uhttpd_ok}" = "true" ]
|
||||||
then
|
then
|
||||||
f_log "created volatile uhttpd instances"
|
f_log "created volatile uhttpd instances"
|
||||||
uhttpd_done="false"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -434,11 +457,17 @@ f_depend()
|
||||||
{
|
{
|
||||||
local check
|
local check
|
||||||
local package="${1}"
|
local package="${1}"
|
||||||
|
local check_only="${2}"
|
||||||
|
package_ok="true"
|
||||||
|
|
||||||
check="$(printf "${pkg_list}" | grep "^${package} -")"
|
check="$(printf "${pkg_list}" | grep "^${package} -")"
|
||||||
if [ -z "${check}" ]
|
if [ "${check_only}" = "true" ] && [ -z "${check}" ]
|
||||||
then
|
then
|
||||||
rc=115
|
package_ok="false"
|
||||||
|
elif [ -z "${check}" ]
|
||||||
|
then
|
||||||
|
rc=-1
|
||||||
|
package_ok="false"
|
||||||
f_log "package '${package}' not found"
|
f_log "package '${package}' not found"
|
||||||
f_exit
|
f_exit
|
||||||
fi
|
fi
|
||||||
|
@ -457,6 +486,7 @@ f_firewall()
|
||||||
local chpos="${5}"
|
local chpos="${5}"
|
||||||
local notes="adb-${6}"
|
local notes="adb-${6}"
|
||||||
local rules="${7}"
|
local rules="${7}"
|
||||||
|
firewall_ok="true"
|
||||||
|
|
||||||
# select appropriate iptables executable for IPv6
|
# select appropriate iptables executable for IPv6
|
||||||
#
|
#
|
||||||
|
@ -494,10 +524,9 @@ f_firewall()
|
||||||
then
|
then
|
||||||
"${ipt}" -w -t "${table}" -I "${chain}" "${chpos}" -m comment --comment "${notes}" ${rules}
|
"${ipt}" -w -t "${table}" -I "${chain}" "${chpos}" -m comment --comment "${notes}" ${rules}
|
||||||
rc=${?}
|
rc=${?}
|
||||||
if [ $((rc)) -eq 0 ]
|
if [ $((rc)) -ne 0 ]
|
||||||
then
|
then
|
||||||
fw_done="true"
|
firewall_ok="false"
|
||||||
else
|
|
||||||
f_log "failed to initialize volatile ${proto} firewall rule '${notes}'"
|
f_log "failed to initialize volatile ${proto} firewall rule '${notes}'"
|
||||||
f_exit
|
f_exit
|
||||||
fi
|
fi
|
||||||
|
@ -511,12 +540,13 @@ f_uhttpd()
|
||||||
local realm="${1}"
|
local realm="${1}"
|
||||||
local timeout="${2}"
|
local timeout="${2}"
|
||||||
local ports="${3}"
|
local ports="${3}"
|
||||||
|
uhttpd_ok="true"
|
||||||
|
|
||||||
uhttpd -h "/www/adblock" -N 25 -T "${timeout}" -r "${realm}" -k 0 -t 0 -R -D -S -E "/index.html" ${ports}
|
uhttpd -h "/www/adblock" -N 25 -T "${timeout}" -r "${realm}" -k 0 -t 0 -R -D -S -E "/index.html" ${ports}
|
||||||
rc=${?}
|
rc=${?}
|
||||||
if [ $((rc)) -eq 0 ]
|
if [ $((rc)) -ne 0 ]
|
||||||
then
|
then
|
||||||
uhttpd_done="true"
|
uhttpd_ok="false"
|
||||||
else
|
|
||||||
f_log "failed to initialize volatile uhttpd instance (${realm})"
|
f_log "failed to initialize volatile uhttpd instance (${realm})"
|
||||||
f_exit
|
f_exit
|
||||||
fi
|
fi
|
||||||
|
@ -527,6 +557,7 @@ f_uhttpd()
|
||||||
f_space()
|
f_space()
|
||||||
{
|
{
|
||||||
local mp="${1}"
|
local mp="${1}"
|
||||||
|
space_ok="true"
|
||||||
|
|
||||||
if [ -d "${mp}" ]
|
if [ -d "${mp}" ]
|
||||||
then
|
then
|
||||||
|
@ -535,6 +566,8 @@ f_space()
|
||||||
then
|
then
|
||||||
space_ok="false"
|
space_ok="false"
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
space_ok="false"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
adb_pid="${$}"
|
adb_pid="${$}"
|
||||||
adb_pidfile="/var/run/adblock.pid"
|
adb_pidfile="/var/run/adblock.pid"
|
||||||
adb_scriptver="1.2.8"
|
adb_scriptver="1.3.0"
|
||||||
adb_mincfgver="2.2"
|
adb_mincfgver="2.2"
|
||||||
adb_scriptdir="${0%/*}"
|
adb_scriptdir="${0%/*}"
|
||||||
if [ -r "${adb_pidfile}" ]
|
if [ -r "${adb_pidfile}" ]
|
||||||
|
@ -85,7 +85,7 @@ do
|
||||||
then
|
then
|
||||||
url_time="$(date -r "${url}")"
|
url_time="$(date -r "${url}")"
|
||||||
else
|
else
|
||||||
url_time="$(${adb_fetch} ${fetch_parm} --server-response --spider "${url}" 2>&1 | awk '$0 ~ /Last-Modified/ {printf substr($0,18)}')"
|
url_time="$(${adb_fetch} ${fetch_parm} ${response_parm} "${url}" 2>&1 | awk '$0 ~ /Last-Modified/ {printf substr($0,18)}')"
|
||||||
fi
|
fi
|
||||||
if [ -z "${url_time}" ]
|
if [ -z "${url_time}" ]
|
||||||
then
|
then
|
||||||
|
@ -102,7 +102,7 @@ do
|
||||||
then
|
then
|
||||||
shalla_archive="${adb_tmpdir}/shallalist.tar.gz"
|
shalla_archive="${adb_tmpdir}/shallalist.tar.gz"
|
||||||
shalla_file="${adb_tmpdir}/shallalist.txt"
|
shalla_file="${adb_tmpdir}/shallalist.txt"
|
||||||
"${adb_fetch}" ${fetch_parm} --output-document="${shalla_archive}" "${url}"
|
"${adb_fetch}" ${fetch_parm} -O "${shalla_archive}" "${url}"
|
||||||
rc=${?}
|
rc=${?}
|
||||||
if [ $((rc)) -eq 0 ]
|
if [ $((rc)) -eq 0 ]
|
||||||
then
|
then
|
||||||
|
@ -123,7 +123,7 @@ do
|
||||||
rm -f "${shalla_file}"
|
rm -f "${shalla_file}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
tmp_domains="$(${adb_fetch} ${fetch_parm} --output-document=- "${url}")"
|
tmp_domains="$(${adb_fetch} ${fetch_parm} -O- "${url}")"
|
||||||
fi
|
fi
|
||||||
rc=${?}
|
rc=${?}
|
||||||
else
|
else
|
||||||
|
|
|
@ -2,20 +2,19 @@
|
||||||
#
|
#
|
||||||
|
|
||||||
adb_pid="${$}"
|
adb_pid="${$}"
|
||||||
|
adb_helper="/usr/bin/adblock-helper.sh"
|
||||||
adb_pidfile="/var/run/adblock.pid"
|
adb_pidfile="/var/run/adblock.pid"
|
||||||
adb_logger="/usr/bin/logger"
|
|
||||||
|
|
||||||
if [ -f "${adb_pidfile}" ] || [ "${ACTION}" != "ifup" ]
|
if [ -f "${adb_pidfile}" ] || [ "${ACTION}" != "ifup" ]
|
||||||
then
|
then
|
||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
. /lib/functions/network.sh
|
. "${adb_helper}"
|
||||||
network_find_wan adb_wanif4
|
f_envload
|
||||||
network_find_wan6 adb_wanif6
|
|
||||||
|
|
||||||
if [ "${INTERFACE}" = "${adb_wanif4}" ] || [ "${INTERFACE}" = "${adb_wanif6}" ]
|
if [ "${INTERFACE}" = "${adb_wanif4}" ] || [ "${INTERFACE}" = "${adb_wanif6}" ]
|
||||||
then
|
then
|
||||||
/etc/init.d/adblock start
|
/etc/init.d/adblock start
|
||||||
"${adb_logger}" -t "adblock[${adb_pid}] info " "adblock service started due to '${ACTION}' of '${INTERFACE}' interface"
|
f_log "adblock service started due to '${ACTION}' of '${INTERFACE}' interface"
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue