redns 0.1.17 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.travis.yml +8 -0
- data/Gemfile +8 -0
- data/LICENSE.txt +20 -0
- data/README.md +31 -0
- data/Rakefile +2 -13
- data/VERSION +1 -1
- data/bin/redig +20 -13
- data/lib/redns.rb +32 -32
- data/lib/redns/address.rb +19 -19
- data/lib/redns/connection.rb +16 -16
- data/lib/redns/fragment.rb +5 -5
- data/lib/redns/message.rb +127 -127
- data/lib/redns/name.rb +35 -33
- data/lib/redns/question.rb +27 -27
- data/lib/redns/record/mx.rb +19 -19
- data/lib/redns/record/null.rb +27 -27
- data/lib/redns/record/soa.rb +49 -49
- data/lib/redns/resolver.rb +264 -262
- data/lib/redns/resource.rb +61 -61
- data/lib/redns/support.rb +41 -41
- data/redns.gemspec +26 -15
- data/test/test_redns_connection.rb +18 -6
- data/test/test_redns_fragment.rb +7 -7
- data/test/test_redns_message.rb +40 -40
- data/test/test_redns_name.rb +1 -1
- data/test/test_redns_question.rb +2 -2
- data/test/test_redns_resolver.rb +125 -119
- data/test/test_redns_resource.rb +32 -32
- metadata +43 -13
- data/README.rdoc +0 -17
data/test/test_redns_name.rb
CHANGED
data/test/test_redns_question.rb
CHANGED
data/test/test_redns_resolver.rb
CHANGED
@@ -1,161 +1,167 @@
|
|
1
1
|
require File.expand_path('helper', File.dirname(__FILE__))
|
2
2
|
|
3
3
|
class TestReReDNSResolver < Test::Unit::TestCase
|
4
|
-
|
5
|
-
|
4
|
+
def test_in_resolv_conf
|
5
|
+
nameservers = ReDNS::Resolver.in_resolv_conf
|
6
6
|
|
7
|
-
|
7
|
+
assert nameservers.length >= 1, "No nameservers defined in /etc/resolv.conf"
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_create_defaults
|
11
|
+
res = ReDNS::Resolver.new
|
8
12
|
|
9
|
-
|
10
|
-
end
|
13
|
+
assert res
|
11
14
|
|
12
|
-
|
13
|
-
|
15
|
+
assert !res.servers.empty?
|
16
|
+
end
|
14
17
|
|
15
|
-
|
18
|
+
def test_servers
|
19
|
+
res = ReDNS::Resolver.new
|
16
20
|
|
17
|
-
|
21
|
+
res.servers = [ "192.168.1.1" ]
|
22
|
+
|
23
|
+
assert_equal [ "192.168.1.1" ], res.servers
|
18
24
|
end
|
19
25
|
|
20
26
|
def test_simple_query
|
21
|
-
|
27
|
+
res = ReDNS::Resolver.new
|
22
28
|
|
23
29
|
r = res.simple_query(:a, 'example.com')
|
24
30
|
|
25
|
-
|
31
|
+
assert_equal 1, r.size
|
26
32
|
|
27
33
|
assert_equal :a, r[0].rtype
|
28
|
-
|
34
|
+
assert_equal '93.184.216.34', r[0].rdata.to_s
|
29
35
|
end
|
30
36
|
|
31
37
|
def test_simple_reverse_query
|
32
|
-
|
38
|
+
res = ReDNS::Resolver.new
|
33
39
|
|
34
40
|
r = res.simple_query(:ptr, '10.32.0.192.in-addr.arpa')
|
35
41
|
|
36
|
-
|
42
|
+
assert_equal 1, r.size
|
37
43
|
|
38
44
|
assert_equal :ptr, r[0].rtype
|
39
|
-
|
45
|
+
assert_equal 'ccnso.icann.org.', r[0].rdata.to_s
|
40
46
|
end
|
41
47
|
|
42
48
|
def test_simple_txt_query
|
43
|
-
|
49
|
+
res = ReDNS::Resolver.new
|
44
50
|
|
45
51
|
r = res.simple_query(:txt, 'gmail.com')
|
46
52
|
|
47
|
-
|
53
|
+
assert_equal 1, r.size
|
48
54
|
|
49
55
|
assert_equal :txt, r[0].rtype
|
50
|
-
|
56
|
+
assert_equal 'v=spf1 redirect=_spf.google.com', r[0].rdata.to_s
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_query
|
60
|
+
res = ReDNS::Resolver.new
|
61
|
+
|
62
|
+
r = res.query do |q|
|
63
|
+
q.qtype = :a
|
64
|
+
q.name = "example.com"
|
65
|
+
end
|
66
|
+
|
67
|
+
assert r, "ReDNS::Resolver#query did not produce a reply"
|
68
|
+
|
69
|
+
assert_equal 1, r.questions.size
|
70
|
+
assert_equal 1, r.answers.size
|
71
|
+
|
72
|
+
assert_equal '93.184.216.34', r.answers[0].rdata.to_s
|
51
73
|
end
|
52
74
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
assert rlist
|
105
|
-
|
106
|
-
assert_equal 6, rlist.length
|
107
|
-
|
108
|
-
assert_equal addrs.sort, rlist.keys.sort
|
109
|
-
|
110
|
-
assert rlist[addrs[0]]
|
111
|
-
|
112
|
-
expected = %w[
|
113
|
-
www.example.com.
|
114
|
-
redirects.iana.org.
|
115
|
-
tools.iana.org.
|
116
|
-
nomcom.icann.org.
|
117
|
-
confirm.icann.org.
|
118
|
-
dnscert.com.
|
119
|
-
]
|
75
|
+
def test_ns_query
|
76
|
+
res = ReDNS::Resolver.new
|
77
|
+
|
78
|
+
assert !res.servers.empty?
|
79
|
+
|
80
|
+
r = res.query do |q|
|
81
|
+
q.qtype = :ns
|
82
|
+
q.name = "example.com"
|
83
|
+
end
|
84
|
+
|
85
|
+
assert r, "ReDNS::Resolver#query did not produce a reply"
|
86
|
+
|
87
|
+
assert_equal 1, r.questions.size
|
88
|
+
assert_equal 2, r.answers.size
|
89
|
+
|
90
|
+
assert_equal ReDNS::Name, r.answers[0].rdata.class
|
91
|
+
assert_equal ReDNS::Name, r.answers[1].rdata.class
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_bulk_query
|
95
|
+
addrs = %w[
|
96
|
+
192.0.32.10
|
97
|
+
192.0.32.12
|
98
|
+
192.0.32.13
|
99
|
+
192.0.32.14
|
100
|
+
192.0.32.15
|
101
|
+
192.0.32.16
|
102
|
+
].collect do |i|
|
103
|
+
ReDNS::Support.addr_to_arpa(i)
|
104
|
+
end
|
105
|
+
|
106
|
+
res = ReDNS::Resolver.new
|
107
|
+
|
108
|
+
rlist = res.bulk_query(:ptr, addrs)
|
109
|
+
|
110
|
+
assert rlist
|
111
|
+
|
112
|
+
assert_equal 6, rlist.length
|
113
|
+
|
114
|
+
assert_equal addrs.sort, rlist.keys.sort
|
115
|
+
|
116
|
+
assert rlist[addrs[0]]
|
117
|
+
|
118
|
+
expected = %w[
|
119
|
+
ccnso.icann.org.
|
120
|
+
redirects.iana.org.
|
121
|
+
tools.iana.org.
|
122
|
+
nomcom.icann.org.
|
123
|
+
reports.internic.net.
|
124
|
+
dnscert.com.
|
125
|
+
]
|
120
126
|
|
121
127
|
answers = addrs.collect do |a|
|
122
|
-
|
128
|
+
rlist[a] and rlist[a].answers[0] and rlist[a].answers[0].rdata.to_s
|
123
129
|
end
|
124
130
|
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
131
|
+
assert_equal expected, answers
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_reverse_addresses
|
135
|
+
addrs = %w[
|
136
|
+
192.0.32.10
|
137
|
+
192.0.32.12
|
138
|
+
192.0.32.13
|
139
|
+
192.0.32.14
|
140
|
+
192.0.32.15
|
141
|
+
192.0.32.16
|
142
|
+
]
|
143
|
+
|
144
|
+
res = ReDNS::Resolver.new
|
145
|
+
|
146
|
+
rlist = res.reverse_addresses(addrs)
|
147
|
+
|
148
|
+
assert rlist
|
149
|
+
|
150
|
+
assert_equal addrs.length, rlist.length
|
151
|
+
|
152
|
+
expected = %w[
|
153
|
+
ccnso.icann.org.
|
154
|
+
redirects.iana.org.
|
155
|
+
tools.iana.org.
|
156
|
+
nomcom.icann.org.
|
157
|
+
reports.internic.net.
|
158
|
+
dnscert.com.
|
159
|
+
]
|
160
|
+
|
155
161
|
answers = addrs.collect do |a|
|
156
|
-
|
162
|
+
rlist[a]
|
157
163
|
end
|
158
164
|
|
159
|
-
|
160
|
-
|
165
|
+
assert_equal expected, answers
|
166
|
+
end
|
161
167
|
end
|
data/test/test_redns_resource.rb
CHANGED
@@ -9,8 +9,8 @@ class TestReDNSResource < Test::Unit::TestCase
|
|
9
9
|
|
10
10
|
def test_serialize_cycle_mx
|
11
11
|
mx = ReDNS::Record::MX.new(
|
12
|
-
:
|
13
|
-
:
|
12
|
+
preference: 10,
|
13
|
+
name: 'mx.example.com'
|
14
14
|
)
|
15
15
|
|
16
16
|
assert_equal 10, mx.preference
|
@@ -30,13 +30,13 @@ class TestReDNSResource < Test::Unit::TestCase
|
|
30
30
|
|
31
31
|
def test_serialize_cycle_record_mx
|
32
32
|
mx = ReDNS::Resource.new(
|
33
|
-
:
|
34
|
-
:
|
35
|
-
:
|
36
|
-
:
|
33
|
+
name: 'example.com',
|
34
|
+
rdata: ReDNS::Record::MX.new(
|
35
|
+
preference: 10,
|
36
|
+
name: 'mx.example.com'
|
37
37
|
),
|
38
|
-
:
|
39
|
-
:
|
38
|
+
ttl: 123456,
|
39
|
+
rtype: :mx
|
40
40
|
)
|
41
41
|
|
42
42
|
assert_equal 'example.com.', mx.name.to_s
|
@@ -61,13 +61,13 @@ class TestReDNSResource < Test::Unit::TestCase
|
|
61
61
|
|
62
62
|
def test_serialize_cycle_soa
|
63
63
|
soa = ReDNS::Record::SOA.new(
|
64
|
-
:
|
65
|
-
:
|
66
|
-
:
|
67
|
-
:
|
68
|
-
:
|
69
|
-
:
|
70
|
-
:
|
64
|
+
mname: 'example.com',
|
65
|
+
rname: 'domainadmin.example.com',
|
66
|
+
serial: 1001,
|
67
|
+
refresh: 1002,
|
68
|
+
retry: 1003,
|
69
|
+
expire: 1004,
|
70
|
+
minimum: 1005
|
71
71
|
)
|
72
72
|
|
73
73
|
assert_equal 'example.com.', soa.mname.to_s
|
@@ -91,18 +91,18 @@ class TestReDNSResource < Test::Unit::TestCase
|
|
91
91
|
|
92
92
|
def test_serialize_cycle_record_soa
|
93
93
|
soa = ReDNS::Resource.new(
|
94
|
-
:
|
95
|
-
:
|
96
|
-
:
|
97
|
-
:
|
98
|
-
:
|
99
|
-
:
|
100
|
-
:
|
101
|
-
:
|
102
|
-
:
|
94
|
+
name: 'example.com',
|
95
|
+
rdata: ReDNS::Record::SOA.new(
|
96
|
+
mname: 'example.com',
|
97
|
+
rname: 'domainadmin.example.com',
|
98
|
+
serial: 1001,
|
99
|
+
refresh: 1002,
|
100
|
+
retry: 1003,
|
101
|
+
expire: 1004,
|
102
|
+
minimum: 1005
|
103
103
|
),
|
104
|
-
:
|
105
|
-
:
|
104
|
+
ttl: 123456,
|
105
|
+
rtype: :soa
|
106
106
|
)
|
107
107
|
|
108
108
|
assert_equal 'example.com.', soa.name.to_s
|
@@ -136,7 +136,7 @@ class TestReDNSResource < Test::Unit::TestCase
|
|
136
136
|
|
137
137
|
def test_serialize_cycle_null
|
138
138
|
null = ReDNS::Record::Null.new(
|
139
|
-
:
|
139
|
+
contents: 'random data goes here'.freeze
|
140
140
|
)
|
141
141
|
|
142
142
|
assert_equal 'random data goes here', null.contents
|
@@ -154,12 +154,12 @@ class TestReDNSResource < Test::Unit::TestCase
|
|
154
154
|
|
155
155
|
def test_serialize_cycle_record_null
|
156
156
|
null = ReDNS::Resource.new(
|
157
|
-
:
|
158
|
-
:
|
159
|
-
:
|
157
|
+
name: 'example.com',
|
158
|
+
rdata: ReDNS::Record::Null.new(
|
159
|
+
contents: 'random data goes here'.freeze
|
160
160
|
),
|
161
|
-
:
|
162
|
-
:
|
161
|
+
ttl: 123456,
|
162
|
+
rtype: :null
|
163
163
|
)
|
164
164
|
|
165
165
|
assert_equal 'example.com.', null.name.to_s
|
metadata
CHANGED
@@ -1,16 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- tadman
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
13
|
-
dependencies:
|
11
|
+
date: 2017-09-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: eventmachine
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
14
41
|
description: ReDNS is a pure Ruby DNS library with drivers for reactor-model engines
|
15
42
|
such as EventMachine
|
16
43
|
email: github@tadman.ca
|
@@ -18,10 +45,14 @@ executables:
|
|
18
45
|
- redig
|
19
46
|
extensions: []
|
20
47
|
extra_rdoc_files:
|
21
|
-
-
|
48
|
+
- LICENSE.txt
|
49
|
+
- README.md
|
22
50
|
files:
|
23
|
-
- .document
|
24
|
-
-
|
51
|
+
- ".document"
|
52
|
+
- ".travis.yml"
|
53
|
+
- Gemfile
|
54
|
+
- LICENSE.txt
|
55
|
+
- README.md
|
25
56
|
- Rakefile
|
26
57
|
- VERSION
|
27
58
|
- bin/redig
|
@@ -57,26 +88,25 @@ files:
|
|
57
88
|
- test/test_redns_support.rb
|
58
89
|
homepage: http://github.com/tadman/redns
|
59
90
|
licenses: []
|
91
|
+
metadata: {}
|
60
92
|
post_install_message:
|
61
93
|
rdoc_options: []
|
62
94
|
require_paths:
|
63
95
|
- lib
|
64
96
|
required_ruby_version: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
97
|
requirements:
|
67
|
-
- -
|
98
|
+
- - ">="
|
68
99
|
- !ruby/object:Gem::Version
|
69
100
|
version: '0'
|
70
101
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
102
|
requirements:
|
73
|
-
- -
|
103
|
+
- - ">="
|
74
104
|
- !ruby/object:Gem::Version
|
75
105
|
version: '0'
|
76
106
|
requirements: []
|
77
107
|
rubyforge_project:
|
78
|
-
rubygems_version:
|
108
|
+
rubygems_version: 2.6.11
|
79
109
|
signing_key:
|
80
|
-
specification_version:
|
110
|
+
specification_version: 4
|
81
111
|
summary: Ruby Reactor-Ready DNS Library
|
82
112
|
test_files: []
|