diff --git a/internal/utils/net.go b/internal/utils/net.go index 52112b9..0d1fd0e 100644 --- a/internal/utils/net.go +++ b/internal/utils/net.go @@ -7,7 +7,6 @@ import ( "context" "github.com/iwind/TeaGo/logs" "net" - "sort" "syscall" ) @@ -26,47 +25,3 @@ func ListenReuseAddr(network string, addr string) (net.Listener, error) { } return config.Listen(context.Background(), network, addr) } - -// ParseAddrHost 分析地址中的主机名部分 -func ParseAddrHost(addr string) string { - if len(addr) == 0 { - return addr - } - - host, _, err := net.SplitHostPort(addr) - if err != nil { - return addr - } - return host -} - -// MergePorts 聚合端口 -// 返回 [ [fromPort, toPort], ... ] -func MergePorts(ports []int) [][2]int { - if len(ports) == 0 { - return nil - } - - sort.Ints(ports) - - var result = [][2]int{} - var lastRange = [2]int{0, 0} - var lastPort = -1 - for _, port := range ports { - if port <= 0 /** 只处理有效的端口 **/ || port == lastPort /** 去重 **/ { - continue - } - - if lastPort < 0 || port != lastPort+1 { - lastRange = [2]int{port, port} - result = append(result, lastRange) - } else { // 如果是连续的 - lastRange[1] = port - result[len(result)-1] = lastRange - } - - lastPort = port - } - - return result -} diff --git a/internal/utils/net_utils.go b/internal/utils/net_utils.go new file mode 100644 index 0000000..d1bfcdb --- /dev/null +++ b/internal/utils/net_utils.go @@ -0,0 +1,52 @@ +// Copyright 2022 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn . + +package utils + +import ( + "net" + "sort" +) + +// ParseAddrHost 分析地址中的主机名部分 +func ParseAddrHost(addr string) string { + if len(addr) == 0 { + return addr + } + + host, _, err := net.SplitHostPort(addr) + if err != nil { + return addr + } + return host +} + +// MergePorts 聚合端口 +// 返回 [ [fromPort, toPort], ... ] +func MergePorts(ports []int) [][2]int { + if len(ports) == 0 { + return nil + } + + sort.Ints(ports) + + var result = [][2]int{} + var lastRange = [2]int{0, 0} + var lastPort = -1 + for _, port := range ports { + if port <= 0 /** 只处理有效的端口 **/ || port == lastPort /** 去重 **/ { + continue + } + + if lastPort < 0 || port != lastPort+1 { + lastRange = [2]int{port, port} + result = append(result, lastRange) + } else { // 如果是连续的 + lastRange[1] = port + result[len(result)-1] = lastRange + } + + lastPort = port + } + + return result +}