IPRangeLoader.go 754 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package main
  2. import (
  3. "bufio"
  4. "log"
  5. "net"
  6. "os"
  7. )
  8. func loadFirstIPOfRangeFromFile() []net.IPAddr {
  9. file, err := os.Open("ip.txt")
  10. if err != nil {
  11. log.Fatal(err)
  12. }
  13. firstIPs := make([]net.IPAddr, 0)
  14. scanner := bufio.NewScanner(file)
  15. scanner.Split(bufio.ScanLines)
  16. for scanner.Scan() {
  17. IPString := scanner.Text()
  18. firstIP, IPRange, err := net.ParseCIDR(IPString)
  19. if err != nil {
  20. log.Fatal(err)
  21. }
  22. firstIP[15] = ipEndWith
  23. for IPRange.Contains(firstIP) {
  24. firstIPCopy := make([]byte, len(firstIP))
  25. copy(firstIPCopy, firstIP)
  26. firstIPs = append(firstIPs, net.IPAddr{IP: firstIPCopy})
  27. firstIP[14]++
  28. if firstIP[14] == 0 {
  29. firstIP[13]++
  30. if firstIP[13] == 0 {
  31. firstIP[12]++
  32. }
  33. }
  34. }
  35. }
  36. return firstIPs
  37. }