rubydns 0.5.1 → 0.5.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,19 +19,11 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  require 'stringio'
22
+ require 'rubydns/extensions/string-1.9.3'
22
23
 
23
24
  class String
24
25
  def byteslice(*args)
25
- self.dup.force_encoding("binary").slice(*args)
26
+ self.dup.force_encoding("BINARY").slice(*args)
26
27
  end
27
28
  end
28
29
 
29
- module RubyDNS
30
- class BinaryStringIO < StringIO
31
- def initialize
32
- super
33
-
34
- set_encoding("binary")
35
- end
36
- end
37
- end
@@ -28,6 +28,4 @@ module RubyDNS
28
28
  set_encoding("BINARY")
29
29
  end
30
30
  end
31
-
32
-
33
31
  end
@@ -52,6 +52,21 @@ module RubyDNS
52
52
  Request.fetch(message, @servers, @options, &block)
53
53
  end
54
54
 
55
+ # Yields a list of `Resolv::IPv4` and `Resolv::IPv6` addresses for the given `name` and `resource_class`.
56
+ def addresses_for(name, resource_class = Resolv::DNS::Resource::IN::A, &block)
57
+ query(name, resource_class) do |response|
58
+ # Resolv::DNS::Name doesn't retain the trailing dot.
59
+ name = name.sub(/\.$/, '')
60
+
61
+ case response
62
+ when Message
63
+ yield response.answer.select{|record| record[0].to_s == name}.collect{|record| record[2].address}
64
+ else
65
+ yield []
66
+ end
67
+ end
68
+ end
69
+
55
70
  # Manages a single DNS question message across one or more servers.
56
71
  class Request
57
72
  include EventMachine::Deferrable
@@ -22,7 +22,7 @@ module RubyDNS
22
22
  module VERSION #:nodoc:
23
23
  MAJOR = 0
24
24
  MINOR = 5
25
- TINY = 1
25
+ TINY = 2
26
26
 
27
27
  STRING = [MAJOR, MINOR, TINY].join('.')
28
28
  end
@@ -62,3 +62,35 @@ D, [2012-10-21T22:49:22.760125 #67612] DEBUG -- : add_answer: #<Resolv::DNS::Res
62
62
  D, [2012-10-21T22:49:22.760447 #67612] DEBUG -- : Passing answer back to caller...
63
63
  D, [2012-10-21T22:49:22.760781 #67612] DEBUG -- : Writing response to client (40 bytes) via UDP...
64
64
  === Daemon Stopping @ 2012-10-21 22:49:22 +1300 ===
65
+ === Log Marked @ 2012-10-22 02:33:46 +1300 ===
66
+ I, [2012-10-22T02:33:46.458089 #71723] INFO -- : Starting RubyDNS server (v0.5.2)...
67
+ I, [2012-10-22T02:33:46.467792 #71723] INFO -- : Listening on udp:127.0.0.1:5350
68
+ I, [2012-10-22T02:33:46.468438 #71723] INFO -- : Listening on tcp:127.0.0.1:5350
69
+ D, [2012-10-22T02:33:46.558479 #71723] DEBUG -- : Receiving incoming query (28 bytes)...
70
+ D, [2012-10-22T02:33:46.559042 #71723] DEBUG -- : Processing question test.local Resolv::DNS::Resource::IN::A...
71
+ D, [2012-10-22T02:33:46.559231 #71723] DEBUG -- : Searching for test.local Resolv::DNS::Resource::IN::A
72
+ D, [2012-10-22T02:33:46.559360 #71723] DEBUG -- : Checking rule ["test.local", Resolv::DNS::Resource::IN::A]...
73
+ D, [2012-10-22T02:33:46.559494 #71723] DEBUG -- : String pattern matched.
74
+ I, [2012-10-22T02:33:46.559620 #71723] INFO -- : Resource class: Resolv::DNS::Resource::IN::A
75
+ I, [2012-10-22T02:33:46.559875 #71723] INFO -- : Resource: #<Resolv::DNS::Resource::IN::A:0x007fc8c892e508 @address=#<Resolv::IPv4 192.168.1.1>>
76
+ D, [2012-10-22T02:33:46.560053 #71723] DEBUG -- : add_answer: #<Resolv::DNS::Resource::IN::A:0x007fc8c892e508 @address=#<Resolv::IPv4 192.168.1.1>> 1 1
77
+ D, [2012-10-22T02:33:46.560309 #71723] DEBUG -- : Passing answer back to caller...
78
+ D, [2012-10-22T02:33:46.560548 #71723] DEBUG -- : Writing response to client (44 bytes) via UDP...
79
+ === Daemon Stopping @ 2012-10-22 02:33:46 +1300 ===
80
+ === Log Marked @ 2012-10-22 02:33:46 +1300 ===
81
+ I, [2012-10-22T02:33:46.667093 #71731] INFO -- : Starting RubyDNS server (v0.5.2)...
82
+ I, [2012-10-22T02:33:46.667696 #71731] INFO -- : Listening on udp:127.0.0.1:5350
83
+ I, [2012-10-22T02:33:46.668213 #71731] INFO -- : Listening on tcp:127.0.0.1:5350
84
+ D, [2012-10-22T02:33:46.766795 #71731] DEBUG -- : Receiving incoming query (24 bytes)...
85
+ D, [2012-10-22T02:33:46.767422 #71731] DEBUG -- : Processing question foobar Resolv::DNS::Resource::IN::A...
86
+ D, [2012-10-22T02:33:46.767647 #71731] DEBUG -- : Searching for foobar Resolv::DNS::Resource::IN::A
87
+ D, [2012-10-22T02:33:46.767790 #71731] DEBUG -- : Checking rule ["test.local", Resolv::DNS::Resource::IN::A]...
88
+ D, [2012-10-22T02:33:46.767938 #71731] DEBUG -- : No pattern matched.
89
+ D, [2012-10-22T02:33:46.768088 #71731] DEBUG -- : Checking rule [/foo.*/, Resolv::DNS::Resource::IN::A]...
90
+ D, [2012-10-22T02:33:46.768299 #71731] DEBUG -- : Regexp pattern matched with #<MatchData "foobar">.
91
+ I, [2012-10-22T02:33:46.768415 #71731] INFO -- : Resource class: Resolv::DNS::Resource::IN::A
92
+ I, [2012-10-22T02:33:46.768651 #71731] INFO -- : Resource: #<Resolv::DNS::Resource::IN::A:0x007fc8c89e3728 @address=#<Resolv::IPv4 192.168.1.2>>
93
+ D, [2012-10-22T02:33:46.768826 #71731] DEBUG -- : add_answer: #<Resolv::DNS::Resource::IN::A:0x007fc8c89e3728 @address=#<Resolv::IPv4 192.168.1.2>> 1 1
94
+ D, [2012-10-22T02:33:46.769030 #71731] DEBUG -- : Passing answer back to caller...
95
+ D, [2012-10-22T02:33:46.769230 #71731] DEBUG -- : Writing response to client (40 bytes) via UDP...
96
+ === Daemon Stopping @ 2012-10-22 02:33:46 +1300 ===
@@ -46,3 +46,27 @@ D, [2012-10-21T22:49:24.443120 #67618] DEBUG -- : Regexp pattern matched with #<
46
46
  D, [2012-10-21T22:49:26.444681 #67618] DEBUG -- : Passing answer back to caller...
47
47
  D, [2012-10-21T22:49:26.445484 #67618] DEBUG -- : Writing response to client (27 bytes) via UDP...
48
48
  === Daemon Stopping @ 2012-10-21 22:49:26 +1300 ===
49
+ === Log Marked @ 2012-10-22 02:33:47 +1300 ===
50
+ I, [2012-10-22T02:33:47.402681 #71735] INFO -- : Starting RubyDNS server (v0.5.2)...
51
+ I, [2012-10-22T02:33:47.403158 #71735] INFO -- : Listening on udp:127.0.0.1:5330
52
+ I, [2012-10-22T02:33:47.403670 #71735] INFO -- : Listening on tcp:127.0.0.1:5330
53
+ D, [2012-10-22T02:33:47.503841 #71735] DEBUG -- : Receiving incoming query (35 bytes)...
54
+ D, [2012-10-22T02:33:47.504990 #71735] DEBUG -- : Processing question oriontransfer.org Resolv::DNS::Resource::IN::A...
55
+ D, [2012-10-22T02:33:47.505414 #71735] DEBUG -- : Searching for oriontransfer.org Resolv::DNS::Resource::IN::A
56
+ D, [2012-10-22T02:33:47.505728 #71735] DEBUG -- : Checking rule [/\.*.com/, Resolv::DNS::Resource::IN::A]...
57
+ D, [2012-10-22T02:33:47.506189 #71735] DEBUG -- : No pattern matched.
58
+ D, [2012-10-22T02:33:47.506509 #71735] DEBUG -- : Passing answer back to caller...
59
+ D, [2012-10-22T02:33:47.506874 #71735] DEBUG -- : Writing response to client (35 bytes) via UDP...
60
+ === Daemon Stopping @ 2012-10-22 02:33:47 +1300 ===
61
+ === Log Marked @ 2012-10-22 02:33:47 +1300 ===
62
+ I, [2012-10-22T02:33:47.614210 #71737] INFO -- : Starting RubyDNS server (v0.5.2)...
63
+ I, [2012-10-22T02:33:47.614771 #71737] INFO -- : Listening on udp:127.0.0.1:5330
64
+ I, [2012-10-22T02:33:47.615358 #71737] INFO -- : Listening on tcp:127.0.0.1:5330
65
+ D, [2012-10-22T02:33:47.714403 #71737] DEBUG -- : Receiving incoming query (27 bytes)...
66
+ D, [2012-10-22T02:33:47.714891 #71737] DEBUG -- : Processing question apple.com Resolv::DNS::Resource::IN::A...
67
+ D, [2012-10-22T02:33:47.715061 #71737] DEBUG -- : Searching for apple.com Resolv::DNS::Resource::IN::A
68
+ D, [2012-10-22T02:33:47.715183 #71737] DEBUG -- : Checking rule [/\.*.com/, Resolv::DNS::Resource::IN::A]...
69
+ D, [2012-10-22T02:33:47.715419 #71737] DEBUG -- : Regexp pattern matched with #<MatchData ".com">.
70
+ D, [2012-10-22T02:33:49.716180 #71737] DEBUG -- : Passing answer back to caller...
71
+ D, [2012-10-22T02:33:49.716575 #71737] DEBUG -- : Writing response to client (27 bytes) via UDP...
72
+ === Daemon Stopping @ 2012-10-22 02:33:49 +1300 ===
@@ -22,3 +22,15 @@ D, [2012-10-21T22:49:22.973159 #67614] DEBUG -- : Regexp pattern matched with #<
22
22
  D, [2012-10-21T22:49:23.411110 #67614] DEBUG -- : Passing answer back to caller...
23
23
  D, [2012-10-21T22:49:23.411601 #67614] DEBUG -- : Writing response to client (204 bytes) via UDP...
24
24
  === Daemon Stopping @ 2012-10-21 22:49:23 +1300 ===
25
+ === Log Marked @ 2012-10-22 02:33:46 +1300 ===
26
+ I, [2012-10-22T02:33:46.876476 #71733] INFO -- : Starting RubyDNS server (v0.5.2)...
27
+ I, [2012-10-22T02:33:46.877001 #71733] INFO -- : Listening on udp:127.0.0.1:5340
28
+ I, [2012-10-22T02:33:46.877464 #71733] INFO -- : Listening on tcp:127.0.0.1:5340
29
+ D, [2012-10-22T02:33:46.976777 #71733] DEBUG -- : Receiving incoming query (28 bytes)...
30
+ D, [2012-10-22T02:33:46.977411 #71733] DEBUG -- : Processing question google.com Resolv::DNS::Resource::IN::A...
31
+ D, [2012-10-22T02:33:46.977629 #71733] DEBUG -- : Searching for google.com Resolv::DNS::Resource::IN::A
32
+ D, [2012-10-22T02:33:46.977808 #71733] DEBUG -- : Checking rule [/.*\.com/, Resolv::DNS::Resource::IN::A]...
33
+ D, [2012-10-22T02:33:46.978094 #71733] DEBUG -- : Regexp pattern matched with #<MatchData "google.com">.
34
+ D, [2012-10-22T02:33:47.035386 #71733] DEBUG -- : Passing answer back to caller...
35
+ D, [2012-10-22T02:33:47.035869 #71733] DEBUG -- : Writing response to client (204 bytes) via UDP...
36
+ === Daemon Stopping @ 2012-10-22 02:33:47 +1300 ===
@@ -50,3 +50,29 @@ D, [2012-10-21T22:49:26.700206 #67632] DEBUG -- : add_answer: #<Resolv::DNS::Res
50
50
  D, [2012-10-21T22:49:26.700327 #67632] DEBUG -- : Passing answer back to caller...
51
51
  D, [2012-10-21T22:49:26.700529 #67632] DEBUG -- : Writing response to client (1346 bytes) via TCP...
52
52
  === Daemon Stopping @ 2012-10-21 22:49:26 +1300 ===
53
+ === Log Marked @ 2012-10-22 02:33:49 +1300 ===
54
+ I, [2012-10-22T02:33:49.864962 #71751] INFO -- : Starting RubyDNS server (v0.5.2)...
55
+ I, [2012-10-22T02:33:49.865606 #71751] INFO -- : Listening on udp:127.0.0.1:5320
56
+ I, [2012-10-22T02:33:49.866149 #71751] INFO -- : Listening on tcp:127.0.0.1:5320
57
+ D, [2012-10-22T02:33:49.966882 #71751] DEBUG -- : Receiving incoming query (28 bytes)...
58
+ D, [2012-10-22T02:33:49.967905 #71751] DEBUG -- : Processing question truncation Resolv::DNS::Resource::IN::TXT...
59
+ D, [2012-10-22T02:33:49.968321 #71751] DEBUG -- : Searching for truncation Resolv::DNS::Resource::IN::TXT
60
+ D, [2012-10-22T02:33:49.968579 #71751] DEBUG -- : Checking rule ["truncation", Resolv::DNS::Resource::IN::TXT]...
61
+ D, [2012-10-22T02:33:49.968832 #71751] DEBUG -- : String pattern matched.
62
+ I, [2012-10-22T02:33:49.969120 #71751] INFO -- : Resource class: Resolv::DNS::Resource::IN::TXT
63
+ I, [2012-10-22T02:33:49.969555 #71751] INFO -- : Resource: #<Resolv::DNS::Resource::IN::TXT:0x007fc8c8b6e4d0 @strings=["Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello Wo", "rld! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hel", "lo World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World", "! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello ", "World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! H", "ello World! Hello World! "]>
64
+ D, [2012-10-22T02:33:49.970010 #71751] DEBUG -- : add_answer: #<Resolv::DNS::Resource::IN::TXT:0x007fc8c8b6e4d0 @strings=["Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello Wo", "rld! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hel", "lo World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World", "! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello ", "World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! H", "ello World! Hello World! "]> 16 1
65
+ D, [2012-10-22T02:33:49.970649 #71751] DEBUG -- : Passing answer back to caller...
66
+ D, [2012-10-22T02:33:49.971044 #71751] DEBUG -- : Writing response to client (1346 bytes) via UDP...
67
+ W, [2012-10-22T02:33:49.971207 #71751] WARN -- : Response via UDP was larger than 512!
68
+ D, [2012-10-22T02:33:49.972475 #71751] DEBUG -- : Receiving incoming query (28 bytes)...
69
+ D, [2012-10-22T02:33:49.972713 #71751] DEBUG -- : Processing question truncation Resolv::DNS::Resource::IN::TXT...
70
+ D, [2012-10-22T02:33:49.972828 #71751] DEBUG -- : Searching for truncation Resolv::DNS::Resource::IN::TXT
71
+ D, [2012-10-22T02:33:49.972928 #71751] DEBUG -- : Checking rule ["truncation", Resolv::DNS::Resource::IN::TXT]...
72
+ D, [2012-10-22T02:33:49.973012 #71751] DEBUG -- : String pattern matched.
73
+ I, [2012-10-22T02:33:49.973149 #71751] INFO -- : Resource class: Resolv::DNS::Resource::IN::TXT
74
+ I, [2012-10-22T02:33:49.973341 #71751] INFO -- : Resource: #<Resolv::DNS::Resource::IN::TXT:0x007fc8c8b79600 @strings=["Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello Wo", "rld! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hel", "lo World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World", "! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello ", "World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! H", "ello World! Hello World! "]>
75
+ D, [2012-10-22T02:33:49.973531 #71751] DEBUG -- : add_answer: #<Resolv::DNS::Resource::IN::TXT:0x007fc8c8b79600 @strings=["Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello Wo", "rld! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hel", "lo World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World", "! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello ", "World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! Hello World! H", "ello World! Hello World! "]> 16 1
76
+ D, [2012-10-22T02:33:49.973692 #71751] DEBUG -- : Passing answer back to caller...
77
+ D, [2012-10-22T02:33:49.973894 #71751] DEBUG -- : Writing response to client (1346 bytes) via TCP...
78
+ === Daemon Stopping @ 2012-10-22 02:33:49 +1300 ===
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'helper'
4
- require 'rubydns/resolver'
4
+ require 'rubydns'
5
5
 
6
6
  class ResolverTest < Test::Unit::TestCase
7
7
  def test_basic_resolver
@@ -32,4 +32,22 @@ class ResolverTest < Test::Unit::TestCase
32
32
  end
33
33
  end
34
34
  end
35
+
36
+ def test_addresses_for
37
+ resolver = RubyDNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])
38
+ resolved_addresses = nil
39
+
40
+ EventMachine::run do
41
+ resolver.addresses_for("www.google.com.") do |addresses|
42
+ resolved_addresses = addresses
43
+
44
+ EventMachine::stop
45
+ end
46
+ end
47
+
48
+ assert resolved_addresses.count > 0
49
+
50
+ address = resolved_addresses[0]
51
+ assert address.kind_of?(Resolv::IPv4) || address.kind_of?(Resolv::IPv6)
52
+ end
35
53
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubydns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -112,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
112
  version: '0'
113
113
  segments:
114
114
  - 0
115
- hash: 1826136753171810618
115
+ hash: -2570367066356706581
116
116
  required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements: