From 1c7fd97ffd44e31e214a845b7ef6ca26159ec415 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=B5=E4=BA=8C?= <66155308+miaoermua@users.noreply.github.com> Date: Wed, 27 Dec 2023 18:15:28 +0800 Subject: [PATCH] Update Catnd --- cattools.sh | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 160 insertions(+), 1 deletion(-) diff --git a/cattools.sh b/cattools.sh index 679b0ec..607dc11 100644 --- a/cattools.sh +++ b/cattools.sh @@ -67,7 +67,166 @@ catwrt_update(){ } catwrt_network_diagnostics(){ - /usr/bin/catnd + echo " " + echo "$(date) - Starting CatWrt Network Diagnostics" + echo " " + + # Ping & PPPoE + + ping -c 3 223.5.5.5 > /dev/null + if [ $? -eq 0 ]; then + echo "[Ping] Network connection succeeded!" + echo " " + else + ping -c 3 119.29.29.99 > /dev/null + if [ $? -eq 0 ]; then + echo "[Ping] Network connection succeeded,But there may be problems!" + echo " " + else + pppoe_config=$(grep 'pppoe' /etc/config/network) + if [ ! -z "$pppoe_config" ]; then + echo "[PPPoE] Please check if your PPPoE account and password are correct." + echo " " + fi + exit 1 + fi + fi + + # DNS + + valid_dns="1.1.1.1 1.0.0.1 8.8.8.8 8.8.4.4 223.6.6.6 223.5.5.5 180.76.76.76 208.67.222.222 208.67.220.220 119.29.29.99" + + dns_config=$(grep 'option dns' /etc/config/network) + dns_servers=$(echo $dns_config | awk -F "'" '{print $2}') + + for ip in $dns_servers; do + if ! [[ $valid_dns =~ (^|[ ])$ip($|[ ]) ]]; then + echo "[DNS] Recommended to delete DNS $ip" + echo " " + exit 1 + fi + done + + # Bad DNS + + echo "[DNS] DNS configuration looks good!" + echo " " + + bad_dns="114.114.114.114 114.114.115.115 119.29.29.29" + if [[ $dns_config =~ $bad_dns ]]; then + echo "[DNS] DNS may be polluted or unreliable" + echo " " + fi + + # nslookup + + nslookup bilibili.com > /dev/null + if [ $? -ne 0 ]; then + nslookup www.miaoer.xyz > /dev/null + if [ $? -eq 0 ]; then + echo "[DNS] DNS resolution succeeded" + echo " " + else + echo "[DNS] NS resolution failed for 'www.miaoer.xyz'" + echo "[DNS] Your DNS server may have issues" + echo " " + fi + fi + + # Public IP + + echo CatWrt IPv4 Addr: $(curl --silent --connect-timeout 5 4.ipw.cn ) + echo " " + + curl 6.ipw.cn --connect-timeout 5 > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "[IPv6] IPv6 network connection timed out" + echo " " + else + echo CatWrt IPv6 Addr: $(curl --silent 6.ipw.cn) + echo " " + fi + + # IPv6 + + resp=$(curl --silent test.ipw.cn) + + if echo "$resp" | grep -q -E '240e|2408|2409|2401'; then + echo "[IPv6] IPv6 access is preferred" + echo " " + else + echo "[IPv6] IPv4 access is preferred" + echo " " + fi + + # Default IP + + ipaddr_config=$(grep '192.168.1.4' /etc/config/network) + + if [ -z "$ipaddr_config" ]; then + echo "[Default-IP] address is not the catwrt default 192.168.1.4" + echo "Please configure your network at 'https://www.miaoer.xyz/posts/network/quickstart-catwrt'" + echo " " + fi + + # Bypass Gateway + + wan_config=$(grep 'config interface' /etc/config/network | grep 'wan') + + if [ -z "$wan_config" ]; then + echo "[Bypass Gateway] No config for 'wan' interface found in /etc/config/network" + echo "Please check if your device is set as a Bypass Gateway" + echo " " + fi + + # Rotuer Mode(PPPoE) + + pass_config=$(grep 'password' /etc/config/network) + user_config=$(grep 'username' /etc/config/network) + pppoe_config=$(grep 'pppoe' /etc/config/network) + + if [ -n "$pass_config" ] && [ -n "$user_config" ] && [ -n "$pppoe_config" ]; then + echo "[PPPoE] PPPoE Rotuer Mode" + echo " " + else + echo "[PPPoE] DHCP protocol detected in WAN interface" + echo "The device may not be in PPPoE Rotuer Mode" + echo " " + fi + + # IPv6 WAN6 + + grep 'config interface' /etc/config/network | grep 'wan6' > /dev/null + if [ $? -ne 0 ]; then + echo "[wan6] Your IPv6 network may have issues" + echo " " + fi + + grep 'dhcpv6' /etc/config/network > /dev/null + if [ $? -ne 0 ]; then + echo "[wan6] Your IPv6 network may have issues" + echo " " + fi + + # Tcping + + echo "[Tcping] Testing..." + + tcping -q -c 1 cn.bing.com + [ $? -ne 0 ] && echo "Failed: cn.bing.com" + + tcping -q -c 1 bilibili.com + [ $? -ne 0 ] && echo "Failed: bilibili.com" + + tcping -q -c 1 github.com + [ $? -ne 0 ] && echo "Failed: github.com" + + tcping -q -c 1 google.com.hk + [ $? -ne 0 ] && echo "Failed: google.com.hk" + + echo " " + echo "$(date) - Network check completed" + echo " " } use_repo(){