Dnsruby 0.6.0 → 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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)
|