Module Dnsruby
In: lib/Dnsruby/Recursor.rb
lib/Dnsruby/TheLog.rb
lib/Dnsruby/DNS.rb
lib/Dnsruby/PacketSender.rb
lib/Dnsruby/select_thread.rb
lib/Dnsruby/message.rb
lib/Dnsruby/code_mapper.rb
lib/Dnsruby/SingleResolver.rb
lib/Dnsruby/Resolver.rb
lib/Dnsruby/zone_reader.rb
lib/Dnsruby/key_cache.rb
lib/Dnsruby/validator_thread.rb
lib/Dnsruby/single_verifier.rb
lib/Dnsruby/update.rb
lib/Dnsruby/Cache.rb
lib/Dnsruby/dnssec.rb
lib/Dnsruby/zone_transfer.rb
lib/Dnsruby/Hosts.rb
lib/Dnsruby/name.rb
lib/Dnsruby/ipv6.rb
lib/Dnsruby/ipv4.rb
lib/Dnsruby/resource/HIP.rb
lib/Dnsruby/resource/RP.rb
lib/Dnsruby/resource/AAAA.rb
lib/Dnsruby/resource/AFSDB.rb
lib/Dnsruby/resource/HINFO.rb
lib/Dnsruby/resource/MX.rb
lib/Dnsruby/resource/ISDN.rb
lib/Dnsruby/resource/DHCID.rb
lib/Dnsruby/resource/LOC.rb
lib/Dnsruby/resource/generic.rb
lib/Dnsruby/resource/NSEC.rb
lib/Dnsruby/resource/CERT.rb
lib/Dnsruby/resource/resource.rb
lib/Dnsruby/resource/KX.rb
lib/Dnsruby/resource/PX.rb
lib/Dnsruby/resource/OPT.rb
lib/Dnsruby/resource/RT.rb
lib/Dnsruby/resource/DNSKEY.rb
lib/Dnsruby/resource/SPF.rb
lib/Dnsruby/resource/MINFO.rb
lib/Dnsruby/resource/SRV.rb
lib/Dnsruby/resource/NAPTR.rb
lib/Dnsruby/resource/domain_name.rb
lib/Dnsruby/resource/TKEY.rb
lib/Dnsruby/resource/SSHFP.rb
lib/Dnsruby/resource/NSAP.rb
lib/Dnsruby/resource/TSIG.rb
lib/Dnsruby/resource/A.rb
lib/Dnsruby/resource/NSEC3PARAM.rb
lib/Dnsruby/resource/DLV.rb
lib/Dnsruby/resource/RRSIG.rb
lib/Dnsruby/resource/SOA.rb
lib/Dnsruby/resource/X25.rb
lib/Dnsruby/resource/DS.rb
lib/Dnsruby/resource/IPSECKEY.rb
lib/Dnsruby/resource/TXT.rb
lib/Dnsruby/resource/IN.rb
lib/Dnsruby/resource/NSEC3.rb
lib/Dnsruby/Config.rb
lib/dnsruby.rb

Dnsruby library

Dnsruby is a thread-aware DNS stub resolver library written in Ruby.

It is based on resolv.rb, the standard Ruby DNS implementation, but gives a complete DNS implementation, including DNSSEC.

The Resolv class can be used to resolve addresses using /etc/hosts and /etc/resolv.conf, or the DNS class can be used to make DNS queries. These interfaces will attempt to apply the default domain and searchlist when resolving names.

The Resolver and SingleResolver interfaces allow finer control of individual messages. The Resolver class sends queries to multiple resolvers using various retry mechanisms. The SingleResolver class is used by Resolver to send individual Messages to individual resolvers.

Resolver queries return Dnsruby::Message objects. Message objects have five sections:

  • The header section, a Dnsruby::Header object.
  • The question section, a list of Dnsruby::Question objects.
  • The answer section, a list of Dnsruby::Resource objects.
  • The authority section, a list of Dnsruby::Resource objects.
  • The additional section, a list of Dnsruby::Resource objects.

example

  res = Dnsruby::Resolver.new # System default
  ret = res.query("example.com")
  print "#{ret.anwer.length} answer records returned, #{ret.answer.rrsets.length} RRSets returned in aswer section\n"

  p Dnsruby::Resolv.getaddress("www.ruby-lang.org")
  p Dnsruby::Resolv.getname("210.251.121.214")

  Dnsruby::DNS.open {|dns|
    p dns.getresources("www.ruby-lang.org", Dnsruby::Types.A).collect {|r| r.address}
    p dns.getresources("ruby-lang.org", 'MX').collect {|r| [r.exchange.to_s, r.preference]}
  }

exceptions

I/O

Dnsruby implements a pure Ruby event loop to perform I/O. Support for EventMachine has been deprecated.

DNSSEC

Dnsruby supports DNSSEC and NSEC(3). DNSSEC support is on by default - but no trust anchors are configured by default. See Dnsruby::Dnssec for more details.

Bugs

  • NIS is not supported.
  • /etc/nsswitch.conf is not supported.
  • NSEC3 validation still TBD

Methods

log   version  

Classes and Modules

Class Dnsruby::Algorithms
Class Dnsruby::Classes
Class Dnsruby::Config
Class Dnsruby::DNS
Class Dnsruby::DecodeError
Class Dnsruby::Dnssec
Class Dnsruby::EncodeError
Class Dnsruby::ExtendedRCode
Class Dnsruby::FormErr
Class Dnsruby::Header
Class Dnsruby::Hosts
Class Dnsruby::IPv4
Class Dnsruby::IPv6
Class Dnsruby::Message
Class Dnsruby::MetaTypes
Class Dnsruby::Modes
Class Dnsruby::NXDomain
Class Dnsruby::NXRRSet
Class Dnsruby::Name
Class Dnsruby::NotAuth
Class Dnsruby::NotImp
Class Dnsruby::NotZone
Class Dnsruby::Nsec3HashAlgorithms
Class Dnsruby::OpCode
Class Dnsruby::OtherResolvError
Class Dnsruby::QTypes
Class Dnsruby::Question
Class Dnsruby::RCode
Class Dnsruby::RR
Class Dnsruby::RRSet
Class Dnsruby::Recursor
Class Dnsruby::Refused
Class Dnsruby::Resolv
Class Dnsruby::ResolvError
Class Dnsruby::ResolvTimeout
Class Dnsruby::Resolver
Class Dnsruby::ServFail
Class Dnsruby::SingleResolver
Class Dnsruby::TheLog
Class Dnsruby::TsigError
Class Dnsruby::TsigNotSignedResponseError
Class Dnsruby::Types
Class Dnsruby::Update
Class Dnsruby::VerifyError
Class Dnsruby::YXDomain
Class Dnsruby::YXRRSet
Class Dnsruby::ZoneReader
Class Dnsruby::ZoneSerialError
Class Dnsruby::ZoneTransfer

Constants

VERSION = 1.53   @TODO@ Remember to update version in dnsruby.gemspec!

Public Class methods

Get the log for Dnsruby Use this to set the log level e.g. Dnsruby.log.level = Logger::INFO

[Validate]