class EventMachine::DNS::Resolver
def self.hosts
def self.hosts return @hosts if @hosts @hosts = {} IO.readlines(HOSTS_FILE).each do |line| next if line =~ /^#/ addr, host = line.split(/\s+/) next unless addr && host @hosts[host] ||= [] @hosts[host] << addr end @hosts rescue @hosts = {} end
def self.nameserver
def self.nameserver nameservers.shuffle.first end
def self.nameservers
def self.nameservers return @nameservers if @nameservers if windows? _, ns = Win32::Resolv.get_resolv_info return @nameservers = ns || [] end @nameservers = [] IO.readlines('/etc/resolv.conf').each do |line| if line =~ /^nameserver (.+)$/ @nameservers << $1.split(/\s+/).first end end @nameservers rescue @nameservers = [] end
def self.nameservers=(ns)
def self.nameservers=(ns) @nameservers = ns end
def self.resolve(hostname)
def self.resolve(hostname) Request.new(socket, hostname) end
def self.socket
def self.socket if @socket && @socket.error? @socket = Socket.open else @socket ||= Socket.open end end
def self.windows?
def self.windows? if RUBY_PLATFORM =~ /mswin32|cygwin|mingw|bccwin/ require 'win32/resolv' true else false end end