Skip to content

Commit 73665ed

Browse files
shahar481bee-san
andauthored
Changed the dns resolving to use std::net::ToSocketAddrs (#264)
* Changed dns resolving library to to_socket_addrs and removed the usage of trust-dns * Reverted automatic IDE spacing * Ran cargo fmt on the code * Made trust-dns a fallback dns resolver and reverted cargo toml and lock * Reverted cargo.lock * Ran cargo fmt * Changed style of err checking * Fixed errors * Fixed merging errors * Changed for CR Co-authored-by: Bee <[email protected]>
1 parent 21b92a1 commit 73665ed

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

src/main.rs

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -237,11 +237,11 @@ The Modern Day Port Scanner."#;
237237
fn parse_addresses(input: &Opts) -> Vec<IpAddr> {
238238
let mut ips: Vec<IpAddr> = Vec::new();
239239
let mut unresolved_addresses: Vec<&str> = Vec::new();
240-
let resolver =
241-
&Resolver::new(ResolverConfig::cloudflare_tls(), ResolverOpts::default()).unwrap();
240+
let backup_resolver =
241+
Resolver::new(ResolverConfig::cloudflare_tls(), ResolverOpts::default()).unwrap();
242242

243243
for address in &input.addresses {
244-
let parsed_ips = parse_address(address, resolver);
244+
let parsed_ips = parse_address(address, &backup_resolver);
245245
if !parsed_ips.is_empty() {
246246
ips.extend(parsed_ips);
247247
} else {
@@ -263,7 +263,7 @@ fn parse_addresses(input: &Opts) -> Vec<IpAddr> {
263263
continue;
264264
}
265265

266-
if let Ok(x) = read_ips_from_file(file_path, &resolver) {
266+
if let Ok(x) = read_ips_from_file(file_path, &backup_resolver) {
267267
ips.extend(x);
268268
} else {
269269
warning!(
@@ -294,18 +294,25 @@ fn parse_address(address: &str, resolver: &Resolver) -> Vec<IpAddr> {
294294
}
295295

296296
/// Uses DNS to get the IPS assiocated with host
297-
fn resolve_ips_from_host(source: &str, resolver: &Resolver) -> Vec<IpAddr> {
298-
resolver
299-
.lookup_ip(source)
300-
.map(|x| x.iter().collect())
301-
.unwrap_or_default()
297+
fn resolve_ips_from_host(source: &str, backup_resolver: &Resolver) -> Vec<IpAddr> {
298+
let mut ips: Vec<std::net::IpAddr> = Vec::new();
299+
300+
if let Ok(addrs) = source.to_socket_addrs() {
301+
for ip in addrs {
302+
ips.push(ip.ip());
303+
}
304+
} else if let Ok(addrs) = backup_resolver.lookup_ip(&source) {
305+
ips.extend(addrs.iter());
306+
}
307+
308+
ips
302309
}
303310

304311
#[cfg(not(tarpaulin_include))]
305312
/// Parses an input file of IPs and uses those
306313
fn read_ips_from_file(
307314
ips: &std::path::Path,
308-
resolver: &Resolver,
315+
backup_resolver: &Resolver,
309316
) -> Result<Vec<std::net::IpAddr>, std::io::Error> {
310317
let file = File::open(ips)?;
311318
let reader = BufReader::new(file);
@@ -314,7 +321,7 @@ fn read_ips_from_file(
314321

315322
for address_line in reader.lines() {
316323
if let Ok(address) = address_line {
317-
ips.extend(parse_address(&address, resolver));
324+
ips.extend(parse_address(&address, backup_resolver));
318325
} else {
319326
debug!("Line in file is not valid");
320327
}

0 commit comments

Comments
 (0)