Skip to content

Commit

Permalink
adblock-fast: bugfix: better detect ABP lists
Browse files Browse the repository at this point in the history
* bugfix: better detect ABP lists
* update Makefile with BUSYBOX features dependencies
* update the type of dnsmasq_instance setting
* add error message when file type can't be detected
* add reporting when file type can't be detected
* bugfix: include URL on errors related to URL processing/parsing
* rename resolver function to resolver_config to better reflect its use

Signed-off-by: Stan Grishin <[email protected]>
  • Loading branch information
stangri committed Sep 26, 2023
1 parent f940370 commit cfe85fb
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 24 deletions.
6 changes: 5 additions & 1 deletion net/adblock-fast/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk

PKG_NAME:=adblock-fast
PKG_VERSION:=1.0.0
PKG_RELEASE:=2
PKG_RELEASE:=3
PKG_MAINTAINER:=Stan Grishin <[email protected]>
PKG_LICENSE:=GPL-3.0-or-later

Expand All @@ -18,6 +18,10 @@ define Package/adblock-fast
TITLE:=AdBlock Fast Service
URL:=https://docs.openwrt.melmac.net/adblock-fast/
DEPENDS:=+jshn +curl
DEPENDS+=+!BUSYBOX_DEFAULT_AWK:gawk
DEPENDS+=+!BUSYBOX_DEFAULT_GREP:grep
DEPENDS+=+!BUSYBOX_DEFAULT_SED:sed
DEPENDS+=+!BUSYBOX_DEFAULT_SORT:coreutils-sort
CONFLICTS:=simple-adblock
PROVIDES:=simple-adblock
PKGARCH:=all
Expand Down
2 changes: 1 addition & 1 deletion net/adblock-fast/files/etc/config/adblock-fast
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ config adblock-fast 'config'
option curl_retry '3'
option debug '0'
option dns 'dnsmasq.servers'
option dnsmasq_instance '*'
list dnsmasq_instance '*'
# option dnsmasq_config_file_url 'https://big.oisd.nl/dnsmasq2'
option download_timeout '10'
option force_dns '1'
Expand Down
67 changes: 45 additions & 22 deletions net/adblock-fast/files/etc/init.d/adblock-fast
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,7 @@ get_text() {
errorParsingList) r="failed to parse";;
errorNoSSLSupport) r="no HTTPS/SSL support on device";;
errorCreatingDirectory) r="failed to create output/cache/gzip file directory";;
errorDetectingFileType) r="failed to detect format";;

statusNoInstall) r="$serviceName is not installed or not found";;
statusStopped) r="Stopped";;
Expand Down Expand Up @@ -268,20 +269,35 @@ append_url() {
fi
}

detect_file_type() {
local file="$1"
if [ "$(head -1 "$file")" = '[Adblock Plus]' ]; then
echo 'adBlockPlus'
elif grep -q '^server=' "$file"; then
echo 'dnsmasqFile'
elif grep -q '^local=' "$file"; then
echo 'dnsmasq2File'
elif grep -q '^0.0.0.0' "$file" || grep -q '^127.0.0.1' "$file"; then
echo 'hosts'
else
echo 'domains'
fi
}
detect_file_type() {
local file="$1"
if [ "$(head -1 "$file")" = '[Adblock Plus]' ] || \
grep -q '^||' "$file"; then
echo 'adBlockPlus'
elif grep -q '^server=' "$file"; then
echo 'dnsmasqFile'
elif grep -q '^local=' "$file"; then
echo 'dnsmasq2File'
elif grep -q '^0.0.0.0' "$file" || grep -q '^127.0.0.1' "$file"; then
echo 'hosts'
elif [ -n "$(sed "$domainsFilter" "$file" | head -1)" ]; then
echo 'domains'
fi
}
# detect_file_type() {
# local file="$1"
# if [ -n "$(sed "$adBlockPlusFilter" "$file" | head -1)" ]; then
# echo 'adBlockPlus'
# elif [ -n "$(sed "$dnsmasqFileFilter" "$file" | head -1)" ]; then
# echo 'dnsmasqFile'
# elif [ -n "$(sed "$dnsmasq2FileFilter" "$file" | head -1)" ]; then
# echo 'dnsmasq2File'
# elif [ -n "$(sed "$hostsFilter" "$file" | head -1)" ]; then
# echo 'hosts'
# elif [ -n "$(sed "$domainsFilter" "$file" | head -1)" ]; then
# echo 'domains'
# fi
# }

load_environment() {
local i j
Expand Down Expand Up @@ -543,7 +559,7 @@ get_local_filesize() {
echo -en "$size"
}

resolver() {
resolver_config() {
local cfg="$1" param="$2"
case "$param" in
dnsmasq.addnhosts)
Expand Down Expand Up @@ -580,10 +596,10 @@ dns() {

config_load 'dhcp'
if [ "$dnsmasq_instance" = "*" ]; then
config_foreach resolver 'dnsmasq' "$dns"
config_foreach resolver_config 'dnsmasq' "$dns"
elif [ -n "$dnsmasq_instance" ]; then
for i in $dnsmasq_instance; do
resolver "@dnsmasq[$i]" "$dns" || resolver "$i" "$dns"
resolver_config "@dnsmasq[$i]" "$dns" || resolver_config "$i" "$dns"
done
fi

Expand Down Expand Up @@ -849,16 +865,23 @@ process_file_url() {
format="$(detect_file_type "$R_TMP")"
case "$format" in
adBlockPlus) filter="$adBlockPlusFilter";;
# dnsmasqFile) filter="$dnsmasqFileFilter";;
# dnsmasq2File) filter="$dnsmasq2FileFilter";;
dnsmasqFile) filter="$dnsmasqFileFilter";;
dnsmasq2File) filter="$dnsmasq2FileFilter";;
domains) filter="$domainsFilter";;
hosts) filter="$hostsFilter";;
*)
output 1 "$_FAIL_"
output 2 "[DL] $type $label $__FAIL__\\n"
echo "errorDetectingFileType|${url}" >> "$sharedMemoryError"
rm -f "$R_TMP"
return 0
;;
esac
[ -n "$filter" ] && sed -i "$filter" "$R_TMP"
sed -i "$filter" "$R_TMP"
if [ ! -s "$R_TMP" ]; then
output 1 "$_FAIL_"
output 2 "[DL] $type $label ($format) $__FAIL__\\n"
echo "errorParsingList|${1}" >> "$sharedMemoryError"
echo "errorParsingList|${url}" >> "$sharedMemoryError"
else
cat "${R_TMP}" >> "$D_TMP"
output 1 "$_OK_"
Expand Down Expand Up @@ -1596,7 +1619,7 @@ killcache() {
rm -f "$dnsmasqServersCache" "${compressed_cache_dir}/${dnsmasqServersGzip}"
rm -f "$unboundCache" "$unboundGzip"
config_load 'dhcp'
config_foreach resolver 'dnsmasq' 'cleanup'
config_foreach resolver_config 'dnsmasq' 'cleanup'
uci_commit 'dhcp'
return 0
}
Expand Down

0 comments on commit cfe85fb

Please sign in to comment.