UnixResolverDnsServerAddressStreamProvider Class — netty Architecture
Architecture documentation for the UnixResolverDnsServerAddressStreamProvider class in UnixResolverDnsServerAddressStreamProvider.java from the netty codebase.
Entity Profile
Dependency Diagram
graph TD 8efad33e_883b_062a_b123_d462f61c3350["UnixResolverDnsServerAddressStreamProvider"] 2e2012ba_7bee_2f7a_54fd_db424dc4964f["UnixResolverDnsServerAddressStreamProvider.java"] 8efad33e_883b_062a_b123_d462f61c3350 -->|defined in| 2e2012ba_7bee_2f7a_54fd_db424dc4964f f0d7d7b9_4888_e062_b786_3d8a7cdf3161["DnsServerAddressStreamProvider()"] 8efad33e_883b_062a_b123_d462f61c3350 -->|method| f0d7d7b9_4888_e062_b786_3d8a7cdf3161 b1d25819_2d2d_59c8_c410_aa8a0ba1f8a5["UnixResolverDnsServerAddressStreamProvider()"] 8efad33e_883b_062a_b123_d462f61c3350 -->|method| b1d25819_2d2d_59c8_c410_aa8a0ba1f8a5 b3b93ddb_2755_5d17_42e2_b2bbfc203be3["DnsServerAddressStream()"] 8efad33e_883b_062a_b123_d462f61c3350 -->|method| b3b93ddb_2755_5d17_42e2_b2bbfc203be3 767643a9_06e4_cb11_3c15_55e52b876d59["mayOverrideNameServers()"] 8efad33e_883b_062a_b123_d462f61c3350 -->|method| 767643a9_06e4_cb11_3c15_55e52b876d59 faf5b73b_bdcd_428b_dee7_2e0fd8338002["parse()"] 8efad33e_883b_062a_b123_d462f61c3350 -->|method| faf5b73b_bdcd_428b_dee7_2e0fd8338002 9cdf8e90_d3af_1682_4628_58c4abdc22df["putIfAbsent()"] 8efad33e_883b_062a_b123_d462f61c3350 -->|method| 9cdf8e90_d3af_1682_4628_58c4abdc22df 2d4e0f8a_893c_7cc2_568a_45fb052d5357["UnixResolverOptions()"] 8efad33e_883b_062a_b123_d462f61c3350 -->|method| 2d4e0f8a_893c_7cc2_568a_45fb052d5357 7d65a810_b871_d729_24ae_110a413428fc["parseResOptions()"] 8efad33e_883b_062a_b123_d462f61c3350 -->|method| 7d65a810_b871_d729_24ae_110a413428fc 1e1ed8b7_5ca5_b8d2_a518_7dcdfb71c4df["parseResIntOption()"] 8efad33e_883b_062a_b123_d462f61c3350 -->|method| 1e1ed8b7_5ca5_b8d2_a518_7dcdfb71c4df 7ef57133_3a49_6636_0b01_ce4c7de27829["parseEtcResolverSearchDomains()"] 8efad33e_883b_062a_b123_d462f61c3350 -->|method| 7ef57133_3a49_6636_0b01_ce4c7de27829
Relationship Graph
Source Code
resolver-dns/src/main/java/io/netty/resolver/dns/UnixResolverDnsServerAddressStreamProvider.java lines 46–410
public final class UnixResolverDnsServerAddressStreamProvider implements DnsServerAddressStreamProvider {
private static final InternalLogger logger =
InternalLoggerFactory.getInstance(UnixResolverDnsServerAddressStreamProvider.class);
private static final Pattern WHITESPACE_PATTERN = Pattern.compile("\\s+");
private static final String RES_OPTIONS = System.getenv("RES_OPTIONS");
private static final String ETC_RESOLV_CONF_FILE = "/etc/resolv.conf";
private static final String ETC_RESOLVER_DIR = "/etc/resolver";
private static final String NAMESERVER_ROW_LABEL = "nameserver";
private static final String SORTLIST_ROW_LABEL = "sortlist";
private static final String OPTIONS_ROW_LABEL = "options ";
private static final String OPTIONS_ROTATE_FLAG = "rotate";
private static final String DOMAIN_ROW_LABEL = "domain";
private static final String SEARCH_ROW_LABEL = "search";
private static final String PORT_ROW_LABEL = "port";
private final DnsServerAddresses defaultNameServerAddresses;
private final Map<String, DnsServerAddresses> domainToNameServerStreamMap;
/**
* Attempt to parse {@code /etc/resolv.conf} and files in the {@code /etc/resolver} directory by default.
* A failure to parse will return {@link DefaultDnsServerAddressStreamProvider}.
*/
static DnsServerAddressStreamProvider parseSilently() {
try {
UnixResolverDnsServerAddressStreamProvider nameServerCache =
new UnixResolverDnsServerAddressStreamProvider(ETC_RESOLV_CONF_FILE, ETC_RESOLVER_DIR);
return nameServerCache.mayOverrideNameServers() ? nameServerCache
: DefaultDnsServerAddressStreamProvider.INSTANCE;
} catch (Exception e) {
if (logger.isDebugEnabled()) {
logger.debug("failed to parse {} and/or {}", ETC_RESOLV_CONF_FILE, ETC_RESOLVER_DIR, e);
}
return DefaultDnsServerAddressStreamProvider.INSTANCE;
}
}
/**
* Parse a file of the format <a href="https://linux.die.net/man/5/resolver">/etc/resolv.conf</a> which may contain
* the default DNS server to use, and also overrides for individual domains. Also parse list of files of the format
* <a href="
* https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/resolver.5.html">
* /etc/resolver</a> which may contain multiple files to override the name servers used for multiple domains.
* @param etcResolvConf <a href="https://linux.die.net/man/5/resolver">/etc/resolv.conf</a>.
* @param etcResolverFiles List of files of the format defined in
* <a href="
* https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/resolver.5.html">
* /etc/resolver</a>.
* @throws IOException If an error occurs while parsing the input files.
*/
public UnixResolverDnsServerAddressStreamProvider(File etcResolvConf, File... etcResolverFiles) throws IOException {
Map<String, DnsServerAddresses> etcResolvConfMap = parse(checkNotNull(etcResolvConf, "etcResolvConf"));
final boolean useEtcResolverFiles = etcResolverFiles != null && etcResolverFiles.length != 0;
domainToNameServerStreamMap = useEtcResolverFiles ? parse(etcResolverFiles) : etcResolvConfMap;
DnsServerAddresses defaultNameServerAddresses
= etcResolvConfMap.get(etcResolvConf.getName());
if (defaultNameServerAddresses == null) {
Collection<DnsServerAddresses> values = etcResolvConfMap.values();
if (values.isEmpty()) {
throw new IllegalArgumentException(etcResolvConf + " didn't provide any name servers");
}
this.defaultNameServerAddresses = values.iterator().next();
} else {
this.defaultNameServerAddresses = defaultNameServerAddresses;
}
if (useEtcResolverFiles) {
domainToNameServerStreamMap.putAll(etcResolvConfMap);
}
}
/**
* Parse a file of the format <a href="https://linux.die.net/man/5/resolver">/etc/resolv.conf</a> which may contain
* the default DNS server to use, and also overrides for individual domains. Also parse a directory of the format
* <a href="
* https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man5/resolver.5.html">
* /etc/resolver</a> which may contain multiple files to override the name servers used for multiple domains.
* @param etcResolvConf <a href="https://linux.die.net/man/5/resolver">/etc/resolv.conf</a>.
* @param etcResolverDir Directory containing files of the format defined in
Defined In
Source
Frequently Asked Questions
What is the UnixResolverDnsServerAddressStreamProvider class?
UnixResolverDnsServerAddressStreamProvider is a class in the netty codebase, defined in resolver-dns/src/main/java/io/netty/resolver/dns/UnixResolverDnsServerAddressStreamProvider.java.
Where is UnixResolverDnsServerAddressStreamProvider defined?
UnixResolverDnsServerAddressStreamProvider is defined in resolver-dns/src/main/java/io/netty/resolver/dns/UnixResolverDnsServerAddressStreamProvider.java at line 46.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free