Class: NetCrawl::Resolve

Inherits:
Object
  • Object
show all
Defined in:
lib/netcrawl/dns.rb

Instance Method Summary collapse

Instance Method Details

#getip(name) ⇒ String?

Returns string if name resolves to IP, otherwise nil.

Parameters:

  • name (String)

    DNS name which we try to resolve to IP

Returns:

  • (String, nil)

    string if name resolves to IP, otherwise nil



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 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) ⇒ String

Returns name if it resolves, ip otherwise.

Parameters:

  • ip (String)

    DNS IP which we try to resolve to name

Returns:

  • (String)

    name if it resolves, ip otherwise



30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 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