adblock: release 3.8.0
* add support for 'DNS File Reset', where the final DNS blockfile
will be purged after DNS backend loading (save storage space).
A small background service will be started to trace/handle
dns backend reloads/restarts
* add support for the 'null' blocking variant in dnsmasq
(via addn-hosts), which may provide better response times
in dnsmasq
* enhance the report & search engine to support
the new blocking variants. Search now includes
backups & black-/whitelist as well
* compressed source list backups are now mandatory (default to '/tmp')
* speed up TLD compression
* E-Mail notification setup is now integrated in UCI/LuCI
* update the LuCI frontend to reflect all changes (separate PR)
* drop preliminary dnscrypt-proxy-support (use dnsmasq instead)
* drop additional 'dnsjail' blocklist support (not used by anyone)
* procd cleanups in init
* various shellcheck cleanups
* update readme
Signed-off-by: Dirk Brenken <dev@brenken.org>
(cherry picked from commit 504412ccdb
)
This commit is contained in:
parent
caecb1d400
commit
641318d5c5
8 changed files with 604 additions and 585 deletions
|
@ -6,8 +6,8 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=adblock
|
||||
PKG_VERSION:=3.6.5
|
||||
PKG_RELEASE:=2
|
||||
PKG_VERSION:=3.8.0
|
||||
PKG_RELEASE:=1
|
||||
PKG_LICENSE:=GPL-3.0+
|
||||
PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
|
||||
|
||||
|
@ -22,7 +22,7 @@ define Package/adblock
|
|||
endef
|
||||
|
||||
define Package/adblock/description
|
||||
Powerful adblock script to block ad/abuse domains via dnsmasq, unbound, named, kresd or dnscrypt-proxy.
|
||||
Powerful adblock script to block ad/abuse domains via dnsmasq, unbound, named or kresd.
|
||||
The script supports many domain blacklist sites plus manual black- and whitelist overrides.
|
||||
Please see https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md for further information.
|
||||
|
||||
|
@ -45,7 +45,7 @@ endef
|
|||
|
||||
define Package/adblock/install
|
||||
$(INSTALL_DIR) $(1)/usr/bin
|
||||
$(INSTALL_BIN) ./files/adblock.sh $(1)/usr/bin/
|
||||
$(INSTALL_BIN) ./files/adblock.sh $(1)/usr/bin
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/init.d
|
||||
$(INSTALL_BIN) ./files/adblock.init $(1)/etc/init.d/adblock
|
||||
|
@ -54,9 +54,10 @@ define Package/adblock/install
|
|||
$(INSTALL_CONF) ./files/adblock.conf $(1)/etc/config/adblock
|
||||
|
||||
$(INSTALL_DIR) $(1)/etc/adblock
|
||||
$(INSTALL_CONF) ./files/adblock.notify $(1)/etc/adblock/
|
||||
$(INSTALL_CONF) ./files/adblock.blacklist $(1)/etc/adblock/
|
||||
$(INSTALL_CONF) ./files/adblock.whitelist $(1)/etc/adblock/
|
||||
$(INSTALL_BIN) ./files/adblock.mail $(1)/etc/adblock
|
||||
$(INSTALL_BIN) ./files/adblock.service $(1)/etc/adblock
|
||||
$(INSTALL_CONF) ./files/adblock.blacklist $(1)/etc/adblock
|
||||
$(INSTALL_CONF) ./files/adblock.whitelist $(1)/etc/adblock
|
||||
endef
|
||||
|
||||
$(eval $(call BuildPackage,adblock))
|
||||
|
|
|
@ -61,44 +61,43 @@ A lot of people already use adblocker plugins within their desktop browsers, but
|
|||
* => weekly updates, approx. 2.500 entries (enabled by default)
|
||||
* zero-conf like automatic installation & setup, usually no manual changes needed
|
||||
* simple but yet powerful adblock engine: adblock does not use error prone external iptables rulesets, http pixel server instances and things like that
|
||||
* supports five different dns backends / blocklist formats: dnsmasq, unbound, named (bind), kresd and dnscrypt-proxy
|
||||
* supports six different download utilities: uclient-fetch, wget, curl, aria2c, wget-nossl, busybox-wget
|
||||
* Really fast downloads & list processing as they are handled in parallel as background jobs in a configurable 'Download Queue'
|
||||
* provides 'http only' mode without installed ssl library for all non-SSL blocklist sources
|
||||
* supports a wide range of router modes, even AP modes are supported
|
||||
* support four different dns backends: dnsmasq, unbound, named (bind) and kresd
|
||||
* support two different dns blocking variants: 'nxdomain' (default, supported by all backends), 'null' (supported only by dnsmasq)
|
||||
* support six different download utilities: uclient-fetch, wget, curl, aria2c, wget-nossl, busybox-wget
|
||||
* fast downloads & list processing as they are handled in parallel running background jobs (see 'Download Queue')
|
||||
* provide 'http only' mode without installed ssl library for all non-SSL blocklist sources
|
||||
* support a wide range of router modes, even AP modes are supported
|
||||
* full IPv4 and IPv6 support
|
||||
* provides top level domain compression ('tld compression'), this feature removes thousands of needless host entries from the blocklist and lowers the memory footprint for the dns backend
|
||||
* provide top level domain compression ('tld compression'), this feature removes thousands of needless host entries from the blocklist and lowers the memory footprint for the dns backend
|
||||
* provide a 'DNS File Reset', where the final DNS blockfile will be purged after DNS backend loading to save storage space
|
||||
* blocklist source parsing by fast & flexible regex rulesets
|
||||
* overall duplicate removal in central blocklist 'adb_list.overall'
|
||||
* additional whitelist for manual overrides, located by default in /etc/adblock/adblock.whitelist
|
||||
* additional blacklist for manual overrides, located by default in /etc/adblock/adblock.blacklist or in LuCI
|
||||
* additional whitelist for manual overrides, located by default in /etc/adblock/adblock.whitelist or in LuCI
|
||||
* quality checks during blocklist update to ensure a reliable dns backend service
|
||||
* minimal status & error logging to syslog, enable debug logging to receive more output
|
||||
* procd based init system support (start/stop/restart/reload/suspend/resume/query/status)
|
||||
* procd network interface trigger support or classic time based startup
|
||||
* keep the dns cache intact after adblock processing (currently supported by unbound, named and kresd)
|
||||
* conditional dns backend restarts by old/new blocklist comparison with sha256sum (default) or md5sum
|
||||
* suspend & resume adblock actions temporarily without blocklist reloading
|
||||
* provide comprehensive runtime information via LuCI or via 'status' init command
|
||||
* provide a detailed DNS Query Report with dns related information about client requests, top (blocked) domains and more
|
||||
* provide a query function to quickly identify blocked (sub-)domains, e.g. for whitelisting. This function is also able to search in adblock backups, to get back the set of blocking lists sources for a certain domain
|
||||
* force dns requests to local resolver
|
||||
* force overall sort / duplicate removal for low memory devices (handle with care!)
|
||||
* automatic blocklist backup & restore, they will be used in case of download errors or during startup in backup mode
|
||||
* 'backup mode' to re-use blocklist backups during startup, get fresh lists only via reload or restart action
|
||||
* 'Jail' blocklist generation which builds an additional list (/tmp/adb_list.jail) to block access to all domains except those listed in the whitelist file. You can use this restrictive blocklist manually e.g. for guest wifi or kidsafe configurations
|
||||
* send notification emails in case of a processing error or if the overall domain count is ≤ 0
|
||||
* provide a query function to quickly identify blocked (sub-)domains, e.g. for whitelisting. This function is also able to search in adblock backups and black-/whitelist, to get back the set of blocking lists sources for a certain domain
|
||||
* option to force dns requests to the local resolver
|
||||
* automatic blocklist backup & restore, these backups will be used in case of download errors and during startup
|
||||
* send notification E-Mails in case of a processing error or if the overall domain count is ≤ 0
|
||||
* add new adblock sources on your own, see example below
|
||||
* strong LuCI support
|
||||
* strong LuCI support for all options
|
||||
|
||||
## Prerequisites
|
||||
* [OpenWrt](https://openwrt.org), tested with the stable release series (18.06) and with the latest snapshot
|
||||
* [OpenWrt](https://openwrt.org), tested with the stable release series (19.07) 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
|
||||
* for limited devices with real memory constraints, adblock provides also a 'http only' option and supports wget-nossl and uclient-fetch (without libustream-ssl) as well
|
||||
* for more configuration options see examples below
|
||||
* email notification (optional): for email notification support you need to install and configure the additional 'msmtp' package
|
||||
* DNS Query Report (optional): for this detailed report you need to install the additional package 'tcpdump' or 'tcpdump-mini'
|
||||
* E-Mail notification (optional): for E-Mail notification support you need the additional 'msmtp' package
|
||||
* DNS Query Report (optional): for this detailed report you need the additional package 'tcpdump' or 'tcpdump-mini'
|
||||
|
||||
## Installation & Usage
|
||||
* install 'adblock' (_opkg install adblock_)
|
||||
|
@ -108,56 +107,59 @@ A lot of people already use adblocker plugins within their desktop browsers, but
|
|||
## LuCI adblock companion package
|
||||
* it's strongly recommended to use the LuCI frontend to easily configure all powerful aspects of adblock
|
||||
* install 'luci-app-adblock' (_opkg install luci-app-adblock_)
|
||||
* the application is located in LuCI under 'Services' menu
|
||||
* the application is located in LuCI under the 'Services' menu
|
||||
|
||||
## Tweaks
|
||||
* **runtime information:** the adblock status is available via _/etc/init.d/adblock status_ (see example below)
|
||||
* **debug logging:** for script debugging please set the config option 'adb\_debug' to '1' and check the runtime output with _logread -e "adblock"_
|
||||
* **storage expansion:** to process and store all blocklist sources at once it might helpful to enlarge your temp directory with a swap partition => see [OpenWrt Wiki](https://wiki.openwrt.org/doc/uci/fstab) for further details
|
||||
* **add white- / blacklist entries:** add domain white- or blacklist entries to always-allow or -deny certain (sub) domains, by default both lists are empty and located in _/etc/adblock_. Please add one domain per line - ip addresses, wildcards & regex are _not_ allowed (see example below)
|
||||
* **backup & restore blocklists:** enable this feature, to restore automatically the latest compressed backup of your blocklists in case of any processing error (e.g. a single blocklist source is not available during update). Please use an (external) solid partition and _not_ your volatile router temp directory for this
|
||||
* **storage expansion:** to process and store all blocklist sources at once it might be helpful to enlarge your temp directory with a swap partition => see [OpenWrt Wiki](https://openwrt.org/docs/guide-user/storage/fstab) for further details
|
||||
* **add white- / blacklist entries:** add domain black- or whitelist entries to always-deny or -allow certain (sub) domains, by default both lists are empty and located in _/etc/adblock_. Please add one domain per line - ip addresses, wildcards & regex are _not_ allowed (see example below). You need to refresh your blocklists after changes to these static lists.
|
||||
* **download queue size:** for further download & list processing performance improvements you can raise the 'adb\_maxqueue' value, e.g. '8' or '16' should be safe
|
||||
* **scheduled list updates:** for a scheduled call of the adblock service add an appropriate crontab entry (see example below)
|
||||
* **change startup behaviour:** by default the startup will be triggered by the 'wan' procd interface trigger. Choose 'none' to disable automatic startups, 'timed' to use a classic timeout (default 30 sec.) or select another trigger interface
|
||||
* **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 blocklist for a certain domain, please use the LuCI frontend or run _/etc/init.d/adblock query `<DOMAIN>`_ (see example below)
|
||||
* **add new list sources:** you could add new blocklist 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_
|
||||
|
||||
## Further adblock config options
|
||||
* usually the pre-configured adblock setup works quite well and no manual overrides are needed
|
||||
* the following options apply to the 'global' config section:
|
||||
* adb\_enabled => main switch to enable/disable adblock service (default: '0', disabled)
|
||||
* adb\_debug => enable/disable adblock debug output (default: '0', disabled)
|
||||
* adb\_dns => select the dns backend for your environment: 'dnsmasq', 'unbound', 'named' or 'kresd' (default: 'dnsmasq')
|
||||
* adb\_dnsvariant => select the blocking variant: 'nxdomain' (default, supported by all backends), 'null (IPv4)' and 'null (IPv4/IPv6)' both options are only supported by dnsmasq
|
||||
* adb\_fetchutil => name of the used download utility: 'uclient-fetch', 'wget', 'curl', 'aria2c', 'wget-nossl'. 'busybox' (default: 'uclient-fetch')
|
||||
* adb\_fetchparm => special config options for the download utility (default: not set)
|
||||
* adb\_dns => select the dns backend for your environment: 'dnsmasq', 'unbound', 'named', 'kresd' or 'dnscrypt-proxy' (default: 'dnsmasq')
|
||||
* adb\_dnsdir => target directory for the generated blocklist 'adb_list.overall' (default: not set, use dns backend default)
|
||||
* adb\_trigger => set the startup trigger to a certain interface, to 'timed' or to 'none' (default: 'wan')
|
||||
|
||||
* the following options apply to the 'extra' config section:
|
||||
* adb\_debug => enable/disable adblock debug output (default: '0', disabled)
|
||||
* adb\_nice => set the nice level of the adblock process and all sub-processes (int/default: '0', standard priority)
|
||||
* adb\_triggerdelay => additional trigger delay in seconds before adblock processing begins (int/default: '2')
|
||||
* adb\_forcedns => force dns requests to local resolver (bool/default: '0', disabled)
|
||||
* adb\_backup => create compressed blocklist backups, they will be used in case of download errors or during startup in backup mode (bool/default: '0', disabled)
|
||||
* adb\_backupdir => target directory for adblock backups (default: not set)
|
||||
* 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: '8')
|
||||
* adb\_dnsfilereset => the final DNS blockfile will be purged after DNS backend loading to save storage space (bool/default: 'false', disabled)
|
||||
* adb\_report => enable the background tcpdump gathering process to provide a detailed DNS Query Report (bool/default: '0', disabled)
|
||||
* adb\_repdir => target directory for dns related report files generated by tcpdump (default: '/tmp')
|
||||
* adb\_backupdir => target directory for adblock backups (default: '/tmp')
|
||||
* adb\_mail => send notification E-Mails in case of a processing errors or if the overall domain count is ≤ 0 (bool/default: '0', disabled)
|
||||
* adb\_mreceiver => receiver address for adblock notification E-Mails (default: not set)
|
||||
* the following options could be added via "Additional Field" in LuCI and apply to the 'extra' config section as well:
|
||||
* adb\_dnsdir => target directory for the generated blocklist 'adb_list.overall' (default: not set, use dns backend default)
|
||||
* adb\_blacklist => full path to the static blacklist file (default: '/etc/adblock/adblock.blacklist')
|
||||
* adb\_whitelist => full path to the static whitelist file (default: '/etc/adblock/adblock.whitelist')
|
||||
* adb\_triggerdelay => additional trigger delay in seconds before adblock processing begins (int/default: '2')
|
||||
* adb\_dnsflush => flush DNS cache after adblock processing, i.e. enable the old restart behavior (bool/default: '0', disabled)
|
||||
* adb\_repiface => reporting interface used by tcpdump, set to 'any' for multiple interfaces (default: 'br-lan')
|
||||
* adb\_replisten => space separated list of reporting port(s) used by tcpdump (default: '53')
|
||||
* adb\_repchunksize => report chunk size used by tcpdump in MB (int/default: '1')
|
||||
* adb\_repchunkcnt => report chunk count used by tcpdump (default: '5')
|
||||
* adb\_maxqueue => size of the download queue to handle downloads & list processing in parallel (int/default: '8')
|
||||
* 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)
|
||||
* adb\_notifycnt => Raise minimum domain count email notification trigger (int/default: '0')
|
||||
* adb\_repchunksize => report chunk size used by tcpdump in MB (int/default: '1')
|
||||
* adb\_msender => sender address for adblock notification E-Mails (default: 'no-reply@adblock')
|
||||
* adb\_mtopic => topic for adblock notification E-Mails (default: 'adblock notification')
|
||||
* adb\_mprofile => mail profile used in 'msmtp' for adblock notification E-Mails (default: 'adb_notify')
|
||||
* adb\_mcnt => raise the minimum domain count E-Mmail notification trigger (int/default: '0')
|
||||
|
||||
## Examples
|
||||
**change default dns backend to 'unbound':**
|
||||
|
||||
Adblock deposits the final blocklist 'adb_list.overall' in '/var/lib/unbound' where unbound can find them in its jail.
|
||||
Adblock deposits the final blocklist 'adb_list.overall' in '/var/lib/unbound' where unbound can find them in its jail, no further configuration needed.
|
||||
To preserve the DNS cache after adblock processing you need to install 'unbound-control'.
|
||||
|
||||
**change default dns backend to 'named' (bind):**
|
||||
|
@ -183,25 +185,7 @@ and at the end of the file add:
|
|||
The knot-resolver (kresd) is only available on Turris Omnia devices.
|
||||
Adblock deposits the final blocklist 'adb_list.overall' in '/etc/kresd', no further configuration needed.
|
||||
|
||||
**change default dns backend to 'dnscrypt-proxy':**
|
||||
|
||||
The required 'blacklist' option of dnscrypt-proxy is not enabled by default, because the package will be compiled without plugins support.
|
||||
Take a custom OpenWrt build with plugins support to use this feature. Adblock deposits the final blocklist 'adb_list.overall' in '/tmp'.
|
||||
To use the blocklist please modify '/etc/config/dnscrypt-proxy' per instance:
|
||||
<pre><code>
|
||||
list blacklist 'domains:/tmp/adb_list.overall'
|
||||
</code></pre>
|
||||
|
||||
**reference the jail block list manually in a 'kidsafe' dhcp config:**
|
||||
|
||||
The additional 'Jail' blocklist (by default in /tmp/adb_list.jail) block access to all domains except those listed in the whitelist file.
|
||||
<pre><code>
|
||||
config dnsmasq 'kidsafe'
|
||||
[...]
|
||||
option serversfile '/tmp/adb_list.jail'
|
||||
</code></pre>
|
||||
|
||||
**enable email notification via msmtp:**
|
||||
**enable E-Mail notification via msmtp:**
|
||||
|
||||
To use the email notification you have to install & configure the package 'msmtp'.
|
||||
Modify the file '/etc/msmtprc':
|
||||
|
@ -221,8 +205,7 @@ from dev.adblock@gmail.com
|
|||
user dev.adblock
|
||||
password xxx
|
||||
</code></pre>
|
||||
Edit the file '/etc/adblock/adblock.notify' and change at least the 'mail_receiver'.
|
||||
Finally make this file executable via 'chmod' and test it directly. If no more errors come up you can comment 'mail_debug', too.
|
||||
Finally enable E-Mail support and add a valid E-Mail address in LuCI.
|
||||
|
||||
**receive adblock runtime information:**
|
||||
|
||||
|
@ -230,12 +213,14 @@ 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.6.0
|
||||
+ overall_domains : 30267 (backup mode)
|
||||
+ adblock_version : 3.8.0
|
||||
+ overall_domains : 48359
|
||||
+ fetch_utility : /bin/uclient-fetch (libustream-ssl)
|
||||
+ dns_backend : dnsmasq (/tmp)
|
||||
+ last_rundate : 19.12.2018 16:29:25
|
||||
+ system_release : GL-AR750S, OpenWrt SNAPSHOT r8814-6835c13e5a
|
||||
+ dns_backend : dnsmasq, /tmp
|
||||
+ dns_variant : null (IPv4/IPv6), true
|
||||
+ backup_dir : /mnt/data/adblock
|
||||
+ last_rundate : 15.08.2019 08:43:16
|
||||
+ system_release : GL.iNet GL-AR750S, OpenWrt SNAPSHOT r10720-ccb4b96b8a
|
||||
</code></pre>
|
||||
|
||||
**receive adblock DNS Query Report information:**
|
||||
|
@ -272,6 +257,7 @@ Finally make this file executable via 'chmod' and test it directly. If no more e
|
|||
+ 2 ::: v10.events.data.microsoft.com
|
||||
+ 2 ::: settings-win.data.microsoft.com
|
||||
+ 2 ::: nexusrules.officeapps.live.com
|
||||
[...]
|
||||
</code></pre>
|
||||
|
||||
**cronjob for a regular block list update (/etc/crontabs/root):**
|
||||
|
@ -309,23 +295,28 @@ This entry does not remove:
|
|||
www.adwhere.com
|
||||
</code></pre>
|
||||
|
||||
**query the active blocklist for a certain (sub-)domain, e.g. for whitelisting:**
|
||||
**query the active blocklist, the backups and black-/whitelist for a certain (sub-)domain, e.g. for whitelisting:**
|
||||
|
||||
The query function checks against the submitted (sub-)domain and recurses automatically to the upper top level domain. For every (sub-)domain it returns the first ten relevant results.
|
||||
<pre><code>
|
||||
/etc/init.d/adblock query google.com
|
||||
:::
|
||||
::: results for domain 'google.com'
|
||||
::: results for domain 'google.com' in active blocklist
|
||||
:::
|
||||
+ adservice.google.com
|
||||
+ adservice.google.com.au
|
||||
+ adservice.google.com.vn
|
||||
+ adservices.google.com
|
||||
+ analytics.google.com
|
||||
+ googleadapis.l.google.com
|
||||
+ pagead.l.google.com
|
||||
+ partnerad.l.google.com
|
||||
+ ssl-google-analytics.l.google.com
|
||||
+ www-google-analytics.l.google.com
|
||||
+ video-stats.video.google.com
|
||||
+ [...]
|
||||
|
||||
:::
|
||||
::: results for domain 'google.com' in backups
|
||||
::: results for domain 'google.com' in backups and black-/whitelist
|
||||
:::
|
||||
+ adb_list.adguard.gz partnerad.l.google.com
|
||||
+ adb_list.adguard.gz googleadapis.l.google.com
|
||||
|
@ -335,9 +326,13 @@ The query function checks against the submitted (sub-)domain and recurses automa
|
|||
+ adb_list.disconnect.gz partnerad.l.google.com
|
||||
+ adb_list.disconnect.gz video-stats.video.google.com
|
||||
+ adb_list.disconnect.gz [...]
|
||||
+ adb_list.whocares.gz video-stats.video.google.com
|
||||
+ adb_list.whocares.gz adservice.google.com
|
||||
+ adb_list.whocares.gz adservice.google.com.au
|
||||
+ adb_list.whocares.gz [...]
|
||||
+ adb_list.yoyo.gz adservice.google.com
|
||||
+ adb_list.yoyo.gz analytics.google.com
|
||||
+ adb_list.yoyo.gz pagead.l.google.com
|
||||
+ adb_list.yoyo.gz partnerad.l.google.com
|
||||
+ adb_list.yoyo.gz [...]
|
||||
</code></pre>
|
||||
|
||||
|
@ -361,9 +356,5 @@ To add a really new source with different domain/host format you have to write a
|
|||
## Support
|
||||
Please join the adblock discussion in this [forum thread](https://forum.openwrt.org/t/adblock-support-thread/507) or contact me by mail <dev@brenken.org>
|
||||
|
||||
## Removal
|
||||
* stop all adblock related services with _/etc/init.d/adblock stop_
|
||||
* optional: remove the adblock package (_opkg remove adblock_)
|
||||
|
||||
Have fun!
|
||||
Dirk
|
||||
|
|
|
@ -1,16 +1,17 @@
|
|||
|
||||
config adblock 'global'
|
||||
option adb_basever '3.8'
|
||||
option adb_enabled '0'
|
||||
option adb_dns 'dnsmasq'
|
||||
option adb_dnsvariant 'nxdomain'
|
||||
option adb_fetchutil 'uclient-fetch'
|
||||
option adb_trigger 'wan'
|
||||
|
||||
config adblock 'extra'
|
||||
option adb_debug '0'
|
||||
option adb_forcedns '0'
|
||||
option adb_backup '0'
|
||||
option adb_report '0'
|
||||
option adb_maxqueue '8'
|
||||
option adb_maxqueue '4'
|
||||
|
||||
config source 'adaway'
|
||||
option adb_src 'https://adaway.org/hosts.txt'
|
||||
|
@ -30,12 +31,6 @@ config source 'bitcoin'
|
|||
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 '/^([[: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 '/^([[:alnum:]_-]+\.)+[[:alpha:]]+([[:space:]]|$)/{print tolower(\$1)}'
|
||||
|
|
|
@ -52,7 +52,6 @@ reload_service()
|
|||
stop_service()
|
||||
{
|
||||
rc_procd "${adb_script}" stop
|
||||
rc_procd start_service
|
||||
}
|
||||
|
||||
restart()
|
||||
|
@ -63,13 +62,13 @@ restart()
|
|||
suspend()
|
||||
{
|
||||
[ -s "${adb_pidfile}" ] && return 1
|
||||
rc_procd "${adb_script}" suspend
|
||||
rc_procd start_service suspend
|
||||
}
|
||||
|
||||
resume()
|
||||
{
|
||||
[ -s "${adb_pidfile}" ] && return 1
|
||||
rc_procd "${adb_script}" resume
|
||||
rc_procd start_service resume
|
||||
}
|
||||
|
||||
query()
|
||||
|
@ -91,17 +90,17 @@ status()
|
|||
rtfile="${rtfile:-"/tmp/adb_runtime.json"}"
|
||||
if [ -s "${rtfile}" ]
|
||||
then
|
||||
printf "%s\n" "::: adblock runtime information"
|
||||
printf "%s\\n" "::: adblock runtime information"
|
||||
json_load_file "${rtfile}"
|
||||
json_select data
|
||||
json_get_keys keylist
|
||||
for key in ${keylist}
|
||||
do
|
||||
json_get_var value "${key}"
|
||||
printf " + %-15s : %s\n" "${key}" "${value}"
|
||||
printf " + %-15s : %s\\n" "${key}" "${value}"
|
||||
done
|
||||
else
|
||||
printf "%s\n" "::: no adblock runtime information available"
|
||||
printf "%s\\n" "::: no adblock runtime information available"
|
||||
fi
|
||||
}
|
||||
|
||||
|
|
71
net/adblock/files/adblock.mail
Executable file
71
net/adblock/files/adblock.mail
Executable file
|
@ -0,0 +1,71 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# send mail script for adblock notifications
|
||||
# written by Dirk Brenken (dev@brenken.org)
|
||||
# Please note: you have to manually install and configure the package 'msmtp' before using this script
|
||||
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
LC_ALL=C
|
||||
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
|
||||
if [ -r "/lib/functions.sh" ]
|
||||
then
|
||||
. "/lib/functions.sh"
|
||||
adb_basever="$(uci_get adblock global adb_basever)"
|
||||
adb_debug="$(uci_get adblock extra adb_debug "0")"
|
||||
adb_msender="$(uci_get adblock extra adb_msender "no-reply@adblock")"
|
||||
adb_mreceiver="$(uci_get adblock extra adb_mreceiver)"
|
||||
adb_mtopic="$(uci_get adblock extra adb_mtopic "adblock notification")"
|
||||
adb_mprofile="$(uci_get adblock extra adb_mprofile "adb_notify")"
|
||||
fi
|
||||
adb_mail="$(command -v msmtp)"
|
||||
adb_rc=1
|
||||
|
||||
if [ "${adb_debug}" -eq 1 ]
|
||||
then
|
||||
debug="--debug"
|
||||
fi
|
||||
|
||||
# mail header & receiver check
|
||||
#
|
||||
if [ -z "${adb_mreceiver}" ]
|
||||
then
|
||||
logger -p "err" -t "adblock-${adb_basever} [${$}]" "please set the mail receiver with the 'adb_mreceiver' option"
|
||||
exit ${adb_rc}
|
||||
fi
|
||||
adb_mhead="From: ${adb_msender}\\nTo: ${adb_mreceiver}\\nSubject: ${adb_mtopic}\\nReply-to: ${adb_msender}\\nMime-Version: 1.0\\nContent-Type: text/html\\nContent-Disposition: inline\\n\\n"
|
||||
|
||||
# info preparation
|
||||
#
|
||||
sys_info="$(strings /etc/banner 2>/dev/null; ubus call system board | sed -e 's/\"release\": {//' | sed -e 's/^[ \t]*//' | sed -e 's/[{}\",]//g' | sed -e 's/[ ]/ \t/' | sed '/^$/d' 2>/dev/null)"
|
||||
adb_info="$(/etc/init.d/adblock status 2>/dev/null)"
|
||||
if [ -f "/var/log/messages" ]
|
||||
then
|
||||
log_info="$(awk '/adblock-/{NR=1;max=79;if(length($0)>max+1)while($0){if(NR==1){print substr($0,1,max),"↵"} else {print " ",substr($0,1,max)}{$0=substr($0,max+1);NR=NR+1}}else print}' /var/log/messages)"
|
||||
else
|
||||
log_info="$(logread -e "adblock-" | awk '{NR=1;max=79;if(length($0)>max+1)while($0){if(NR==1){print substr($0,1,max),"↵"} else {print " ",substr($0,1,max)}{$0=substr($0,max+1);NR=NR+1}}else print}')"
|
||||
fi
|
||||
|
||||
# mail body
|
||||
#
|
||||
adb_mtext="<html><body><pre style='display:block;font-family:monospace;font-size:1rem;padding:20;background-color:#f3eee5;white-space:pre'>"
|
||||
adb_mtext="${adb_mtext}\\n<strong>++\\n++ System Information ++\\n++</strong>\\n${sys_info}"
|
||||
adb_mtext="${adb_mtext}\\n\\n<strong>++\\n++ Adblock Information ++\\n++</strong>\\n${adb_info}"
|
||||
adb_mtext="${adb_mtext}\\n\\n<strong>++\\n++ Logfile Information ++\\n++</strong>\\n${log_info}"
|
||||
adb_mtext="${adb_mtext}</pre></body></html>"
|
||||
|
||||
# send mail
|
||||
#
|
||||
if [ -x "${adb_mail}" ]
|
||||
then
|
||||
printf "%b" "${adb_mhead}${adb_mtext}" 2>/dev/null | "${adb_mail}" ${debug} -a "${adb_mprofile}" "${adb_mreceiver}" >/dev/null 2>&1
|
||||
adb_rc=${?}
|
||||
logger -p "info" -t "adblock-${adb_basever} [${$}]" "mail sent to '${adb_mreceiver}' with rc '${adb_rc}'"
|
||||
else
|
||||
logger -p "err" -t "adblock-${adb_basever} [${$}]" "msmtp mail daemon not found"
|
||||
fi
|
||||
|
||||
exit ${adb_rc}
|
|
@ -1,69 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# adblock send mail script for msmtp
|
||||
# written by Dirk Brenken (dev@brenken.org)
|
||||
# Please note: you have to install and configure the package 'msmtp' before using this script.
|
||||
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
LC_ALL=C
|
||||
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
mail_ver="1.0.4"
|
||||
mail_daemon="$(command -v msmtp)"
|
||||
mail_profile="adb_notify"
|
||||
#mail_debug="--debug"
|
||||
mail_rc=1
|
||||
|
||||
# mail header & mail receiver check
|
||||
#
|
||||
mail_receiver=""
|
||||
mail_sender="no-reply@adblock"
|
||||
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 [ -z "${mail_receiver}" ]
|
||||
then
|
||||
logger -p "err" -t "adblock-notify-${mail_ver}[${$}]" "please supply/customize the 'mail_receiver' in '/etc/adblock/adblock.notify'"
|
||||
exit ${mail_rc}
|
||||
fi
|
||||
|
||||
# mail daemon check
|
||||
#
|
||||
if [ ! -x "${mail_daemon}" ]
|
||||
then
|
||||
mail_daemon="$(command -v sendmail)"
|
||||
fi
|
||||
|
||||
# info preparation
|
||||
#
|
||||
sys_info="$(strings /etc/banner 2>/dev/null; ubus call system board | sed -e 's/\"release\": {//' | sed -e 's/^[ \t]*//' | sed -e 's/[{}\",]//g' | sed -e 's/[ ]/ \t/' | sed '/^$/d' 2>/dev/null)"
|
||||
adb_info="$(/etc/init.d/adblock status 2>/dev/null)"
|
||||
if [ -f "/var/log/messages" ]
|
||||
then
|
||||
log_info="$(awk '/adblock-/{NR=1;max=79;if(length($0)>max+1)while($0){if(NR==1){print substr($0,1,max),"↵"} else {print " ",substr($0,1,max)}{$0=substr($0,max+1);NR=NR+1}}else print}' /var/log/messages)"
|
||||
else
|
||||
log_info="$(logread -e "adblock-" | awk '{NR=1;max=79;if(length($0)>max+1)while($0){if(NR==1){print substr($0,1,max),"↵"} else {print " ",substr($0,1,max)}{$0=substr($0,max+1);NR=NR+1}}else print}')"
|
||||
fi
|
||||
|
||||
# mail body
|
||||
#
|
||||
mail_text="<html><body><pre style='display:block;font-family:monospace;font-size:1rem;padding:20;background-color:#f3eee5;white-space:pre'>"
|
||||
mail_text="${mail_text}\n<strong>++\n++ System Information ++\n++</strong>\n${sys_info}"
|
||||
mail_text="${mail_text}\n\n<strong>++\n++ Adblock Information ++\n++</strong>\n${adb_info}"
|
||||
mail_text="${mail_text}\n\n<strong>++\n++ Logfile Information ++\n++</strong>\n${log_info}"
|
||||
mail_text="${mail_text}</pre></body></html>"
|
||||
|
||||
# send mail
|
||||
#
|
||||
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}'"
|
||||
else
|
||||
logger -p "err" -t "adblock-notify-${mail_ver}[${$}]" "msmtp mail daemon not found"
|
||||
fi
|
||||
|
||||
exit ${mail_rc}
|
27
net/adblock/files/adblock.service
Executable file
27
net/adblock/files/adblock.service
Executable file
|
@ -0,0 +1,27 @@
|
|||
#!/bin/sh
|
||||
# ubus monitor to trace dns backend events and conditionally restart adblock
|
||||
# written by Dirk Brenken (dev@brenken.org)
|
||||
|
||||
# This is free software, licensed under the GNU General Public License v3.
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
LC_ALL=C
|
||||
PATH="/usr/sbin:/usr/bin:/sbin:/bin"
|
||||
|
||||
if [ -r "/lib/functions.sh" ]
|
||||
then
|
||||
. "/lib/functions.sh"
|
||||
adb_basever="$(uci_get adblock global adb_basever)"
|
||||
adb_dns="$(uci_get adblock global adb_dns)"
|
||||
fi
|
||||
adb_ubus="$(command -v ubus)"
|
||||
|
||||
if [ -x "${adb_ubus}" ] && [ -n "${adb_dns}" ]
|
||||
then
|
||||
logger -p "info" -t "adblock-${adb_basever} [${$}]" "ubus/adblock service started"
|
||||
"${adb_ubus}" -S -M r -m invoke monitor | \
|
||||
{ grep -qF "\"method\":\"set\",\"data\":{\"name\":\"${adb_dns}\""; [ $? -eq 0 ] && /etc/init.d/adblock start; }
|
||||
else
|
||||
logger -p "err" -t "adblock-${adb_basever} [${$}]" "can't start ubus/adblock service"
|
||||
fi
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue