Dnsruby 0.6.0 → 1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/EVENTMACHINE +1 -1
- data/README +36 -7
- data/doc/classes/Dnsruby.html +49 -18
- data/doc/classes/Dnsruby/Classes.html +10 -10
- data/doc/classes/Dnsruby/Classes.src/{M000158.html → M000156.html} +1 -1
- data/doc/classes/Dnsruby/Classes.src/M000157.html +5 -9
- data/doc/classes/Dnsruby/CodeMapper.html +55 -55
- data/doc/classes/Dnsruby/CodeMapper.src/M000133.html +4 -7
- data/doc/classes/Dnsruby/CodeMapper.src/M000134.html +19 -5
- data/doc/classes/Dnsruby/CodeMapper.src/M000135.html +7 -5
- data/doc/classes/Dnsruby/CodeMapper.src/M000136.html +5 -4
- data/doc/classes/Dnsruby/CodeMapper.src/M000137.html +5 -8
- data/doc/classes/Dnsruby/CodeMapper.src/M000138.html +4 -8
- data/doc/classes/Dnsruby/CodeMapper.src/M000139.html +6 -6
- data/doc/classes/Dnsruby/CodeMapper.src/M000140.html +7 -16
- data/doc/classes/Dnsruby/CodeMapper.src/M000141.html +8 -5
- data/doc/classes/Dnsruby/CodeMapper.src/{M000167.html → M000142.html} +0 -0
- data/doc/classes/Dnsruby/CodeMapper.src/{M000168.html → M000143.html} +0 -0
- data/doc/classes/Dnsruby/Config.html +66 -63
- data/doc/classes/Dnsruby/Config.src/{M000125.html → M000097.html} +1 -1
- data/doc/classes/Dnsruby/Config.src/M000098.html +5 -4
- data/doc/classes/Dnsruby/Config.src/M000099.html +5 -5
- data/doc/classes/Dnsruby/Config.src/M000100.html +11 -5
- data/doc/classes/Dnsruby/Config.src/M000101.html +6 -6
- data/doc/classes/Dnsruby/Config.src/M000102.html +23 -6
- data/doc/classes/Dnsruby/Config.src/M000103.html +10 -22
- data/doc/classes/Dnsruby/Config.src/M000104.html +7 -11
- data/doc/classes/Dnsruby/Config.src/M000105.html +13 -8
- data/doc/classes/Dnsruby/Config.src/M000106.html +7 -12
- data/doc/classes/Dnsruby/Config.src/M000107.html +6 -7
- data/doc/classes/Dnsruby/DNS.html +220 -118
- data/doc/classes/Dnsruby/DNS.src/{M000224.html → M000190.html} +1 -1
- data/doc/classes/Dnsruby/DNS.src/{M000225.html → M000191.html} +1 -1
- data/doc/classes/Dnsruby/DNS.src/{M000226.html → M000192.html} +1 -1
- data/doc/classes/Dnsruby/DNS.src/M000193.html +24 -0
- data/doc/classes/Dnsruby/{SingleResolver.src/M000152.html → DNS.src/M000194.html} +3 -3
- data/doc/classes/Dnsruby/{IPv4.src/M000156.html → DNS.src/M000195.html} +4 -4
- data/doc/classes/Dnsruby/DNS.src/M000196.html +6 -10
- data/doc/classes/Dnsruby/DNS.src/M000197.html +5 -10
- data/doc/classes/Dnsruby/DNS.src/M000198.html +6 -4
- data/doc/classes/Dnsruby/DNS.src/M000199.html +4 -4
- data/doc/classes/Dnsruby/DNS.src/M000200.html +5 -6
- data/doc/classes/Dnsruby/DNS.src/M000201.html +6 -5
- data/doc/classes/Dnsruby/DNS.src/M000202.html +14 -6
- data/doc/classes/Dnsruby/DNS.src/M000203.html +5 -4
- data/doc/classes/Dnsruby/DNS.src/M000204.html +6 -5
- data/doc/classes/Dnsruby/DNS.src/M000205.html +17 -6
- data/doc/classes/Dnsruby/DecodeError.html +11 -0
- data/doc/classes/Dnsruby/EncodeError.html +11 -0
- data/doc/classes/Dnsruby/FormErr.html +6 -0
- data/doc/classes/Dnsruby/Header.html +51 -66
- data/doc/classes/Dnsruby/Header.src/{M000196.html → M000167.html} +1 -1
- data/doc/classes/Dnsruby/Header.src/M000168.html +4 -21
- data/doc/classes/Dnsruby/Header.src/M000169.html +4 -21
- data/doc/classes/Dnsruby/Header.src/M000170.html +21 -4
- data/doc/classes/Dnsruby/Header.src/M000171.html +4 -4
- data/doc/classes/Dnsruby/Header.src/M000172.html +4 -7
- data/doc/classes/Dnsruby/Header.src/M000173.html +7 -6
- data/doc/classes/Dnsruby/Header.src/M000174.html +6 -18
- data/doc/classes/Dnsruby/Header.src/M000175.html +18 -12
- data/doc/classes/Dnsruby/Header.src/M000176.html +13 -33
- data/doc/classes/Dnsruby/Header.src/M000177.html +12 -14
- data/doc/classes/Dnsruby/Header.src/M000178.html +33 -4
- data/doc/classes/Dnsruby/Header.src/M000179.html +14 -4
- data/doc/classes/Dnsruby/Header.src/M000180.html +1 -1
- data/doc/classes/Dnsruby/Hosts.html +65 -54
- data/doc/classes/Dnsruby/Hosts.src/M000144.html +6 -5
- data/doc/classes/Dnsruby/Hosts.src/M000145.html +5 -6
- data/doc/classes/Dnsruby/Hosts.src/M000146.html +6 -7
- data/doc/classes/Dnsruby/Hosts.src/M000147.html +7 -5
- data/doc/classes/Dnsruby/Hosts.src/M000148.html +4 -5
- data/doc/classes/Dnsruby/Hosts.src/M000149.html +5 -6
- data/doc/classes/Dnsruby/Hosts.src/{M000176.html → M000150.html} +1 -1
- data/doc/classes/Dnsruby/IPv4.html +28 -93
- data/doc/classes/Dnsruby/IPv4.src/M000151.html +17 -6
- data/doc/classes/Dnsruby/IPv4.src/M000152.html +5 -4
- data/doc/classes/Dnsruby/IPv4.src/M000153.html +3 -3
- data/doc/classes/Dnsruby/IPv4.src/M000154.html +3 -4
- data/doc/classes/Dnsruby/IPv4.src/M000155.html +4 -4
- data/doc/classes/Dnsruby/IPv6.html +59 -96
- data/doc/classes/Dnsruby/IPv6.src/{M000208.html → M000178.html} +2 -2
- data/doc/classes/Dnsruby/IPv6.src/{M000210.html → M000179.html} +0 -0
- data/doc/classes/Dnsruby/IPv6.src/M000180.html +6 -46
- data/doc/classes/Dnsruby/IPv6.src/M000181.html +2 -2
- data/doc/classes/Dnsruby/IPv6.src/M000182.html +7 -6
- data/doc/classes/Dnsruby/IPv6.src/M000183.html +6 -8
- data/doc/classes/Dnsruby/IPv6.src/M000184.html +4 -4
- data/doc/classes/Dnsruby/Message.html +216 -123
- data/doc/classes/Dnsruby/Message.src/M000071.html +38 -0
- data/doc/classes/Dnsruby/Message.src/M000072.html +26 -0
- data/doc/classes/Dnsruby/Message.src/M000073.html +22 -0
- data/doc/classes/Dnsruby/{Header.src/M000198.html → Message.src/M000074.html} +6 -4
- data/doc/classes/Dnsruby/{Header.src/M000197.html → Message.src/M000075.html} +6 -4
- data/doc/classes/Dnsruby/Message.src/M000076.html +6 -20
- data/doc/classes/Dnsruby/Message.src/M000077.html +6 -12
- data/doc/classes/Dnsruby/Message.src/M000078.html +6 -8
- data/doc/classes/Dnsruby/Message.src/M000079.html +9 -6
- data/doc/classes/Dnsruby/Message.src/M000080.html +16 -6
- data/doc/classes/Dnsruby/Message.src/M000081.html +6 -6
- data/doc/classes/Dnsruby/Message.src/M000082.html +4 -6
- data/doc/classes/Dnsruby/Message.src/M000083.html +40 -6
- data/doc/classes/Dnsruby/Message.src/M000084.html +10 -6
- data/doc/classes/Dnsruby/Message.src/M000085.html +29 -6
- data/doc/classes/Dnsruby/Message.src/M000086.html +32 -4
- data/doc/classes/Dnsruby/NXDomain.html +6 -0
- data/doc/classes/Dnsruby/Name.html +60 -87
- data/doc/classes/Dnsruby/Name.src/M000056.html +28 -0
- data/doc/classes/Dnsruby/Name.src/M000057.html +6 -14
- data/doc/classes/Dnsruby/Name.src/M000058.html +4 -6
- data/doc/classes/Dnsruby/Name.src/M000059.html +7 -4
- data/doc/classes/Dnsruby/Name.src/M000060.html +8 -4
- data/doc/classes/Dnsruby/Name.src/M000061.html +5 -7
- data/doc/classes/Dnsruby/Name/Label.html +45 -45
- data/doc/classes/Dnsruby/Name/Label.src/M000062.html +21 -0
- data/doc/classes/Dnsruby/Name/Label.src/{M000075.html → M000063.html} +4 -4
- data/doc/classes/Dnsruby/Name/Label.src/{M000076.html → M000064.html} +1 -1
- data/doc/classes/Dnsruby/Name/Label.src/{M000077.html → M000065.html} +1 -1
- data/doc/classes/Dnsruby/Name/Label.src/{M000078.html → M000066.html} +1 -1
- data/doc/classes/Dnsruby/Name/Label.src/M000067.html +4 -7
- data/doc/classes/Dnsruby/Name/Label.src/M000068.html +4 -4
- data/doc/classes/Dnsruby/Name/Label.src/M000069.html +4 -8
- data/doc/classes/Dnsruby/Name/Label.src/M000070.html +4 -4
- data/doc/classes/Dnsruby/NotImp.html +6 -0
- data/doc/classes/Dnsruby/OtherResolvError.html +6 -0
- data/doc/classes/Dnsruby/Question.html +53 -8
- data/doc/classes/Dnsruby/Question.src/{M000194.html → M000165.html} +1 -1
- data/doc/classes/Dnsruby/Question.src/M000166.html +4 -33
- data/doc/classes/Dnsruby/Question.src/M000167.html +4 -33
- data/doc/classes/Dnsruby/Question.src/M000168.html +18 -4
- data/doc/classes/Dnsruby/Question.src/{M000195.html → M000169.html} +1 -1
- data/doc/classes/Dnsruby/RR.html +62 -64
- data/doc/classes/Dnsruby/RR.src/M000004.html +1 -1
- data/doc/classes/Dnsruby/RR.src/M000005.html +1 -1
- data/doc/classes/Dnsruby/RR.src/M000006.html +4 -22
- data/doc/classes/Dnsruby/RR.src/M000007.html +22 -86
- data/doc/classes/Dnsruby/RR.src/M000008.html +86 -4
- data/doc/classes/Dnsruby/RR.src/M000009.html +4 -4
- data/doc/classes/Dnsruby/RR.src/M000010.html +4 -8
- data/doc/classes/Dnsruby/RR.src/M000011.html +8 -8
- data/doc/classes/Dnsruby/RR.src/M000012.html +15 -4
- data/doc/classes/Dnsruby/RR.src/M000013.html +10 -8
- data/doc/classes/Dnsruby/RR/ANY.html +1 -1
- data/doc/classes/Dnsruby/RR/CNAME.html +2 -1
- data/doc/classes/Dnsruby/RR/DomainName.html +10 -10
- data/doc/classes/Dnsruby/RR/DomainName.src/{M000051.html → M000050.html} +0 -4
- data/doc/classes/Dnsruby/RR/Generic.html +4 -27
- data/doc/classes/Dnsruby/RR/IN.html +1 -1
- data/doc/classes/Dnsruby/RR/IN/A.html +17 -16
- data/doc/classes/Dnsruby/RR/IN/A.src/{M000025.html → M000017.html} +0 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000018.html +4 -4
- data/doc/classes/Dnsruby/RR/IN/A.src/M000019.html +4 -4
- data/doc/classes/Dnsruby/RR/IN/AAAA.html +2 -1
- data/doc/classes/Dnsruby/RR/IN/SRV.html +43 -48
- data/doc/classes/Dnsruby/RR/IN/SRV.src/{M000022.html → M000014.html} +1 -1
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000015.html +11 -14
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000016.html +7 -11
- data/doc/classes/Dnsruby/RR/IN/WKS.html +5 -5
- data/doc/classes/Dnsruby/RR/IN/WKS.src/{M000021.html → M000020.html} +0 -0
- data/doc/classes/Dnsruby/RR/NS.html +2 -1
- data/doc/classes/Dnsruby/RR/NSAP.html +20 -20
- data/doc/classes/Dnsruby/RR/NSAP.src/{M000060.html → M000052.html} +0 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000053.html +4 -4
- data/doc/classes/Dnsruby/RR/NSAP.src/M000054.html +8 -5
- data/doc/classes/Dnsruby/RR/NSAP.src/M000055.html +16 -7
- data/doc/classes/Dnsruby/RR/RP.html +5 -5
- data/doc/classes/Dnsruby/RR/RP.src/{M000050.html → M000049.html} +0 -0
- data/doc/classes/Dnsruby/RR/SOA.html +6 -3
- data/doc/classes/Dnsruby/RR/SOA.src/M000039.html +1 -1
- data/doc/classes/Dnsruby/RR/SOA.src/M000040.html +1 -1
- data/doc/classes/Dnsruby/RR/TKEY.html +39 -11
- data/doc/classes/Dnsruby/RR/TKEY.src/{M000029.html → M000021.html} +1 -1
- data/doc/classes/Dnsruby/RR/TKEY.src/M000022.html +15 -5
- data/doc/classes/Dnsruby/RR/TKEY.src/M000023.html +7 -15
- data/doc/classes/Dnsruby/RR/TKEY.src/M000024.html +1 -1
- data/doc/classes/Dnsruby/RR/TSIG.html +128 -56
- data/doc/classes/Dnsruby/RR/TSIG.src/M000041.html +24 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000042.html +39 -7
- data/doc/classes/Dnsruby/RR/TSIG.src/M000043.html +110 -48
- data/doc/classes/Dnsruby/RR/TSIG.src/M000044.html +19 -20
- data/doc/classes/Dnsruby/RR/TSIG.src/M000045.html +11 -23
- data/doc/classes/Dnsruby/RR/TSIG.src/M000046.html +22 -17
- data/doc/classes/Dnsruby/RR/TSIG.src/M000047.html +7 -19
- data/doc/classes/Dnsruby/RR/TSIG.src/M000048.html +14 -7
- data/doc/classes/Dnsruby/RRSet.html +39 -39
- data/doc/classes/Dnsruby/RRSet.src/{M000187.html → M000158.html} +0 -0
- data/doc/classes/Dnsruby/RRSet.src/M000159.html +30 -4
- data/doc/classes/Dnsruby/RRSet.src/M000160.html +4 -4
- data/doc/classes/Dnsruby/RRSet.src/M000161.html +5 -29
- data/doc/classes/Dnsruby/RRSet.src/M000162.html +4 -4
- data/doc/classes/Dnsruby/RRSet.src/M000163.html +4 -6
- data/doc/classes/Dnsruby/RRSet.src/M000164.html +4 -4
- data/doc/classes/Dnsruby/Refused.html +6 -0
- data/doc/classes/Dnsruby/Resolv.html +120 -119
- data/doc/classes/Dnsruby/Resolv.src/{M000136.html → M000108.html} +1 -1
- data/doc/classes/Dnsruby/Resolv.src/M000109.html +4 -4
- data/doc/classes/Dnsruby/Resolv.src/M000110.html +4 -4
- data/doc/classes/Dnsruby/Resolv.src/M000111.html +4 -4
- data/doc/classes/Dnsruby/Resolv.src/M000112.html +4 -4
- data/doc/classes/Dnsruby/Resolv.src/M000113.html +4 -4
- data/doc/classes/Dnsruby/Resolv.src/M000114.html +4 -4
- data/doc/classes/Dnsruby/Resolv.src/M000115.html +5 -4
- data/doc/classes/Dnsruby/Resolv.src/M000116.html +6 -5
- data/doc/classes/Dnsruby/Resolv.src/M000117.html +15 -6
- data/doc/classes/Dnsruby/Resolv.src/M000118.html +5 -15
- data/doc/classes/Dnsruby/Resolv.src/M000119.html +6 -5
- data/doc/classes/Dnsruby/Resolv.src/M000120.html +11 -6
- data/doc/classes/Dnsruby/ResolvError.html +6 -0
- data/doc/classes/Dnsruby/ResolvTimeout.html +6 -0
- data/doc/classes/Dnsruby/Resolver.html +292 -179
- data/doc/classes/Dnsruby/Resolver.src/{M000239.html → M000203.html} +1 -1
- data/doc/classes/Dnsruby/Resolver.src/{M000240.html → M000204.html} +2 -2
- data/doc/classes/Dnsruby/Resolver.src/{M000241.html → M000205.html} +1 -1
- data/doc/classes/Dnsruby/{SingleResolver.src/M000153.html → Resolver.src/M000206.html} +2 -2
- data/doc/classes/Dnsruby/{SingleResolver.src/M000154.html → Resolver.src/M000207.html} +8 -6
- data/doc/classes/Dnsruby/Resolver.src/M000208.html +28 -0
- data/doc/classes/Dnsruby/Resolver.src/{M000242.html → M000209.html} +1 -1
- data/doc/classes/Dnsruby/Resolver.src/{M000243.html → M000210.html} +5 -2
- data/doc/classes/Dnsruby/Resolver.src/M000211.html +7 -7
- data/doc/classes/Dnsruby/Resolver.src/M000212.html +8 -7
- data/doc/classes/Dnsruby/Resolver.src/M000213.html +4 -13
- data/doc/classes/Dnsruby/Resolver.src/M000214.html +6 -14
- data/doc/classes/Dnsruby/Resolver.src/M000215.html +5 -4
- data/doc/classes/Dnsruby/Resolver.src/M000216.html +4 -33
- data/doc/classes/Dnsruby/Resolver.src/M000217.html +5 -7
- data/doc/classes/Dnsruby/Resolver.src/M000218.html +5 -8
- data/doc/classes/Dnsruby/Resolver.src/M000219.html +5 -4
- data/doc/classes/Dnsruby/Resolver.src/M000220.html +5 -6
- data/doc/classes/Dnsruby/Resolver.src/M000221.html +4 -4
- data/doc/classes/Dnsruby/Resolver.src/M000222.html +4 -4
- data/doc/classes/Dnsruby/Resolver.src/M000223.html +4 -4
- data/doc/classes/Dnsruby/Resolver.src/M000224.html +4 -4
- data/doc/classes/Dnsruby/Resolver.src/M000225.html +4 -4
- data/doc/classes/Dnsruby/Resolver.src/M000226.html +12 -5
- data/doc/classes/Dnsruby/Resolver.src/M000227.html +4 -5
- data/doc/classes/Dnsruby/Resolver.src/M000228.html +9 -5
- data/doc/classes/Dnsruby/Resolver.src/M000229.html +4 -5
- data/doc/classes/Dnsruby/ServFail.html +6 -0
- data/doc/classes/Dnsruby/SingleResolver.html +182 -77
- data/doc/classes/Dnsruby/SingleResolver.src/{M000149.html → M000121.html} +4 -4
- data/doc/classes/Dnsruby/SingleResolver.src/M000122.html +22 -4
- data/doc/classes/Dnsruby/SingleResolver.src/M000123.html +4 -5
- data/doc/classes/Dnsruby/SingleResolver.src/M000124.html +5 -35
- data/doc/classes/Dnsruby/SingleResolver.src/M000125.html +36 -4
- data/doc/classes/Dnsruby/SingleResolver.src/M000126.html +4 -7
- data/doc/classes/Dnsruby/SingleResolver.src/M000127.html +7 -11
- data/doc/classes/Dnsruby/SingleResolver.src/M000128.html +9 -35
- data/doc/classes/Dnsruby/SingleResolver.src/M000129.html +39 -11
- data/doc/classes/Dnsruby/SingleResolver.src/M000130.html +13 -7
- data/doc/classes/Dnsruby/SingleResolver.src/M000131.html +35 -0
- data/doc/classes/Dnsruby/SingleResolver.src/{M000157.html → M000132.html} +1 -1
- data/doc/classes/Dnsruby/TheLog.html +17 -17
- data/doc/classes/Dnsruby/TheLog.src/{M000188.html → M000182.html} +0 -0
- data/doc/classes/Dnsruby/TheLog.src/{M000190.html → M000183.html} +0 -0
- data/doc/classes/Dnsruby/TheLog.src/{M000191.html → M000184.html} +0 -0
- data/doc/classes/Dnsruby/TheLog.src/{M000189.html → M000185.html} +0 -0
- data/doc/classes/Dnsruby/TheLog.src/{M000217.html → M000186.html} +0 -0
- data/doc/classes/Dnsruby/TheLog.src/{M000218.html → M000187.html} +0 -0
- data/doc/classes/Dnsruby/Update.html +34 -34
- data/doc/classes/Dnsruby/Update.src/{M000219.html → M000185.html} +0 -0
- data/doc/classes/Dnsruby/Update.src/{M000193.html → M000186.html} +0 -1
- data/doc/classes/Dnsruby/Update.src/{M000194.html → M000187.html} +1 -1
- data/doc/classes/Dnsruby/Update.src/M000188.html +32 -0
- data/doc/classes/Dnsruby/Update.src/{M000220.html → M000189.html} +0 -1
- data/doc/classes/Dnsruby/Update.src/{M000221.html → M000190.html} +1 -1
- data/doc/classes/Dnsruby/Update.src/M000191.html +26 -17
- data/doc/classes/Dnsruby/Update.src/M000192.html +19 -17
- data/doc/classes/Dnsruby/ZoneTransfer.html +65 -13
- data/doc/classes/Dnsruby/{CodeMapper.src/M000163.html → ZoneTransfer.src/M000092.html} +4 -4
- data/doc/classes/Dnsruby/ZoneTransfer.src/{M000095.html → M000093.html} +3 -1
- data/doc/classes/Dnsruby/ZoneTransfer.src/{M000103.html → M000094.html} +1 -1
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.html +22 -5
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/{M000104.html → M000095.html} +1 -1
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000096.html +19 -0
- data/doc/created.rid +1 -1
- data/doc/files/lib/Dnsruby/Config_rb.html +1 -1
- data/doc/files/lib/Dnsruby/DNSSEC_rb.html +1 -1
- data/doc/files/lib/Dnsruby/DNS_rb.html +1 -1
- data/doc/files/lib/Dnsruby/Hosts_rb.html +1 -1
- data/doc/files/lib/Dnsruby/Resolver_rb.html +1 -1
- data/doc/files/lib/Dnsruby/SingleResolver_rb.html +1 -1
- data/doc/files/lib/Dnsruby/TheLog_rb.html +1 -1
- data/doc/files/lib/Dnsruby/code_mapper_rb.html +1 -1
- data/doc/files/lib/Dnsruby/event_machine_interface_rb.html +1 -1
- data/doc/files/lib/Dnsruby/ipv4_rb.html +1 -1
- data/doc/files/lib/Dnsruby/ipv6_rb.html +1 -1
- data/doc/files/lib/Dnsruby/message_rb.html +1 -1
- data/doc/files/lib/Dnsruby/name_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/AAAA_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/AFSDB_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/A_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/CERT_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/HINFO_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/IN_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/ISDN_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/LOC_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/MINFO_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/MX_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/NAPTR_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/NSAP_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/OPT_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/PX_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/RP_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/RT_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/SOA_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/SPF_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/SRV_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/TKEY_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/TSIG_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/TXT_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/X25_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/domain_name_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/generic_rb.html +1 -1
- data/doc/files/lib/Dnsruby/resource/resource_rb.html +1 -1
- data/doc/files/lib/Dnsruby/select_thread_rb.html +1 -1
- data/doc/files/lib/Dnsruby/update_rb.html +1 -1
- data/doc/files/lib/Dnsruby/zone_transfer_rb.html +1 -1
- data/doc/files/lib/dnsruby_rb.html +1 -1
- data/doc/fr_class_index.html +0 -2
- data/doc/fr_method_index.html +207 -213
- data/doc/index.html +1 -1
- data/lib/Dnsruby/Config.rb +11 -5
- data/lib/Dnsruby/DNS.rb +97 -50
- data/lib/Dnsruby/Hosts.rb +9 -2
- data/lib/Dnsruby/Resolver.rb +116 -31
- data/lib/Dnsruby/SingleResolver.rb +131 -75
- data/lib/Dnsruby/TheLog.rb +1 -2
- data/lib/Dnsruby/event_machine_interface.rb +9 -9
- data/lib/Dnsruby/ipv4.rb +6 -15
- data/lib/Dnsruby/ipv6.rb +23 -21
- data/lib/Dnsruby/message.rb +141 -56
- data/lib/Dnsruby/name.rb +15 -7
- data/lib/Dnsruby/resource/A.rb +1 -1
- data/lib/Dnsruby/resource/AAAA.rb +1 -1
- data/lib/Dnsruby/resource/IN.rb +5 -5
- data/lib/Dnsruby/resource/MINFO.rb +6 -2
- data/lib/Dnsruby/resource/OPT.rb +76 -19
- data/lib/Dnsruby/resource/SOA.rb +6 -0
- data/lib/Dnsruby/resource/SRV.rb +25 -21
- data/lib/Dnsruby/resource/TKEY.rb +14 -6
- data/lib/Dnsruby/resource/TSIG.rb +367 -120
- data/lib/Dnsruby/resource/domain_name.rb +1 -5
- data/lib/Dnsruby/resource/generic.rb +5 -2
- data/lib/Dnsruby/resource/resource.rb +35 -17
- data/lib/Dnsruby/select_thread.rb +33 -26
- data/lib/Dnsruby/update.rb +3 -4
- data/lib/Dnsruby/zone_transfer.rb +46 -12
- data/lib/dnsruby.rb +56 -44
- data/test/tc_axfr.rb +45 -7
- data/test/tc_dns.rb +1 -2
- data/test/tc_em_deferrable.rb +7 -16
- data/test/tc_escapedchars.rb +5 -21
- data/test/tc_event_machine_deferrable.rb +1 -1
- data/test/tc_event_machine_res.rb +1 -1
- data/test/tc_event_machine_single_res.rb +4 -4
- data/test/tc_event_machine_soak.rb +1 -1
- data/test/tc_packet_unique_push.rb +1 -1
- data/test/tc_question.rb +16 -17
- data/test/tc_res_config.rb +1 -1
- data/test/tc_res_opt.rb +4 -0
- data/test/tc_resolver.rb +0 -1
- data/test/tc_rr-opt.rb +45 -6
- data/test/tc_single_resolver.rb +1 -3
- data/test/tc_soak.rb +1 -5
- data/test/tc_soak_base.rb +1 -1
- data/test/tc_tcp.rb +1 -1
- data/test/tc_tkey.rb +1 -32
- data/test/tc_tsig.rb +196 -0
- data/test/ts_offline.rb +3 -2
- data/test/ts_online.rb +59 -14
- metadata +69 -318
- data/doc/classes/Dnsruby/Classes.src/M000159.html +0 -19
- data/doc/classes/Dnsruby/Classes.src/M000185.html +0 -23
- data/doc/classes/Dnsruby/Classes.src/M000186.html +0 -19
- data/doc/classes/Dnsruby/CodeMapper.src/M000130.html +0 -18
- data/doc/classes/Dnsruby/CodeMapper.src/M000131.html +0 -18
- data/doc/classes/Dnsruby/CodeMapper.src/M000132.html +0 -33
- data/doc/classes/Dnsruby/CodeMapper.src/M000158.html +0 -18
- data/doc/classes/Dnsruby/CodeMapper.src/M000159.html +0 -33
- data/doc/classes/Dnsruby/CodeMapper.src/M000160.html +0 -21
- data/doc/classes/Dnsruby/CodeMapper.src/M000161.html +0 -19
- data/doc/classes/Dnsruby/CodeMapper.src/M000162.html +0 -19
- data/doc/classes/Dnsruby/CodeMapper.src/M000164.html +0 -22
- data/doc/classes/Dnsruby/CodeMapper.src/M000165.html +0 -22
- data/doc/classes/Dnsruby/CodeMapper.src/M000166.html +0 -22
- data/doc/classes/Dnsruby/Config.src/M000108.html +0 -21
- data/doc/classes/Dnsruby/Config.src/M000126.html +0 -19
- data/doc/classes/Dnsruby/Config.src/M000127.html +0 -19
- data/doc/classes/Dnsruby/Config.src/M000128.html +0 -21
- data/doc/classes/Dnsruby/Config.src/M000129.html +0 -21
- data/doc/classes/Dnsruby/Config.src/M000130.html +0 -38
- data/doc/classes/Dnsruby/Config.src/M000131.html +0 -26
- data/doc/classes/Dnsruby/Config.src/M000132.html +0 -22
- data/doc/classes/Dnsruby/Config.src/M000133.html +0 -27
- data/doc/classes/Dnsruby/Config.src/M000134.html +0 -22
- data/doc/classes/Dnsruby/Config.src/M000135.html +0 -21
- data/doc/classes/Dnsruby/DNS.src/M000206.html +0 -28
- data/doc/classes/Dnsruby/DNS.src/M000207.html +0 -19
- data/doc/classes/Dnsruby/DNS.src/M000208.html +0 -20
- data/doc/classes/Dnsruby/DNS.src/M000209.html +0 -41
- data/doc/classes/Dnsruby/DNS.src/M000210.html +0 -32
- data/doc/classes/Dnsruby/DNS.src/M000211.html +0 -50
- data/doc/classes/Dnsruby/DNS.src/M000227.html +0 -20
- data/doc/classes/Dnsruby/DNS.src/M000228.html +0 -19
- data/doc/classes/Dnsruby/DNS.src/M000229.html +0 -20
- data/doc/classes/Dnsruby/DNS.src/M000230.html +0 -18
- data/doc/classes/Dnsruby/DNS.src/M000231.html +0 -19
- data/doc/classes/Dnsruby/DNS.src/M000232.html +0 -20
- data/doc/classes/Dnsruby/DNS.src/M000233.html +0 -28
- data/doc/classes/Dnsruby/DNS.src/M000234.html +0 -19
- data/doc/classes/Dnsruby/DNS.src/M000235.html +0 -20
- data/doc/classes/Dnsruby/DNS.src/M000236.html +0 -41
- data/doc/classes/Dnsruby/DNS.src/M000237.html +0 -32
- data/doc/classes/Dnsruby/DNS.src/M000238.html +0 -50
- data/doc/classes/Dnsruby/DNS/DecodeError.html +0 -111
- data/doc/classes/Dnsruby/DNS/EncodeError.html +0 -111
- data/doc/classes/Dnsruby/EventMachineInterface.html +0 -327
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000105.html +0 -32
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000106.html +0 -25
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000107.html +0 -29
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000108.html +0 -21
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000109.html +0 -35
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000110.html +0 -19
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000111.html +0 -23
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000112.html +0 -18
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000113.html +0 -28
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000114.html +0 -41
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000115.html +0 -28
- data/doc/classes/Dnsruby/EventMachineInterface.src/M000116.html +0 -24
- data/doc/classes/Dnsruby/EventMachineInterface/EmTcpHandler.html +0 -154
- data/doc/classes/Dnsruby/EventMachineInterface/EmTcpHandler.src/M000123.html +0 -20
- data/doc/classes/Dnsruby/EventMachineInterface/EmTcpHandler.src/M000124.html +0 -32
- data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.html +0 -237
- data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000117.html +0 -18
- data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000118.html +0 -19
- data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000119.html +0 -35
- data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000120.html +0 -30
- data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000121.html +0 -19
- data/doc/classes/Dnsruby/EventMachineInterface/EmUdpHandler.src/M000122.html +0 -23
- data/doc/classes/Dnsruby/Header.src/M000199.html +0 -21
- data/doc/classes/Dnsruby/Header.src/M000200.html +0 -20
- data/doc/classes/Dnsruby/Header.src/M000201.html +0 -32
- data/doc/classes/Dnsruby/Header.src/M000202.html +0 -26
- data/doc/classes/Dnsruby/Header.src/M000203.html +0 -47
- data/doc/classes/Dnsruby/Header.src/M000204.html +0 -28
- data/doc/classes/Dnsruby/Header.src/M000205.html +0 -18
- data/doc/classes/Dnsruby/Header.src/M000206.html +0 -18
- data/doc/classes/Dnsruby/Header.src/M000207.html +0 -30
- data/doc/classes/Dnsruby/Hosts.src/M000141.html +0 -20
- data/doc/classes/Dnsruby/Hosts.src/M000142.html +0 -20
- data/doc/classes/Dnsruby/Hosts.src/M000143.html +0 -49
- data/doc/classes/Dnsruby/Hosts.src/M000169.html +0 -20
- data/doc/classes/Dnsruby/Hosts.src/M000170.html +0 -49
- data/doc/classes/Dnsruby/Hosts.src/M000171.html +0 -19
- data/doc/classes/Dnsruby/Hosts.src/M000172.html +0 -20
- data/doc/classes/Dnsruby/Hosts.src/M000173.html +0 -21
- data/doc/classes/Dnsruby/Hosts.src/M000174.html +0 -19
- data/doc/classes/Dnsruby/Hosts.src/M000175.html +0 -20
- data/doc/classes/Dnsruby/IPv4.src/M000149.html +0 -32
- data/doc/classes/Dnsruby/IPv4.src/M000150.html +0 -32
- data/doc/classes/Dnsruby/IPv4.src/M000157.html +0 -18
- data/doc/classes/Dnsruby/IPv4.src/M000177.html +0 -32
- data/doc/classes/Dnsruby/IPv4.src/M000178.html +0 -21
- data/doc/classes/Dnsruby/IPv4.src/M000179.html +0 -18
- data/doc/classes/Dnsruby/IPv4.src/M000180.html +0 -18
- data/doc/classes/Dnsruby/IPv4.src/M000181.html +0 -19
- data/doc/classes/Dnsruby/IPv4.src/M000182.html +0 -18
- data/doc/classes/Dnsruby/IPv4.src/M000183.html +0 -18
- data/doc/classes/Dnsruby/IPv4.src/M000184.html +0 -18
- data/doc/classes/Dnsruby/IPv6.src/M000185.html +0 -21
- data/doc/classes/Dnsruby/IPv6.src/M000186.html +0 -18
- data/doc/classes/Dnsruby/IPv6.src/M000187.html +0 -18
- data/doc/classes/Dnsruby/IPv6.src/M000188.html +0 -18
- data/doc/classes/Dnsruby/IPv6.src/M000209.html +0 -21
- data/doc/classes/Dnsruby/IPv6.src/M000211.html +0 -18
- data/doc/classes/Dnsruby/IPv6.src/M000212.html +0 -21
- data/doc/classes/Dnsruby/IPv6.src/M000213.html +0 -18
- data/doc/classes/Dnsruby/IPv6.src/M000214.html +0 -18
- data/doc/classes/Dnsruby/IPv6.src/M000215.html +0 -18
- data/doc/classes/Dnsruby/Message.src/M000087.html +0 -54
- data/doc/classes/Dnsruby/Message.src/M000088.html +0 -42
- data/doc/classes/Dnsruby/Message.src/M000089.html +0 -45
- data/doc/classes/Dnsruby/Message.src/M000090.html +0 -20
- data/doc/classes/Dnsruby/Message.src/M000091.html +0 -21
- data/doc/classes/Dnsruby/Message.src/M000092.html +0 -20
- data/doc/classes/Dnsruby/Message.src/M000093.html +0 -18
- data/doc/classes/Dnsruby/Message.src/M000094.html +0 -54
- data/doc/classes/Dnsruby/Message.src/M000095.html +0 -42
- data/doc/classes/Dnsruby/Message.src/M000096.html +0 -45
- data/doc/classes/Dnsruby/Name.src/M000062.html +0 -19
- data/doc/classes/Dnsruby/Name.src/M000064.html +0 -22
- data/doc/classes/Dnsruby/Name.src/M000065.html +0 -18
- data/doc/classes/Dnsruby/Name.src/M000066.html +0 -20
- data/doc/classes/Dnsruby/Name.src/M000067.html +0 -18
- data/doc/classes/Dnsruby/Name.src/M000068.html +0 -21
- data/doc/classes/Dnsruby/Name.src/M000069.html +0 -19
- data/doc/classes/Dnsruby/Name.src/M000071.html +0 -22
- data/doc/classes/Dnsruby/Name.src/M000072.html +0 -18
- data/doc/classes/Dnsruby/Name.src/M000073.html +0 -20
- data/doc/classes/Dnsruby/Name/Label.src/M000071.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000072.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000073.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000074.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000079.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000080.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000081.html +0 -18
- data/doc/classes/Dnsruby/Name/Label.src/M000082.html +0 -18
- data/doc/classes/Dnsruby/RR.src/M000014.html +0 -24
- data/doc/classes/Dnsruby/RR.src/M000015.html +0 -18
- data/doc/classes/Dnsruby/RR.src/M000016.html +0 -18
- data/doc/classes/Dnsruby/RR.src/M000017.html +0 -22
- data/doc/classes/Dnsruby/RR.src/M000018.html +0 -22
- data/doc/classes/Dnsruby/RR.src/M000019.html +0 -18
- data/doc/classes/Dnsruby/RR.src/M000020.html +0 -22
- data/doc/classes/Dnsruby/RR.src/M000021.html +0 -24
- data/doc/classes/Dnsruby/RR/DomainName.src/M000058.html +0 -22
- data/doc/classes/Dnsruby/RR/Generic.src/M000041.html +0 -25
- data/doc/classes/Dnsruby/RR/Generic.src/M000048.html +0 -25
- data/doc/classes/Dnsruby/RR/IN/A.src/M000020.html +0 -18
- data/doc/classes/Dnsruby/RR/IN/A.src/M000026.html +0 -18
- data/doc/classes/Dnsruby/RR/IN/A.src/M000027.html +0 -18
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000017.html +0 -22
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000023.html +0 -26
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000024.html +0 -22
- data/doc/classes/Dnsruby/RR/IN/WKS.src/M000028.html +0 -20
- data/doc/classes/Dnsruby/RR/LOC.src/M000032.html +0 -32
- data/doc/classes/Dnsruby/RR/LOC.src/M000033.html +0 -23
- data/doc/classes/Dnsruby/RR/LOC.src/M000034.html +0 -25
- data/doc/classes/Dnsruby/RR/LOC.src/M000035.html +0 -21
- data/doc/classes/Dnsruby/RR/LOC.src/M000036.html +0 -20
- data/doc/classes/Dnsruby/RR/LOC.src/M000037.html +0 -23
- data/doc/classes/Dnsruby/RR/NSAP.src/M000056.html +0 -31
- data/doc/classes/Dnsruby/RR/NSAP.src/M000061.html +0 -19
- data/doc/classes/Dnsruby/RR/NSAP.src/M000062.html +0 -22
- data/doc/classes/Dnsruby/RR/NSAP.src/M000063.html +0 -31
- data/doc/classes/Dnsruby/RR/RP.src/M000057.html +0 -19
- data/doc/classes/Dnsruby/RR/SOA.src/M000046.html +0 -24
- data/doc/classes/Dnsruby/RR/SOA.src/M000047.html +0 -27
- data/doc/classes/Dnsruby/RR/TKEY.src/M000030.html +0 -29
- data/doc/classes/Dnsruby/RR/TKEY.src/M000031.html +0 -30
- data/doc/classes/Dnsruby/RR/TSIG.src/M000049.html +0 -29
- data/doc/classes/Dnsruby/RR/TSIG.src/M000050.html +0 -71
- data/doc/classes/Dnsruby/RR/TSIG.src/M000051.html +0 -34
- data/doc/classes/Dnsruby/RR/TSIG.src/M000052.html +0 -37
- data/doc/classes/Dnsruby/RR/TSIG.src/M000053.html +0 -31
- data/doc/classes/Dnsruby/RR/TSIG.src/M000054.html +0 -34
- data/doc/classes/Dnsruby/RR/TSIG.src/M000055.html +0 -22
- data/doc/classes/Dnsruby/RR/TSIG.src/M000056.html +0 -29
- data/doc/classes/Dnsruby/RR/TXT.src/M000041.html +0 -18
- data/doc/classes/Dnsruby/RR/TXT.src/M000042.html +0 -18
- data/doc/classes/Dnsruby/RR/TXT.src/M000043.html +0 -20
- data/doc/classes/Dnsruby/RR/TXT.src/M000044.html +0 -27
- data/doc/classes/Dnsruby/RR/TXT.src/M000045.html +0 -25
- data/doc/classes/Dnsruby/RR/X25.src/M000038.html +0 -18
- data/doc/classes/Dnsruby/RR/X25.src/M000039.html +0 -18
- data/doc/classes/Dnsruby/RR/X25.src/M000040.html +0 -22
- data/doc/classes/Dnsruby/RRSet.src/M000165.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000166.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000188.html +0 -44
- data/doc/classes/Dnsruby/RRSet.src/M000189.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000190.html +0 -20
- data/doc/classes/Dnsruby/RRSet.src/M000191.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000192.html +0 -18
- data/doc/classes/Dnsruby/RRSet.src/M000193.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000121.html +0 -25
- data/doc/classes/Dnsruby/Resolv.src/M000137.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000138.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000139.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000140.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000141.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000142.html +0 -18
- data/doc/classes/Dnsruby/Resolv.src/M000143.html +0 -19
- data/doc/classes/Dnsruby/Resolv.src/M000144.html +0 -20
- data/doc/classes/Dnsruby/Resolv.src/M000145.html +0 -29
- data/doc/classes/Dnsruby/Resolv.src/M000146.html +0 -19
- data/doc/classes/Dnsruby/Resolv.src/M000147.html +0 -20
- data/doc/classes/Dnsruby/Resolv.src/M000148.html +0 -25
- data/doc/classes/Dnsruby/Resolver.src/M000230.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000231.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000232.html +0 -26
- data/doc/classes/Dnsruby/Resolver.src/M000233.html +0 -18
- data/doc/classes/Dnsruby/Resolver.src/M000234.html +0 -23
- data/doc/classes/Dnsruby/Resolver.src/M000235.html +0 -18
- data/doc/classes/Dnsruby/Resolver.src/M000236.html +0 -42
- data/doc/classes/Dnsruby/Resolver.src/M000244.html +0 -21
- data/doc/classes/Dnsruby/Resolver.src/M000245.html +0 -22
- data/doc/classes/Dnsruby/Resolver.src/M000246.html +0 -18
- data/doc/classes/Dnsruby/Resolver.src/M000247.html +0 -20
- data/doc/classes/Dnsruby/Resolver.src/M000248.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000249.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000250.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000251.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000252.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000253.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000254.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000255.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000256.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000257.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000258.html +0 -19
- data/doc/classes/Dnsruby/Resolver.src/M000259.html +0 -26
- data/doc/classes/Dnsruby/Resolver.src/M000260.html +0 -18
- data/doc/classes/Dnsruby/Resolver.src/M000261.html +0 -23
- data/doc/classes/Dnsruby/Resolver.src/M000262.html +0 -18
- data/doc/classes/Dnsruby/Resolver.src/M000263.html +0 -42
- data/doc/classes/Dnsruby/SelectInterface.html +0 -236
- data/doc/classes/Dnsruby/SelectInterface.src/M000001.html +0 -19
- data/doc/classes/Dnsruby/SelectInterface.src/M000002.html +0 -18
- data/doc/classes/Dnsruby/SelectInterface.src/M000003.html +0 -18
- data/doc/classes/Dnsruby/SelectInterface.src/M000004.html +0 -18
- data/doc/classes/Dnsruby/SelectInterface.src/M000005.html +0 -21
- data/doc/classes/Dnsruby/SelectInterface.src/M000006.html +0 -19
- data/doc/classes/Dnsruby/SelectInterface.src/M000007.html +0 -18
- data/doc/classes/Dnsruby/SingleResolver.src/M000150.html +0 -19
- data/doc/classes/Dnsruby/SingleResolver.src/M000151.html +0 -49
- data/doc/classes/Dnsruby/SingleResolver.src/M000155.html +0 -51
- data/doc/classes/Dnsruby/SingleResolver.src/M000156.html +0 -26
- data/doc/classes/Dnsruby/TheLog.src/M000216.html +0 -20
- data/doc/classes/Dnsruby/Update.src/M000195.html +0 -41
- data/doc/classes/Dnsruby/Update.src/M000196.html +0 -34
- data/doc/classes/Dnsruby/Update.src/M000222.html +0 -41
- data/doc/classes/Dnsruby/Update.src/M000223.html +0 -34
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000096.html +0 -35
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000102.html +0 -22
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000097.html +0 -19
- data/doc/files/lib/Dnsruby/SelectInterface_rb.html +0 -108
data/doc/index.html
CHANGED
data/lib/Dnsruby/Config.rb
CHANGED
@@ -60,6 +60,8 @@ module Dnsruby
|
|
60
60
|
# domain (String)
|
61
61
|
# search (String)
|
62
62
|
# ndots (Fixnum)
|
63
|
+
#
|
64
|
+
# This method should not normally be called by client code.
|
63
65
|
def set_config_info(config_info)
|
64
66
|
parse_config(config_info)
|
65
67
|
end
|
@@ -118,10 +120,14 @@ module Dnsruby
|
|
118
120
|
|
119
121
|
# Set the default domain
|
120
122
|
def domain=(dom)
|
121
|
-
if
|
122
|
-
|
123
|
+
if (dom)
|
124
|
+
if !dom.kind_of?(String)
|
125
|
+
raise ArgumentError.new("invalid domain config: #{@domain.inspect}")
|
126
|
+
end
|
127
|
+
@domain = Name::Label.split(dom)
|
128
|
+
else
|
129
|
+
@domain=nil
|
123
130
|
end
|
124
|
-
@domain = Name::Label.split(dom)
|
125
131
|
end
|
126
132
|
|
127
133
|
# Set ndots
|
@@ -151,7 +157,7 @@ module Dnsruby
|
|
151
157
|
end
|
152
158
|
|
153
159
|
if !@search.kind_of?(Array) ||
|
154
|
-
|
160
|
+
# !@search.all? {|ls| ls.all? {|l| Label::Str === l } }
|
155
161
|
!@search.all? {|ls| ls.all? {|l| Name::Label === l } }
|
156
162
|
raise ArgumentError.new("invalid search config: #{@search.inspect}")
|
157
163
|
end
|
@@ -159,7 +165,7 @@ module Dnsruby
|
|
159
165
|
|
160
166
|
def check_ns(ns) #:nodoc: all
|
161
167
|
if !ns.kind_of?(Array) ||
|
162
|
-
|
168
|
+
!ns.all? {|n| (String === n || IPv4 === n || IPv6 === n)}
|
163
169
|
raise ArgumentError.new("invalid nameserver config: #{ns.inspect}")
|
164
170
|
end
|
165
171
|
ns.each_index do |i|
|
data/lib/Dnsruby/DNS.rb
CHANGED
@@ -17,19 +17,9 @@ require 'Dnsruby/Hosts'
|
|
17
17
|
require 'Dnsruby/Config'
|
18
18
|
require "Dnsruby/Resolver"
|
19
19
|
module Dnsruby
|
20
|
-
#--
|
21
|
-
#@TODO@ Asynchronous interface. Do we want a callback (in a new thread) or a queue system?
|
22
|
-
#Is there any point in taking a block? May as well...
|
23
|
-
#e.g. getaddresses_async(name, Queue|Proc)
|
24
|
-
#Could we make the final argument optional to all the standard calls? So they are either sync or async?
|
25
|
-
#e.g. getaddresses(name{, Queue|Proc})
|
26
|
-
#Yes to all but each_resource - would have to make a new each_resource_async or something...
|
27
|
-
#@TODO@ BUT - need to pass in an ID as well as a queue to identify correct response
|
28
|
-
#Proc can keep track of query ID itself
|
29
|
-
#++
|
30
20
|
|
31
21
|
#== Dnsruby::DNS class
|
32
|
-
#DNS
|
22
|
+
#Resolv::DNS performs DNS queries.
|
33
23
|
#
|
34
24
|
#=== class methods
|
35
25
|
#* Dnsruby::DNS.new(config_info=nil)
|
@@ -80,10 +70,17 @@ module Dnsruby
|
|
80
70
|
#are tried (if there is no timely answer from the first).
|
81
71
|
#
|
82
72
|
#This class uses Resolver to perform the queries.
|
73
|
+
#
|
74
|
+
#Information taken from the following places :
|
75
|
+
#* STD0013
|
76
|
+
#* RFC 1035, etc.
|
77
|
+
#* ftp://ftp.isi.edu/in-notes/iana/assignments/dns-parameters
|
78
|
+
#* etc.
|
83
79
|
class DNS
|
84
|
-
# STD0013 (RFC 1035, etc.)
|
85
|
-
# ftp://ftp.isi.edu/in-notes/iana/assignments/dns-parameters
|
86
80
|
|
81
|
+
#Creates a new DNS resolver. See Resolv::DNS.new for argument details.
|
82
|
+
#
|
83
|
+
#Yields the created DNS resolver to the block, if given, otherwise returns it.
|
87
84
|
def self.open(*args)
|
88
85
|
dns = new(*args)
|
89
86
|
return dns unless block_given?
|
@@ -94,6 +91,7 @@ module Dnsruby
|
|
94
91
|
end
|
95
92
|
end
|
96
93
|
|
94
|
+
#Closes the resolver
|
97
95
|
def close
|
98
96
|
@resolver.close
|
99
97
|
end
|
@@ -103,6 +101,18 @@ module Dnsruby
|
|
103
101
|
return "DNS : " + @config.to_s
|
104
102
|
end
|
105
103
|
|
104
|
+
#Creates a new DNS resolver
|
105
|
+
#
|
106
|
+
#+config_info+ can be:
|
107
|
+
#
|
108
|
+
#* nil:: Uses platform default (e.g. /etc/resolv.conf)
|
109
|
+
#* String:: Path to a file using /etc/resolv.conf's format
|
110
|
+
#* Hash:: Must contain :nameserver, :search and :ndots keys
|
111
|
+
# example :
|
112
|
+
#
|
113
|
+
# Dnsruby::DNS.new({:nameserver => ['210.251.121.21'],
|
114
|
+
# :search => ['ruby-lang.org'],
|
115
|
+
# :ndots => 1})
|
106
116
|
def initialize(config_info=nil)
|
107
117
|
@config = Config.new()
|
108
118
|
@config.set_config_info(config_info)
|
@@ -111,32 +121,56 @@ module Dnsruby
|
|
111
121
|
|
112
122
|
attr_reader :config
|
113
123
|
|
124
|
+
#Gets the first IP address of +name+ from the DNS resolver
|
125
|
+
#
|
126
|
+
#+name+ can be a Dnsruby::Name or a String. Retrieved address will be a
|
127
|
+
#Dnsruby::IPv4 or a Dnsruby::IPv6
|
114
128
|
def getaddress(name)
|
115
129
|
each_address(name) {|address| return address}
|
116
130
|
raise ResolvError.new("DNS result has no information for #{name}")
|
117
131
|
end
|
118
132
|
|
133
|
+
#Gets all IP addresses of +name+ from the DNS resolver
|
134
|
+
#
|
135
|
+
#+name+ can be a Dnsruby::Name or a String. Retrieved address will be a
|
136
|
+
#Dnsruby::IPv4 or a Dnsruby::IPv6
|
119
137
|
def getaddresses(name)
|
120
138
|
ret = []
|
121
139
|
each_address(name) {|address| ret << address}
|
122
140
|
return ret
|
123
141
|
end
|
124
142
|
|
143
|
+
#Iterates over all IP addresses of +name+ retrieved from the DNS resolver
|
144
|
+
#
|
145
|
+
#+name+ can be a Dnsruby::Name or a String. Retrieved address will be a
|
146
|
+
#Dnsruby::IPv4 or a Dnsruby::IPv6
|
125
147
|
def each_address(name)
|
126
148
|
each_resource(name) {|resource| yield resource.address}
|
127
149
|
end
|
128
150
|
|
151
|
+
#Gets the first hostname for +address+ from the DNS resolver
|
152
|
+
#
|
153
|
+
#+address+ must be a Dnsruby::IPv4, Dnsruby::IPv6 or a String. Retrieved
|
154
|
+
#name will be a Dnsruby::Name.
|
129
155
|
def getname(address)
|
130
156
|
each_name(address) {|name| return name}
|
131
157
|
raise ResolvError.new("DNS result has no information for #{address}")
|
132
158
|
end
|
133
159
|
|
160
|
+
#Gets all hostnames for +address+ from the DNS resolver
|
161
|
+
#
|
162
|
+
#+address+ must be a Dnsruby::IPv4, Dnsruby::IPv6 or a String. Retrieved
|
163
|
+
#name will be a Dnsruby::Name.
|
134
164
|
def getnames(address)
|
135
165
|
ret = []
|
136
166
|
each_name(address) {|name| ret << name}
|
137
167
|
return ret
|
138
168
|
end
|
139
169
|
|
170
|
+
#Iterates over all hostnames for +address+ retrieved from the DNS resolver
|
171
|
+
#
|
172
|
+
#+address+ must be a Dnsruby::IPv4, Dnsruby::IPv6 or a String. Retrieved
|
173
|
+
#name will be a Dnsruby::Name.
|
140
174
|
def each_name(address)
|
141
175
|
case address
|
142
176
|
when Name
|
@@ -151,44 +185,38 @@ module Dnsruby
|
|
151
185
|
each_resource(ptr, Types.PTR, Classes.IN) {|resource| yield resource.domainname}
|
152
186
|
end
|
153
187
|
|
188
|
+
#Look up the first +type+, +klass+ resource for +name+
|
189
|
+
#
|
190
|
+
#+type+ defaults to Dnsruby::Types.A
|
191
|
+
#+klass+ defaults to Dnsruby::Classes.IN
|
192
|
+
#
|
193
|
+
#Returned resource is represented as a Dnsruby::RR instance, e.g.
|
194
|
+
#Dnsruby::RR::IN::A
|
154
195
|
def getresource(name, type=Types.A, klass=Classes.IN)
|
155
196
|
each_resource(name, type, klass) {|resource| return resource}
|
156
197
|
raise ResolvError.new("DNS result has no information for #{name}")
|
157
198
|
end
|
158
199
|
|
200
|
+
#Look up all +type+, +klass+ resources for +name+
|
201
|
+
#
|
202
|
+
#+type+ defaults to Dnsruby::Types.A
|
203
|
+
#+klass+ defaults to Dnsruby::Classes.IN
|
204
|
+
#
|
205
|
+
#Returned resource is represented as a Dnsruby::RR instance, e.g.
|
206
|
+
#Dnsruby::RR::IN::A
|
159
207
|
def getresources(name, type=Types.A, klass=Classes.IN)
|
160
208
|
ret = []
|
161
209
|
each_resource(name, type, klass) {|resource| ret << resource}
|
162
210
|
return ret
|
163
211
|
end
|
164
212
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
msg.add_question(candidate, type, klass)
|
173
|
-
@resolver.send_async(msg, q, q)
|
174
|
-
id, ret, exception = q.pop
|
175
|
-
if (exception == nil && ret.header.rcode == RCode.NOERROR)
|
176
|
-
return ret, ret.question[0].qname
|
177
|
-
end
|
178
|
-
# if (ret.kind_of?Message)
|
179
|
-
# exception = ret.header.rcode
|
180
|
-
# if (ret.header.rcode==RCode.NOERROR)
|
181
|
-
# return ret, ret.question[0].qname
|
182
|
-
# end
|
183
|
-
# else
|
184
|
-
# #@TODO@ Keep trying until all the candidates are done
|
185
|
-
# # raise ret
|
186
|
-
# exception = ret
|
187
|
-
# end
|
188
|
-
end
|
189
|
-
raise exception
|
190
|
-
end
|
191
|
-
|
213
|
+
#Iterates over all +type+, +klass+ resources for +name+
|
214
|
+
#
|
215
|
+
#+type+ defaults to Dnsruby::Types.A
|
216
|
+
#+klass+ defaults to Dnsruby::Classes.IN
|
217
|
+
#
|
218
|
+
#Yielded resource is represented as a Dnsruby::RR instance, e.g.
|
219
|
+
#Dnsruby::RR::IN::A
|
192
220
|
def each_resource(name, type=Types.A, klass=Classes.IN, &proc)
|
193
221
|
type = Types.new(type)
|
194
222
|
klass = Classes.new(klass)
|
@@ -203,12 +231,10 @@ module Dnsruby
|
|
203
231
|
else
|
204
232
|
TheLog.error("Unexpected rcode : #{reply.header.rcode.string}")
|
205
233
|
raise Config::OtherResolvError.new(reply_name.to_s)
|
206
|
-
end
|
207
|
-
|
234
|
+
end
|
208
235
|
end
|
209
236
|
|
210
|
-
def extract_resources(msg, name, type, klass)
|
211
|
-
# if type < Types.ANY
|
237
|
+
def extract_resources(msg, name, type, klass) # :nodoc:
|
212
238
|
if type == Types.ANY
|
213
239
|
n0 = Name.create(name)
|
214
240
|
msg.each_answer {|rec|
|
@@ -242,12 +268,33 @@ module Dnsruby
|
|
242
268
|
end
|
243
269
|
}
|
244
270
|
end
|
245
|
-
|
246
|
-
class DecodeError < StandardError
|
247
|
-
end
|
248
271
|
|
249
|
-
|
272
|
+
def send_query(name, type=Types.A, klass=Classes.IN) # :nodoc:
|
273
|
+
candidates = @config.generate_candidates(name)
|
274
|
+
exception = nil
|
275
|
+
candidates.each do |candidate|
|
276
|
+
q = Queue.new
|
277
|
+
msg = Message.new
|
278
|
+
msg.header.rd = 1
|
279
|
+
msg.add_question(candidate, type, klass)
|
280
|
+
@resolver.send_async(msg, q)
|
281
|
+
id, ret, exception = q.pop
|
282
|
+
if (exception == nil && ret.header.rcode == RCode.NOERROR)
|
283
|
+
return ret, ret.question[0].qname
|
284
|
+
end
|
285
|
+
end
|
286
|
+
raise exception
|
250
287
|
end
|
251
|
-
|
288
|
+
|
252
289
|
end
|
253
|
-
end
|
290
|
+
end
|
291
|
+
#--
|
292
|
+
#@TODO@ Asynchronous interface. Do we want a callback (in a new thread) or a queue system?
|
293
|
+
#Is there any point in taking a block? May as well...
|
294
|
+
#e.g. getaddresses_async(name, Queue|Proc)
|
295
|
+
#Could we make the final argument optional to all the standard calls? So they are either sync or async?
|
296
|
+
#e.g. getaddresses(name{, Queue|Proc})
|
297
|
+
#Yes to all but each_resource - would have to make a new each_resource_async or something...
|
298
|
+
#@TODO@ BUT - need to pass in an ID as well as a queue to identify correct response
|
299
|
+
#Proc can keep track of query ID itself
|
300
|
+
#++
|
data/lib/Dnsruby/Hosts.rb
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
#++
|
16
16
|
module Dnsruby
|
17
17
|
#== Dnsruby::Hosts class
|
18
|
-
#hostname resolver
|
18
|
+
#Dnsruby::Hosts is a hostname resolver that uses the system hosts file
|
19
19
|
#
|
20
20
|
#=== class methods
|
21
21
|
#* Dnsruby::Hosts.new(hosts='/etc/hosts')
|
@@ -39,13 +39,14 @@ module Dnsruby
|
|
39
39
|
DefaultFileName = '/etc/hosts'
|
40
40
|
end
|
41
41
|
|
42
|
+
#Creates a new Dnsruby::Hosts using +filename+ for its data source
|
42
43
|
def initialize(filename = DefaultFileName)
|
43
44
|
@filename = filename
|
44
45
|
@mutex = Mutex.new
|
45
46
|
@initialized = nil
|
46
47
|
end
|
47
48
|
|
48
|
-
def lazy_initialize
|
49
|
+
def lazy_initialize# :nodoc:
|
49
50
|
@mutex.synchronize {
|
50
51
|
unless @initialized
|
51
52
|
@name2addr = {}
|
@@ -80,17 +81,20 @@ module Dnsruby
|
|
80
81
|
self
|
81
82
|
end
|
82
83
|
|
84
|
+
#Gets the first IP address for +name+ from the hosts file
|
83
85
|
def getaddress(name)
|
84
86
|
each_address(name) {|address| return address}
|
85
87
|
raise ResolvError.new("#{@filename} has no name: #{name}")
|
86
88
|
end
|
87
89
|
|
90
|
+
#Gets all IP addresses for +name+ from the hosts file
|
88
91
|
def getaddresses(name)
|
89
92
|
ret = []
|
90
93
|
each_address(name) {|address| ret << address}
|
91
94
|
return ret
|
92
95
|
end
|
93
96
|
|
97
|
+
#Iterates over all IP addresses for +name+ retrieved from the hosts file
|
94
98
|
def each_address(name, &proc)
|
95
99
|
lazy_initialize
|
96
100
|
if @name2addr.include?(name)
|
@@ -98,17 +102,20 @@ module Dnsruby
|
|
98
102
|
end
|
99
103
|
end
|
100
104
|
|
105
|
+
#Gets the first hostname of +address+ from the hosts file
|
101
106
|
def getname(address)
|
102
107
|
each_name(address) {|name| return name}
|
103
108
|
raise ResolvError.new("#{@filename} has no address: #{address}")
|
104
109
|
end
|
105
110
|
|
111
|
+
#Gets all hostnames for +address+ from the hosts file
|
106
112
|
def getnames(address)
|
107
113
|
ret = []
|
108
114
|
each_name(address) {|name| ret << name}
|
109
115
|
return ret
|
110
116
|
end
|
111
117
|
|
118
|
+
#Iterates over all hostnames for +address+ retrieved from the hosts file
|
112
119
|
def each_name(address, &proc)
|
113
120
|
lazy_initialize
|
114
121
|
if @addr2name.include?(address)
|
data/lib/Dnsruby/Resolver.rb
CHANGED
@@ -16,18 +16,19 @@
|
|
16
16
|
require "Dnsruby/SingleResolver"
|
17
17
|
module Dnsruby
|
18
18
|
#== Description
|
19
|
-
#
|
19
|
+
#Dnsruby::Resolver is a DNS stub resolver.
|
20
|
+
#This class uses a set of SingleResolvers to perform queries with retries across multiple nameservers.
|
20
21
|
#
|
21
|
-
#
|
22
|
+
#The retry policy is a combination of the Net::DNS and dnsjava approach, and has the option of :
|
22
23
|
#* A total timeout for the query (defaults to 0, meaning "no total timeout")
|
23
24
|
#* A retransmission system that targets the namervers concurrently once the first query round is
|
24
25
|
# complete, but in which the total time per query round is split between the number of nameservers
|
25
26
|
# targetted for the first round. and total time for query round is doubled for each query round
|
26
27
|
#
|
27
|
-
#
|
28
|
-
#
|
28
|
+
# Note that, if a total timeout is specified, then that will apply regardless of the retry policy
|
29
|
+
#(i.e. it may cut retries short).
|
29
30
|
#
|
30
|
-
#
|
31
|
+
# Note also that these timeouts are distinct from the SingleResolver's packet_timeout
|
31
32
|
#
|
32
33
|
#== Methods
|
33
34
|
#
|
@@ -74,7 +75,7 @@ module Dnsruby
|
|
74
75
|
attr_reader :use_tcp
|
75
76
|
|
76
77
|
|
77
|
-
attr_reader :
|
78
|
+
attr_reader :tsig
|
78
79
|
|
79
80
|
# Should truncation be ignored?
|
80
81
|
# i.e. the TC bit is ignored and thus the resolver will not requery over TCP if TC is set
|
@@ -159,7 +160,7 @@ module Dnsruby
|
|
159
160
|
def send_message(message)
|
160
161
|
TheLog.debug("Resolver : sending message")
|
161
162
|
q = Queue.new
|
162
|
-
send_async(message, q
|
163
|
+
send_async(message, q)
|
163
164
|
id, result, error = q.pop
|
164
165
|
TheLog.debug("Resolver : result received")
|
165
166
|
if (error != nil)
|
@@ -170,22 +171,48 @@ module Dnsruby
|
|
170
171
|
end
|
171
172
|
|
172
173
|
|
173
|
-
#
|
174
|
-
#
|
175
|
-
# class Queue) to pass the response back in.
|
174
|
+
#Asynchronously send a Message to the server. The send can be done using just
|
175
|
+
#Dnsruby, or using EventMachine.
|
176
176
|
#
|
177
|
-
|
177
|
+
#== Dnsruby pure Ruby event loop :
|
178
|
+
#
|
179
|
+
#A client_queue is supplied by the client,
|
180
|
+
#along with an optional client_query_id to identify the response. The client_query_id
|
181
|
+
#is generated, if not supplied, and returned to the client.
|
182
|
+
#When the response is known,
|
183
|
+
#a tuple of (query_id, response_message, exception) will be added to the client_queue.
|
184
|
+
#
|
185
|
+
#The query is sent synchronously in the caller's thread. The select thread is then used to
|
186
|
+
#listen for and process the response (up to pushing it to the client_queue). The client thread
|
187
|
+
#is then used to retrieve the response and deal with it.
|
188
|
+
#
|
189
|
+
#Takes :
|
190
|
+
#
|
191
|
+
#* msg - the message to send
|
192
|
+
#* client_queue - a Queue to push the response to, when it arrives
|
193
|
+
#* client_query_id - an optional ID to identify the query to the client
|
194
|
+
#* use_tcp - whether to use TCP (defaults to SingleResolver.use_tcp)
|
178
195
|
#
|
196
|
+
#Returns :
|
179
197
|
#
|
180
|
-
|
198
|
+
#* client_query_id - to identify the query response to the client. This ID is
|
199
|
+
#generated if it is not passed in by the client
|
181
200
|
#
|
201
|
+
#=== Example invocations :
|
202
|
+
#
|
203
|
+
# id = res.send_async(msg, queue)
|
204
|
+
# NOT SUPPORTED : id = res.send_async(msg, queue, use_tcp)
|
205
|
+
# id = res.send_async(msg, queue, id)
|
206
|
+
# id = res.send_async(msg, queue, id, use_tcp)
|
207
|
+
#
|
208
|
+
#=== Example code :
|
209
|
+
#
|
182
210
|
# require 'Dnsruby'
|
183
211
|
# res = Dnsruby::Resolver.new
|
184
212
|
# query_id = 10 # can be any object you like
|
185
213
|
# query_queue = Queue.new
|
186
214
|
# res.send_async(Message.new("example.com", Types.MX), query_queue, query_id)
|
187
|
-
#
|
188
|
-
# res.send_async(Message.new("example.com", Types.A), query_queue, query_id)
|
215
|
+
# query_id_2 = res.send_async(Message.new("example.com", Types.A), query_queue)
|
189
216
|
# # ...do a load of other stuff here...
|
190
217
|
# 2.times do
|
191
218
|
# response_id, response, exception = query_queue.pop
|
@@ -196,7 +223,49 @@ module Dnsruby
|
|
196
223
|
# # deal with problem
|
197
224
|
# end
|
198
225
|
# end
|
199
|
-
#
|
226
|
+
#
|
227
|
+
#== If EventMachine is being used :
|
228
|
+
#
|
229
|
+
#If EventMachine is being used (see Dnsruby::Resolver::use_eventmachine, then this method returns
|
230
|
+
#an EM::Deferrable object. When the response is known, then the Deferrable will complete.
|
231
|
+
#If a queue (and ID) is passed in, then the response will also be
|
232
|
+
#pushed to the Queue. Note that an ID is not automatically generated by this version.
|
233
|
+
#
|
234
|
+
#=== Example invocations :
|
235
|
+
#
|
236
|
+
# deferrable = res.send_async(msg)
|
237
|
+
# deferrable = res.send_async(msg, use_tcp)
|
238
|
+
# deferrable = res.send_async(msg, q, id, use_tcp)
|
239
|
+
#
|
240
|
+
#=== Example code
|
241
|
+
#* Here is an example of using the code in an EventMachine style :
|
242
|
+
#
|
243
|
+
# require 'Dnsruby'
|
244
|
+
# require 'eventmachine'
|
245
|
+
# res = Dnsruby::Resolver.new
|
246
|
+
# Dnsruby::Resolver.use_eventmachine
|
247
|
+
# Dnsruby::Resolver.start_eventmachine_loop(false)
|
248
|
+
# EventMachine::run {
|
249
|
+
# df = res.send_async(Dnsruby::Message.new("example.com"))
|
250
|
+
# df.callback {|msg|
|
251
|
+
# puts "Response : #{msg}"
|
252
|
+
# EM.stop}
|
253
|
+
# df.errback {|msg, err|
|
254
|
+
# puts "Response : #{msg}"
|
255
|
+
# puts "Error: #{err}"
|
256
|
+
# EM.stop}
|
257
|
+
# }
|
258
|
+
#
|
259
|
+
#* And an example in a normal Dnsruby style :
|
260
|
+
#
|
261
|
+
# require 'Dnsruby'
|
262
|
+
# res = Dnsruby::Resolver.new
|
263
|
+
# Dnsruby::Resolver.use_eventmachine
|
264
|
+
# Dnsruby::Resolver.start_eventmachine_loop(true) # default
|
265
|
+
# q = Queue.new
|
266
|
+
# id = res.send_async(Dnsruby::Message.new("example.com"),q)
|
267
|
+
# id, response, error = q.pop
|
268
|
+
#
|
200
269
|
def send_async(*args) # msg, client_queue, client_query_id)
|
201
270
|
if (Resolver.eventmachine?)
|
202
271
|
if (!@resolver_em)
|
@@ -223,7 +292,7 @@ module Dnsruby
|
|
223
292
|
#
|
224
293
|
# * :port
|
225
294
|
# * :use_tcp
|
226
|
-
# * :
|
295
|
+
# * :tsig
|
227
296
|
# * :ignore_truncation
|
228
297
|
# * :src_address
|
229
298
|
# * :src_port
|
@@ -238,6 +307,9 @@ module Dnsruby
|
|
238
307
|
# * :retry_times
|
239
308
|
# * :retry_delay
|
240
309
|
def initialize(*args)
|
310
|
+
@resolver_em = nil
|
311
|
+
@resolver_ruby = nil
|
312
|
+
@src_address = nil
|
241
313
|
reset_attributes
|
242
314
|
|
243
315
|
# Process args
|
@@ -263,7 +335,7 @@ module Dnsruby
|
|
263
335
|
@config = args[0]
|
264
336
|
end
|
265
337
|
else
|
266
|
-
|
338
|
+
# Anything to do?
|
267
339
|
end
|
268
340
|
if (@single_resolvers==[])
|
269
341
|
add_config_nameservers
|
@@ -302,7 +374,7 @@ module Dnsruby
|
|
302
374
|
@port = DefaultPort
|
303
375
|
@udp_size = DefaultUDPSize
|
304
376
|
@use_tcp = false
|
305
|
-
@
|
377
|
+
@tsig = nil
|
306
378
|
@ignore_truncation = false
|
307
379
|
@config = Config.new()
|
308
380
|
@src_addr = '0.0.0.0'
|
@@ -316,7 +388,7 @@ module Dnsruby
|
|
316
388
|
def update #:nodoc: all
|
317
389
|
#Update any resolvers we have with the latest config
|
318
390
|
@single_resolvers.each do |res|
|
319
|
-
[:port, :use_tcp, :
|
391
|
+
[:port, :use_tcp, :tsig, :ignore_truncation, :packet_timeout,
|
320
392
|
:src_address, :src_port, :persistent_tcp, :persistent_udp, :recurse,
|
321
393
|
:udp_size].each do |param|
|
322
394
|
|
@@ -337,6 +409,11 @@ module Dnsruby
|
|
337
409
|
add_config_nameservers
|
338
410
|
end
|
339
411
|
|
412
|
+
#--
|
413
|
+
#@TODO@ Should really auto-generate these methods.
|
414
|
+
#Also, any way to tie them up with SingleResolver RDoc?
|
415
|
+
#++
|
416
|
+
|
340
417
|
def packet_timeout=(t)
|
341
418
|
@packet_timeout = t
|
342
419
|
update
|
@@ -352,8 +429,17 @@ module Dnsruby
|
|
352
429
|
update
|
353
430
|
end
|
354
431
|
|
355
|
-
|
356
|
-
|
432
|
+
#Sets the TSIG to sign outgoing messages with.
|
433
|
+
#Pass in either a Dnsruby::RR::TSIG, or a key_name and key (or just a key)
|
434
|
+
#Pass in nil to stop tsig signing.
|
435
|
+
#It is possible for client code to sign packets prior to sending - see
|
436
|
+
#Dnsruby::RR::TSIG#apply and Dnsruby::Message#sign
|
437
|
+
#Note that pre-signed packets will not be signed by SingleResolver.
|
438
|
+
#* res.tsig=(tsig_rr)
|
439
|
+
#* res.tsig=(key_name, key)
|
440
|
+
#* res.tsig=nil # Stop the resolver from signing
|
441
|
+
def tsig=(t)
|
442
|
+
@tsig=t
|
357
443
|
update
|
358
444
|
end
|
359
445
|
|
@@ -400,7 +486,7 @@ module Dnsruby
|
|
400
486
|
#
|
401
487
|
#Takes a bool to say whether or not to use EventMachine.
|
402
488
|
def Resolver.use_eventmachine(on=true)
|
403
|
-
if (!@@event_machine_available)
|
489
|
+
if (on && !@@event_machine_available)
|
404
490
|
raise RuntimeError.new("EventMachine is not available in this environment!")
|
405
491
|
end
|
406
492
|
@@use_eventmachine = on
|
@@ -552,13 +638,13 @@ module Dnsruby
|
|
552
638
|
df = single_resolver.send_async(msg) # client_queue, client_query_id)
|
553
639
|
persistent_data.to_send-=1
|
554
640
|
df.callback { |answer|
|
555
|
-
TheLog.debug("Response returned
|
641
|
+
TheLog.debug("Response returned")
|
556
642
|
persistent_data.outstanding.delete(df)
|
557
643
|
cancel_queries(persistent_data)
|
558
644
|
return_to_client(persistent_data.deferrable, client_queue, client_query_id, answer, nil)
|
559
645
|
}
|
560
646
|
df.errback { |response, error|
|
561
|
-
TheLog.debug("Error #{error} returned
|
647
|
+
TheLog.debug("Error #{error} returned")
|
562
648
|
persistent_data.outstanding.delete(df)
|
563
649
|
if (response!="cancelling")
|
564
650
|
|
@@ -618,7 +704,6 @@ module Dnsruby
|
|
618
704
|
end
|
619
705
|
|
620
706
|
def return_to_client(deferrable, client_queue, client_query_id, answer, error)
|
621
|
-
TheLog.debug("Returning answer=#{answer}, error=#{error} to client")
|
622
707
|
if (client_queue)
|
623
708
|
client_queue.push([client_query_id, answer, error])
|
624
709
|
end
|
@@ -648,10 +733,11 @@ module Dnsruby
|
|
648
733
|
msg=args[0]
|
649
734
|
client_queue=nil
|
650
735
|
client_query_id=nil
|
651
|
-
|
652
|
-
|
653
|
-
|
736
|
+
client_queue=args[1]
|
737
|
+
if (args.length > 2)
|
738
|
+
client_query_id = args[2]
|
654
739
|
end
|
740
|
+
|
655
741
|
|
656
742
|
# This is the whole point of the Resolver class.
|
657
743
|
# We want to use multiple SingleResolvers to run a query.
|
@@ -664,7 +750,7 @@ module Dnsruby
|
|
664
750
|
|
665
751
|
q = Queue.new
|
666
752
|
if (client_query_id==nil)
|
667
|
-
client_query_id =
|
753
|
+
client_query_id = Time.now + rand(10000)
|
668
754
|
end
|
669
755
|
|
670
756
|
if (!client_queue.kind_of?Queue)
|
@@ -711,7 +797,7 @@ module Dnsruby
|
|
711
797
|
# These are created at the same time in case the parameters change during the life of the query.
|
712
798
|
#
|
713
799
|
# These should be absolute, rather than relative
|
714
|
-
# The first value should be Time.now
|
800
|
+
# The first value should be Time.now[
|
715
801
|
time_now = Time.now
|
716
802
|
timeouts=@parent.generate_timeouts(time_now)
|
717
803
|
return timeouts
|
@@ -732,7 +818,6 @@ module Dnsruby
|
|
732
818
|
# Send the result back to the client, and close the socket for that query by removing
|
733
819
|
# the query from the select thread.
|
734
820
|
def send_result_and_close(client_queue, client_query_id, select_queue, msg, error) #:nodoc: all
|
735
|
-
TheLog.debug("Sending result #{error} to client")
|
736
821
|
# We might still get some callbacks, which we should ignore
|
737
822
|
st = SelectThread.instance
|
738
823
|
st.remove_observer(select_queue, self)
|