#!/usr/bin/env bash
# @desc: DNS UDP 延迟测试(安全版, 非阻塞)
# @usage: wcl dnsping <DNS服务器IP或域名>
#   例: wcl dnsping 8.8.8.8

# ==========================================
# DNS UDP 延迟测试（安全版，不阻塞）
# ==========================================

set -e

if [ $# -ne 1 ]; then
    echo "用法: $0 <DNS服务器IP或域名>"
    exit 1
fi

DNS_SERVER="$1"

if [ "$(id -u)" -ne 0 ]; then
    echo "错误：请使用 root 执行"
    exit 1
fi

# -------- 安装 dig --------
if ! command -v dig >/dev/null 2>&1; then
    apt update
    apt install -y dnsutils
fi

echo
echo "=========================================="
echo " DNS UDP 延迟测试（dig，非阻塞）"
echo " DNS服务器: $DNS_SERVER"
echo "=========================================="
echo

for i in {1..5}; do
    echo "[第 $i 次]"

    RESULT=$(timeout 3 dig @${DNS_SERVER} www.google.com \
        +time=1 +tries=1 +stats 2>/dev/null | \
        grep "Query time" || true)

    if [ -n "$RESULT" ]; then
        echo "$RESULT"
    else
        echo "UDP 无响应 / 不可测"
    fi

    sleep 1
done

echo
echo "=========================================="
echo "说明："
echo "- 若显示“UDP 无响应”，表示该 DNS 不支持 UDP RTT 探测"
echo "- 这不是网络故障，而是服务器策略"
echo "=========================================="
