Skip to content

Commit e71bdd5

Browse files
committed
Add --cidr-file flag to scan CIDR ranges from a text file
1 parent 30a7132 commit e71bdd5

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

cmd/scan.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ func init() {
6969
scanCmd.Flags().Int("edns-size", 1232, "EDNS0 UDP payload size in bytes (default 1232, lower if fragmented)")
7070
scanCmd.Flags().Int("query-size", 0, "cap dnstt-client upstream query size in bytes (0 = max, try 50-80 if e2e fails)")
7171
scanCmd.Flags().StringSlice("cidr", nil, "CIDR range(s) to scan (e.g. --cidr 5.52.0.0/16)")
72+
scanCmd.Flags().String("cidr-file", "", "text file with one CIDR range per line to scan")
7273
scanCmd.Flags().String("output-ips", "", "write plain IP list (one per line) to this file")
7374
scanCmd.Flags().Int("e2e-top", 100, "number of top SOCKS-passing resolvers to full-verify with curl")
7475
scanCmd.Flags().Int("top", 10, "number of top results to display")
@@ -92,6 +93,22 @@ func runScan(cmd *cobra.Command, args []string) error {
9293
ednsSize, _ := cmd.Flags().GetInt("edns-size")
9394
querySize, _ := cmd.Flags().GetInt("query-size")
9495
cidrRanges, _ := cmd.Flags().GetStringSlice("cidr")
96+
cidrFile, _ := cmd.Flags().GetString("cidr-file")
97+
98+
// Load additional CIDRs from file if provided
99+
if cidrFile != "" {
100+
raw, err := os.ReadFile(cidrFile)
101+
if err != nil {
102+
return fmt.Errorf("reading --cidr-file %q: %w", cidrFile, err)
103+
}
104+
for _, line := range strings.Split(string(raw), "\n") {
105+
line = strings.TrimSpace(line)
106+
if line == "" || strings.HasPrefix(line, "#") {
107+
continue
108+
}
109+
cidrRanges = append(cidrRanges, line)
110+
}
111+
}
95112

96113
// Apply query size (dnstt-client MTU); 0 = use max
97114
if querySize < 0 {
@@ -132,7 +149,11 @@ func runScan(cmd *cobra.Command, args []string) error {
132149
if len(expanded) == 0 {
133150
return fmt.Errorf("CIDR range(s) produced no usable IPs")
134151
}
135-
fmt.Fprintf(os.Stderr, " --cidr: expanded %d range(s) to %d IPs\n", len(cidrRanges), len(expanded))
152+
src := "--cidr"
153+
if cidrFile != "" {
154+
src = "--cidr-file"
155+
}
156+
fmt.Fprintf(os.Stderr, " %s: expanded %d range(s) to %d IPs\n", src, len(cidrRanges), len(expanded))
136157
ips = expanded
137158
} else {
138159
var err error

0 commit comments

Comments
 (0)