CloudflareSpeedTest/IPRangeLoader.go

40 lines
754 B
Go

package main
import (
"bufio"
"log"
"net"
"os"
)
func loadFirstIPOfRangeFromFile() []net.IPAddr {
file, err := os.Open("ip.txt")
if err != nil {
log.Fatal(err)
}
firstIPs := make([]net.IPAddr, 0)
scanner := bufio.NewScanner(file)
scanner.Split(bufio.ScanLines)
for scanner.Scan() {
IPString := scanner.Text()
firstIP, IPRange, err := net.ParseCIDR(IPString)
if err != nil {
log.Fatal(err)
}
firstIP[15] = ipEndWith
for IPRange.Contains(firstIP) {
firstIPCopy := make([]byte, len(firstIP))
copy(firstIPCopy, firstIP)
firstIPs = append(firstIPs, net.IPAddr{IP: firstIPCopy})
firstIP[14]++
if firstIP[14] == 0 {
firstIP[13]++
if firstIP[13] == 0 {
firstIP[12]++
}
}
}
}
return firstIPs
}