pNet-DNS 1.0.0 → 1.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.
- data/README +70 -68
- data/lib/Net/DNS/Resolver.rb +70 -46
- data/test/tc_axfr.rb +1 -0
- data/test/tc_escapedchars.rb +1 -0
- data/test/tc_header.rb +92 -91
- data/test/tc_inet6.rb +1 -0
- data/test/tc_misc.rb +1 -0
- data/test/tc_online.rb +1 -0
- data/test/tc_packet.rb +1 -0
- data/test/tc_packet_unique_push.rb +1 -0
- data/test/tc_question.rb +1 -0
- data/test/tc_recurse.rb +1 -0
- data/test/tc_res_env.rb +1 -0
- data/test/tc_res_file.rb +1 -0
- data/test/tc_res_opt.rb +1 -0
- data/test/tc_resolver.rb +1 -0
- data/test/tc_rr-opt.rb +1 -0
- data/test/tc_rr-rrsort.rb +1 -0
- data/test/tc_rr-txt.rb +1 -0
- data/test/tc_rr-unknown.rb +1 -0
- data/test/tc_rr.rb +1 -0
- data/test/tc_tcp.rb +1 -0
- data/test/tc_thread.rb +34 -0
- data/test/tc_tkey.rb +2 -1
- data/test/tc_udp.rb +35 -0
- data/test/tc_update.rb +1 -0
- data/test/ts_online.rb +34 -34
- metadata +8 -6
data/README
CHANGED
@@ -1,68 +1,70 @@
|
|
1
|
-
pNet::DNS
|
2
|
-
---------
|
3
|
-
|
4
|
-
Ruby port of perl Net::DNS.
|
5
|
-
|
6
|
-
This project is a direct port of perl Net::DNS, version 0.57.
|
7
|
-
It has tried to stick as closely as possible to the original
|
8
|
-
perl code, to allow existing perl code to be ported quickly and
|
9
|
-
easily to Ruby. This project is not intended to be anything more
|
10
|
-
than a direct port of the perl code.
|
11
|
-
|
12
|
-
The perl test code has also been ported to Ruby, and all runs
|
13
|
-
successfully. The demo code has also been ported.
|
14
|
-
|
15
|
-
No effort has been made to fix bugs in the original perl code -
|
16
|
-
this port is as close as possible to the perl.
|
17
|
-
|
18
|
-
Author : AlexD
|
19
|
-
Contact : alexd@nominet.org.uk
|
20
|
-
Copyright (c) Nominet UK, 2006
|
21
|
-
|
22
|
-
Check out demo and test folders for examples.
|
23
|
-
|
24
|
-
Issues
|
25
|
-
------
|
26
|
-
|
27
|
-
I've still not had a chance to test on IPv6, so the functionality in
|
28
|
-
tc_inet6.rb is untested.
|
29
|
-
|
30
|
-
Nameserver.rb is a port of the perl version - bugs and all.
|
31
|
-
It's obviously broken, but would not be hard to fix.
|
32
|
-
If you need a working version of this code, please contact me.
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
The
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
1
|
+
pNet::DNS
|
2
|
+
---------
|
3
|
+
|
4
|
+
Ruby port of perl Net::DNS.
|
5
|
+
|
6
|
+
This project is a direct port of perl Net::DNS, version 0.57.
|
7
|
+
It has tried to stick as closely as possible to the original
|
8
|
+
perl code, to allow existing perl code to be ported quickly and
|
9
|
+
easily to Ruby. This project is not intended to be anything more
|
10
|
+
than a direct port of the perl code.
|
11
|
+
|
12
|
+
The perl test code has also been ported to Ruby, and all runs
|
13
|
+
successfully. The demo code has also been ported.
|
14
|
+
|
15
|
+
No effort has been made to fix bugs in the original perl code -
|
16
|
+
this port is as close as possible to the perl.
|
17
|
+
|
18
|
+
Author : AlexD
|
19
|
+
Contact : alexd@nominet.org.uk
|
20
|
+
Copyright (c) Nominet UK, 2006
|
21
|
+
|
22
|
+
Check out demo and test folders for examples.
|
23
|
+
|
24
|
+
Issues
|
25
|
+
------
|
26
|
+
|
27
|
+
I've still not had a chance to test on IPv6, so the functionality in
|
28
|
+
tc_inet6.rb is untested.
|
29
|
+
|
30
|
+
Nameserver.rb is a port of the perl version - bugs and all.
|
31
|
+
It's obviously broken, but would not be hard to fix.
|
32
|
+
If you need a working version of this code, please contact me.
|
33
|
+
|
34
|
+
JRuby does not yet support TCP, although UDP is fully supported.
|
35
|
+
|
36
|
+
Licensing
|
37
|
+
---------
|
38
|
+
|
39
|
+
This project is licensed under the Mozilla Public License.
|
40
|
+
|
41
|
+
The contents of this file are subject to the Mozilla Public Licence
|
42
|
+
Version 1.1 (the `Licence'); you may not use this file except in
|
43
|
+
compliance with the Licence. You may obtain a copy of the Licence at
|
44
|
+
http://www.mozilla.org/MPL
|
45
|
+
|
46
|
+
Software distributed under the Licence is distributed on an `AS IS'
|
47
|
+
basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
|
48
|
+
the Licence of the specific language governing rights and limitations
|
49
|
+
under the Licence.
|
50
|
+
|
51
|
+
The Original Code is pNet::DNS.
|
52
|
+
|
53
|
+
The Initial Developer of the Original Code is Nominet UK
|
54
|
+
(http://www.nominet.org.uk). Portions created by Nominet UK are
|
55
|
+
Copyright (c) Nominet UK 2006. All rights reserved.
|
56
|
+
|
57
|
+
PERL AUTHOR INFORMATION
|
58
|
+
-----------------------
|
59
|
+
|
60
|
+
Net::DNS is currently maintained at NLnet Labs (www.nlnetlabs.nl) by:
|
61
|
+
Olaf Kolkman and his team.
|
62
|
+
olaf at net-dns.org
|
63
|
+
|
64
|
+
Between 2002 and 2004 Net::DNS was maintained by:
|
65
|
+
Chris Reinhardt
|
66
|
+
|
67
|
+
|
68
|
+
Net::DNS was created by:
|
69
|
+
Michael Fuhr
|
70
|
+
mike at fuhr.org
|
data/lib/Net/DNS/Resolver.rb
CHANGED
@@ -647,7 +647,16 @@ module Net
|
|
647
647
|
def read_config_file(conf_file)
|
648
648
|
ns=[]
|
649
649
|
searchlist=[]
|
650
|
-
|
650
|
+
if !(File.exist? conf_file)
|
651
|
+
if (/java/ =~ RUBY_PLATFORM && !(conf_file=~/:/))
|
652
|
+
# Problem with paths and Windows on JRuby - see if we can munge the drive...
|
653
|
+
wd = Dir.getwd
|
654
|
+
drive = wd.split(':')[0]
|
655
|
+
if (drive.length==1)
|
656
|
+
conf_file = drive << ":" << conf_file
|
657
|
+
end
|
658
|
+
end
|
659
|
+
end
|
651
660
|
IO.foreach(conf_file) do |line|
|
652
661
|
line.gsub!(/\s*[;#].*/,"")
|
653
662
|
next unless line =~ /\S/
|
@@ -795,8 +804,8 @@ module Net
|
|
795
804
|
return addr;
|
796
805
|
end
|
797
806
|
|
798
|
-
# if (
|
799
|
-
# then we use EDNS and
|
807
|
+
# if (@udppacketsize > Net::DNS::PACKETSZ()
|
808
|
+
# then we use EDNS and @udppacketsize
|
800
809
|
# should be taken as the maximum packet_data length
|
801
810
|
def _packetsz
|
802
811
|
ret = (@udppacketsize > Net::DNS::PACKETSZ ? @udppacketsize : Net::DNS::PACKETSZ)
|
@@ -1251,8 +1260,8 @@ module Net
|
|
1251
1260
|
next
|
1252
1261
|
end
|
1253
1262
|
begin
|
1254
|
-
res = Socket::getaddrinfo(ns_address, dstport, Socket::AF_UNSPEC, Socket::SOCK_DGRAM,
|
1255
|
-
|
1263
|
+
res = Socket::getaddrinfo(ns_address, dstport)[0] # , Socket::AF_UNSPEC, Socket::SOCK_DGRAM,
|
1264
|
+
# 0, Socket::AI_NUMERICHOST)[0]
|
1256
1265
|
|
1257
1266
|
|
1258
1267
|
sockfamily = res[0]
|
@@ -1486,8 +1495,8 @@ module Net
|
|
1486
1495
|
|
1487
1496
|
begin
|
1488
1497
|
# The AI_NUMERICHOST surpresses lookups.
|
1489
|
-
res = Socket::getaddrinfo(ns_address, dstport, Socket::AF_UNSPEC,
|
1490
|
-
Socket::SOCK_DGRAM, 0 , Socket::AI_NUMERICHOST)[0]
|
1498
|
+
res = Socket::getaddrinfo(ns_address, dstport)[0] # , Socket::AF_UNSPEC,
|
1499
|
+
# Socket::SOCK_DGRAM, 0 , Socket::AI_NUMERICHOST)[0]
|
1491
1500
|
|
1492
1501
|
sockfamily = res[0]
|
1493
1502
|
socktype_tmp = res[1]
|
@@ -1627,37 +1636,35 @@ module Net
|
|
1627
1636
|
|
1628
1637
|
if (@dnssec)
|
1629
1638
|
# RFC 3225
|
1630
|
-
print ";; Adding EDNS extention with UDP packetsize #{@udppacketsize} and DNS OK bit set\n"
|
1631
|
-
if @debug
|
1632
|
-
|
1633
|
-
optrr = Net::DNS::RR.create({
|
1634
|
-
:type => 'OPT',
|
1635
|
-
:name => '',
|
1636
|
-
:rrclass => @udppacketsize, # Decimal UDPpayload
|
1637
|
-
:ednsflags => 0x8000, # first bit set see RFC 3225
|
1638
|
-
})
|
1639
|
-
|
1640
|
-
packet.push('additional', optrr)
|
1641
|
-
|
1642
|
-
elsif (@udppacketsize > Net::DNS::PACKETSZ)
|
1643
|
-
print ";; Adding EDNS extention with UDP packetsize #{@udppacketsize}.\n" if @debug
|
1644
|
-
# RFC 3225
|
1645
|
-
optrr = Net::DNS::RR.create( {
|
1646
|
-
:type => 'OPT',
|
1647
|
-
:name => '',
|
1648
|
-
:rrclass => @udppacketsize, # Decimal UDPpayload
|
1649
|
-
:ttl => 0x0000 # RCODE 32bit Hex
|
1650
|
-
})
|
1651
|
-
|
1652
|
-
packet.push('additional', optrr)
|
1653
|
-
end
|
1639
|
+
print ";; Adding EDNS extention with UDP packetsize #{@udppacketsize} and DNS OK bit set\n" if @debug
|
1654
1640
|
|
1641
|
+
optrr = Net::DNS::RR.create({
|
1642
|
+
:type => 'OPT',
|
1643
|
+
:name => '',
|
1644
|
+
:rrclass => @udppacketsize, # Decimal UDPpayload
|
1645
|
+
:ednsflags => 0x8000, # first bit set see RFC 3225
|
1646
|
+
})
|
1655
1647
|
|
1656
|
-
|
1657
|
-
|
1658
|
-
|
1659
|
-
|
1660
|
-
|
1648
|
+
packet.push('additional', optrr)
|
1649
|
+
|
1650
|
+
elsif (@udppacketsize > Net::DNS::PACKETSZ)
|
1651
|
+
print ";; Adding EDNS extention with UDP packetsize #{@udppacketsize}.\n" if @debug
|
1652
|
+
# RFC 3225
|
1653
|
+
optrr = Net::DNS::RR.create( {
|
1654
|
+
:type => 'OPT',
|
1655
|
+
:name => '',
|
1656
|
+
:rrclass => @udppacketsize, # Decimal UDPpayload
|
1657
|
+
:ttl => 0x0000 # RCODE 32bit Hex
|
1658
|
+
})
|
1659
|
+
|
1660
|
+
packet.push('additional', optrr)
|
1661
|
+
end
|
1662
|
+
|
1663
|
+
|
1664
|
+
if (@tsig_rr != nil && @tsig_rr.length > 0)
|
1665
|
+
# if (!grep { $_.type == 'TSIG' } packet.additional)
|
1666
|
+
if (packet.additional.select { |i| i.type == 'TSIG' }.length > 0)
|
1667
|
+
packet.push('additional', @tsig_rr)
|
1661
1668
|
end
|
1662
1669
|
end
|
1663
1670
|
|
@@ -2044,11 +2051,20 @@ module Net
|
|
2044
2051
|
|
2045
2052
|
srcaddr6 = srcaddr == '0.0.0.0' ? '::' : srcaddr
|
2046
2053
|
|
2047
|
-
sock
|
2048
|
-
|
2049
|
-
|
2050
|
-
|
2051
|
-
|
2054
|
+
sock=nil
|
2055
|
+
if (/java/=~RUBY_PLATFORM)
|
2056
|
+
sock = TCPSocket.new(ns, dstport, srcaddr, srcport)
|
2057
|
+
# We need to use Socket.new rather than TCPSocket.new because of
|
2058
|
+
# a bug with TCPSocket#recvfrom in Windows
|
2059
|
+
# But this breaks JRuby
|
2060
|
+
else
|
2061
|
+
sock = Socket.new( Socket::AF_INET6, Socket::SOCK_STREAM, 0 )
|
2062
|
+
sockaddr = Socket.pack_sockaddr_in( srcport, srcaddr6 )
|
2063
|
+
sock.bind( sockaddr )
|
2064
|
+
sockaddr = Socket.pack_sockaddr_in( dstport, ns )
|
2065
|
+
sock.connect(sockaddr)
|
2066
|
+
end
|
2067
|
+
|
2052
2068
|
if sock==nil
|
2053
2069
|
@errorstring=('connection failed(IPv6 socket failure)')
|
2054
2070
|
print ";; ERROR: send_tcp: IPv6 connection to #{ns}" +
|
@@ -2073,11 +2089,19 @@ module Net
|
|
2073
2089
|
end
|
2074
2090
|
|
2075
2091
|
|
2076
|
-
sock
|
2077
|
-
|
2078
|
-
|
2079
|
-
|
2080
|
-
|
2092
|
+
sock=nil
|
2093
|
+
if (/java/=~RUBY_PLATFORM)
|
2094
|
+
sock = TCPSocket.new(ns, dstport, srcaddr, srcport)
|
2095
|
+
# We need to use Socket.new rather than TCPSocket.new because of
|
2096
|
+
# a bug with TCPSocket#recvfrom in Windows
|
2097
|
+
# But this breaks JRuby
|
2098
|
+
else
|
2099
|
+
sock = Socket.new( Socket::AF_INET, Socket::SOCK_STREAM, 0 )
|
2100
|
+
sockaddr = Socket.pack_sockaddr_in( srcport, srcaddr )
|
2101
|
+
sock.bind( sockaddr )
|
2102
|
+
sockaddr = Socket.pack_sockaddr_in( dstport, ns )
|
2103
|
+
sock.connect(sockaddr)
|
2104
|
+
end
|
2081
2105
|
|
2082
2106
|
|
2083
2107
|
end
|
data/test/tc_axfr.rb
CHANGED
data/test/tc_escapedchars.rb
CHANGED
data/test/tc_header.rb
CHANGED
@@ -1,91 +1,92 @@
|
|
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 '
|
17
|
-
require '
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
header.
|
52
|
-
header.
|
53
|
-
header.
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
#
|
58
|
-
#
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
#
|
69
|
-
#
|
70
|
-
|
71
|
-
assert(header.inspect =~ /
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
#
|
77
|
-
#
|
78
|
-
|
79
|
-
header.
|
80
|
-
header.
|
81
|
-
header.
|
82
|
-
|
83
|
-
|
84
|
-
assert_equal(header.
|
85
|
-
assert_equal(header.
|
86
|
-
assert_equal(header.
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
end
|
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 'rubygems'
|
17
|
+
require 'test/unit'
|
18
|
+
require 'Net/DNS'
|
19
|
+
class TestHeader < Test::Unit::TestCase
|
20
|
+
def test_header
|
21
|
+
header = Net::DNS::Header.new();
|
22
|
+
assert(header, "new() returned something")
|
23
|
+
|
24
|
+
header.id=41
|
25
|
+
assert_equal(header.id, 41, "id() works")
|
26
|
+
|
27
|
+
header.qr=1
|
28
|
+
assert_equal(header.qr, 1, "qr() works")
|
29
|
+
|
30
|
+
header.opcode="QUERY"
|
31
|
+
assert_equal(header.opcode, "QUERY", "opcode() works")
|
32
|
+
|
33
|
+
header.aa=1
|
34
|
+
assert_equal(header.aa, 1, "aa() works")
|
35
|
+
|
36
|
+
header.tc=0
|
37
|
+
assert_equal(header.tc, 0, "tc() works")
|
38
|
+
|
39
|
+
header.rd=1
|
40
|
+
assert_equal(header.rd, 1, "rd() works")
|
41
|
+
|
42
|
+
header.ra=1
|
43
|
+
assert_equal(header.ra, 1, "ra() works")
|
44
|
+
|
45
|
+
header.qr=1
|
46
|
+
assert_equal(header.qr, 1, "qr() works")
|
47
|
+
|
48
|
+
header.rcode="NOERROR"
|
49
|
+
assert_equal(header.rcode, "NOERROR", "rcode() works")
|
50
|
+
|
51
|
+
header.qdcount=1
|
52
|
+
header.ancount=2
|
53
|
+
header.nscount=3
|
54
|
+
header.arcount=3
|
55
|
+
|
56
|
+
|
57
|
+
# Reenable when support for CD is there
|
58
|
+
#header.cd=0
|
59
|
+
#assert_equal(header.cd, 0, "cd() works")
|
60
|
+
puts(header.inspect)
|
61
|
+
data = header.data;
|
62
|
+
|
63
|
+
header2 = Net::DNS::Header.new(data);
|
64
|
+
puts(header2.inspect)
|
65
|
+
|
66
|
+
assert(header==(header2), 'Headers are the same');
|
67
|
+
|
68
|
+
#
|
69
|
+
# Is $header->string remotely sane?
|
70
|
+
#
|
71
|
+
assert(header.inspect =~ /opcode = QUERY/, 'string() has opcode correct');
|
72
|
+
assert(header.inspect =~ /ancount = 2/, 'string() has ancount correct');
|
73
|
+
|
74
|
+
header = Net::DNS::Header.new;
|
75
|
+
|
76
|
+
#
|
77
|
+
# Check that the aliases work properly.
|
78
|
+
#
|
79
|
+
header.zocount=(0);
|
80
|
+
header.prcount=(1);
|
81
|
+
header.upcount=(2);
|
82
|
+
header.adcount=(3);
|
83
|
+
|
84
|
+
assert_equal(header.zocount, 0, 'zocount works');
|
85
|
+
assert_equal(header.prcount, 1, 'prcount works');
|
86
|
+
assert_equal(header.upcount, 2, 'upcount works');
|
87
|
+
assert_equal(header.adcount, 3, 'adcount works');
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
end
|
92
|
+
end
|
data/test/tc_inet6.rb
CHANGED
data/test/tc_misc.rb
CHANGED
data/test/tc_online.rb
CHANGED
data/test/tc_packet.rb
CHANGED
data/test/tc_question.rb
CHANGED
data/test/tc_recurse.rb
CHANGED
data/test/tc_res_env.rb
CHANGED
data/test/tc_res_file.rb
CHANGED
data/test/tc_res_opt.rb
CHANGED
data/test/tc_resolver.rb
CHANGED
data/test/tc_rr-opt.rb
CHANGED
data/test/tc_rr-rrsort.rb
CHANGED
data/test/tc_rr-txt.rb
CHANGED
data/test/tc_rr-unknown.rb
CHANGED
data/test/tc_rr.rb
CHANGED
data/test/tc_tcp.rb
CHANGED
data/test/tc_thread.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'Net/DNS'
|
3
|
+
|
4
|
+
class TestOnline < Test::Unit::TestCase
|
5
|
+
def run_threads(d)
|
6
|
+
ts = []
|
7
|
+
15.times do |i|
|
8
|
+
t = Thread.new {
|
9
|
+
begin
|
10
|
+
p "Querying " + i.to_s
|
11
|
+
p d.query("nominet.org.uk")
|
12
|
+
rescue (Exception)
|
13
|
+
p "Exception "
|
14
|
+
end
|
15
|
+
}
|
16
|
+
ts.push(t)
|
17
|
+
end
|
18
|
+
15.times do |i|
|
19
|
+
ts[i].join
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_non_persistent
|
24
|
+
d = Net::DNS::Resolver.new(:nameserver => "213.248.199.17")
|
25
|
+
d.persistent_udp=false
|
26
|
+
run_threads(d)
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_persistent
|
30
|
+
d = Net::DNS::Resolver.new(:nameserver => "213.248.199.17")
|
31
|
+
d.persistent_udp=true
|
32
|
+
run_threads(d)
|
33
|
+
end
|
34
|
+
end
|
data/test/tc_tkey.rb
CHANGED
@@ -13,6 +13,7 @@
|
|
13
13
|
# Nominet UK (www.nominet.org.uk). Portions created by
|
14
14
|
# Nominet UK are Copyright (c) Nominet UK 2006.
|
15
15
|
# All rights reserved.
|
16
|
+
require 'rubygems'
|
16
17
|
require 'test/unit'
|
17
18
|
require 'Net/DNS'
|
18
19
|
require "digest/md5"
|
@@ -89,7 +90,7 @@ class TestTKey < Test::Unit::TestCase
|
|
89
90
|
:key => key,
|
90
91
|
:sign_func => Proc.new { |key,data|
|
91
92
|
# OpenSSL::HMAC.hexdigest(OpenSSL::Digest::Digest.new("md5"), key, data)
|
92
|
-
hmac = Digest::MD5.new(key)
|
93
|
+
hmac = Digest::MD5.new.update(key)
|
93
94
|
hmac.update(data)
|
94
95
|
return hmac.digest
|
95
96
|
},
|
data/test/tc_udp.rb
ADDED
@@ -0,0 +1,35 @@
|
|
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 'rubygems'
|
17
|
+
require 'test/unit'
|
18
|
+
require 'Net/DNS'
|
19
|
+
class TestTcp < Test::Unit::TestCase
|
20
|
+
def test_TCP
|
21
|
+
res = Net::DNS::Resolver.new(:config_file=>"/etc/resolv.conf")
|
22
|
+
res.debug=true
|
23
|
+
res.usevc = false
|
24
|
+
ret=res.query("example.com")
|
25
|
+
assert(ret.is_a?(Net::DNS::Packet))
|
26
|
+
end
|
27
|
+
def test_TCP_port
|
28
|
+
res = Net::DNS::Resolver.new(:config_file=>"/etc/resolv.conf")
|
29
|
+
res.debug=true
|
30
|
+
res.usevc = false
|
31
|
+
res.srcport=rand(60000) + 1025
|
32
|
+
ret=res.query("example.com")
|
33
|
+
assert(ret.is_a?(Net::DNS::Packet))
|
34
|
+
end
|
35
|
+
end
|
data/test/tc_update.rb
CHANGED
data/test/ts_online.rb
CHANGED
@@ -1,34 +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
|
-
# 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
|
-
|
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
|
-
require "test/tc_axfr.rb"
|
30
|
-
rescue Error
|
31
|
-
puts "Cannot bind to socket:\n\t"+$!+"\n"
|
32
|
-
puts "This is an indication you have network problems\n"
|
33
|
-
puts "\n\nNo online tests will be run!!\n\n"
|
34
|
-
end
|
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
|
+
require "test/tc_axfr.rb"
|
30
|
+
rescue Error
|
31
|
+
puts "Cannot bind to socket:\n\t"+$!+"\n"
|
32
|
+
puts "This is an indication you have network problems\n"
|
33
|
+
puts "\n\nNo online tests will be run!!\n\n"
|
34
|
+
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: pNet-DNS
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 1.0.
|
7
|
-
date: 2007-
|
6
|
+
version: 1.0.1
|
7
|
+
date: 2007-07-12 00:00:00 +01:00
|
8
8
|
summary: Ruby port of perl Net::DNS
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -51,24 +51,23 @@ files:
|
|
51
51
|
- test/tc_rr-unknown.rb
|
52
52
|
- test/tc_rr.rb
|
53
53
|
- test/tc_tcp.rb
|
54
|
+
- test/tc_thread.rb
|
54
55
|
- test/tc_tkey.rb
|
56
|
+
- test/tc_udp.rb
|
55
57
|
- test/tc_update.rb
|
56
58
|
- test/ts_netdns.rb
|
57
59
|
- test/ts_offline.rb
|
58
60
|
- test/ts_online.rb
|
59
61
|
- lib/Net
|
60
62
|
- lib/Net/DNS
|
61
|
-
- lib/Net/DNS.rb
|
62
63
|
- lib/Net/DNS/Header.rb
|
63
64
|
- lib/Net/DNS/Nameserver.rb
|
64
65
|
- lib/Net/DNS/Packet.rb
|
65
66
|
- lib/Net/DNS/Question.rb
|
66
67
|
- lib/Net/DNS/Resolver
|
68
|
+
- lib/Net/DNS/Resolver/Recurse.rb
|
67
69
|
- lib/Net/DNS/Resolver.rb
|
68
70
|
- lib/Net/DNS/RR
|
69
|
-
- lib/Net/DNS/RR.rb
|
70
|
-
- lib/Net/DNS/Update.rb
|
71
|
-
- lib/Net/DNS/Resolver/Recurse.rb
|
72
71
|
- lib/Net/DNS/RR/A.rb
|
73
72
|
- lib/Net/DNS/RR/AAAA.rb
|
74
73
|
- lib/Net/DNS/RR/AFSDB.rb
|
@@ -103,6 +102,9 @@ files:
|
|
103
102
|
- lib/Net/DNS/RR/TXT.rb
|
104
103
|
- lib/Net/DNS/RR/UNKNOWN.rb
|
105
104
|
- lib/Net/DNS/RR/X25.rb
|
105
|
+
- lib/Net/DNS/RR.rb
|
106
|
+
- lib/Net/DNS/Update.rb
|
107
|
+
- lib/Net/DNS.rb
|
106
108
|
- README
|
107
109
|
test_files:
|
108
110
|
- test/ts_offline.rb
|