diff --git a/net/adblock/Makefile b/net/adblock/Makefile index 825bb0874e..74e2c11e17 100644 --- a/net/adblock/Makefile +++ b/net/adblock/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=adblock PKG_VERSION:=4.5.5 -PKG_RELEASE:=2 +PKG_RELEASE:=3 PKG_LICENSE:=GPL-3.0-or-later PKG_MAINTAINER:=Dirk Brenken diff --git a/net/adblock/files/adblock.categories b/net/adblock/files/adblock.categories index 026e7fe09f..fad1e4abcc 100644 --- a/net/adblock/files/adblock.categories +++ b/net/adblock/files/adblock.categories @@ -25,6 +25,7 @@ hag;tracker.apple;wildcard/native.apple-onlydomains.txt hag;tracker.huawei;wildcard/native.huawei-onlydomains.txt hag;tracker.lgwebos;wildcard/native.lgwebos-onlydomains.txt hag;tracker.oppo-realme;wildcard/native.oppo-realme-onlydomains.txt +hag;tracker.roku;wildcard/native.roku-onlydomains.txt hag;tracker.samsung;wildcard/native.samsung-onlydomains.txt hag;tracker.tiktok;wildcard/native.tiktok-onlydomains.txt hag;tracker.tiktok.extended;wildcard/native.tiktok.extended-onlydomains.txt @@ -36,6 +37,9 @@ hag;popupads;wildcard/popupads-onlydomains.txt hag;urlshortener;wildcard/urlshortener-onlydomains.txt hag;abusetlds;wildcard/spam-tlds-onlydomains.txt hag;social;wildcard/social-onlydomains.txt +hag;dga-7days;domains/dga7.txt +hag;dga-14days;domains/dga14.txt +hag;dga-30days;domains/dga30.txt hag;nrd-7days;domains/nrd7.txt hag;nrd-14days;domains/nrd14-8.txt hag;nrd-21days;domains/nrd21-15.txt @@ -52,14 +56,16 @@ ipf;malware;malware/domains.txt ipf;phishing;phishing/domains.txt ipf;piracy;piracy/domains.txt ipf;porn;porn/domains.txt +ipf;shopping;shopping/domains.txt ipf;smart-tv;smart-tv/domains.txt ipf;social;social/domains.txt +ipf;streaming;streaming/domains.txt ipf;violence;violence/domains.txt stb;standard;hosts stb;standard-fakenews;alternates/fakenews/hosts stb;standard-fakenews-gambling;alternates/fakenews-gambling/hosts stb;standard-fakenews-gambling-porn;alternates/fakenews-gambling-porn/hosts -stb;standard-fakenews-gambling-porn-social;alternates/fakenews-porn-social/hosts +stb;standard-fakenews-gambling-porn-social;alternates/fakenews-gambling-porn-social/hosts stb;standard-fakenews-gambling-social;alternates/fakenews-gambling-social/hosts stb;standard-fakenews-porn;alternates/fakenews-porn/hosts stb;standard-fakenews-porn-social;alternates/fakenews-porn-social/hosts @@ -74,7 +80,7 @@ stb;standard-social;alternates/social/hosts stb;fakenews;alternates/fakenews-only/hosts stb;fakenews-gambling;alternates/fakenews-gambling-only/hosts stb;fakenews-gambling-porn;alternates/fakenews-gambling-porn-only/hosts -stb;fakenews-gambling-porn-social;alternates/fakenews-porn-social-only/hosts +stb;fakenews-gambling-porn-social;alternates/fakenews-gambling-porn-social-only/hosts stb;fakenews-gambling-social;alternates/fakenews-gambling-social-only/hosts stb;fakenews-porn;alternates/fakenews-porn-only/hosts stb;fakenews-porn-social;alternates/fakenews-porn-social-only/hosts diff --git a/net/adblock/files/adblock.sh b/net/adblock/files/adblock.sh index 5cf95bfd77..97f042ef51 100755 --- a/net/adblock/files/adblock.sh +++ b/net/adblock/files/adblock.sh @@ -87,12 +87,12 @@ f_cmd() { local cmd pri_cmd="${1}" sec_cmd="${2}" cmd="$(command -v "${pri_cmd}" 2>/dev/null)" - if [ ! -x "${cmd}" ]; then + if [ -z "${cmd}" ]; then if [ -n "${sec_cmd}" ]; then [ "${sec_cmd}" = "optional" ] && return cmd="$(command -v "${sec_cmd}" 2>/dev/null)" fi - if [ -x "${cmd}" ]; then + if [ -n "${cmd}" ]; then printf '%s' "${cmd}" else f_log "emerg" "command '${pri_cmd:-"-"}'/'${sec_cmd:-"-"}' not found" @@ -116,7 +116,7 @@ f_load() { adb_errorlog="/dev/null" fi - # fetch installed packages amd system information + # fetch installed packages and system information # adb_packages="$("${adb_ubuscmd}" -S call rpc-sys packagelist '{ "all": true }' 2>>"${adb_errorlog}")" adb_bver="$(printf '%s' "${adb_packages}" | "${adb_jsoncmd}" -ql1 -e '@.packages.adblock')" @@ -179,7 +179,7 @@ f_load() { ) sleep 1 bg_pid="$("${adb_pgrepcmd}" -nf "${adb_reportdir}/adb_report.pcap")" - f_log "info" "tcpdump backgound process started for interface: ${adb_repiface}, port: ${adb_repport}, dir: ${adb_reportdir}, pid: ${bg_pid}" + f_log "info" "tcpdump background process started for interface: ${adb_repiface}, port: ${adb_repport}, dir: ${adb_reportdir}, pid: ${bg_pid}" else f_log "info" "please set the reporting interface 'adb_repiface' and reporting directory 'adb_reportdir' manually" fi @@ -251,7 +251,7 @@ f_conf() { # domain validation # f_chkdom() { - local type prefix column separator check + local type prefix column separator case "${1}" in "feed" | "local") @@ -277,8 +277,7 @@ f_chkdom() { ;; esac - check="${adb_lookupdomain//./\\.}" - "${adb_awkcmd}" -v type="${type}" -v pre="${prefix}" -v col="${column}" -v chk="${check}" -F "${separator}" ' + "${adb_awkcmd}" -v type="${type}" -v pre="${prefix}" -v col="${column}" -v chk="${adb_lookupdomain}" -F "${separator}" ' { domain = $col # remove carriage returns and trim the input @@ -288,7 +287,7 @@ f_chkdom() { # check optional search prefix if (pre != "" && index($0, pre) != 1) next # skip empty lines, comments and special domains - if (domain == "" || domain ~ ("^(#|localhost|loopback|" chk ")")) next + if (domain == "" || domain ~ /^(#|localhost|loopback)/ || index(domain, chk) == 1) next # no domain with trailing dot if (substr(domain, length(domain), 1) == ".") next # check total length (253 characters) @@ -342,7 +341,7 @@ f_dns() { ;; esac - if [ -x "$(command -v "${dns}")" ]; then + if command -v "${dns}" >/dev/null 2>&1; then adb_dns="${dns}" uci_set adblock global adb_dns "${dns}" f_uci "adblock" @@ -352,7 +351,7 @@ f_dns() { done fi - if [ "${adb_dns}" != "raw" ] && [ ! -x "$(command -v "${adb_dns}")" ]; then + if [ "${adb_dns}" != "raw" ] && ! command -v "${adb_dns}" >/dev/null 2>&1; then f_log "err" "dns backend not found, please set 'adb_dns' manually" fi @@ -391,7 +390,7 @@ f_dns() { } ;; "unbound") - adb_dnscachecmd="$(command -v unbound-control)" + adb_dnscachecmd="$(f_cmd unbound-control optional)" adb_dnsinstance="" adb_dnsuser="unbound" adb_dnsdir="${adb_dnsdir:-"/var/lib/unbound"}" @@ -415,7 +414,7 @@ f_dns() { } ;; "named") - adb_dnscachecmd="$(command -v rndc)" + adb_dnscachecmd="$(f_cmd rndc optional)" adb_dnsinstance="" adb_dnsuser="bind" adb_dnsdir="${adb_dnsdir:-"/var/lib/bind"}" @@ -539,8 +538,8 @@ f_dns() { f_fetch() { local fetch fetch_list insecure update="0" - adb_fetchcmd="$(command -v "${adb_fetchcmd}")" - if [ ! -x "${adb_fetchcmd}" ]; then + adb_fetchcmd="$(command -v "${adb_fetchcmd}" 2>/dev/null)" + if [ -z "${adb_fetchcmd}" ]; then fetch_list="curl wget-ssl libustream-openssl libustream-wolfssl libustream-mbedtls" for fetch in ${fetch_list}; do case "${adb_packages}" in *"\"${fetch}\""*) @@ -552,9 +551,9 @@ f_fetch() { fetch="uclient-fetch" ;; esac - if [ -x "$(command -v "${fetch}")" ]; then + adb_fetchcmd="$(command -v "${fetch}" 2>/dev/null)" + if [ -n "${adb_fetchcmd}" ]; then update="1" - adb_fetchcmd="$(command -v "${fetch}")" uci_set adblock global adb_fetchcmd "${fetch}" f_uci "adblock" break @@ -564,7 +563,7 @@ f_fetch() { done fi - [ ! -x "${adb_fetchcmd}" ] && f_log "err" "download utility with SSL support not found, please set 'adb_fetchcmd' manually" + [ -z "${adb_fetchcmd}" ] && f_log "err" "download utility with SSL support not found, please set 'adb_fetchcmd' manually" case "${adb_fetchcmd##*/}" in "curl") @@ -849,9 +848,16 @@ f_etag() { # compare http code and etag id with stored values, update etag file and return code accordingly # - etag_cnt="$("${adb_grepcmd}" -c "^${feed} " "${adb_backupdir}/adblock.etag")" + etag_cnt="$("${adb_awkcmd}" -v f="${feed}" '$1 == f { n++ } END { print n+0 }' "${adb_backupdir}/adblock.etag")" if [ "${http_code}" = "200" ] && [ "${etag_cnt}" = "${feed_cnt}" ] && [ -n "${etag_id}" ] && - "${adb_grepcmd}" -q "^${feed} ${feed_suffix}[[:space:]]\+${etag_id}\$" "${adb_backupdir}/adblock.etag"; then + "${adb_awkcmd}" -v f="${feed}" -v s="${feed_suffix}" -v e="${etag_id}" ' + BEGIN { rc = 1; p = f " " s } + index($0, p) == 1 { + rest = substr($0, length(p) + 1) + sub(/^[[:space:]]+/, "", rest) + if (rest == e) { rc = 0; exit } + } + END { exit rc }' "${adb_backupdir}/adblock.etag"; then out_rc="0" elif [ -n "${etag_id}" ]; then @@ -859,11 +865,16 @@ f_etag() { # otherwise only remove the entry with the matching feed suffix (feed url) to allow multiple sources for the same feed # if [ "${feed_cnt}" -lt "${etag_cnt}" ]; then - "${adb_sedcmd}" -i "/^${feed} /d" "${adb_backupdir}/adblock.etag" + "${adb_awkcmd}" -v f="${feed}" '$1 != f' \ + "${adb_backupdir}/adblock.etag" >"${adb_backupdir}/adblock.etag.new" else - "${adb_sedcmd}" -i "/^${feed} ${feed_suffix//\//\\/}/d" "${adb_backupdir}/adblock.etag" + "${adb_awkcmd}" -v f="${feed}" -v s="${feed_suffix}" ' + BEGIN { p = f " " s } + index($0, p) != 1' \ + "${adb_backupdir}/adblock.etag" >"${adb_backupdir}/adblock.etag.new" fi - printf '%-80s%s\n' "${feed} ${feed_suffix}" "${etag_id}" >>"${adb_backupdir}/adblock.etag" + "${adb_mvcmd}" -f "${adb_backupdir}/adblock.etag.new" "${adb_backupdir}/adblock.etag" + printf '%s\t%s\n' "${feed} ${feed_suffix}" "${etag_id}" >>"${adb_backupdir}/adblock.etag" out_rc="2" fi @@ -1227,14 +1238,22 @@ f_list() { "boot" | "start" | "restart" | "resume") ;; *) - [ -n "${src_name}" ] && [ "${out_rc}" != "0" ] && adb_feed="${adb_feed/${src_name}/}" + if [ -n "${src_name}" ] && [ "${out_rc}" != "0" ]; then + adb_feed=" ${adb_feed} " + adb_feed="${adb_feed// ${src_name} / }" + adb_feed="${adb_feed# }" + adb_feed="${adb_feed% }" + fi ;; esac ;; "remove") "${adb_rmcmd}" "${adb_backupdir}/adb_list.${src_name}.gz" 2>>"${adb_errorlog}" out_rc="${?}" - adb_feed="${adb_feed/${src_name}/}" + adb_feed=" ${adb_feed} " + adb_feed="${adb_feed// ${src_name} / }" + adb_feed="${adb_feed# }" + adb_feed="${adb_feed% }" ;; "merge") src_name="" @@ -1806,7 +1825,10 @@ f_main() { # check if feed is defined in configuration, if not remove it from feed list and continue with next one # if ! json_select "${src_name}" >/dev/null 2>&1; then - adb_feed="${adb_feed/${src_name}/}" + adb_feed=" ${adb_feed} " + adb_feed="${adb_feed// ${src_name} / }" + adb_feed="${adb_feed# }" + adb_feed="${adb_feed% }" continue fi @@ -1960,10 +1982,10 @@ f_main() { src_rc="${?}" if [ "${src_rc}" = "0" ] && [ -s "${src_tmparchive}" ]; then src_suffix="${adb_src_suffix_utcapitole:-"domains"}" - src_list="$(tar -tzf "${src_tmparchive}" 2>>"${adb_errorlog}")" - for src_item in ${src_cat}; do - src_entries="${src_entries} $(printf '%s' "${src_list}" | "${adb_grepcmd}" -E "${src_item}/${src_suffix}$")" - done + src_entries="$(tar -tzf "${src_tmparchive}" 2>>"${adb_errorlog}" | "${adb_awkcmd}" \ + -v cats="${src_cat}" -v sfx="${src_suffix}" ' + BEGIN { n = split(cats, c, " ") } + { for (i = 1; i <= n; i++) if ($0 ~ "(^|/)" c[i] "/" sfx "$") print }')" if [ -n "${src_entries}" ]; then tar -xOzf "${src_tmparchive}" ${src_entries} 2>>"${adb_errorlog}" >"${src_tmpload}" src_rc="${?}" @@ -2093,9 +2115,6 @@ f_report() { } next } - END { - # no fallback - } ' >"${report_raw}.${cnt}" ) & [ "${cnt}" -gt "${adb_cores}" ] && wait -n