main.go 780 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package main
  2. import (
  3. "bufio"
  4. "fmt"
  5. "net"
  6. "os"
  7. "path/filepath"
  8. "strings"
  9. v2net "github.com/v2ray/v2ray-core/common/net"
  10. )
  11. func main() {
  12. GOPATH := os.Getenv("GOPATH")
  13. src := filepath.Join(GOPATH, "src", "github.com", "v2ray", "v2ray-core", "tools", "chinaip", "ipv4.txt")
  14. reader, err := os.Open(src)
  15. if err != nil {
  16. panic(err)
  17. }
  18. ipNet := v2net.NewIPNet()
  19. scanner := bufio.NewScanner(reader)
  20. for scanner.Scan() {
  21. line := scanner.Text()
  22. line = strings.TrimSpace(line)
  23. if len(line) == 0 {
  24. break
  25. }
  26. _, t, err := net.ParseCIDR(line)
  27. if err != nil {
  28. panic(err)
  29. }
  30. ipNet.Add(t)
  31. }
  32. dump := ipNet.Serialize()
  33. fmt.Println("map[uint32]byte {")
  34. for i := 0; i < len(dump); i += 2 {
  35. fmt.Println(dump[i], ": ", dump[i+1], ",")
  36. }
  37. fmt.Println("}")
  38. }