Module: Win32::Resolv
Relationships & Source Files | |
Namespace Children | |
Modules:
| |
Defined in: | ext/win32/lib/win32/resolv.rb, ext/win32/lib/win32/resolv.rb, ext/win32/resolv/resolv.c |
Overview
Constant Summary
-
API =
# File 'ext/win32/lib/win32/resolv.rb', line 11Registry::API
-
Error =
# File 'ext/win32/lib/win32/resolv.rb', line 12Registry::Error
-
TCPIP_NT =
# File 'ext/win32/lib/win32/resolv.rb', line 65'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters'
Class Method Summary
- .get_hosts_path
- .get_resolv_info
- .get_hosts_dir private
- .get_info private
Class Method Details
.get_hosts_dir (private)
[ GitHub ]# File 'ext/win32/lib/win32/resolv.rb', line 69
def get_hosts_dir Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg| reg. ('DataBasePath') end end
.get_hosts_path
[ GitHub ]# File 'ext/win32/lib/win32/resolv.rb', line 14
def self.get_hosts_path path = get_hosts_dir path = File. ('hosts', path) File.exist?(path) ? path : nil end
.get_info (private)
[ GitHub ]# File 'ext/win32/lib/win32/resolv.rb', line 75
def get_info search = nil nameserver = get_dns_server_list Registry::HKEY_LOCAL_MACHINE.open(TCPIP_NT) do |reg| begin slist = reg.read_s('SearchList') search = slist.split(/,\s*/) unless slist.empty? rescue Registry::Error end if add_search = search.nil? search = [] begin nvdom = reg.read_s('NV Domain') unless nvdom.empty? @search = [ nvdom ] if reg.read_i('UseDomainNameDevolution') != 0 if /^\w+\./ =~ nvdom devo = $' end end end rescue Registry::Error end end reg.open('Interfaces') do |h| h.each_key do |iface, | h.open(iface) do |regif| next unless ns = %w[NameServer DhcpNameServer].find do |key| begin ns = regif.read_s(key) rescue Registry::Error else break ns.split(/[,\s]\s*/) unless ns.empty? end end next if (nameserver & ns).empty? if add_search begin [ 'Domain', 'DhcpDomain' ].each do |key| dom = regif.read_s(key) unless dom.empty? search.concat(dom.split(/,\s*/)) break end end rescue Registry::Error end end end end end search << devo if add_search and devo end [ search.uniq, nameserver.uniq ] end
.get_resolv_info
[ GitHub ]# File 'ext/win32/lib/win32/resolv.rb', line 20
def self.get_resolv_info search, nameserver = get_info if search.empty? search = nil else search.delete("") search.uniq! end if nameserver.empty? nameserver = nil else nameserver.delete("") nameserver.delete("0.0.0.0") nameserver.uniq! end [ search, nameserver ] end