fix(metablogizer): Fix DNS resolution parsing (127.0.0.1:53 bug)
KISS approach to DNS resolution: 1. Primary: Use Google DNS API (https://dns.google/resolve) - Most reliable, bypasses local resolver issues 2. Fallback: nslookup with tail -1 to skip DNS server line 3. Fallback: host command The bug was parsing nslookup output which includes DNS server address (127.0.0.1) before the actual resolved IP. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
e318ca2ba1
commit
95ff73f6e7
@ -780,16 +780,31 @@ method_get_settings() {
|
|||||||
json_dump
|
json_dump
|
||||||
}
|
}
|
||||||
|
|
||||||
# Helper: Check DNS resolution for a domain
|
# Helper: Check DNS resolution for a domain (KISS approach)
|
||||||
|
# Returns the resolved IP address, not the DNS server
|
||||||
check_dns_resolution() {
|
check_dns_resolution() {
|
||||||
local domain="$1"
|
local domain="$1"
|
||||||
local resolved_ip=""
|
local resolved_ip=""
|
||||||
if command -v nslookup >/dev/null 2>&1; then
|
|
||||||
resolved_ip=$(nslookup "$domain" 2>/dev/null | grep -A1 "Name:" | grep "Address" | head -1 | awk '{print $2}')
|
# Method 1: Use external DNS API (most reliable, avoids local resolver issues)
|
||||||
[ -z "$resolved_ip" ] && resolved_ip=$(nslookup "$domain" 2>/dev/null | grep "Address" | tail -1 | awk '{print $2}' | grep -v "^$")
|
resolved_ip=$(wget -qO- -T 3 "https://dns.google/resolve?name=${domain}&type=A" 2>/dev/null | \
|
||||||
elif command -v host >/dev/null 2>&1; then
|
jsonfilter -e '@.Answer[0].data' 2>/dev/null)
|
||||||
resolved_ip=$(host "$domain" 2>/dev/null | grep "has address" | head -1 | awk '{print $4}')
|
|
||||||
|
# Method 2: Fallback to nslookup with careful parsing
|
||||||
|
if [ -z "$resolved_ip" ] && command -v nslookup >/dev/null 2>&1; then
|
||||||
|
# Get last Address line (skip DNS server which comes first)
|
||||||
|
resolved_ip=$(nslookup "$domain" 2>/dev/null | \
|
||||||
|
grep "Address" | tail -1 | \
|
||||||
|
sed 's/.*: *//' | sed 's/#.*//' | \
|
||||||
|
grep -v '^127\.')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Method 3: Fallback to host command
|
||||||
|
if [ -z "$resolved_ip" ] && command -v host >/dev/null 2>&1; then
|
||||||
|
resolved_ip=$(host -t A "$domain" 2>/dev/null | \
|
||||||
|
grep "has address" | head -1 | awk '{print $NF}')
|
||||||
|
fi
|
||||||
|
|
||||||
echo "$resolved_ip"
|
echo "$resolved_ip"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user