adblock: update 3.5.5
* accept only ascii aka punycode chars in blocklists to prevent possible dns backend warnings * fix cornercase issues in json parsing (backend & frontend) * slightly optimize tld compression performance * refine logging * use uci wrapper where possible * change indentation from spaces to tabs (saves 8kb) * add experimental youtube blocklist source Signed-off-by: Dirk Brenken <dev@brenken.org>
This commit is contained in:
parent
67ff849bce
commit
4987f066f9
6 changed files with 993 additions and 997 deletions
|
@ -6,8 +6,8 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=adblock
|
||||
PKG_VERSION:=3.5.4
|
||||
PKG_RELEASE:=2
|
||||
PKG_VERSION:=3.5.5
|
||||
PKG_RELEASE:=1
|
||||
PKG_LICENSE:=GPL-3.0+
|
||||
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
|
||||
|
||||
|
|
|
@ -61,6 +61,8 @@ A lot of people already use adblocker plugins within their desktop browsers, but
|
|||
* => infrequent updates, approx. 15.000 entries
|
||||
* [winspy](https://github.com/crazy-max/WindowsSpyBlocker)
|
||||
* => infrequent updates, approx. 120 entries
|
||||
* [youtube]https://api.hackertarget.com/hostsearch/?q=googlevideo.com
|
||||
* => dynamic request API to filter "random" youtube ad domains (experimental!), approx. 150 entries
|
||||
* [yoyo](http://pgl.yoyo.org/adservers)
|
||||
* => weekly updates, approx. 2.500 entries (enabled by default)
|
||||
* [zeus tracker](https://zeustracker.abuse.ch)
|
||||
|
@ -96,7 +98,7 @@ A lot of people already use adblocker plugins within their desktop browsers, but
|
|||
* optional: add new adblock sources on your own, see example below
|
||||
|
||||
## Prerequisites
|
||||
* [OpenWrt](https://openwrt.org), tested with the stable release series (17.01.x) and with the latest OpenWrt snapshot
|
||||
* [OpenWrt](https://openwrt.org), tested with the stable release series (18.06) and with the latest snapshot
|
||||
* a usual setup with an enabled dns backend at minimum - dump AP modes without a working dns backend are _not_ supported
|
||||
* a download utility:
|
||||
* to support all blocklist sources a full version (with ssl support) of 'wget', 'uclient-fetch' with one of the 'libustream-*' ssl libraries, 'aria2c' or 'curl' is required
|
||||
|
@ -109,7 +111,7 @@ A lot of people already use adblocker plugins within their desktop browsers, but
|
|||
* control the adblock service manually with _/etc/init.d/adblock_ start/stop/restart/reload/suspend/resume/status or use the LuCI frontend
|
||||
|
||||
## LuCI adblock companion package
|
||||
* for easy management of the various blocklist sources and all other adblock options you should use the provided LuCI frontend
|
||||
* for easy management of the various blocklist sources and adblock runtime options you should use the provided LuCI frontend
|
||||
* install 'luci-app-adblock' (_opkg install luci-app-adblock_)
|
||||
* the application is located in LuCI under 'Services' menu
|
||||
|
||||
|
@ -143,7 +145,7 @@ A lot of people already use adblocker plugins within their desktop browsers, but
|
|||
* adb\_forcedns => force dns requests to local resolver (bool/default: '0', disabled)
|
||||
* adb\_forcesrt => force overall sort on low memory devices with less than 64 MB RAM (bool/default: '0', disabled)
|
||||
* adb\_backup_mode => do not automatically update blocklists during startup, use backups instead (bool/default: '0', disabled)
|
||||
* adb\maxqueue => size of the download queue to handle downloads & list processing in parallel (int/default: '4')
|
||||
* adb\_maxqueue => size of the download queue to handle downloads & list processing in parallel (int/default: '4')
|
||||
* adb\_jail => builds an additional 'Jail' list (/tmp/adb_list.jail) to block access to all domains except those listed in the whitelist file (bool/default: '0', disabled)
|
||||
* adb\_dnsflush => flush DNS cache after adblock processing, i.e. enable the old restart behavior (bool/default: '0', disabled)
|
||||
* adb\_notify => send notification emails in case of a processing error or if the overall domain count is ≤ 0 (bool/default: '0', disabled)
|
||||
|
@ -216,12 +218,12 @@ Finally make this file executable via 'chmod' and test it directly. If no more e
|
|||
/etc/init.d/adblock status
|
||||
::: adblock runtime information
|
||||
+ adblock_status : enabled
|
||||
+ adblock_version : 3.5.0
|
||||
+ overall_domains : 102324 (normal mode)
|
||||
+ fetch_utility : /usr/bin/wget (built-in)
|
||||
+ dns_backend : kresd (/etc/kresd)
|
||||
+ last_rundate : 30.01.2018 21:24:11
|
||||
+ system_release : Turris Omnia, OpenWrt omnia 15.05/3.9.4
|
||||
+ adblock_version : 3.5.5
|
||||
+ overall_domains : 97199 (backup mode)
|
||||
+ fetch_utility : /bin/uclient-fetch (libustream-ssl)
|
||||
+ dns_backend : unbound (/var/lib/unbound)
|
||||
+ last_rundate : 01.09.2018 07:09:16
|
||||
+ system_release : PC Engines APU, OpenWrt SNAPSHOT r7986-dc9388ac55
|
||||
</code></pre>
|
||||
|
||||
**cronjob for a regular block list update (/etc/crontabs/root):**
|
||||
|
|
|
@ -16,127 +16,127 @@ config adblock 'extra'
|
|||
|
||||
config source 'adaway'
|
||||
option adb_src 'https://adaway.org/hosts.txt'
|
||||
option adb_src_rset '/^127\.0\.0\.1[[:space:]]+([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_rset '/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_desc 'focus on mobile ads, infrequent updates, approx. 400 entries'
|
||||
option enabled '1'
|
||||
|
||||
config source 'adguard'
|
||||
option adb_src 'https://filters.adtidy.org/windows/filters/15.txt'
|
||||
option adb_src_rset 'BEGIN{FS=\"[/|^|\r]\"}/^\|\|([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([\/\^\r]|$)/{print tolower(\$3)}'
|
||||
option adb_src_rset 'BEGIN{FS=\"[/|^|\r]\"}/^\|\|([[:alnum:]_-]+\.)+[[:alpha:]]+([\/\^\r]|$)/{print tolower(\$3)}'
|
||||
option adb_src_desc 'combined adguard dns filter list, frequent updates, approx. 17.000 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'bitcoin'
|
||||
option adb_src 'https://raw.githubusercontent.com/hoshsadiq/adblock-nocoin-list/master/hosts.txt'
|
||||
option adb_src_rset '/^0\.0\.0\.0[[:space:]]+([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_rset '/^0\.0\.0\.0[[:space:]]+([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_desc 'focus on malicious bitcoin mining sites, infrequent updates, approx. 80 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'blacklist'
|
||||
option adb_src '/etc/adblock/adblock.blacklist'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'static local domain blacklist, always deny these domains'
|
||||
option enabled '1'
|
||||
|
||||
config source 'disconnect'
|
||||
option adb_src 'https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'mozilla driven blocklist, numerous updates on the same day, approx. 4.700 entries'
|
||||
option enabled '1'
|
||||
|
||||
config source 'dshield'
|
||||
option adb_src 'https://www.dshield.org/feeds/suspiciousdomains_Low.txt'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'generic blocklist, daily updates, approx. 3.500 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'feodo'
|
||||
option adb_src 'https://feodotracker.abuse.ch/blocklist/?download=domainblocklist'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'focus on feodo botnet, daily updates, approx. 0-10 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'hphosts'
|
||||
option adb_src 'https://hosts-file.net/ad_servers.txt'
|
||||
option adb_src_rset '/^127\.0\.0\.1[[:space:]]+([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|\$)+/{print tolower(\$2)}'
|
||||
option adb_src_rset '/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|\$)+/{print tolower(\$2)}'
|
||||
option adb_src_desc 'broad blocklist, monthly updates, approx. 19.200 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'malware'
|
||||
option adb_src 'https://mirror.espoch.edu.ec/malwaredomains/justdomains'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'broad blocklist, daily updates, approx. 18.300 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'malwarelist'
|
||||
option adb_src 'http://www.malwaredomainlist.com/hostslist/hosts.txt'
|
||||
option adb_src_rset '/^127\.0\.0\.1[[:space:]]+([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_rset '/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_desc 'focus on malware, daily updates, approx. 1.200 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'openphish'
|
||||
option adb_src 'https://openphish.com/feed.txt'
|
||||
option adb_src_rset 'BEGIN{FS=\"/\"}/^http[s]?:\/\/([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+(\/|$)/{print tolower(\$3)}'
|
||||
option adb_src_rset 'BEGIN{FS=\"/\"}/^http[s]?:\/\/([[:alnum:]_-]+\.)+[[:alpha:]]+(\/|$)/{print tolower(\$3)}'
|
||||
option adb_src_desc 'focus on phishing, numerous updates on the same day, approx. 2.400 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'ransomware'
|
||||
option adb_src 'https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'focus on ransomware by abuse.ch, numerous updates on the same day, approx. 1900 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'reg_cn'
|
||||
option adb_src 'https://easylist-downloads.adblockplus.org/easylistchina+easylist.txt'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([[:alnum:]_-]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_desc 'focus on chinese ads plus generic easylist additions, daily updates, approx. 11.700 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'reg_cz'
|
||||
option adb_src 'https://raw.githubusercontent.com/qxstyles/turris-hole-czech-block-list/master/turris-hole-czech-block-list'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'focus on czech ads maintained by Turris Omnia Users, infrequent updates, approx. 100 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'reg_de'
|
||||
option adb_src 'https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([[:alnum:]_-]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_desc 'focus on german ads plus generic easylist additions, daily updates, approx. 9.200 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'reg_id'
|
||||
option adb_src 'https://easylist-downloads.adblockplus.org/abpindo+easylist.txt'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([[:alnum:]_-]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_desc 'focus on indonesian ads plus generic easylist additions, weekly updates, approx. 9.600 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'reg_nl'
|
||||
option adb_src 'https://easylist-downloads.adblockplus.org/easylistdutch+easylist.txt'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([[:alnum:]_-]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_desc 'focus on dutch ads plus generic easylist additions, weekly updates, approx. 9.400 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'reg_pl'
|
||||
option adb_src 'http://adblocklist.org/adblock-pxf-polish.txt'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([[:alnum:]_-]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_desc 'focus on polish ads, daily updates, approx. 90 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'reg_ro'
|
||||
option adb_src 'https://easylist-downloads.adblockplus.org/rolist+easylist.txt'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([[:alnum:]_-]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_desc 'focus on romanian ads plus generic easylist additions, weekly updates, approx. 9.400 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'reg_ru'
|
||||
option adb_src 'https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_rset 'BEGIN{FS=\"[|^]\"}/^\|\|([[:alnum:]_-]+\.)+[[:alpha:]]+\^("\\\$third-party")?$/{print tolower(\$3)}'
|
||||
option adb_src_desc 'focus on russian ads plus generic easylist additions, weekly updates, approx. 14.500 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'shalla'
|
||||
option adb_src 'http://www.shallalist.de/Downloads/shallalist.tar.gz'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'huge blocklist archive subdivided in different categories, daily updates. Check http://www.shallalist.de/categories.html for more categories'
|
||||
list adb_src_cat 'adv'
|
||||
list adb_src_cat 'costtraps'
|
||||
|
@ -147,26 +147,27 @@ config source 'shalla'
|
|||
|
||||
config source 'spam404'
|
||||
option adb_src 'https://raw.githubusercontent.com/Dawsey21/Lists/master/main-blacklist.txt'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)+/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)+/{print tolower(\$1)}'
|
||||
option adb_src_desc 'generic blocklist, infrequent updates, approx. 6.000 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'sysctl'
|
||||
option adb_src 'http://sysctl.org/cameleon/hosts'
|
||||
option adb_src_rset '/^127\.0\.0\.1[[:space:]]+([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_rset '/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_desc 'broad blocklist, weekly updates, approx. 16.500 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'urlhaus'
|
||||
option adb_src 'https://urlhaus.abuse.ch/downloads/rpz'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)+/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)+/{print tolower(\$1)}'
|
||||
option adb_src_desc 'urlhaus RPZ domains by abuse.ch, numerous updates on the same day, approx. 3.500 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'ut_capitole'
|
||||
option adb_src 'https://dsi.ut-capitole.fr/blacklists/download/blacklists.tar.gz'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'huge blocklist archive subdivided in different categories, daily updates. Check https://dsi.ut-capitole.fr/blacklists/index_en.php for more categories'
|
||||
list adb_src_cat 'publicite'
|
||||
list adb_src_cat 'cryptojacking'
|
||||
list adb_src_cat 'ddos'
|
||||
list adb_src_cat 'malware'
|
||||
|
@ -176,31 +177,36 @@ config source 'ut_capitole'
|
|||
|
||||
config source 'whocares'
|
||||
option adb_src 'http://someonewhocares.org/hosts/hosts'
|
||||
option adb_src_rset '/^127\.0\.0\.1[[:space:]]+([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_rset '/^127\.0\.0\.1[[:space:]]+([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_desc 'broad blocklist, weekly updates, approx. 10.000 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'winspy'
|
||||
option adb_src 'https://raw.githubusercontent.com/crazy-max/WindowsSpyBlocker/master/data/hosts/spy.txt'
|
||||
option adb_src_rset '/^0\.0\.0\.0[[:space:]]+([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_rset '/^0\.0\.0\.0[[:space:]]+([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_desc 'focus on windows spy & telemetry domains, infrequent updates, approx. 300 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'winhelp'
|
||||
option adb_src 'http://winhelp2002.mvps.org/hosts.txt'
|
||||
option adb_src_rset '/^0\.0\.0\.0[[:space:]]+([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_rset '/^0\.0\.0\.0[[:space:]]+([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$2)}'
|
||||
option adb_src_desc 'broad blocklist, infrequent updates, approx. 13.000 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'youtube'
|
||||
option adb_src 'https://api.hackertarget.com/hostsearch/?q=googlevideo.com'
|
||||
option adb_src_rset 'BEGIN{FS=\",\"}/^(r[0-9]+\.){1,1}([[:alnum:]_-]+\.)+[[:alpha:]]+/{sub(/\./,\"---\");print tolower(\$1)}'
|
||||
option adb_src_desc 'focus on youtube ad-related subdomains, dynamic request API, approx. 150 entries'
|
||||
option enabled '0'
|
||||
|
||||
config source 'yoyo'
|
||||
option adb_src 'https://pgl.yoyo.org/adservers/serverlist.php?hostformat=nohtml&showintro=0&mimetype=plaintext'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'focus on ad related domains, weekly updates, approx. 2.400 entries'
|
||||
option enabled '1'
|
||||
|
||||
config source 'zeus'
|
||||
option adb_src 'https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist'
|
||||
option adb_src_rset '/^([^([:space:]|#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_rset '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
option adb_src_desc 'focus on zeus botnet by abuse.ch, daily updates, approx. 400 entries'
|
||||
option enabled '0'
|
||||
|
||||
|
|
|
@ -85,7 +85,7 @@ status()
|
|||
if [ -s "${rtfile}" ]
|
||||
then
|
||||
printf "%s\n" "::: adblock runtime information"
|
||||
json_load "$(cat "${rtfile}" 2>/dev/null)"
|
||||
json_load_file "${rtfile}"
|
||||
json_select data
|
||||
json_get_keys keylist
|
||||
for key in ${keylist}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
LC_ALL=C
|
||||
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
mail_ver="1.0.3"
|
||||
mail_ver="1.0.4"
|
||||
mail_daemon="$(command -v msmtp)"
|
||||
mail_profile="adb_notify"
|
||||
#mail_debug="--debug"
|
||||
|
@ -18,14 +18,14 @@ mail_rc=1
|
|||
|
||||
# mail header & mail receiver check
|
||||
#
|
||||
mail_receiver=""
|
||||
mail_sender="no-reply@adblock"
|
||||
mail_receiver="!!!ChangeMe!!!"
|
||||
mail_topic="${HOSTNAME}: adblock notification"
|
||||
mail_head="From: ${mail_sender}\nTo: ${mail_receiver}\nSubject: ${mail_topic}\nReply-to: ${mail_sender}\nMime-Version: 1.0\nContent-Type: text/html\nContent-Disposition: inline\n\n"
|
||||
|
||||
if [ "${mail_receiver}" = "!!!ChangeMe!!!" ]
|
||||
if [ -z "${mail_receiver}" ]
|
||||
then
|
||||
logger -p "err" -t "adblock-notify-[${mail_ver}]" "please change the 'mail_receiver' in '/etc/adblock/adblock.notify'"
|
||||
logger -p "err" -t "adblock-notify-${mail_ver}[${$}]" "please supply/customize the 'mail_receiver' in '/etc/adblock/adblock.notify'"
|
||||
exit ${mail_rc}
|
||||
fi
|
||||
|
||||
|
@ -61,9 +61,9 @@ if [ -x "${mail_daemon}" ]
|
|||
then
|
||||
printf "%b" "${mail_head}${mail_text}" 2>/dev/null | "${mail_daemon}" ${mail_debug} -a "${mail_profile}" "${mail_receiver}" >/dev/null 2>&1
|
||||
mail_rc=${?}
|
||||
logger -p "info" -t "adblock-notify-[${mail_ver}]" "mail sent to '${mail_receiver}' with rc '${mail_rc}'"
|
||||
logger -p "info" -t "adblock-notify-${mail_ver}[${$}]" "mail sent to '${mail_receiver}' with rc '${mail_rc}'"
|
||||
else
|
||||
logger -p "err" -t "adblock-notify-[${mail_ver}]" "msmtp mail daemon not found"
|
||||
logger -p "err" -t "adblock-notify-${mail_ver}[${$}]" "msmtp mail daemon not found"
|
||||
fi
|
||||
|
||||
exit ${mail_rc}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#
|
||||
LC_ALL=C
|
||||
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
adb_ver="3.5.4-2"
|
||||
adb_ver="3.5.5"
|
||||
adb_sysver="unknown"
|
||||
adb_enabled=0
|
||||
adb_debug=0
|
||||
|
@ -68,16 +68,6 @@ f_envload()
|
|||
adb_hashutil="$(command -v md5sum)"
|
||||
fi
|
||||
|
||||
# source in system libraries
|
||||
#
|
||||
if [ -r "/lib/functions.sh" ] && [ -r "/usr/share/libubox/jshn.sh" ]
|
||||
then
|
||||
. "/lib/functions.sh"
|
||||
. "/usr/share/libubox/jshn.sh"
|
||||
else
|
||||
f_log "err" "system libraries not found"
|
||||
fi
|
||||
|
||||
# parse 'global' and 'extra' section by callback
|
||||
#
|
||||
config_cb()
|
||||
|
@ -174,7 +164,7 @@ f_envload()
|
|||
f_extconf
|
||||
f_temp
|
||||
f_rmdns
|
||||
f_jsnup
|
||||
f_jsnup "disabled"
|
||||
f_log "info" "adblock is currently disabled, please set adb_enabled to '1' to use this service"
|
||||
exit 0
|
||||
fi
|
||||
|
@ -215,6 +205,11 @@ f_envcheck()
|
|||
{
|
||||
local ssl_lib
|
||||
|
||||
# startup message
|
||||
#
|
||||
f_log "info" "adblock instance started ::: action: ${adb_action}, priority: ${adb_nice:-"0"}, pid: ${$}"
|
||||
f_jsnup "running"
|
||||
|
||||
# check external uci config files
|
||||
#
|
||||
f_extconf
|
||||
|
@ -257,10 +252,7 @@ f_envcheck()
|
|||
f_log "err" "download utility not found, please install 'uclient-fetch' with 'libustream-mbedtls' or the full 'wget' package"
|
||||
fi
|
||||
adb_fetchinfo="${adb_fetchutil} (${ssl_lib:-"-"})"
|
||||
|
||||
f_temp
|
||||
f_jsnup "running"
|
||||
f_log "info" "start adblock processing (${adb_action})"
|
||||
}
|
||||
|
||||
# create temporary files and directories
|
||||
|
@ -322,7 +314,7 @@ f_uci()
|
|||
change="$(uci -q changes "${config}" | awk '{ORS=" "; print $0}')"
|
||||
if [ -n "${change}" ]
|
||||
then
|
||||
uci -q commit "${config}"
|
||||
uci_commit "${config}"
|
||||
case "${config}" in
|
||||
firewall)
|
||||
/etc/init.d/firewall reload >/dev/null 2>&1
|
||||
|
@ -365,29 +357,29 @@ f_extconf()
|
|||
case "${adb_dns}" in
|
||||
dnsmasq)
|
||||
uci_config="dhcp"
|
||||
if [ ${adb_enabled} -eq 1 ] && [ -z "$(uci -q get dhcp.@dnsmasq[${adb_dnsinstance}].serversfile | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")" ]
|
||||
if [ ${adb_enabled} -eq 1 ] && [ -z "$(uci_get dhcp "@dnsmasq[${adb_dnsinstance}].serversfile" | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")" ]
|
||||
then
|
||||
uci -q set dhcp.@dnsmasq[${adb_dnsinstance}].serversfile="${adb_dnsdir}/${adb_dnsfile}"
|
||||
elif [ ${adb_enabled} -eq 0 ] && [ -n "$(uci -q get dhcp.@dnsmasq[${adb_dnsinstance}].serversfile | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")" ]
|
||||
uci_set dhcp "@dnsmasq[${adb_dnsinstance}].serversfile" "${adb_dnsdir}/${adb_dnsfile}"
|
||||
elif [ ${adb_enabled} -eq 0 ] && [ -n "$(uci_get dhcp "@dnsmasq[${adb_dnsinstance}].serversfile" | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")" ]
|
||||
then
|
||||
uci -q delete dhcp.@dnsmasq[${adb_dnsinstance}].serversfile
|
||||
uci_remove dhcp "@dnsmasq[${adb_dnsinstance}].serversfile"
|
||||
fi
|
||||
;;
|
||||
kresd)
|
||||
uci_config="resolver"
|
||||
if [ ${adb_enabled} -eq 1 ] && [ -z "$(uci -q get resolver.kresd.rpz_file | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")" ]
|
||||
if [ ${adb_enabled} -eq 1 ] && [ -z "$(uci_get resolver kresd.rpz_file | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")" ]
|
||||
then
|
||||
uci -q add_list resolver.kresd.rpz_file="${adb_dnsdir}/${adb_dnsfile}"
|
||||
elif [ ${adb_enabled} -eq 0 ] && [ -n "$(uci -q get resolver.kresd.rpz_file | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")" ]
|
||||
elif [ ${adb_enabled} -eq 0 ] && [ -n "$(uci_get resolver kresd.rpz_file | grep -Fo "${adb_dnsdir}/${adb_dnsfile}")" ]
|
||||
then
|
||||
uci -q del_list resolver.kresd.rpz_file="${adb_dnsdir}/${adb_dnsfile}"
|
||||
fi
|
||||
if [ ${adb_enabled} -eq 1 ] && [ ${adb_dnsflush} -eq 0 ] && [ "$(uci -q get resolver.kresd.keep_cache)" != "1" ]
|
||||
if [ ${adb_enabled} -eq 1 ] && [ ${adb_dnsflush} -eq 0 ] && [ "$(uci_get resolver "kresd.keep_cache")" != "1" ]
|
||||
then
|
||||
uci -q set resolver.kresd.keep_cache="1"
|
||||
elif [ ${adb_enabled} -eq 0 ] || ([ ${adb_dnsflush} -eq 1 ] && [ "$(uci -q get resolver.kresd.keep_cache)" = "1" ])
|
||||
uci_set resolver "kresd.keep_cache" "1"
|
||||
elif [ ${adb_enabled} -eq 0 ] || ([ ${adb_dnsflush} -eq 1 ] && [ "$(uci_get resolver "kresd.keep_cache")" = "1" ])
|
||||
then
|
||||
uci -q set resolver.kresd.keep_cache="0"
|
||||
uci_set resolver "kresd.keep_cache" "0"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
@ -395,7 +387,7 @@ f_extconf()
|
|||
|
||||
uci_config="firewall"
|
||||
if [ ${adb_enabled} -eq 1 ] && [ ${adb_forcedns} -eq 1 ] && \
|
||||
[ -z "$(uci -q get firewall.adblock_dns_53)" ] && [ $(/etc/init.d/firewall enabled; printf '%u' ${?}) -eq 0 ]
|
||||
[ -z "$(uci_get firewall adblock_dns_53)" ] && [ $(/etc/init.d/firewall enabled; printf '%u' ${?}) -eq 0 ]
|
||||
then
|
||||
for port in ${port_list}
|
||||
do
|
||||
|
@ -407,7 +399,7 @@ f_extconf()
|
|||
uci_set firewall "adblock_dns_${port}" "dest_port" "${port}"
|
||||
uci_set firewall "adblock_dns_${port}" "target" "DNAT"
|
||||
done
|
||||
elif [ -n "$(uci -q get firewall.adblock_dns_53)" ] && ([ ${adb_enabled} -eq 0 ] || [ ${adb_forcedns} -eq 0 ])
|
||||
elif [ -n "$(uci_get firewall adblock_dns_53)" ] && ([ ${adb_enabled} -eq 0 ] || [ ${adb_forcedns} -eq 0 ])
|
||||
then
|
||||
for port in ${port_list}
|
||||
do
|
||||
|
@ -555,7 +547,7 @@ f_list()
|
|||
if [ ${?} -eq 0 ] && [ -n "${adb_dnsheader}" ]
|
||||
then
|
||||
printf '%s\n' "${adb_dnsheader}" | cat - "${adb_dnsdir}/${adb_dnsfile}" > "${adb_tmpdir}/${adb_dnsfile}"
|
||||
cat "${adb_tmpdir}/${adb_dnsfile}" > "${adb_dnsdir}/${adb_dnsfile}"
|
||||
mv -f "${adb_tmpdir}/${adb_dnsfile}" "${adb_dnsdir}/${adb_dnsfile}"
|
||||
fi
|
||||
adb_rc=${?}
|
||||
;;
|
||||
|
@ -571,39 +563,28 @@ f_tld()
|
|||
local cnt cnt_srt cnt_tld source="${1}" temp="${1}.tld"
|
||||
|
||||
cnt="$(wc -l 2>/dev/null < "${source}")"
|
||||
sort -u "${source}" > "${temp}"
|
||||
awk 'BEGIN{FS="."}{for(f=NF;f>1;f--)printf "%s.",$f;print $1}' "${source}" > "${temp}"
|
||||
if [ ${?} -eq 0 ]
|
||||
then
|
||||
cnt_srt="$(wc -l 2>/dev/null < "${temp}")"
|
||||
awk -F "." '{for(f=NF;f>1;f--)printf "%s.",$f;print $1}' "${temp}" > "${source}"
|
||||
sort -u "${temp}" > "${source}"
|
||||
if [ ${?} -eq 0 ]
|
||||
then
|
||||
sort "${source}" > "${temp}"
|
||||
cnt_srt="$(wc -l 2>/dev/null < "${source}")"
|
||||
awk '{if(NR==1){tld=$NF};while(getline){if($NF!~tld"\\."){print tld;tld=$NF}}print tld}' "${source}" > "${temp}"
|
||||
if [ ${?} -eq 0 ]
|
||||
then
|
||||
awk '{if(NR==1){tld=$NF};while(getline){if($NF!~tld"\\."){print tld;tld=$NF}}print tld}' "${temp}" > "${source}"
|
||||
if [ ${?} -eq 0 ]
|
||||
then
|
||||
awk -F "." '{for(f=NF;f>1;f--)printf "%s.",$f;print $1}' "${source}" > "${temp}"
|
||||
if [ ${?} -eq 0 ]
|
||||
then
|
||||
sort "${temp}" > "${source}"
|
||||
awk 'BEGIN{FS="."}{for(f=NF;f>1;f--)printf "%s.",$f;print $1}' "${temp}" > "${source}"
|
||||
if [ ${?} -eq 0 ]
|
||||
then
|
||||
cnt_tld="$(wc -l 2>/dev/null < "${source}")"
|
||||
else
|
||||
cat "${temp}" > "${source}"
|
||||
mv -f "${temp}" > "${source}"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
cat "${temp}" > "${source}"
|
||||
mv -f "${temp}" "${source}"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
cat "${temp}" > "${source}"
|
||||
fi
|
||||
fi
|
||||
rm -f "${temp}"
|
||||
f_log "debug" "f_tld ::: source: ${source}, cnt: ${cnt:-"-"}, cnt_srt: ${cnt_srt:-"-"}, cnt_tld: ${cnt_tld:-"-"}"
|
||||
}
|
||||
|
||||
|
@ -720,20 +701,16 @@ f_query()
|
|||
#
|
||||
f_jsnup()
|
||||
{
|
||||
local bg_pid rundate status="${1:-"enabled"}" mode="normal mode" no_mail=0
|
||||
local run_time bg_pid status="${1:-"enabled"}" mode="normal mode" no_mail=0
|
||||
|
||||
if [ ${adb_rc} -gt 0 ]
|
||||
then
|
||||
status="error"
|
||||
rundate="$(/bin/date "+%d.%m.%Y %H:%M:%S")"
|
||||
fi
|
||||
if [ ${adb_enabled} -eq 0 ]
|
||||
then
|
||||
status="disabled"
|
||||
run_time="$(/bin/date "+%d.%m.%Y %H:%M:%S")"
|
||||
fi
|
||||
if [ "${status}" = "enabled" ]
|
||||
then
|
||||
rundate="$(/bin/date "+%d.%m.%Y %H:%M:%S")"
|
||||
run_time="$(/bin/date "+%d.%m.%Y %H:%M:%S")"
|
||||
fi
|
||||
if [ "${status}" = "suspend" ]
|
||||
then
|
||||
|
@ -749,36 +726,26 @@ f_jsnup()
|
|||
mode="backup mode"
|
||||
fi
|
||||
|
||||
if [ -s "${adb_rtfile}" ]
|
||||
then
|
||||
json_load "$(cat "${adb_rtfile}" 2>/dev/null)"
|
||||
json_select data
|
||||
|
||||
if [ -z "${adb_fetchinfo}" ] && [ -s "${adb_rtfile}" ]
|
||||
if [ -z "${adb_fetchinfo}" ]
|
||||
then
|
||||
json_get_var adb_fetchinfo "fetch_utility"
|
||||
fi
|
||||
if [ -z "${rundate}" ]
|
||||
then
|
||||
json_get_var rundate "last_rundate"
|
||||
fi
|
||||
if [ -z "${adb_cnt}" ]
|
||||
then
|
||||
json_get_var adb_cnt "overall_domains"
|
||||
adb_cnt="${adb_cnt%% *}"
|
||||
fi
|
||||
if [ -z "${run_time}" ]
|
||||
then
|
||||
json_get_var run_time "last_rundate"
|
||||
fi
|
||||
|
||||
json_init
|
||||
json_add_object "data"
|
||||
json_add_string "adblock_status" "${status}"
|
||||
json_add_string "adblock_version" "${adb_ver}"
|
||||
json_add_string "overall_domains" "${adb_cnt:-0} (${mode})"
|
||||
json_add_string "fetch_utility" "${adb_fetchinfo:-"-"}"
|
||||
json_add_string "dns_backend" "${adb_dns} (${adb_dnsdir})"
|
||||
json_add_string "last_rundate" "${rundate:-"-"}"
|
||||
json_add_string "last_rundate" "${run_time:-"-"}"
|
||||
json_add_string "system_release" "${adb_sysver}"
|
||||
json_close_object
|
||||
json_dump > "${adb_rtfile}"
|
||||
|
||||
if [ ${adb_notify} -eq 1 ] && [ ${no_mail} -eq 0 ] && [ -x /etc/adblock/adblock.notify ] && \
|
||||
|
@ -798,12 +765,12 @@ f_log()
|
|||
|
||||
if [ -n "${log_msg}" ] && ([ "${class}" != "debug" ] || [ ${adb_debug} -eq 1 ])
|
||||
then
|
||||
logger -p "${class}" -t "adblock-[${adb_ver}]" "${log_msg}"
|
||||
logger -p "${class}" -t "adblock-${adb_ver}[${$}]" "${log_msg}"
|
||||
if [ "${class}" = "err" ]
|
||||
then
|
||||
f_rmdns
|
||||
f_jsnup
|
||||
logger -p "${class}" -t "adblock-[${adb_ver}]" "Please also check 'https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md'"
|
||||
logger -p "${class}" -t "adblock-${adb_ver}[${$}]" "Please also check 'https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md'"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
@ -829,11 +796,11 @@ f_main()
|
|||
#
|
||||
if [ -s "${adb_whitelist}" ]
|
||||
then
|
||||
adb_whitelist_rset="/^([^([:space:]|\#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}"
|
||||
adb_whitelist_rset="/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}"
|
||||
awk "${adb_whitelist_rset}" "${adb_whitelist}" > "${adb_tmpdir}/tmp.raw_whitelist"
|
||||
f_tld "${adb_tmpdir}/tmp.raw_whitelist"
|
||||
|
||||
adb_whitelist_rset="/^([^([:space:]|\#|\*|\/).]+\.)+[[:alpha:]]+([[:space:]]|$)/{gsub(\"\\\.\",\"\\\.\",\$1);print tolower(\"^\"\$1\"\\\|\\\.\"\$1)}"
|
||||
adb_whitelist_rset="/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{gsub(\"\\\.\",\"\\\.\",\$1);print tolower(\"^\"\$1\"\\\|\\\.\"\$1)}"
|
||||
awk "${adb_whitelist_rset}" "${adb_tmpdir}/tmp.raw_whitelist" > "${adb_tmpdir}/tmp.rem_whitelist"
|
||||
|
||||
if [ -n "${adb_dnsallow}" ]
|
||||
|
@ -1052,6 +1019,27 @@ f_main()
|
|||
exit ${adb_rc}
|
||||
}
|
||||
|
||||
# source required system libraries
|
||||
#
|
||||
if [ -r "/lib/functions.sh" ] && [ -r "/usr/share/libubox/jshn.sh" ]
|
||||
then
|
||||
. "/lib/functions.sh"
|
||||
. "/usr/share/libubox/jshn.sh"
|
||||
else
|
||||
f_log "err" "system libraries not found"
|
||||
fi
|
||||
|
||||
# initialize json runtime file
|
||||
#
|
||||
json_load_file "${adb_rtfile}" >/dev/null 2>&1
|
||||
json_select data >/dev/null 2>&1
|
||||
if [ ${?} -ne 0 ]
|
||||
then
|
||||
> "${adb_rtfile}"
|
||||
json_init
|
||||
json_add_object "data"
|
||||
fi
|
||||
|
||||
# handle different adblock actions
|
||||
#
|
||||
f_envload
|
||||
|
|
Loading…
Reference in a new issue