Class: RubyDNS::Resolver
- Inherits:
-
Object
- Object
- RubyDNS::Resolver
- Defined in:
- lib/rubydns/resolver.rb
Defined Under Namespace
Classes: Request
Instance Method Summary collapse
-
#addresses_for(name, resource_class = Resolv::DNS::Resource::IN::A, &block) ⇒ Object
Yields a list of ‘Resolv::IPv4` and `Resolv::IPv6` addresses for the given `name` and `resource_class`.
-
#initialize(servers, options = {}) ⇒ Resolver
constructor
Servers are specified in the same manor as options, e.g.
-
#next_id! ⇒ Object
Provides the next sequence identification number which is used to keep track of DNS messages.
-
#query(name, resource_class = Resolv::DNS::Resource::IN::A, &block) ⇒ Object
Look up a named resource of the given resource_class.
Constructor Details
#initialize(servers, options = {}) ⇒ Resolver
Servers are specified in the same manor as options, e.g.
[:tcp/:udp, address, port]
In the case of multiple servers, they will be checked in sequence.
34 35 36 37 38 39 |
# File 'lib/rubydns/resolver.rb', line 34 def initialize(servers, = {}) @servers = servers @sequence = 0 @options = end |
Instance Method Details
#addresses_for(name, resource_class = Resolv::DNS::Resource::IN::A, &block) ⇒ Object
Yields a list of ‘Resolv::IPv4` and `Resolv::IPv6` addresses for the given `name` and `resource_class`.
56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/rubydns/resolver.rb', line 56 def addresses_for(name, resource_class = Resolv::DNS::Resource::IN::A, &block) query(name, resource_class) do |response| # Resolv::DNS::Name doesn't retain the trailing dot. name = name.sub(/\.$/, '') case response when Message yield response.answer.select{|record| record[0].to_s == name}.collect{|record| record[2].address} else yield [] end end end |
#next_id! ⇒ Object
Provides the next sequence identification number which is used to keep track of DNS messages.
42 43 44 |
# File 'lib/rubydns/resolver.rb', line 42 def next_id! return (@sequence += 1) end |
#query(name, resource_class = Resolv::DNS::Resource::IN::A, &block) ⇒ Object
Look up a named resource of the given resource_class.
47 48 49 50 51 52 53 |
# File 'lib/rubydns/resolver.rb', line 47 def query(name, resource_class = Resolv::DNS::Resource::IN::A, &block) = Resolv::DNS::Message.new(next_id!) .rd = 1 .add_question name, resource_class Request.fetch(, @servers, @options, &block) end |