From 85525580c6a9eec9270ab32a1673efcb109bd697 Mon Sep 17 00:00:00 2001 From: hotyue <52734432+hotyue@users.noreply.github.com> Date: Fri, 10 Apr 2026 13:30:42 +0000 Subject: [PATCH] =?UTF-8?q?fix(daemon):=20=E5=90=8C=E6=AD=A5=E9=94=81?= =?UTF-8?q?=E5=AE=9A=E7=BD=91=E7=BB=9C=E5=8D=8F=E8=AE=AE=E9=98=B2=E9=87=8D?= =?UTF-8?q?=E5=A4=8D=E5=8F=91=E6=8A=A5=EF=BC=8C=E9=87=8D=E6=9E=84=20Python?= =?UTF-8?q?=20Webhook=20=E6=94=AF=E6=8C=81=E5=8F=8C=E6=A0=88=E5=8F=8A?= =?UTF-8?q?=E7=BA=AF=20IPv6=20=E7=9B=91=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/agent_daemon.sh | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/core/agent_daemon.sh b/core/agent_daemon.sh index 3876845..b47d713 100755 --- a/core/agent_daemon.sh +++ b/core/agent_daemon.sh @@ -24,8 +24,15 @@ if pgrep -f "webhook.py $AGENT_PORT" > /dev/null; then exit 0 fi -# 1. 获取本机原生公网 IPv4 (强制去除所有不可见换行符和空格) -AGENT_IP=$(curl -4 -s -m 5 api.ip.sb/ip | tr -d '[:space:]') +# 1. [v3.0.1修复] 严格按照 install.sh 锁定的网络协议 (v4/v6) 获取 IP +RAW_IP=$(curl -${IP_PREF:-4} -s -m 5 api.ip.sb/ip | tr -d '[:space:]') + +# 为新获取到的 v6 自动加方括号,以确保与之前锁定的格式对齐比对 +if [[ "$RAW_IP" == *":"* ]] && [[ "$RAW_IP" != *"["* ]]; then + AGENT_IP="[${RAW_IP}]" +else + AGENT_IP="$RAW_IP" +fi if [ -n "$AGENT_IP" ]; then # --- [重点升级 2: 智能防打扰注册机制] --- @@ -120,8 +127,14 @@ class AgentHandler(http.server.BaseHTTPRequestHandler): def log_message(self, format, *args): pass +import socket +# [v3.0.1修复] 自定义支持双栈/IPv6的 Server 类 +class DualStackServer(socketserver.TCPServer): + address_family = socket.AF_INET6 if socket.has_ipv6 else socket.AF_INET + try: - with socketserver.TCPServer(("", PORT), AgentHandler) as httpd: + bind_addr = "::" if socket.has_ipv6 else "" + with DualStackServer((bind_addr, PORT), AgentHandler) as httpd: httpd.serve_forever() except Exception as e: sys.exit(1)