pNet-DNS 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/Net/DNS/Resolver.rb +27 -20
- data/test/tc_axfr.rb +30 -0
- data/test/ts_online.rb +1 -0
- metadata +3 -2
data/lib/Net/DNS/Resolver.rb
CHANGED
@@ -164,8 +164,8 @@ module Net
|
|
164
164
|
# @TODO@ should get config working on Windows
|
165
165
|
os = Config::CONFIG['host_os'] # e.g. "mswin32"
|
166
166
|
if (os=='mswin32')
|
167
|
-
|
168
|
-
# print "WARNING: You must have \\etc\\resolv.conf for Net::DNS to work correctly\n"
|
167
|
+
# Should we print a warning here? We don't *really* need the file...
|
168
|
+
# print "WARNING: You must have \\etc\\resolv.conf for Net::DNS to work correctly\n"
|
169
169
|
end
|
170
170
|
# /etc/resolv.conf required
|
171
171
|
|
@@ -1594,9 +1594,9 @@ module Net
|
|
1594
1594
|
# socket = nil
|
1595
1595
|
#
|
1596
1596
|
def bgisready(socket)
|
1597
|
-
|
1598
|
-
|
1599
|
-
# return socket.ready? > 0
|
1597
|
+
ready = IO.select([socket], nil, nil, 0)
|
1598
|
+
return ready!=nil
|
1599
|
+
# return socket.ready? > 0
|
1600
1600
|
end
|
1601
1601
|
|
1602
1602
|
def make_query_packet(args)
|
@@ -1696,9 +1696,14 @@ module Net
|
|
1696
1696
|
zone=[]
|
1697
1697
|
|
1698
1698
|
if (axfr_start(args[0], args[1]))
|
1699
|
-
|
1700
|
-
|
1701
|
-
|
1699
|
+
continueLoop= true
|
1700
|
+
err = nil
|
1701
|
+
while (continueLoop)
|
1702
|
+
rr, err = axfr_next
|
1703
|
+
continueLoop = rr!=nil && err==nil
|
1704
|
+
if (continueLoop)
|
1705
|
+
zone.push(rr)
|
1706
|
+
end
|
1702
1707
|
end
|
1703
1708
|
zone = [] if err
|
1704
1709
|
end
|
@@ -1809,8 +1814,9 @@ module Net
|
|
1809
1814
|
def axfr_next
|
1810
1815
|
err = ''
|
1811
1816
|
|
1812
|
-
|
1813
|
-
|
1817
|
+
# @todo this can't be right!!!
|
1818
|
+
unless (@axfr_rr!=[])
|
1819
|
+
unless (@axfr_sock!=nil)
|
1814
1820
|
err = 'no zone transfer in progress'
|
1815
1821
|
|
1816
1822
|
print ";; #{err}\n" if @debug
|
@@ -1820,12 +1826,13 @@ module Net
|
|
1820
1826
|
end
|
1821
1827
|
|
1822
1828
|
timeout = @tcp_timeout
|
1829
|
+
sock = @axfr_sock
|
1823
1830
|
|
1824
1831
|
#--------------------------------------------------------------
|
1825
1832
|
# Read the length of the response packet.
|
1826
1833
|
#--------------------------------------------------------------
|
1827
1834
|
|
1828
|
-
# ready = sock.wait(timeout)
|
1835
|
+
# ready = sock.wait(timeout)
|
1829
1836
|
ready = IO.select([sock], nil, nil, timeout)
|
1830
1837
|
unless (ready)
|
1831
1838
|
err = 'timeout';
|
@@ -1833,7 +1840,7 @@ module Net
|
|
1833
1840
|
return nil, err
|
1834
1841
|
end
|
1835
1842
|
|
1836
|
-
buf, from = read_tcp(
|
1843
|
+
buf, from = read_tcp(sock, Net::DNS::INT16SZ, @debug)
|
1837
1844
|
unless (buf.length > 0)
|
1838
1845
|
err = 'truncated zone transfer'
|
1839
1846
|
@errorstring=(err)
|
@@ -1852,25 +1859,25 @@ module Net
|
|
1852
1859
|
#--------------------------------------------------------------
|
1853
1860
|
|
1854
1861
|
ready = IO.select([sock], nil, nil, timeout)
|
1855
|
-
# ready = sel.wait(timeout) # should be sock.wait, anyway!
|
1862
|
+
# ready = sel.wait(timeout) # should be sock.wait, anyway!
|
1856
1863
|
unless (ready)
|
1857
1864
|
err = 'timeout'
|
1858
1865
|
@errorstring=(err)
|
1859
1866
|
return nil, err
|
1860
1867
|
end
|
1861
1868
|
|
1862
|
-
buf, from = read_tcp(
|
1869
|
+
buf, from = read_tcp(sock, len, @debug)
|
1863
1870
|
|
1864
|
-
print ';; received ' + buf.length + " bytes\n" if @debug
|
1871
|
+
print ';; received ' + buf.length.to_s + " bytes\n" if @debug
|
1865
1872
|
|
1866
1873
|
unless (buf.length == len)
|
1867
|
-
err = "expected #{len} bytes, received " + buf.length
|
1874
|
+
err = "expected #{len} bytes, received " + buf.length.to_s
|
1868
1875
|
@errorstring=(err)
|
1869
1876
|
print ";; #{err}\n" if @debug
|
1870
1877
|
return nil, err
|
1871
1878
|
end
|
1872
1879
|
|
1873
|
-
ans, err = Net::DNS::Packet.
|
1880
|
+
ans, err = Net::DNS::Packet.new_from_binary(buf, @debug)
|
1874
1881
|
|
1875
1882
|
if (ans)
|
1876
1883
|
if (ans.header.rcode != 'NOERROR')
|
@@ -1894,8 +1901,8 @@ module Net
|
|
1894
1901
|
|
1895
1902
|
ans.answer.each do |rr|
|
1896
1903
|
if (rr.type == 'SOA')
|
1897
|
-
axfr_soa_count +=1
|
1898
|
-
if (axfr_soa_count < 2)
|
1904
|
+
@axfr_soa_count +=1
|
1905
|
+
if (@axfr_soa_count < 2)
|
1899
1906
|
@axfr_rr.push(rr)
|
1900
1907
|
end
|
1901
1908
|
else
|
@@ -1914,7 +1921,7 @@ module Net
|
|
1914
1921
|
|
1915
1922
|
rr = @axfr_rr.shift
|
1916
1923
|
|
1917
|
-
return rr # ,
|
1924
|
+
return rr # , nil)
|
1918
1925
|
end
|
1919
1926
|
|
1920
1927
|
def dnssec=(new_val)
|
data/test/tc_axfr.rb
ADDED
@@ -0,0 +1,30 @@
|
|
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 'socket'
|
19
|
+
class TestAxfr < Test::Unit::TestCase
|
20
|
+
def test_carlos
|
21
|
+
res = Net::DNS::Resolver.new()
|
22
|
+
res.nameservers=('ns1.net-dns.org')
|
23
|
+
res.debug=false
|
24
|
+
|
25
|
+
zone = res.axfr("net-dns.org")
|
26
|
+
|
27
|
+
assert(zone.size > 0)
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
data/test/ts_online.rb
CHANGED
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: pNet-DNS
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2006-12-
|
6
|
+
version: 0.0.4
|
7
|
+
date: 2006-12-19 00:00:00 +00:00
|
8
8
|
summary: Ruby port of perl Net::DNS
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -31,6 +31,7 @@ authors:
|
|
31
31
|
files:
|
32
32
|
- test/custom.txt
|
33
33
|
- test/resolv.conf
|
34
|
+
- test/tc_axfr.rb
|
34
35
|
- test/tc_escapedchars.rb
|
35
36
|
- test/tc_header.rb
|
36
37
|
- test/tc_inet6.rb
|