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



466
467
468
# File 'lib/dnsruby.rb', line 466

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



446
447
448
# File 'lib/dnsruby.rb', line 446

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

.each_name(address, &proc) ⇒ Object

Iterates over all hostnames of address



461
462
463
# File 'lib/dnsruby.rb', line 461

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

.getaddress(name) ⇒ Object

Looks up the first IP address for name



436
437
438
# File 'lib/dnsruby.rb', line 436

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

.getaddresses(name) ⇒ Object

Looks up all IP addresses for name



441
442
443
# File 'lib/dnsruby.rb', line 441

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

.getname(address) ⇒ Object

Looks up the first hostname of address



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

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

.getnames(address) ⇒ Object

Looks up all hostnames of address



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

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

Instance Method Details

#each_address(name) ⇒ Object

Iterates over all IP addresses for name



484
485
486
487
488
489
490
491
492
493
494
495
496
497
# File 'lib/dnsruby.rb', line 484

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



513
514
515
516
517
518
519
520
521
522
# File 'lib/dnsruby.rb', line 513

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:



471
472
473
474
# File 'lib/dnsruby.rb', line 471

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



477
478
479
480
481
# File 'lib/dnsruby.rb', line 477

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

#getname(address) ⇒ Object

Looks up the first hostname of address

Raises:



500
501
502
503
# File 'lib/dnsruby.rb', line 500

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



506
507
508
509
510
# File 'lib/dnsruby.rb', line 506

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