1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-feeds.git synced 2025-02-12 18:41:51 +00:00

parallel digs

This commit is contained in:
Paul Curry 2020-11-10 13:54:52 +00:00
parent de34c23a11
commit 62a29f8ff0

View file

@ -331,21 +331,32 @@ _bypass_proto() {
local domains local domains
domains="$(cat /proc/net/xt_ndpi/host_proto | grep -i $proto: | sed -e "s/$proto://i" -e 's/*//' -e 's/,/ /g')" domains="$(cat /proc/net/xt_ndpi/host_proto | grep -i $proto: | sed -e "s/$proto://i" -e 's/*//' -e 's/,/ /g')"
if [ -n "$domains" ]; then if [ -n "$domains" ]; then
tlds=`curl --max-time 4 -s -k https://data.iana.org/TLD/tlds-alpha-by-domain.txt`
for domain in $domains; do for domain in $domains; do
if [ -n "$domain" ]; then if [ -n "$domain" ]; then
domain="$(echo $domain | sed 's/^\.//')" domain="$(echo $domain | sed 's/^\.//')"
if [ "$(echo $domain | grep '\.$')" != "" ]; then if [ "$(echo $domain | grep '\.$')" != "" ]; then
tlds=`curl --max-time 4 -s -k https://data.iana.org/TLD/tlds-alpha-by-domain.txt` domainlist=""
if [ -n "tlds" ]; then # construct list of domains to query
i=0 for tld in $tlds; do
for tld in $tlds; do i=$((i+1))
i=$((i+1)) # trim off header
tld="$(echo $tld | awk '{print tolower($0)}')" if [ "$i" -lt "12" ] || [ "$i" -gt "50" ]; then
if [ "$i" -gt "11" ] && [ "$(dig a +timeout=1 +tries=1 +retry=1 +nocmd +noall +answer ${domain}${tld})" != "" ]; then continue
_bypass_domain ${domain}${tld} $intf fi
fi # add to command
done domainlist="${domainlist} ${domain}${tld}"
fi done
domainlist="$(echo $domainlist `# Get the list of valid domains, pass it to awk` \
| awk '{print tolower($0)}' `# awk lowercases the whole string and passes it to ` \
| xargs -n8 -P12 `# xargs sends 8 arguments at a time across 12 threads to` \
dig a +nocmd +noall +answer `# dig, which passes results (if any) to` \
| awk '{print $1}' `# awk, which outputs queried domain to` \
| sed -e 's/.$//' `# sed, which trims off the trailing dot (google.com. -> google.com)` \
| awk '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s%s",$i,FS)}{printf("\n")}')" # deduplicate
for validdomain in $domainlist; do
_bypass_domain $validdomain $intf
done
else else
_bypass_domain $domain $intf _bypass_domain $domain $intf
fi fi