Class: Dnsruby::Resolv

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

Overview

The Resolv class can be used to resolve addresses using /etc/hosts and /etc/resolv.conf,

The DNS class may be used to perform more queries. If greater control over the sending of packets is required, then the Resolver or SingleResolver classes may be used.

Constant Summary collapse

DefaultResolver =

Default Resolver to use for Dnsruby class methods

self.new
AddressRegex =

Address RegExp to use for matching IP addresses

/(?:#{IPv4::Regex})|(?:#{IPv6::Regex})/

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(resolvers = [Hosts.new, DNS.new]) ⇒ Resolv

Creates a new Resolv using resolvers



416
417
418
# File 'lib/dnsruby.rb', line 416

def initialize(resolvers=[Hosts.new, DNS.new])
  @resolvers = resolvers
end

Class Method Details

.each_address(name, &block) ⇒ Object

Iterates over all IP addresses for name



396
397
398
# File 'lib/dnsruby.rb', line 396

def self.each_address(name, &block)
  DefaultResolver.each_address(name, &block)
end

.each_name(address, &proc) ⇒ Object

Iterates over all hostnames of address



411
412
413
# File 'lib/dnsruby.rb', line 411

def self.each_name(address, &proc)
  DefaultResolver.each_name(address, &proc)
end

.getaddress(name) ⇒ Object

Looks up the first IP address for name



386
387
388
# File 'lib/dnsruby.rb', line 386

def self.getaddress(name)
  DefaultResolver.getaddress(name)
end

.getaddresses(name) ⇒ Object

Looks up all IP addresses for name



391
392
393
# File 'lib/dnsruby.rb', line 391

def self.getaddresses(name)
  DefaultResolver.getaddresses(name)
end

.getname(address) ⇒ Object

Looks up the first hostname of address



401
402
403
# File 'lib/dnsruby.rb', line 401

def self.getname(address)
  DefaultResolver.getname(address)
end

.getnames(address) ⇒ Object

Looks up all hostnames of address



406
407
408
# File 'lib/dnsruby.rb', line 406

def self.getnames(address)
  DefaultResolver.getnames(address)
end

Instance Method Details

#each_address(name) ⇒ Object

Iterates over all IP addresses for name



434
435
436
437
438
439
440
441
442
443
444
445
446
447
# File 'lib/dnsruby.rb', line 434

def each_address(name)
  if AddressRegex =~ name
    yield name
    return
  end
  yielded = false
  @resolvers.each {|r|
    r.each_address(name) {|address|
      yield address.to_s
      yielded = true
    }
    return if yielded
  }
end

#each_name(address) ⇒ Object

Iterates over all hostnames of address



463
464
465
466
467
468
469
470
471
472
# File 'lib/dnsruby.rb', line 463

def each_name(address)
  yielded = false
  @resolvers.each {|r|
    r.each_name(address) {|name|
      yield name.to_s
      yielded = true
    }
    return if yielded
  }
end

#getaddress(name) ⇒ Object

Looks up the first IP address for name

Raises:



421
422
423
424
# File 'lib/dnsruby.rb', line 421

def getaddress(name)
  each_address(name) {|address| return address}
  raise ResolvError.new("no address for #{name}")
end

#getaddresses(name) ⇒ Object

Looks up all IP addresses for name



427
428
429
430
431
# File 'lib/dnsruby.rb', line 427

def getaddresses(name)
  ret = []
  each_address(name) {|address| ret << address}
  return ret
end

#getname(address) ⇒ Object

Looks up the first hostname of address

Raises:



450
451
452
453
# File 'lib/dnsruby.rb', line 450

def getname(address)
  each_name(address) {|name| return name}
  raise ResolvError.new("no name for #{address}")
end

#getnames(address) ⇒ Object

Looks up all hostnames of address



456
457
458
459
460
# File 'lib/dnsruby.rb', line 456

def getnames(address)
  ret = []
  each_name(address) {|name| ret << name}
  return ret
end