fix: 修复 IPv6 地址解析中的端口处理逻辑
- 将 LastIndex 替换为 Index,以正确找到第一个闭合括号。 - 添加逻辑以在端口部分为空时使用默认端口 80,解决了潜在的连接问题。
This commit is contained in:
@@ -35,14 +35,18 @@ func NewTCPingTask(taskID, target string, interval, maxDuration time.Duration) (
|
|||||||
|
|
||||||
// 检查是否是IPv6格式(如 [::1]:8080)
|
// 检查是否是IPv6格式(如 [::1]:8080)
|
||||||
if strings.HasPrefix(target, "[") {
|
if strings.HasPrefix(target, "[") {
|
||||||
// IPv6格式
|
// IPv6格式 - 使用 Index 而不是 LastIndex 来找到第一个闭合括号
|
||||||
closeBracket := strings.LastIndex(target, "]")
|
closeBracket := strings.Index(target, "]")
|
||||||
if closeBracket == -1 {
|
if closeBracket == -1 {
|
||||||
return nil, fmt.Errorf("无效的target格式,IPv6地址格式应为 [host]:port")
|
return nil, fmt.Errorf("无效的target格式,IPv6地址格式应为 [host]:port")
|
||||||
}
|
}
|
||||||
host = target[1:closeBracket]
|
host = target[1:closeBracket]
|
||||||
if closeBracket+1 < len(target) && target[closeBracket+1] == ':' {
|
if closeBracket+1 < len(target) && target[closeBracket+1] == ':' {
|
||||||
portStr = target[closeBracket+2:]
|
portStr = target[closeBracket+2:]
|
||||||
|
// 如果端口部分为空,使用默认端口80(修复 Bug 1)
|
||||||
|
if portStr == "" {
|
||||||
|
portStr = "80"
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
portStr = "80" // 默认端口
|
portStr = "80" // 默认端口
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ func handleTCPing(c *gin.Context, url string, params map[string]interface{}) {
|
|||||||
|
|
||||||
// 检查是否是IPv6格式(如 [::1]:8080)
|
// 检查是否是IPv6格式(如 [::1]:8080)
|
||||||
if strings.HasPrefix(url, "[") {
|
if strings.HasPrefix(url, "[") {
|
||||||
// IPv6格式
|
// IPv6格式 - 使用 Index 而不是 LastIndex 来找到第一个闭合括号
|
||||||
closeBracket := strings.LastIndex(url, "]")
|
closeBracket := strings.Index(url, "]")
|
||||||
if closeBracket == -1 {
|
if closeBracket == -1 {
|
||||||
c.JSON(200, gin.H{
|
c.JSON(200, gin.H{
|
||||||
"seq": seq,
|
"seq": seq,
|
||||||
@@ -37,6 +37,10 @@ func handleTCPing(c *gin.Context, url string, params map[string]interface{}) {
|
|||||||
host = url[1:closeBracket]
|
host = url[1:closeBracket]
|
||||||
if closeBracket+1 < len(url) && url[closeBracket+1] == ':' {
|
if closeBracket+1 < len(url) && url[closeBracket+1] == ':' {
|
||||||
portStr = url[closeBracket+2:]
|
portStr = url[closeBracket+2:]
|
||||||
|
// 如果端口部分为空,使用默认端口80(修复 Bug 1)
|
||||||
|
if portStr == "" {
|
||||||
|
portStr = "80"
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
portStr = "80" // 默认端口
|
portStr = "80" // 默认端口
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user