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:
parent
de34c23a11
commit
62a29f8ff0
1 changed files with 22 additions and 11 deletions
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue