pNet-DNS 0.0.1

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.
Files changed (71) hide show
  1. data/README +68 -0
  2. data/lib/Net/DNS.rb +879 -0
  3. data/lib/Net/DNS/Header.rb +303 -0
  4. data/lib/Net/DNS/Nameserver.rb +601 -0
  5. data/lib/Net/DNS/Packet.rb +851 -0
  6. data/lib/Net/DNS/Question.rb +117 -0
  7. data/lib/Net/DNS/RR.rb +630 -0
  8. data/lib/Net/DNS/RR/A.rb +103 -0
  9. data/lib/Net/DNS/RR/AAAA.rb +147 -0
  10. data/lib/Net/DNS/RR/AFSDB.rb +114 -0
  11. data/lib/Net/DNS/RR/CERT.rb +191 -0
  12. data/lib/Net/DNS/RR/CNAME.rb +89 -0
  13. data/lib/Net/DNS/RR/DNAME.rb +84 -0
  14. data/lib/Net/DNS/RR/EID.rb +70 -0
  15. data/lib/Net/DNS/RR/HINFO.rb +108 -0
  16. data/lib/Net/DNS/RR/ISDN.rb +118 -0
  17. data/lib/Net/DNS/RR/LOC.rb +341 -0
  18. data/lib/Net/DNS/RR/MB.rb +92 -0
  19. data/lib/Net/DNS/RR/MG.rb +96 -0
  20. data/lib/Net/DNS/RR/MINFO.rb +109 -0
  21. data/lib/Net/DNS/RR/MR.rb +92 -0
  22. data/lib/Net/DNS/RR/MX.rb +124 -0
  23. data/lib/Net/DNS/RR/NAPTR.rb +182 -0
  24. data/lib/Net/DNS/RR/NIMLOC.rb +70 -0
  25. data/lib/Net/DNS/RR/NS.rb +100 -0
  26. data/lib/Net/DNS/RR/NSAP.rb +273 -0
  27. data/lib/Net/DNS/RR/NULL.rb +68 -0
  28. data/lib/Net/DNS/RR/OPT.rb +251 -0
  29. data/lib/Net/DNS/RR/PTR.rb +93 -0
  30. data/lib/Net/DNS/RR/PX.rb +131 -0
  31. data/lib/Net/DNS/RR/RP.rb +108 -0
  32. data/lib/Net/DNS/RR/RT.rb +115 -0
  33. data/lib/Net/DNS/RR/SOA.rb +195 -0
  34. data/lib/Net/DNS/RR/SPF.rb +46 -0
  35. data/lib/Net/DNS/RR/SRV.rb +153 -0
  36. data/lib/Net/DNS/RR/SSHFP.rb +190 -0
  37. data/lib/Net/DNS/RR/TKEY.rb +219 -0
  38. data/lib/Net/DNS/RR/TSIG.rb +358 -0
  39. data/lib/Net/DNS/RR/TXT.rb +162 -0
  40. data/lib/Net/DNS/RR/UNKNOWN.rb +76 -0
  41. data/lib/Net/DNS/RR/X25.rb +90 -0
  42. data/lib/Net/DNS/Resolver.rb +2090 -0
  43. data/lib/Net/DNS/Resolver/Recurse.rb +478 -0
  44. data/lib/Net/DNS/Update.rb +189 -0
  45. data/test/custom.txt +4 -0
  46. data/test/resolv.conf +4 -0
  47. data/test/tc_escapedchars.rb +498 -0
  48. data/test/tc_header.rb +91 -0
  49. data/test/tc_inet6.rb +169 -0
  50. data/test/tc_misc.rb +137 -0
  51. data/test/tc_online.rb +236 -0
  52. data/test/tc_packet.rb +174 -0
  53. data/test/tc_packet_unique_push.rb +126 -0
  54. data/test/tc_question.rb +49 -0
  55. data/test/tc_recurse.rb +69 -0
  56. data/test/tc_res_env.rb +59 -0
  57. data/test/tc_res_file.rb +55 -0
  58. data/test/tc_res_opt.rb +135 -0
  59. data/test/tc_resolver.rb +102 -0
  60. data/test/tc_rr-opt.rb +40 -0
  61. data/test/tc_rr-rrsort.rb +116 -0
  62. data/test/tc_rr-txt.rb +138 -0
  63. data/test/tc_rr-unknown.rb +95 -0
  64. data/test/tc_rr.rb +246 -0
  65. data/test/tc_tcp.rb +34 -0
  66. data/test/tc_tkey.rb +115 -0
  67. data/test/tc_update.rb +226 -0
  68. data/test/ts_netdns.rb +17 -0
  69. data/test/ts_offline.rb +32 -0
  70. data/test/ts_online.rb +33 -0
  71. metadata +119 -0
@@ -0,0 +1,34 @@
1
+ # The contents of this file are subject to the Mozilla
2
+ # Public Licence Version 1.1 (the "Licence"); you may
3
+ # not use this file except in compliance with the
4
+ # Licence. You may obtain a copy of the Licence at
5
+ # http://www.mozilla.org/MPL
6
+ # Software distributed under the Licence is distributed
7
+ # on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
8
+ # either express or implied. See the Licence of the
9
+ # specific language governing rights and limitations
10
+ # under the Licence.
11
+ # The Original Code is pNet::DNS.
12
+ # The Initial Developer of the Original Code is
13
+ # Nominet UK (www.nominet.org.uk). Portions created by
14
+ # Nominet UK are Copyright (c) Nominet UK 2006.
15
+ # All rights reserved.
16
+ require 'test/unit'
17
+ require 'Net/DNS'
18
+ class TestTcp < Test::Unit::TestCase
19
+ def test_TCP
20
+ res = Net::DNS::Resolver.new(:config_file=>"/etc/resolv.conf")
21
+ res.debug=true
22
+ res.usevc = true
23
+ ret=res.query("example.com")
24
+ assert(ret.is_a?(Net::DNS::Packet))
25
+ end
26
+ def test_TCP_port
27
+ res = Net::DNS::Resolver.new(:config_file=>"/etc/resolv.conf")
28
+ res.debug=true
29
+ res.usevc = true
30
+ res.srcport=rand(60000) + 1025
31
+ ret=res.query("example.com")
32
+ assert(ret.is_a?(Net::DNS::Packet))
33
+ end
34
+ end
@@ -0,0 +1,115 @@
1
+ # The contents of this file are subject to the Mozilla
2
+ # Public Licence Version 1.1 (the "Licence"); you may
3
+ # not use this file except in compliance with the
4
+ # Licence. You may obtain a copy of the Licence at
5
+ # http://www.mozilla.org/MPL
6
+ # Software distributed under the Licence is distributed
7
+ # on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
8
+ # either express or implied. See the Licence of the
9
+ # specific language governing rights and limitations
10
+ # under the Licence.
11
+ # The Original Code is pNet::DNS.
12
+ # The Initial Developer of the Original Code is
13
+ # Nominet UK (www.nominet.org.uk). Portions created by
14
+ # Nominet UK are Copyright (c) Nominet UK 2006.
15
+ # All rights reserved.
16
+ require 'test/unit'
17
+ require 'Net/DNS'
18
+ require "digest/md5"
19
+ class TestTKey < Test::Unit::TestCase
20
+ def is_empty(string)
21
+ return (string == "; no data" || string == "; rdlength = 0")
22
+ end
23
+
24
+ def test_tkey
25
+
26
+
27
+ #------------------------------------------------------------------------------
28
+ # Canned data.
29
+ #------------------------------------------------------------------------------
30
+
31
+ zone = "example.com"
32
+ name = "123456789-test"
33
+ klass = "IN"
34
+ type = "TKEY"
35
+ algorithm = "fake.algorithm.example.com"
36
+ key = "fake key"
37
+ inception = 100000 # use a strange fixed inception time to give a fixed
38
+ # checksum
39
+ expiration = inception + 24*60*60
40
+
41
+ rr = nil
42
+
43
+ #------------------------------------------------------------------------------
44
+ # Packet creation.
45
+ #------------------------------------------------------------------------------
46
+
47
+ rr = Net::DNS::RR.create(
48
+ :name => name,
49
+ :type => "TKEY",
50
+ :ttl => 0,
51
+ :rrclass => "ANY",
52
+ :algorithm => algorithm,
53
+ :inception => inception,
54
+ :expiration => expiration,
55
+ :mode => 3, # GSSAPI
56
+ :key => "fake key",
57
+ :other_data => ""
58
+ )
59
+
60
+ packet = Net::DNS::Packet.new_from_values(name, "TKEY", "IN")
61
+ packet.push("answer", rr)
62
+
63
+ z = (packet.zone)[0]
64
+
65
+ assert(packet, 'new() returned packet') #2
66
+ assert_equal('QUERY', packet.header.opcode, 'header opcode correct') #3
67
+ assert_equal(name, z.zname, 'zname correct') #4
68
+ assert_equal("IN", z.zclass, 'zclass correct') #5
69
+ assert_equal('TKEY', z.ztype, 'ztype correct') #6
70
+
71
+
72
+ #------------------------------------------------------------------------------
73
+ # create a signed TKEY query packet using an external signing function
74
+ # and compare it to a known good result. This effectively tests the
75
+ # sign_func and sig_data methods of TSIG as well.
76
+ #------------------------------------------------------------------------------
77
+
78
+
79
+ tsig = Net::DNS::RR.create({
80
+ :name => name,
81
+ :type => "TSIG",
82
+ :ttl => 0,
83
+ :rrclass => "ANY",
84
+ :algorithm => algorithm,
85
+ :time_signed => inception + 1,
86
+ :fudge => 36000,
87
+ :mac_size => 0,
88
+ :mac => "",
89
+ :key => key,
90
+ :sign_func => Proc.new { |key,data|
91
+ # OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new("md5"), key, data)
92
+ hmac = Digest::MD5.new(key)
93
+ hmac.update(data)
94
+ return hmac.hexdigest
95
+ },
96
+ :other_len => 0,
97
+ :other_data => nil,
98
+ :error => 0
99
+ })
100
+
101
+ packet.push(:additional, tsig)
102
+
103
+ # use a fixed packet id so we get a known checksum
104
+ packet.header.id=(1234)
105
+
106
+ # create the packet - this will fill in the 'mac' field
107
+ raw_packet = packet.data
108
+
109
+ assert_equal(
110
+ "6365643161343964663364643264656131306638303633626465366236643465",
111
+ (packet.additional)[0].mac,
112
+ 'MAC correct')
113
+
114
+ end
115
+ end
@@ -0,0 +1,226 @@
1
+ # The contents of this file are subject to the Mozilla
2
+ # Public Licence Version 1.1 (the "Licence"); you may
3
+ # not use this file except in compliance with the
4
+ # Licence. You may obtain a copy of the Licence at
5
+ # http://www.mozilla.org/MPL
6
+ # Software distributed under the Licence is distributed
7
+ # on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
8
+ # either express or implied. See the Licence of the
9
+ # specific language governing rights and limitations
10
+ # under the Licence.
11
+ # The Original Code is pNet::DNS.
12
+ # The Initial Developer of the Original Code is
13
+ # Nominet UK (www.nominet.org.uk). Portions created by
14
+ # Nominet UK are Copyright (c) Nominet UK 2006.
15
+ # All rights reserved.
16
+ require 'test/unit'
17
+ require 'Net/DNS'
18
+ class TestUpdate < Test::Unit::TestCase
19
+ def is_empty(string)
20
+ return true if string == nil || string.length == 0
21
+
22
+ return (string == "; no data" || string == "; rdlength = 0");
23
+ end
24
+
25
+ def test_update
26
+ #------------------------------------------------------------------------------
27
+ # Canned data.
28
+ #------------------------------------------------------------------------------
29
+
30
+ zone = "example.com";
31
+ name = "foo.example.com";
32
+ klass = "HS";
33
+ klass2 = "CH";
34
+ type = "A";
35
+ ttl = 43200;
36
+ rdata = "10.1.2.3";
37
+ rr = nil;
38
+
39
+ #------------------------------------------------------------------------------
40
+ # Packet creation.
41
+ #------------------------------------------------------------------------------
42
+
43
+ packet = Net::DNS::Update.new_from_values(zone, klass);
44
+ z = (packet.zone)[0];
45
+
46
+ assert(packet, 'new() returned packet'); #2
47
+ assert_equal(packet.header.opcode, 'UPDATE', 'header opcode correct'); #3
48
+ assert_equal(z.zname, zone, 'zname correct'); #4
49
+ assert_equal(z.zclass, klass, 'zclass correct'); #5
50
+ assert_equal(z.ztype, 'SOA', 'ztype correct'); #6
51
+
52
+ #------------------------------------------------------------------------------
53
+ # RRset exists (value-independent).
54
+ #------------------------------------------------------------------------------
55
+
56
+ rr = Net::DNS.yxrrset("#{name} #{klass} #{type}");
57
+
58
+ assert(rr, 'yxrrset() returned RR'); #7
59
+ assert_equal(name, rr.name, 'yxrrset - right name'); #8
60
+ assert_equal(0, rr.ttl, 'yxrrset - right TTL'); #9
61
+ assert_equal('ANY', rr.rrclass, 'yxrrset - right class'); #10
62
+ assert_equal(type, rr.type, 'yxrrset - right type'); #11
63
+ assert(is_empty(rr.rdatastr), "yxrrset - data empty (#{rr.rdatastr})"); #12
64
+
65
+ rr = nil
66
+
67
+ #------------------------------------------------------------------------------
68
+ # RRset exists (value-dependent).
69
+ #------------------------------------------------------------------------------
70
+
71
+ rr = Net::DNS.yxrrset("#{name} #{klass} #{type} #{rdata}");
72
+
73
+ assert(rr, 'yxrrset() returned RR'); #13
74
+ assert_equal(name, rr.name, 'yxrrset - right name'); #14
75
+ assert_equal(0, rr.ttl, 'yxrrset - right TTL'); #15
76
+ assert_equal(klass, rr.rrclass, 'yxrrset - right class'); #16
77
+ assert_equal(type, rr.type, 'yxrrset - right type'); #17
78
+ assert_equal(rdata, rr.rdatastr, 'yxrrset - right data'); #18
79
+
80
+ rr=nil
81
+
82
+ #------------------------------------------------------------------------------
83
+ # RRset does not exist.
84
+ #------------------------------------------------------------------------------
85
+
86
+ rr = Net::DNS.nxrrset("#{name} #{klass} #{type}");
87
+
88
+ assert(rr, 'nxrrset() returned RR'); #19
89
+ assert_equal(name, rr.name, 'nxrrset - right name'); #20
90
+ assert_equal(0, rr.ttl, 'nxrrset - right ttl'); #21
91
+ assert_equal('NONE', rr.rrclass, 'nxrrset - right class'); #22
92
+ assert_equal(type, rr.type, 'nxrrset - right type'); #23
93
+ assert(is_empty(rr.rdatastr), 'nxrrset - data empty'); #24
94
+
95
+ rr = nil
96
+
97
+ #------------------------------------------------------------------------------
98
+ # Name is in use.
99
+ #------------------------------------------------------------------------------
100
+
101
+ rr = Net::DNS.yxdomain("#{name} #{klass}");
102
+
103
+ assert(rr, 'yxdomain() returned RR'); #25
104
+ assert_equal(rr.name, name, 'yxdomain - right name'); #26
105
+ assert_equal(rr.ttl, 0, 'yxdomain - right ttl'); #27
106
+ assert_equal(rr.rrclass, 'ANY', 'yxdomain - right class'); #28
107
+ assert_equal(rr.type, 'ANY', 'yxdomain - right type'); #29
108
+ assert(is_empty(rr.rdatastr), 'yxdomain - data empty'); #30
109
+
110
+ rr = nil
111
+
112
+ #------------------------------------------------------------------------------
113
+ # Name is not in use.
114
+ #------------------------------------------------------------------------------
115
+
116
+ rr = Net::DNS.nxdomain("#{name} #{klass}");
117
+
118
+ assert(rr, 'nxdomain() returned RR'); #31
119
+ assert_equal(rr.name, name, 'nxdomain - right name'); #32
120
+ assert_equal(rr.ttl, 0, 'nxdomain - right ttl'); #33
121
+ assert_equal(rr.rrclass, 'NONE', 'nxdomain - right class'); #34
122
+ assert_equal(rr.type, 'ANY', 'nxdomain - right type'); #35
123
+ assert(is_empty(rr.rdatastr), 'nxdomain - data empty'); #36
124
+
125
+ rr = nil
126
+
127
+ #------------------------------------------------------------------------------
128
+ # Name is not in use. (No Class)
129
+ #------------------------------------------------------------------------------
130
+
131
+ rr = Net::DNS.nxdomain("#{name}");
132
+
133
+ assert(rr, 'nxdomain() returned RR'); #31
134
+ assert_equal(rr.name, name, 'nxdomain - right name'); #32
135
+ assert_equal(rr.ttl, 0, 'nxdomain - right ttl'); #33
136
+ assert_equal(rr.rrclass, 'NONE', 'nxdomain - right class'); #34
137
+ assert_equal(rr.type, 'ANY', 'nxdomain - right type'); #35
138
+ assert(is_empty(rr.rdatastr), 'nxdomain - data empty'); #36
139
+
140
+ rr = nil
141
+
142
+
143
+
144
+ #------------------------------------------------------------------------------
145
+ # Add to an RRset.
146
+ #------------------------------------------------------------------------------
147
+
148
+ rr = Net::DNS.rr_add("#{name} #{ttl} #{klass} #{type} #{rdata}");
149
+
150
+ assert(rr, 'rr_add() returned RR'); #37
151
+ assert_equal(rr.name, name, 'rr_add - right name'); #38
152
+ assert_equal(rr.ttl, ttl, 'rr_add - right ttl'); #39
153
+ assert_equal(rr.rrclass, klass, 'rr_add - right class'); #40
154
+ assert_equal(rr.type, type, 'rr_add - right type'); #41
155
+ assert_equal(rr.rdatastr, rdata, 'rr_add - right data'); #42
156
+
157
+ rr = nil
158
+
159
+ #------------------------------------------------------------------------------
160
+ # Delete an RRset.
161
+ #------------------------------------------------------------------------------
162
+
163
+ rr = Net::DNS.rr_del("#{name} #{klass} #{type}");
164
+
165
+ assert(rr, 'rr_del() returned RR'); #43
166
+ assert_equal(name, rr.name, 'rr_del - right name'); #44
167
+ assert_equal(0, rr.ttl, 'rr_del - right ttl'); #45
168
+ assert_equal('ANY', rr.rrclass, 'rr_del - right class'); #46
169
+ assert_equal(type, rr.type, 'rr_del - right type'); #47
170
+ assert(is_empty(rr.rdatastr), 'rr_del - data empty'); #48
171
+
172
+ rr = nil
173
+
174
+ #------------------------------------------------------------------------------
175
+ # Delete All RRsets From A Name.
176
+ #------------------------------------------------------------------------------
177
+
178
+ rr = Net::DNS.rr_del("#{name} #{klass}");
179
+
180
+ assert(rr, 'rr_del() returned RR'); #49
181
+ assert_equal(name, rr.name, 'rr_del - right name'); #50
182
+ assert_equal(0, rr.ttl, 'rr_del - right ttl'); #51
183
+ assert_equal('ANY', rr.rrclass, 'rr_del - right class'); #52
184
+ assert_equal('ANY', rr.type, 'rr_del - right type'); #53
185
+ assert(is_empty(rr.rdatastr), 'rr_del - data empty'); #54
186
+
187
+ rr = nil
188
+
189
+ #------------------------------------------------------------------------------
190
+ # Delete An RR From An RRset.
191
+ #------------------------------------------------------------------------------
192
+
193
+ rr = Net::DNS.rr_del("#{name} #{klass} #{type} #{rdata}");
194
+
195
+ assert(rr, 'rr_del() returned RR'); #55
196
+ assert_equal(name, rr.name, 'rr_del - right name'); #56
197
+ assert_equal(0, rr.ttl, 'rr_del - right ttl'); #57
198
+ assert_equal('NONE', rr.rrclass, 'rr_del - right class'); #58
199
+ assert_equal(type, rr.type, 'rr_del - right type'); #59
200
+ assert_equal(rdata, rr.rdatastr, 'rr_del - right data'); #60
201
+
202
+ rr = nil
203
+
204
+ #------------------------------------------------------------------------------
205
+ # Make sure RRs in an update packet have the same class as the zone, unless
206
+ # the class is NONE or ANY.
207
+ #------------------------------------------------------------------------------
208
+
209
+ packet = Net::DNS::Update.new_from_values(zone, klass);
210
+ assert(packet, 'packet created'); #61
211
+
212
+
213
+ packet.push("pre", Net::DNS.yxrrset("#{name} #{klass} #{type} #{rdata}"));
214
+ packet.push("pre", Net::DNS.yxrrset("#{name} #{klass2} #{type} #{rdata}"));
215
+ packet.push("pre", Net::DNS.yxrrset("#{name} #{klass2} #{type}"));
216
+ packet.push("pre", Net::DNS.nxrrset("#{name} #{klass2} #{type}"));
217
+
218
+ pre = packet.pre;
219
+
220
+ assert_equal(4, pre.size, 'pushed inserted correctly'); #62
221
+ assert_equal(klass, pre[0].rrclass, 'first class right'); #63
222
+ assert_equal(klass, pre[1].rrclass, 'second class right'); #64
223
+ assert_equal('ANY', pre[2].rrclass, 'third class right'); #65
224
+ assert_equal('NONE', pre[3].rrclass, 'forth class right'); #66
225
+ end
226
+ end
@@ -0,0 +1,17 @@
1
+ # The contents of this file are subject to the Mozilla
2
+ # Public Licence Version 1.1 (the "Licence"); you may
3
+ # not use this file except in compliance with the
4
+ # Licence. You may obtain a copy of the Licence at
5
+ # http://www.mozilla.org/MPL
6
+ # Software distributed under the Licence is distributed
7
+ # on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
8
+ # either express or implied. See the Licence of the
9
+ # specific language governing rights and limitations
10
+ # under the Licence.
11
+ # The Original Code is pNet::DNS.
12
+ # The Initial Developer of the Original Code is
13
+ # Nominet UK (www.nominet.org.uk). Portions created by
14
+ # Nominet UK are Copyright (c) Nominet UK 2006.
15
+ # All rights reserved.
16
+ require "test/ts_online.rb"
17
+ require "test/ts_offline.rb"
@@ -0,0 +1,32 @@
1
+ # The contents of this file are subject to the Mozilla
2
+ # Public Licence Version 1.1 (the "Licence"); you may
3
+ # not use this file except in compliance with the
4
+ # Licence. You may obtain a copy of the Licence at
5
+ # http://www.mozilla.org/MPL
6
+ # Software distributed under the Licence is distributed
7
+ # on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
8
+ # either express or implied. See the Licence of the
9
+ # specific language governing rights and limitations
10
+ # under the Licence.
11
+ # The Original Code is pNet::DNS.
12
+ # The Initial Developer of the Original Code is
13
+ # Nominet UK (www.nominet.org.uk). Portions created by
14
+ # Nominet UK are Copyright (c) Nominet UK 2006.
15
+ # All rights reserved.
16
+ require "test/unit"
17
+ require "test/tc_escapedchars.rb"
18
+ require "test/tc_header.rb"
19
+ require "test/tc_misc.rb"
20
+ require "test/tc_packet.rb"
21
+ require "test/tc_packet_unique_push.rb"
22
+ require "test/tc_question.rb"
23
+ require "test/tc_res_file.rb"
24
+ require "test/tc_res_opt.rb"
25
+ require "test/tc_rr-opt.rb"
26
+ require "test/tc_rr-rrsort.rb"
27
+ require "test/tc_rr-txt.rb"
28
+ require "test/tc_rr-unknown.rb"
29
+ require "test/tc_rr.rb"
30
+ require "test/tc_tkey.rb"
31
+ require "test/tc_update.rb"
32
+ require "test/tc_res_env.rb"
@@ -0,0 +1,33 @@
1
+ # The contents of this file are subject to the Mozilla
2
+ # Public Licence Version 1.1 (the "Licence"); you may
3
+ # not use this file except in compliance with the
4
+ # Licence. You may obtain a copy of the Licence at
5
+ # http://www.mozilla.org/MPL
6
+ # Software distributed under the Licence is distributed
7
+ # on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND,
8
+ # either express or implied. See the Licence of the
9
+ # specific language governing rights and limitations
10
+ # under the Licence.
11
+ # The Original Code is pNet::DNS.
12
+ # The Initial Developer of the Original Code is
13
+ # Nominet UK (www.nominet.org.uk). Portions created by
14
+ # Nominet UK are Copyright (c) Nominet UK 2006.
15
+ # All rights reserved.
16
+ require "test/unit"
17
+ # Disable these tests if we're not online
18
+ require 'socket'
19
+ sock = UDPSocket.new()
20
+ begin
21
+ sock.connect('193.0.14.129', # k.root-servers.net.
22
+ '25')
23
+ # OK - online and ready to go
24
+ require "test/tc_inet6.rb"
25
+ require "test/tc_online.rb"
26
+ require "test/tc_recurse.rb"
27
+ require "test/tc_resolver.rb"
28
+ require "test/tc_tcp.rb"
29
+ rescue Error
30
+ puts "Cannot bind to socket:\n\t"+$!+"\n"
31
+ puts "This is an indication you have network problems\n"
32
+ puts "\n\nNo online tests will be run!!\n\n"
33
+ end