From 4c1127450897908877c90b28284fac2004a7bda4 Mon Sep 17 00:00:00 2001 From: bol-van Date: Thu, 13 Jun 2024 15:40:55 +0300 Subject: [PATCH] blockcheck: mdig dns cache --- blockcheck.sh | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/blockcheck.sh b/blockcheck.sh index 3e06cd7..e3e961c 100755 --- a/blockcheck.sh +++ b/blockcheck.sh @@ -48,6 +48,8 @@ PF_RULES_SAVE=/tmp/pf-zapret-save.conf unset ALL_PROXY +setup_md5 + killwait() { # $1 - signal (-9, -2, ...) @@ -193,8 +195,28 @@ mdig_resolve() # $1 - ip version 4/6 # $2 - hostname - # windows version of mdig outputs 0D0A line ending. remove 0D. - echo "$2" | "$MDIG" --family=$1 | head -n 1 | tr -d '\r' + local hostvar=$(echo $2 | sed -e 's/[\.-]/_/g') + local cachevar=DNSCACHE_${hostvar}_$1 + local countvar=${cachevar}_COUNT + local count n ip ips + eval count=\$${countvar} + if [ -n "$count" ]; then + n=$(random 0 $(($count-1))) + eval ip=\$${cachevar}_$n + echo $ip + return 0 + else + # windows version of mdig outputs 0D0A line ending. remove 0D. + ips="$(echo $2 | "$MDIG" --family=$1 | tr -d '\r' | xargs)" + [ -n "$ips" ] || return 1 + count=0 + for ip in $ips; do + eval ${cachevar}_$count=$ip + count=$(($count+1)) + done + eval $countvar=$count + mdig_resolve "$@" + fi } check_system()