external_ip/sources/
mod.rs

1mod dns;
2mod http;
3
4#[cfg(feature = "igd")]
5mod igd;
6
7mod interfaces;
8
9pub use self::dns::{get_dns_sources, DNSSource, QueryType};
10pub use self::http::{get_http_sources, HTTPSource, HTTPSourceBuilder};
11#[cfg(feature = "igd")]
12pub use self::igd::IGD;
13pub use interfaces::*;
14
15/// Returns a collection of all possible sources
16pub fn get_sources<T>() -> T
17where
18    T: std::iter::FromIterator<Box<dyn Source>>,
19{
20    let sources = if cfg!(feature = "igd") {
21        Some(IGD::source())
22    } else {
23        None
24    };
25
26    let d: Vec<_> = get_dns_sources();
27    let h: Vec<_> = get_http_sources();
28
29    let sources = sources.into_iter().chain(d.into_iter().chain(h));
30
31    sources.into_iter().collect()
32}