Merge pull request #3692 from dibdot/adblock

adblock: update 2.0.2
This commit is contained in:
Hannu Nyman 2016-12-23 09:46:51 +02:00 committed by GitHub
commit 96d5c779b2
4 changed files with 72 additions and 13 deletions

View file

@ -6,7 +6,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=adblock PKG_NAME:=adblock
PKG_VERSION:=2.0.1 PKG_VERSION:=2.0.2
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>

View file

@ -63,6 +63,7 @@ A lot of people already use adblocker plugins within their desktop browsers, but
* procd based hotplug support, the adblock start will be triggered by interface triggers * procd based hotplug support, the adblock start will be triggered by interface triggers
* suspend & resume adblock actions temporarily without block list reloading * suspend & resume adblock actions temporarily without block list reloading
* runtime statistics via ubus service call * runtime statistics via ubus service call
* query function to quickly identify blocked (sub-)domains, i.e. for whitelisting
* automatic block list backup & restore, backups will be (de-)compressed and restored on the fly * automatic block list backup & restore, backups will be (de-)compressed and restored on the fly
* add new adblock sources on your own via uci config * add new adblock sources on your own via uci config
@ -100,6 +101,7 @@ A lot of people already use adblocker plugins within their desktop browsers, but
* **scheduled list updates:** for a scheduled call of the adblock service add an appropriate crontab entry (see example below) * **scheduled list updates:** for a scheduled call of the adblock service add an appropriate crontab entry (see example below)
* **restrict/disable procd interface trigger:** to restrict the procd interface trigger to a (list of) certain wan interface(s) or to disable it at all, set 'adb\_iface' to an existing interface like 'wan' or to a non-existing like 'false' * **restrict/disable procd interface trigger:** to restrict the procd interface trigger to a (list of) certain wan interface(s) or to disable it at all, set 'adb\_iface' to an existing interface like 'wan' or to a non-existing like 'false'
* **suspend & resume adblocking:** to quickly switch the adblock service 'on' or 'off', simply use _/etc/init.d/adblock [suspend|resume]_ * **suspend & resume adblocking:** to quickly switch the adblock service 'on' or 'off', simply use _/etc/init.d/adblock [suspend|resume]_
* **domain query:** to query the active block lists for a specific domain, please run _/etc/init.d/adblock query `<DOMAIN>`_ (see example below)
* **divert dns requests:** to force dns requests to your local dns resolver add an appropriate firewall rule (see example below) * **divert dns requests:** to force dns requests to your local dns resolver add an appropriate firewall rule (see example below)
* **add new list sources:** you could add new block list sources on your own via uci config, all you need is a source url and an awk one-liner (see example below) * **add new list sources:** you could add new block list sources on your own via uci config, all you need is a source url and an awk one-liner (see example below)
* **disable active dns probing in windows 10:** to prevent a yellow exclamation mark on your internet connection icon (which wrongly means connected, but no internet), please change the following registry key/value from "1" to "0" _HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet\EnableActiveProbing_ * **disable active dns probing in windows 10:** to prevent a yellow exclamation mark on your internet connection icon (which wrongly means connected, but no internet), please change the following registry key/value from "1" to "0" _HKLM\SYSTEM\CurrentControlSet\Services\NlaSvc\Parameters\Internet\EnableActiveProbing_
@ -178,6 +180,22 @@ This entry does not remove:
www.adwhere.com www.adwhere.com
</code></pre> </code></pre>
**example to query active block lists for a certain (sub-)domain, i.e. for whitelisting:**
<pre><code>
/etc/init.d/adblock query "example.www.doubleclick.net"
:: distinct results for domain 'example.www.doubleclick.net' (overall 0)
no matches in active block lists
:: distinct results for domain 'www.doubleclick.net' (overall 1)
adb_list.securemecca : www.doubleclick.net
:: distinct results for domain 'doubleclick.net' (overall 127)
adb_list.adaway : ad-g.doubleclick.net
adb_list.securemecca : 1168945.fls.doubleclick.net
The query function checks against the submitted (sub-)domain and recurses automatically to the upper top level domain(s).
For every domain it returns the overall count plus a distinct list of active block lists with the first relevant result.
In the example above whitelist "www.doubleclick.net" to free the submitted domain.
</code></pre>
**example to divert dns requests to local dns resolver (/etc/config/firewall):** **example to divert dns requests to local dns resolver (/etc/config/firewall):**
<pre><code> <pre><code>
config redirect config redirect

View file

@ -4,9 +4,10 @@
START=90 START=90
USE_PROCD=1 USE_PROCD=1
EXTRA_COMMANDS="suspend resume" EXTRA_COMMANDS="suspend resume query"
EXTRA_HELP=" suspend Suspend adblock processing EXTRA_HELP=" suspend Suspend adblock processing
resume Resume adblock processing" resume Resume adblock processing
query <DOMAIN> Query active blocklists for specific domain"
exec 2>/dev/null exec 2>/dev/null
adb_script="/usr/bin/adblock.sh" adb_script="/usr/bin/adblock.sh"
@ -65,6 +66,12 @@ resume()
rc_procd start_service resume rc_procd start_service resume
} }
query()
{
export adb_procd="true"
rc_procd "${adb_script}" query "${1}"
}
service_triggers() service_triggers()
{ {
local iface local iface

View file

@ -10,7 +10,7 @@
# #
LC_ALL=C LC_ALL=C
PATH="/usr/sbin:/usr/bin:/sbin:/bin" PATH="/usr/sbin:/usr/bin:/sbin:/bin"
adb_ver="2.0.1" adb_ver="2.0.2"
adb_enabled=1 adb_enabled=1
adb_debug=0 adb_debug=0
adb_whitelist="/etc/adblock/adblock.whitelist" adb_whitelist="/etc/adblock/adblock.whitelist"
@ -161,18 +161,16 @@ f_dnsrestart()
killall -q -TERM "${adb_dns}" killall -q -TERM "${adb_dns}"
while [ ${cnt} -le 10 ] while [ ${cnt} -le 10 ]
do do
dns_running="$(ubus -S call service list '{"name":"dnsmasq"}' | jsonfilter -e '@.dnsmasq.instances.*.running')" dns_running="$(ubus -S call service list '{"name":"dnsmasq"}' | jsonfilter -l 1 -e '@.dnsmasq.instances.*.running')"
if [ "${dns_running}" = "true" ] if [ "${dns_running}" = "true" ]
then then
break return 0
fi fi
cnt=$((cnt+1)) cnt=$((cnt+1))
sleep 1 sleep 1
done done
if [ "${dns_running}" = "false" ]
then
/etc/init.d/"${adb_dns}" restart /etc/init.d/"${adb_dns}" restart
fi sleep 1
} }
# f_list: backup/restore/remove block lists # f_list: backup/restore/remove block lists
@ -235,6 +233,40 @@ f_switch()
fi fi
} }
# f_query: query block lists for certain (sub-)domains
#
f_query()
{
local search result cnt
local domain="${1}"
local tld="${domain#*.}"
local dns_active="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}*" -print)"
if [ -z "${dns_active}" ]
then
printf "%s\n" ":: no active block lists found, please start adblock first"
elif [ -z "${domain}" ] || [ "${domain}" = "${tld}" ]
then
printf "%s\n" ":: invalid domain input, please submit a specific (sub-)domain, i.e. 'www.abc.xyz'"
else
while [ "${domain}" != "${tld}" ]
do
search="${domain//./\.}"
result="$(grep -Hm 1 "[/\.]${search}/" "${adb_dnsdir}/${adb_dnsprefix}"* | awk -F ':|/' '{print " "$4"\t: "$6}')"
cnt="$(grep -hc "[/\.]${search}/" "${adb_dnsdir}/${adb_dnsprefix}"* | awk '{sum += $1} END {printf sum}')"
printf "%s\n" ":: distinct results for domain '${domain}' (overall ${cnt})"
if [ -z "${result}" ]
then
printf "%s\n" " no matches in active block lists"
else
printf "%s\n" "${result}"
fi
domain="${tld}"
tld="${domain#*.}"
done
fi
}
# f_log: write to syslog, exit on error # f_log: write to syslog, exit on error
# #
f_log() f_log()
@ -284,9 +316,8 @@ f_debug()
# #
f_main() f_main()
{ {
local rc cnt sum_cnt=0 local enabled url rc cnt sum_cnt=0
local enabled url src_name src_rset local src_name src_rset shalla_file shalla_archive
local shalla_file shalla_archive list
f_debug f_debug
f_log "debug" "main ::: tool: ${adb_fetch}, parm: ${adb_fetchparm}" f_log "debug" "main ::: tool: ${adb_fetch}, parm: ${adb_fetchparm}"
@ -419,6 +450,9 @@ then
resume) resume)
f_switch resume f_switch resume
;; ;;
query)
f_query "${2}"
;;
*) *)
f_envcheck f_envcheck
f_main f_main