adblock: bugfix 2.0.1 3690/head
authorDirk Brenken <dev@brenken.org>
Thu, 22 Dec 2016 18:33:59 +0000 (19:33 +0100)
committerDirk Brenken <dev@brenken.org>
Thu, 22 Dec 2016 18:33:59 +0000 (19:33 +0100)
* fixed a dnsmasq restart issue (udhcpc error)
* fixed a long standing corner case bug in "disabled" state (does not
remove active block lists!)
* simplified overall sort, removed needless 'for loop'
* cosmetics

Signed-off-by: Dirk Brenken <dev@brenken.org>
net/adblock/Makefile
net/adblock/files/adblock.init
net/adblock/files/adblock.sh

index 8bbda68328b30c74706b9f1a1091adf7447a2df4..c52acf0bf7461cea33d791a14a74ba5a66d132b3 100644 (file)
@@ -6,7 +6,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=adblock
-PKG_VERSION:=2.0.0
+PKG_VERSION:=2.0.1
 PKG_RELEASE:=1
 PKG_LICENSE:=GPL-3.0+
 PKG_MAINTAINER:=Dirk Brenken <dev@brenken.org>
index 7bf70ca710fd9d52cb08b232db560f0f91ce7943..2ed89cdc5776bd0907f79614a24d069763256c89 100755 (executable)
@@ -8,6 +8,7 @@ EXTRA_COMMANDS="suspend resume"
 EXTRA_HELP="   suspend Suspend adblock processing
        resume  Resume adblock processing"
 
+exec 2>/dev/null
 adb_script="/usr/bin/adblock.sh"
 adb_iface="$(uci -q get adblock.global.adb_iface)"
 
@@ -69,7 +70,6 @@ service_triggers()
     local iface
 
     procd_add_config_trigger "config.change" "adblock" /etc/init.d/adblock start
-
     if [ -z "${adb_iface}" ]
     then
         procd_add_raw_trigger "interface.*.up" 1000 /etc/init.d/adblock start
index a2e624a050b01cc6b65320c4cc6106bc3303fc2d..3ec2aed5402d34a8635ae75aa44e8e42148a4162 100755 (executable)
@@ -10,7 +10,7 @@
 #
 LC_ALL=C
 PATH="/usr/sbin:/usr/bin:/sbin:/bin"
-adb_ver="2.0.0"
+adb_ver="2.0.1"
 adb_enabled=1
 adb_debug=0
 adb_whitelist="/etc/adblock/adblock.whitelist"
@@ -88,6 +88,11 @@ f_envcheck()
     #
     if [ "${adb_enabled}" != "1" ]
     then
+        if [ "$(ls -dA "${adb_dnsdir}/${adb_dnsprefix}"* >/dev/null 2>&1)" ]
+        then
+            f_rmdns
+            f_dnsrestart
+        fi
         f_log "info " "status ::: adblock is currently disabled, please set adb_enabled to '1' to use this service"
         exit 0
     fi
@@ -153,18 +158,21 @@ f_dnsrestart()
     dns_running="false"
 
     sync
-    "/etc/init.d/${adb_dns}" restart
+    killall -q -TERM "${adb_dns}"
     while [ ${cnt} -le 10 ]
     do
         dns_running="$(ubus -S call service list '{"name":"dnsmasq"}' | jsonfilter -e '@.dnsmasq.instances.*.running')"
         if [ "${dns_running}" = "true" ]
         then
-            sleep 1
             break
         fi
         cnt=$((cnt+1))
         sleep 1
     done
+    if [ "${dns_running}" = "false" ]
+    then
+        /etc/init.d/"${adb_dns}" restart
+    fi
 }
 
 # f_list: backup/restore/remove block lists
@@ -369,29 +377,22 @@ f_main()
         f_log "debug" "loop   ::: name: ${src_name}, list-rc: ${rc}"
     done
 
-    # overall sort, make block list entries unique
+    # make overall sort, restart & check dns server
     #
-    for list in $(ls -ASr "${adb_dnsdir}/${adb_dnsprefix}"* 2>/dev/null)
+    for src_name in $(ls -dASr "${adb_dnsdir}/${adb_dnsprefix}"* 2>/dev/null)
     do
-        list="${list/*./}"
         if [ -s "${adb_tmpdir}/blocklist.overall" ]
         then
-            sort "${adb_tmpdir}/blocklist.overall" "${adb_tmpdir}/blocklist.overall" "${adb_dnsdir}/${adb_dnsprefix}.${list}" | uniq -u > "${adb_tmpdir}/tmp.blocklist"
-            cat "${adb_tmpdir}/tmp.blocklist" > "${adb_dnsdir}/${adb_dnsprefix}.${list}"
+            sort "${adb_tmpdir}/blocklist.overall" "${adb_tmpdir}/blocklist.overall" "${src_name}" | uniq -u > "${adb_tmpdir}/tmp.blocklist"
+            cat "${adb_tmpdir}/tmp.blocklist" > "${src_name}"
         fi
-        cat "${adb_dnsdir}/${adb_dnsprefix}.${list}" >> "${adb_tmpdir}/blocklist.overall"
+        cat "${src_name}" >> "${adb_tmpdir}/blocklist.overall"
+        cnt="$(wc -l < "${src_name}")"
+        sum_cnt=$((sum_cnt + cnt))
     done
-
-    # restart & check dns server
-    #
     f_dnsrestart
     if [ "${dns_running}" = "true" ]
     then
-        for src_name in $(ls -ASr "${adb_dnsdir}/${adb_dnsprefix}"* 2>/dev/null)
-        do
-            cnt="$(wc -l < "${src_name}")"
-            sum_cnt=$((sum_cnt + cnt))
-        done
         f_debug
         f_rmtemp
         f_log "info " "status ::: block lists with overall ${sum_cnt} domains loaded (${adb_sysver})"