lookup_srv/
lookup_srv.rs

1use std::env::args;
2
3use sync_resolve::record::Srv;
4use sync_resolve::{DnsConfig, DnsResolver};
5
6fn main() {
7    let args = args().collect::<Vec<_>>();
8
9    if args.len() != 4 {
10        println!("Usage: {} <service> <proto> <name>", args[0]);
11        println!(" e.g.  {} _http _tcp example.com", args[0]);
12        return;
13    }
14
15    let config = match DnsConfig::load_default() {
16        Ok(config) => config,
17        Err(e) => {
18            println!("failed to load system configuration: {}", e);
19            return;
20        }
21    };
22
23    let resolver = match DnsResolver::new(config) {
24        Ok(resolver) => resolver,
25        Err(e) => {
26            println!("failed to create DNS resolver: {}", e);
27            return;
28        }
29    };
30
31    let name = format!("{}.{}.{}", args[1], args[2], args[3]);
32
33    match resolver.resolve_record::<Srv>(&name) {
34        Ok(records) => {
35            for srv in records {
36                println!(
37                    "SRV priority={} weight={} port={} target={}",
38                    srv.priority, srv.weight, srv.port, srv.target
39                );
40            }
41        }
42        Err(e) => {
43            println!("{}", e);
44            return;
45        }
46    }
47}