From 21592ae8a0d38bba1f322016a1411e94ce57f7fd Mon Sep 17 00:00:00 2001 From: yoyo Date: Wed, 17 Dec 2025 20:09:51 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=20IPv6=20=E5=9C=B0?= =?UTF-8?q?=E5=9D=80=E8=A7=A3=E6=9E=90=E4=B8=AD=E7=9A=84=E7=AB=AF=E5=8F=A3?= =?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 LastIndex 替换为 Index,以正确找到第一个闭合括号。 - 添加逻辑以在端口部分为空时使用默认端口 80,解决了潜在的连接问题。 --- internal/continuous/tcping.go | 8 ++++++-- internal/handler/tcping.go | 8 ++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/internal/continuous/tcping.go b/internal/continuous/tcping.go index e4effd0..0788441 100644 --- a/internal/continuous/tcping.go +++ b/internal/continuous/tcping.go @@ -35,14 +35,18 @@ func NewTCPingTask(taskID, target string, interval, maxDuration time.Duration) ( // 检查是否是IPv6格式(如 [::1]:8080) if strings.HasPrefix(target, "[") { - // IPv6格式 - closeBracket := strings.LastIndex(target, "]") + // IPv6格式 - 使用 Index 而不是 LastIndex 来找到第一个闭合括号 + closeBracket := strings.Index(target, "]") if closeBracket == -1 { return nil, fmt.Errorf("无效的target格式,IPv6地址格式应为 [host]:port") } host = target[1:closeBracket] if closeBracket+1 < len(target) && target[closeBracket+1] == ':' { portStr = target[closeBracket+2:] + // 如果端口部分为空,使用默认端口80(修复 Bug 1) + if portStr == "" { + portStr = "80" + } } else { portStr = "80" // 默认端口 } diff --git a/internal/handler/tcping.go b/internal/handler/tcping.go index 546fac7..57b9a1a 100644 --- a/internal/handler/tcping.go +++ b/internal/handler/tcping.go @@ -23,8 +23,8 @@ func handleTCPing(c *gin.Context, url string, params map[string]interface{}) { // 检查是否是IPv6格式(如 [::1]:8080) if strings.HasPrefix(url, "[") { - // IPv6格式 - closeBracket := strings.LastIndex(url, "]") + // IPv6格式 - 使用 Index 而不是 LastIndex 来找到第一个闭合括号 + closeBracket := strings.Index(url, "]") if closeBracket == -1 { c.JSON(200, gin.H{ "seq": seq, @@ -37,6 +37,10 @@ func handleTCPing(c *gin.Context, url string, params map[string]interface{}) { host = url[1:closeBracket] if closeBracket+1 < len(url) && url[closeBracket+1] == ':' { portStr = url[closeBracket+2:] + // 如果端口部分为空,使用默认端口80(修复 Bug 1) + if portStr == "" { + portStr = "80" + } } else { portStr = "80" // 默认端口 }