From 85546abb23d2173e10041ea97c360ccb430d38e6 Mon Sep 17 00:00:00 2001 From: xiu2 <54703944+XIU2@users.noreply.github.com> Date: Fri, 19 Mar 2021 21:43:29 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20=E6=B5=8B=E9=80=9F?= =?UTF-8?q?=E5=8D=95=E4=B8=AA=20IP=20=E6=97=B6=E5=8F=AF=E4=BB=A5=E7=9C=81?= =?UTF-8?q?=E7=95=A5=20/32=20=E5=AD=90=E7=BD=91=E6=8E=A9=E7=A0=81=EF=BC=88?= =?UTF-8?q?=E5=85=81=E8=AE=B8=E5=92=8C=20IP=20=E6=AE=B5=E6=B7=B7=E6=9D=82?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IPRangeLoader.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/IPRangeLoader.go b/IPRangeLoader.go index a17f71b..36500dc 100644 --- a/IPRangeLoader.go +++ b/IPRangeLoader.go @@ -64,6 +64,9 @@ func loadFirstIPOfRangeFromFile(ipFile string) []net.IPAddr { scanner.Split(bufio.ScanLines) for scanner.Scan() { IPString := scanner.Text() + if !strings.Contains(IPString, "/") { // 如果不含有 / 则代表不是 IP 段,而是一个单独的 IP,因此需要加上 /32 子网掩码 + IPString += "/32" + } firstIP, IPRange, err := net.ParseCIDR(IPString) //fmt.Println(firstIP) //fmt.Println(IPRange) @@ -71,9 +74,9 @@ func loadFirstIPOfRangeFromFile(ipFile string) []net.IPAddr { log.Fatal(err) } if !ipv6Mode { // IPv4 - minIP, maxIP := getCidrIPRange(scanner.Text()) // 获取 IP 最后一段最小值和最大值 - Mask, _ := strconv.Atoi(strings.Split(scanner.Text(), "/")[1]) // 获取子网掩码 - MaxIPNum := getCidrHostNum(Mask) // 根据子网掩码获取主机数量 + minIP, maxIP := getCidrIPRange(IPString) // 获取 IP 最后一段最小值和最大值 + Mask, _ := strconv.Atoi(strings.Split(IPString, "/")[1]) // 获取子网掩码 + MaxIPNum := getCidrHostNum(Mask) // 根据子网掩码获取主机数量 for IPRange.Contains(firstIP) { if allip { // 如果是测速全部 IP for i := int(minIP); i <= int(maxIP); i++ { // 遍历 IP 最后一段最小值到最大值