From 3587540ea50b5b9507b225fa661f1596831ff18c Mon Sep 17 00:00:00 2001 From: Dirk Brenken Date: Wed, 23 Mar 2016 21:02:45 +0100 Subject: [PATCH] adblock: update 1.0.1 * optimize list sort * simplified block list removal Signed-off-by: Dirk Brenken (cherry picked from commit a066df55a51de71f3619710069b3181b58b9f4cc) --- net/adblock/Makefile | 2 +- net/adblock/files/adblock-helper.sh | 2 + net/adblock/files/adblock-update.sh | 108 ++++++++++++---------------- 3 files changed, 48 insertions(+), 64 deletions(-) diff --git a/net/adblock/Makefile b/net/adblock/Makefile index b11a62ceec..cffa23d375 100644 --- a/net/adblock/Makefile +++ b/net/adblock/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=adblock -PKG_VERSION:=1.0.0 +PKG_VERSION:=1.0.1 PKG_RELEASE:=1 PKG_LICENSE:=GPL-3.0+ PKG_MAINTAINER:=Dirk Brenken diff --git a/net/adblock/files/adblock-helper.sh b/net/adblock/files/adblock-helper.sh index 5bcb81ad87..7f9ea55448 100644 --- a/net/adblock/files/adblock-helper.sh +++ b/net/adblock/files/adblock-helper.sh @@ -304,6 +304,8 @@ f_envcheck() then mem_ok="false" f_log "not enough free memory, overall sort processing will be disabled (total: ${mem_total}, free: ${mem_free}, swap: ${mem_swap})" + else + mem_ok="true" fi # check backup configuration diff --git a/net/adblock/files/adblock-update.sh b/net/adblock/files/adblock-update.sh index 71878e87b8..56ea4a0fe8 100755 --- a/net/adblock/files/adblock-update.sh +++ b/net/adblock/files/adblock-update.sh @@ -36,7 +36,7 @@ fi # get current directory, script- and openwrt version # adb_scriptdir="${0%/*}" -adb_scriptver="1.0.0" +adb_scriptver="1.0.1" openwrt_version="$(cat /etc/openwrt_version)" # source in adblock function library @@ -276,51 +276,36 @@ if [ -n "${adb_srclist}" ] then rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" \( ${adb_srclist} \) -print -exec rm -f "{}" \;)" rc=${?} - if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ] - then - f_log "disabled adblock lists removed" - if [ "${backup_ok}" = "true" ] - then - rm_done="$(find "${adb_backupdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" \( ${adb_srclist} \) -print -exec rm -f "{}" \;)" - rc=${?} - if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ] - then - f_log "disabled adblock list backups removed" - elif [ $((rc)) -ne 0 ] - then - f_log "error during removal of disabled adblock list backups" "${rc}" - f_exit - fi - fi - elif [ $((rc)) -ne 0 ] - then - f_log "error during removal of disabled adblock lists" "${rc}" - f_exit - fi else rm_done="$(find "${adb_dnsdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -print -exec rm -f "{}" \;)" rc=${?} - if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ] +fi +if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ] +then + f_log "disabled adblock lists removed" + if [ "${backup_ok}" = "true" ] then - f_log "all adblock lists removed" - if [ "${backup_ok}" = "true" ] + if [ -n "${adb_srclist}" ] then + rm_done="$(find "${adb_backupdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" \( ${adb_srclist} \) -print -exec rm -f "{}" \;)" + rc=${?} + else rm_done="$(find "${adb_backupdir}" -maxdepth 1 -type f -name "${adb_dnsprefix}.*" -print -exec rm -f "{}" \;)" rc=${?} - if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ] - then - f_log "all adblock list backups removed" - elif [ $((rc)) -ne 0 ] - then - f_log "error during removal of all adblock list backups" "${rc}" - f_exit - fi fi - elif [ $((rc)) -ne 0 ] - then - f_log "error during removal of all adblock lists" "${rc}" - f_exit + if [ $((rc)) -eq 0 ] && [ -n "${rm_done}" ] + then + f_log "disabled adblock list backups removed" + elif [ $((rc)) -ne 0 ] + then + f_log "error during removal of disabled adblock list backups" "${rc}" + f_exit + fi fi +elif [ $((rc)) -ne 0 ] +then + f_log "error during removal of disabled adblock lists" "${rc}" + f_exit fi # partial restore of adblock lists in case of download errors @@ -341,38 +326,35 @@ fi # make separate adblock lists entries unique # -if [ "${mem_ok}" != "false" ] +if [ "${mem_ok}" = "true" ] && [ -n "${adb_revsrclist}" ] then - if [ -n "${adb_revsrclist}" ] - then - f_log "remove duplicates in separate adblock lists" + f_log "remove duplicates in separate adblock lists" - # generate a temporary unique overall list - # - head -qn -3 "${adb_dnsdir}/${adb_dnsprefix}."* | sort -u > "${adb_dnsdir}/tmp.overall" + # generate a unique overall block list + # + head -qn -3 "${adb_dnsdir}/${adb_dnsprefix}."* | sort -u > "${adb_tmpdir}/blocklist.overall" - # loop through all separate lists, ordered by size (ascending) + # loop through all separate lists, ordered by size (ascending) + # + for list in $(ls -Sr "${adb_dnsdir}/${adb_dnsprefix}."*) + do + # check overall block list vs. separate block list, + # write only duplicate entries to a temporary separate list # - for list in $(ls -Sr "${adb_dnsdir}/${adb_dnsprefix}."*) - do - # check original separate list vs. temporary overall list, - # rewrite only duplicate entries back to temporary separate list - # - list="${list/*./}" - sort "${adb_dnsdir}/tmp.overall" "${adb_dnsdir}/${adb_dnsprefix}.${list}" | uniq -d > "${adb_dnsdir}/tmp.${list}" + list="${list/*./}" + sort "${adb_tmpdir}/blocklist.overall" "${adb_dnsdir}/${adb_dnsprefix}.${list}" | uniq -d > "${adb_tmpdir}/tmp.${list}" - # rewrite only unique entries back to temporary overall list - # - tmp_unique="$(sort "${adb_dnsdir}/tmp.overall" "${adb_dnsdir}/tmp.${list}" | uniq -u)" - printf "%s\n" "${tmp_unique}" > "${adb_dnsdir}/tmp.overall" + # write only unique entries back to overall block list + # + sort "${adb_tmpdir}/blocklist.overall" "${adb_tmpdir}/tmp.${list}" | uniq -u > "${adb_tmpdir}/tmp.overall" + mv -f "${adb_tmpdir}/tmp.overall" "${adb_tmpdir}/blocklist.overall" - # write unique result back to original separate list (with list footer) - # - tail -qn 3 "${adb_dnsdir}/$adb_dnsprefix.${list}" >> "${adb_dnsdir}/tmp.${list}" - mv -f "${adb_dnsdir}/tmp.${list}" "${adb_dnsdir}/${adb_dnsprefix}.${list}" - done - rm -f "${adb_dnsdir}/tmp.overall" - fi + # write unique result back to original separate list + # + tail -qn 3 "${adb_dnsdir}/${adb_dnsprefix}.${list}" >> "${adb_tmpdir}/tmp.${list}" + mv -f "${adb_tmpdir}/tmp.${list}" "${adb_dnsdir}/${adb_dnsprefix}.${list}" + done + rm -f "${adb_tmpdir}/blocklist.overall" fi # set separate list count & get overall count -- 2.30.2