class NetCrawl::Resolve
Public Class Methods
new()
click to toggle source
# File lib/netcrawl/dns.rb, line 47 def initialize @cacheip = {} @cachename = {} end
Public Instance Methods
getip(name)
click to toggle source
@param [String] name DNS name which we try to resolve to IP @return [String, nil] string if name resolves to IP, otherwise nil
# File lib/netcrawl/dns.rb, line 7 def getip name if @cacheip.has_key? name @cacheip[name] else ip = nil begin if CFG.dns.afi == 'ipv4' ip = Resolv::DNS.new.getresource(name, Resolv::DNS::Resource::IN::A).address elsif CFG.dns.afi == 'ipv6' ip = Resolv::DNS.new.getresource(name, Resolv::DNS::Resource::IN::AAAA).address else ip = Resolv.getaddress name end rescue => error Log.debug "DNS resolution for '#{name}' raised error '#{error.class}' with message '#{error.message}'" return nil end @cacheip[name] = ip end end
getname(ip)
click to toggle source
@param [String] ip DNS IP which we try to resolve to name @return [String] name if it resolves, ip otherwise
# File lib/netcrawl/dns.rb, line 30 def getname ip if @cachename.has_key? ip @cachename[ip] else name = nil begin name = Resolv.getname ip rescue => error Log.debug "DNS resolution for '#{ip}' raised error '#{error.class}' with message '#{error.message}'" name = ip end @cachename[ip] = name end end