Dnsruby 0.5.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/README +34 -0
- data/doc/classes/Dnsruby/Classes.html +197 -0
- data/doc/classes/Dnsruby/Classes.src/M000157.html +23 -0
- data/doc/classes/Dnsruby/Classes.src/M000158.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.html +370 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000130.html +18 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000131.html +33 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000132.html +21 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000133.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000134.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000135.html +18 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000136.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000137.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000138.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000139.html +31 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000140.html +19 -0
- data/doc/classes/Dnsruby/Config.html +410 -0
- data/doc/classes/Dnsruby/Config.src/M000098.html +18 -0
- data/doc/classes/Dnsruby/Config.src/M000099.html +19 -0
- data/doc/classes/Dnsruby/Config.src/M000100.html +19 -0
- data/doc/classes/Dnsruby/Config.src/M000101.html +21 -0
- data/doc/classes/Dnsruby/Config.src/M000102.html +21 -0
- data/doc/classes/Dnsruby/Config.src/M000103.html +38 -0
- data/doc/classes/Dnsruby/Config.src/M000104.html +26 -0
- data/doc/classes/Dnsruby/Config.src/M000105.html +22 -0
- data/doc/classes/Dnsruby/Config.src/M000106.html +23 -0
- data/doc/classes/Dnsruby/Config.src/M000107.html +22 -0
- data/doc/classes/Dnsruby/Config.src/M000108.html +18 -0
- data/doc/classes/Dnsruby/DNS/DecodeError.html +111 -0
- data/doc/classes/Dnsruby/DNS/EncodeError.html +111 -0
- data/doc/classes/Dnsruby/DNS.html +469 -0
- data/doc/classes/Dnsruby/DNS.src/M000196.html +24 -0
- data/doc/classes/Dnsruby/DNS.src/M000197.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000198.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000199.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000200.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000201.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000202.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000203.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000204.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000205.html +28 -0
- data/doc/classes/Dnsruby/DNS.src/M000206.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000207.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000208.html +41 -0
- data/doc/classes/Dnsruby/DNS.src/M000209.html +32 -0
- data/doc/classes/Dnsruby/DNS.src/M000210.html +50 -0
- data/doc/classes/Dnsruby/DNSSEC/Algorithms.html +154 -0
- data/doc/classes/Dnsruby/DNSSEC.html +111 -0
- data/doc/classes/Dnsruby/DecodeError.html +111 -0
- data/doc/classes/Dnsruby/EncodeError.html +111 -0
- data/doc/classes/Dnsruby/FormErr.html +113 -0
- data/doc/classes/Dnsruby/Header.html +516 -0
- data/doc/classes/Dnsruby/Header.src/M000168.html +35 -0
- data/doc/classes/Dnsruby/Header.src/M000169.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000170.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000171.html +21 -0
- data/doc/classes/Dnsruby/Header.src/M000172.html +20 -0
- data/doc/classes/Dnsruby/Header.src/M000173.html +32 -0
- data/doc/classes/Dnsruby/Header.src/M000174.html +26 -0
- data/doc/classes/Dnsruby/Header.src/M000175.html +47 -0
- data/doc/classes/Dnsruby/Header.src/M000176.html +28 -0
- data/doc/classes/Dnsruby/Header.src/M000177.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000178.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000179.html +30 -0
- data/doc/classes/Dnsruby/Hosts.html +305 -0
- data/doc/classes/Dnsruby/Hosts.src/M000141.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000142.html +49 -0
- data/doc/classes/Dnsruby/Hosts.src/M000143.html +19 -0
- data/doc/classes/Dnsruby/Hosts.src/M000144.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000145.html +21 -0
- data/doc/classes/Dnsruby/Hosts.src/M000146.html +19 -0
- data/doc/classes/Dnsruby/Hosts.src/M000147.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000148.html +21 -0
- data/doc/classes/Dnsruby/IPv4.html +298 -0
- data/doc/classes/Dnsruby/IPv4.src/M000149.html +32 -0
- data/doc/classes/Dnsruby/IPv4.src/M000150.html +21 -0
- data/doc/classes/Dnsruby/IPv4.src/M000151.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000152.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000153.html +19 -0
- data/doc/classes/Dnsruby/IPv4.src/M000154.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000155.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000156.html +18 -0
- data/doc/classes/Dnsruby/IPv6.html +318 -0
- data/doc/classes/Dnsruby/IPv6.src/M000180.html +60 -0
- data/doc/classes/Dnsruby/IPv6.src/M000181.html +21 -0
- data/doc/classes/Dnsruby/IPv6.src/M000182.html +22 -0
- data/doc/classes/Dnsruby/IPv6.src/M000183.html +18 -0
- data/doc/classes/Dnsruby/IPv6.src/M000184.html +21 -0
- data/doc/classes/Dnsruby/IPv6.src/M000185.html +18 -0
- data/doc/classes/Dnsruby/IPv6.src/M000186.html +18 -0
- data/doc/classes/Dnsruby/IPv6.src/M000187.html +18 -0
- data/doc/classes/Dnsruby/Message.html +689 -0
- data/doc/classes/Dnsruby/Message.src/M000076.html +34 -0
- data/doc/classes/Dnsruby/Message.src/M000077.html +26 -0
- data/doc/classes/Dnsruby/Message.src/M000078.html +22 -0
- data/doc/classes/Dnsruby/Message.src/M000079.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000080.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000081.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000082.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000083.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000084.html +21 -0
- data/doc/classes/Dnsruby/Message.src/M000085.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000086.html +18 -0
- data/doc/classes/Dnsruby/Message.src/M000087.html +54 -0
- data/doc/classes/Dnsruby/Message.src/M000088.html +42 -0
- data/doc/classes/Dnsruby/Message.src/M000089.html +45 -0
- data/doc/classes/Dnsruby/MetaTypes.html +136 -0
- data/doc/classes/Dnsruby/Modes.html +171 -0
- data/doc/classes/Dnsruby/NXDomain.html +113 -0
- data/doc/classes/Dnsruby/Name/Label.html +300 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000067.html +21 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000068.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000069.html +22 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000070.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000071.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000072.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000073.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000074.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000075.html +18 -0
- data/doc/classes/Dnsruby/Name.html +357 -0
- data/doc/classes/Dnsruby/Name.src/M000057.html +28 -0
- data/doc/classes/Dnsruby/Name.src/M000058.html +20 -0
- data/doc/classes/Dnsruby/Name.src/M000059.html +18 -0
- data/doc/classes/Dnsruby/Name.src/M000060.html +18 -0
- data/doc/classes/Dnsruby/Name.src/M000061.html +21 -0
- data/doc/classes/Dnsruby/Name.src/M000062.html +19 -0
- data/doc/classes/Dnsruby/Name.src/M000064.html +22 -0
- data/doc/classes/Dnsruby/Name.src/M000065.html +18 -0
- data/doc/classes/Dnsruby/Name.src/M000066.html +20 -0
- data/doc/classes/Dnsruby/NotImp.html +113 -0
- data/doc/classes/Dnsruby/OpCode.html +146 -0
- data/doc/classes/Dnsruby/OtherResolvError.html +113 -0
- data/doc/classes/Dnsruby/QTypes.html +146 -0
- data/doc/classes/Dnsruby/Question.html +256 -0
- data/doc/classes/Dnsruby/Question.src/M000166.html +47 -0
- data/doc/classes/Dnsruby/Question.src/M000167.html +18 -0
- data/doc/classes/Dnsruby/RCode.html +211 -0
- data/doc/classes/Dnsruby/RR/ANY.html +133 -0
- data/doc/classes/Dnsruby/RR/CERT/CertificateTypes.html +169 -0
- data/doc/classes/Dnsruby/RR/CERT.html +180 -0
- data/doc/classes/Dnsruby/RR/CNAME.html +150 -0
- data/doc/classes/Dnsruby/RR/DNAME.html +150 -0
- data/doc/classes/Dnsruby/RR/DomainName.html +175 -0
- data/doc/classes/Dnsruby/RR/DomainName.src/M000051.html +22 -0
- data/doc/classes/Dnsruby/RR/Generic.html +156 -0
- data/doc/classes/Dnsruby/RR/Generic.src/M000041.html +25 -0
- data/doc/classes/Dnsruby/RR/HINFO.html +155 -0
- data/doc/classes/Dnsruby/RR/IN/A.html +199 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000018.html +18 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000019.html +18 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000020.html +18 -0
- data/doc/classes/Dnsruby/RR/IN/AAAA.html +138 -0
- data/doc/classes/Dnsruby/RR/IN/AFSDB.html +145 -0
- data/doc/classes/Dnsruby/RR/IN/PX.html +143 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.html +243 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000015.html +29 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000016.html +26 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000017.html +22 -0
- data/doc/classes/Dnsruby/RR/IN/WKS.html +166 -0
- data/doc/classes/Dnsruby/RR/IN/WKS.src/M000021.html +20 -0
- data/doc/classes/Dnsruby/RR/IN.html +155 -0
- data/doc/classes/Dnsruby/RR/ISDN.html +155 -0
- data/doc/classes/Dnsruby/RR/LOC.html +395 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000025.html +32 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000026.html +23 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000027.html +25 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000028.html +21 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000029.html +20 -0
- data/doc/classes/Dnsruby/RR/LOC.src/M000030.html +23 -0
- data/doc/classes/Dnsruby/RR/MB.html +150 -0
- data/doc/classes/Dnsruby/RR/MG.html +150 -0
- data/doc/classes/Dnsruby/RR/MINFO.html +156 -0
- data/doc/classes/Dnsruby/RR/MR.html +150 -0
- data/doc/classes/Dnsruby/RR/MX.html +155 -0
- data/doc/classes/Dnsruby/RR/NAPTR.html +190 -0
- data/doc/classes/Dnsruby/RR/NS.html +150 -0
- data/doc/classes/Dnsruby/RR/NSAP.html +293 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000053.html +19 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000054.html +19 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000055.html +22 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000056.html +31 -0
- data/doc/classes/Dnsruby/RR/PTR.html +132 -0
- data/doc/classes/Dnsruby/RR/RP.html +183 -0
- data/doc/classes/Dnsruby/RR/RP.src/M000050.html +19 -0
- data/doc/classes/Dnsruby/RR/RT.html +155 -0
- data/doc/classes/Dnsruby/RR/SOA.html +230 -0
- data/doc/classes/Dnsruby/RR/SOA.src/M000039.html +24 -0
- data/doc/classes/Dnsruby/RR/SOA.src/M000040.html +27 -0
- data/doc/classes/Dnsruby/RR/SPF.html +138 -0
- data/doc/classes/Dnsruby/RR/TKEY.html +285 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000022.html +19 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000023.html +29 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000024.html +30 -0
- data/doc/classes/Dnsruby/RR/TSIG.html +416 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000042.html +22 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000043.html +71 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000044.html +34 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000045.html +37 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000046.html +31 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000047.html +34 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000048.html +22 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000049.html +29 -0
- data/doc/classes/Dnsruby/RR/TXT.html +233 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000034.html +18 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000035.html +18 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000036.html +20 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000037.html +27 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000038.html +25 -0
- data/doc/classes/Dnsruby/RR/X25.html +203 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000031.html +18 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000032.html +18 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000033.html +22 -0
- data/doc/classes/Dnsruby/RR.html +620 -0
- data/doc/classes/Dnsruby/RR.src/M000001.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000002.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000003.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000004.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000005.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000006.html +36 -0
- data/doc/classes/Dnsruby/RR.src/M000007.html +100 -0
- data/doc/classes/Dnsruby/RR.src/M000008.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000009.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000010.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000011.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000012.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000013.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000014.html +24 -0
- data/doc/classes/Dnsruby/RRSet.html +257 -0
- data/doc/classes/Dnsruby/RRSet.src/M000159.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000160.html +44 -0
- data/doc/classes/Dnsruby/RRSet.src/M000161.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000162.html +20 -0
- data/doc/classes/Dnsruby/RRSet.src/M000163.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000164.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000165.html +18 -0
- data/doc/classes/Dnsruby/Refused.html +113 -0
- data/doc/classes/Dnsruby/Resolv.html +400 -0
- data/doc/classes/Dnsruby/Resolv.src/M000109.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000110.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000111.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000112.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000113.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000114.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000115.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000116.html +19 -0
- data/doc/classes/Dnsruby/Resolv.src/M000117.html +20 -0
- data/doc/classes/Dnsruby/Resolv.src/M000118.html +29 -0
- data/doc/classes/Dnsruby/Resolv.src/M000119.html +19 -0
- data/doc/classes/Dnsruby/Resolv.src/M000120.html +20 -0
- data/doc/classes/Dnsruby/Resolv.src/M000121.html +25 -0
- data/doc/classes/Dnsruby/ResolvError.html +111 -0
- data/doc/classes/Dnsruby/ResolvTimeout.html +111 -0
- data/doc/classes/Dnsruby/Resolver.html +807 -0
- data/doc/classes/Dnsruby/Resolver.src/M000211.html +21 -0
- data/doc/classes/Dnsruby/Resolver.src/M000212.html +37 -0
- data/doc/classes/Dnsruby/Resolver.src/M000213.html +64 -0
- data/doc/classes/Dnsruby/Resolver.src/M000214.html +23 -0
- data/doc/classes/Dnsruby/Resolver.src/M000215.html +46 -0
- data/doc/classes/Dnsruby/Resolver.src/M000216.html +21 -0
- data/doc/classes/Dnsruby/Resolver.src/M000217.html +22 -0
- data/doc/classes/Dnsruby/Resolver.src/M000218.html +18 -0
- data/doc/classes/Dnsruby/Resolver.src/M000219.html +20 -0
- data/doc/classes/Dnsruby/Resolver.src/M000220.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000221.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000222.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000223.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000224.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000225.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000226.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000227.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000228.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000229.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000230.html +19 -0
- data/doc/classes/Dnsruby/ServFail.html +113 -0
- data/doc/classes/Dnsruby/SingleResolver.html +496 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000122.html +18 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000123.html +19 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000124.html +49 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000125.html +18 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000126.html +21 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000127.html +25 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000128.html +78 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000129.html +21 -0
- data/doc/classes/Dnsruby/TheLog.html +196 -0
- data/doc/classes/Dnsruby/TheLog.src/M000188.html +20 -0
- data/doc/classes/Dnsruby/TheLog.src/M000189.html +20 -0
- data/doc/classes/Dnsruby/TheLog.src/M000190.html +20 -0
- data/doc/classes/Dnsruby/Types.html +426 -0
- data/doc/classes/Dnsruby/Update.html +368 -0
- data/doc/classes/Dnsruby/Update.src/M000191.html +32 -0
- data/doc/classes/Dnsruby/Update.src/M000192.html +37 -0
- data/doc/classes/Dnsruby/Update.src/M000193.html +32 -0
- data/doc/classes/Dnsruby/Update.src/M000194.html +41 -0
- data/doc/classes/Dnsruby/Update.src/M000195.html +34 -0
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.html +183 -0
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000097.html +19 -0
- data/doc/classes/Dnsruby/ZoneTransfer.html +248 -0
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000095.html +22 -0
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000096.html +35 -0
- data/doc/classes/Dnsruby.html +388 -0
- data/doc/created.rid +1 -0
- data/doc/files/lib/Dnsruby/Config_rb.html +101 -0
- data/doc/files/lib/Dnsruby/DNSSEC_rb.html +101 -0
- data/doc/files/lib/Dnsruby/DNS_rb.html +110 -0
- data/doc/files/lib/Dnsruby/Hosts_rb.html +108 -0
- data/doc/files/lib/Dnsruby/Resolver_rb.html +108 -0
- data/doc/files/lib/Dnsruby/SingleResolver_rb.html +108 -0
- data/doc/files/lib/Dnsruby/TheLog_rb.html +110 -0
- data/doc/files/lib/Dnsruby/code_mapper_rb.html +101 -0
- data/doc/files/lib/Dnsruby/ipv4_rb.html +101 -0
- data/doc/files/lib/Dnsruby/ipv6_rb.html +101 -0
- data/doc/files/lib/Dnsruby/message_rb.html +109 -0
- data/doc/files/lib/Dnsruby/name_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/AAAA_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/AFSDB_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/A_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/CERT_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/HINFO_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/IN_rb.html +112 -0
- data/doc/files/lib/Dnsruby/resource/ISDN_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/LOC_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/MINFO_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/MX_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NAPTR_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NSAP_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/OPT_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/PX_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/RP_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/RT_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/SOA_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/SPF_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/SRV_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/TKEY_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/TSIG_rb.html +110 -0
- data/doc/files/lib/Dnsruby/resource/TXT_rb.html +108 -0
- data/doc/files/lib/Dnsruby/resource/X25_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/domain_name_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/generic_rb.html +125 -0
- data/doc/files/lib/Dnsruby/resource/resource_rb.html +110 -0
- data/doc/files/lib/Dnsruby/select_thread_rb.html +111 -0
- data/doc/files/lib/Dnsruby/update_rb.html +101 -0
- data/doc/files/lib/Dnsruby/zone_transfer_rb.html +101 -0
- data/doc/files/lib/dnsruby_rb.html +118 -0
- data/doc/fr_class_index.html +102 -0
- data/doc/fr_file_index.html +68 -0
- data/doc/fr_method_index.html +256 -0
- data/doc/index.html +24 -0
- data/lib/Dnsruby/Config.rb +350 -0
- data/lib/Dnsruby/DNS.rb +253 -0
- data/lib/Dnsruby/DNSSEC.rb +29 -0
- data/lib/Dnsruby/Hosts.rb +119 -0
- data/lib/Dnsruby/Resolver.rb +618 -0
- data/lib/Dnsruby/SingleResolver.rb +312 -0
- data/lib/Dnsruby/TheLog.rb +61 -0
- data/lib/Dnsruby/code_mapper.rb +164 -0
- data/lib/Dnsruby/ipv4.rb +83 -0
- data/lib/Dnsruby/ipv6.rb +142 -0
- data/lib/Dnsruby/message.rb +819 -0
- data/lib/Dnsruby/name.rb +325 -0
- data/lib/Dnsruby/resource/A.rb +56 -0
- data/lib/Dnsruby/resource/AAAA.rb +54 -0
- data/lib/Dnsruby/resource/AFSDB.rb +68 -0
- data/lib/Dnsruby/resource/CERT.rb +89 -0
- data/lib/Dnsruby/resource/HINFO.rb +52 -0
- data/lib/Dnsruby/resource/IN.rb +69 -0
- data/lib/Dnsruby/resource/ISDN.rb +54 -0
- data/lib/Dnsruby/resource/LOC.rb +255 -0
- data/lib/Dnsruby/resource/MINFO.rb +66 -0
- data/lib/Dnsruby/resource/MX.rb +66 -0
- data/lib/Dnsruby/resource/NAPTR.rb +90 -0
- data/lib/Dnsruby/resource/NSAP.rb +172 -0
- data/lib/Dnsruby/resource/OPT.rb +153 -0
- data/lib/Dnsruby/resource/PX.rb +71 -0
- data/lib/Dnsruby/resource/RP.rb +67 -0
- data/lib/Dnsruby/resource/RT.rb +67 -0
- data/lib/Dnsruby/resource/SOA.rb +89 -0
- data/lib/Dnsruby/resource/SPF.rb +29 -0
- data/lib/Dnsruby/resource/SRV.rb +108 -0
- data/lib/Dnsruby/resource/TKEY.rb +160 -0
- data/lib/Dnsruby/resource/TSIG.rb +328 -0
- data/lib/Dnsruby/resource/TXT.rb +76 -0
- data/lib/Dnsruby/resource/X25.rb +53 -0
- data/lib/Dnsruby/resource/domain_name.rb +58 -0
- data/lib/Dnsruby/resource/generic.rb +142 -0
- data/lib/Dnsruby/resource/resource.rb +444 -0
- data/lib/Dnsruby/select_thread.rb +474 -0
- data/lib/Dnsruby/update.rb +263 -0
- data/lib/Dnsruby/zone_transfer.rb +296 -0
- data/lib/dnsruby.rb +468 -0
- data/test/custom.txt +4 -0
- data/test/resolv.conf +4 -0
- data/test/tc_axfr.rb +42 -0
- data/test/tc_dns.rb +231 -0
- data/test/tc_dnsruby.rb +42 -0
- data/test/tc_escapedchars.rb +510 -0
- data/test/tc_header.rb +104 -0
- data/test/tc_misc.rb +139 -0
- data/test/tc_name.rb +53 -0
- data/test/tc_packet.rb +158 -0
- data/test/tc_packet_unique_push.rb +102 -0
- data/test/tc_question.rb +52 -0
- data/test/tc_res_config.rb +92 -0
- data/test/tc_res_env.rb +62 -0
- data/test/tc_res_file.rb +42 -0
- data/test/tc_res_opt.rb +185 -0
- data/test/tc_resolver.rb +177 -0
- data/test/tc_rr-opt.rb +42 -0
- data/test/tc_rr-txt.rb +137 -0
- data/test/tc_rr-unknown.rb +99 -0
- data/test/tc_rr.rb +259 -0
- data/test/tc_single_resolver.rb +153 -0
- data/test/tc_soak.rb +310 -0
- data/test/tc_tcp.rb +35 -0
- data/test/tc_tkey.rb +106 -0
- data/test/tc_update.rb +215 -0
- data/test/ts_dnsruby.rb +17 -0
- data/test/ts_offline.rb +35 -0
- data/test/ts_online.rb +40 -0
- metadata +512 -0
data/lib/dnsruby.rb
ADDED
|
@@ -0,0 +1,468 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
require 'Dnsruby/TheLog'
|
|
17
|
+
require 'Dnsruby/code_mapper'
|
|
18
|
+
require 'Dnsruby/ipv4'
|
|
19
|
+
require 'Dnsruby/ipv6'
|
|
20
|
+
require 'timeout'
|
|
21
|
+
#--
|
|
22
|
+
#@TODO@ Add to this with ideas from DNS.rb?
|
|
23
|
+
#++
|
|
24
|
+
#= Dnsruby library
|
|
25
|
+
#Dnsruby is a resolver library written in Ruby.
|
|
26
|
+
#
|
|
27
|
+
#It is based on resolv.rb, the standard Ruby DNS implementation,
|
|
28
|
+
#but gives a complete DNS implementation complying with all relevant
|
|
29
|
+
#RFCs.
|
|
30
|
+
#
|
|
31
|
+
#The Resolv class can be used to resolve addresses using /etc/hosts and /etc/resolv.conf,
|
|
32
|
+
#or the DNS class can be used to make DNS queries. These interfaces will attempt to apply
|
|
33
|
+
#the default domain and searchlist when resolving names.
|
|
34
|
+
#
|
|
35
|
+
#The Resolver and SingleResolver interfaces allow finer control of individual messages.
|
|
36
|
+
#The Resolver class sends queries to multiple resolvers using various retry mechanisms.
|
|
37
|
+
#The SingleResolver class is used by Resolver to send individual Messages to individual
|
|
38
|
+
#resolvers.
|
|
39
|
+
#
|
|
40
|
+
#Resolver queries return Dnsruby::Message objects. Message objects have five
|
|
41
|
+
#sections:
|
|
42
|
+
#
|
|
43
|
+
# * The header section, a Dnsruby::Header object.
|
|
44
|
+
#
|
|
45
|
+
# * The question section, a list of Dnsruby::Question objects.
|
|
46
|
+
#
|
|
47
|
+
# * The answer section, a list of Dnsruby::Resource objects.
|
|
48
|
+
#
|
|
49
|
+
# * The authority section, a list of Dnsruby::Resource objects.
|
|
50
|
+
#
|
|
51
|
+
# * The additional section, a list of Dnsruby::Resource objects.
|
|
52
|
+
#
|
|
53
|
+
#
|
|
54
|
+
#== example
|
|
55
|
+
# p Dnsruby::Resolv.getaddress("www.ruby-lang.org")
|
|
56
|
+
# p Dnsruby::Resolv.getname("210.251.121.214")
|
|
57
|
+
#
|
|
58
|
+
# Dnsruby::DNS.open {|dns|
|
|
59
|
+
# p dns.getresources("www.ruby-lang.org", Dnsruby::Types.A).collect {|r| r.address}
|
|
60
|
+
# p dns.getresources("ruby-lang.org", 'MX').collect {|r| [r.exchange.to_s, r.preference]}
|
|
61
|
+
# }
|
|
62
|
+
#
|
|
63
|
+
#== exceptions
|
|
64
|
+
#
|
|
65
|
+
# * ResolvError < StandardError
|
|
66
|
+
#
|
|
67
|
+
# * ResolvTimeout < TimeoutError
|
|
68
|
+
#
|
|
69
|
+
# * NXDomain < ResolvError
|
|
70
|
+
#
|
|
71
|
+
# * OtherResolvError < ResolvError
|
|
72
|
+
#
|
|
73
|
+
#
|
|
74
|
+
#== Bugs
|
|
75
|
+
#* NIS is not supported.
|
|
76
|
+
#* /etc/nsswitch.conf is not supported.
|
|
77
|
+
#* IPv6 is not supported.
|
|
78
|
+
module Dnsruby
|
|
79
|
+
class OpCode < CodeMapper
|
|
80
|
+
Query = 0 # RFC 1035
|
|
81
|
+
IQuery = 1 # RFC 1035
|
|
82
|
+
Status = 2 # RFC 1035
|
|
83
|
+
Notify = 4 # RFC 1996
|
|
84
|
+
Update = 5 # RFC 2136
|
|
85
|
+
|
|
86
|
+
update()
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
class RCode < CodeMapper
|
|
90
|
+
NOERROR = 0 # RFC 1035
|
|
91
|
+
FORMERR = 1 # RFC 1035
|
|
92
|
+
SERVFAIL = 2 # RFC 1035
|
|
93
|
+
NXDOMAIN = 3 # RFC 1035
|
|
94
|
+
NOTIMP = 4 # RFC 1035
|
|
95
|
+
REFUSED = 5 # RFC 1035
|
|
96
|
+
YXDOMAIN = 6 # RFC 2136
|
|
97
|
+
YXRRSET = 7 # RFC 2136
|
|
98
|
+
NXRRSET = 8 # RFC 2136
|
|
99
|
+
NOTAUTH = 9 # RFC 2136
|
|
100
|
+
NOTZONE = 10 # RFC 2136
|
|
101
|
+
|
|
102
|
+
BADVERS = 16
|
|
103
|
+
BADSIG = 16
|
|
104
|
+
BADKEY = 17
|
|
105
|
+
BADTIME = 18
|
|
106
|
+
BADMODE = 19
|
|
107
|
+
BADNAME = 20
|
|
108
|
+
BADALG = 21
|
|
109
|
+
|
|
110
|
+
update()
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
class Classes < CodeMapper
|
|
114
|
+
IN = 1 # RFC 1035
|
|
115
|
+
CH = 3 # RFC 1035
|
|
116
|
+
# CHAOS = 3 # RFC 1035
|
|
117
|
+
HS = 4 # RFC 1035
|
|
118
|
+
# HESIOD = 4 # RFC 1035
|
|
119
|
+
NONE = 254 # RFC 2136
|
|
120
|
+
ANY = 255 # RFC 1035
|
|
121
|
+
update()
|
|
122
|
+
|
|
123
|
+
def unknown_string(arg)
|
|
124
|
+
if (arg=~/^CLASS/i)
|
|
125
|
+
Classes.add_pair(arg, arg.gsub('CLASS', '').to_i)
|
|
126
|
+
set_string(arg)
|
|
127
|
+
else
|
|
128
|
+
raise ArgumentError.new("String #{arg} not a member of #{self.class}")
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
def unknown_code(arg)
|
|
133
|
+
Classes.add_pair('CLASS' + arg.to_s, arg)
|
|
134
|
+
set_code(arg)
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# classesbyval and classesbyname functions are wrappers around the
|
|
138
|
+
# similarly named hashes. They are used for 'unknown' DNS RR classess
|
|
139
|
+
# (RFC3597)
|
|
140
|
+
# See typesbyval and typesbyname, these beasts have the same functionality
|
|
141
|
+
def Classes.classesbyname(name) #:nodoc: all
|
|
142
|
+
name.upcase!;
|
|
143
|
+
if to_code(name)
|
|
144
|
+
return to_code(name)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
if ((name =~/^\s*CLASS(\d+)\s*$/o) == nil)
|
|
148
|
+
raise ArgumentError, "classesbyval() argument is not CLASS### (#{name})"
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
val = $1.to_i
|
|
152
|
+
if val > 0xffff
|
|
153
|
+
raise ArgumentError, 'classesbyval() argument larger than ' + 0xffff
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
return val;
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
def Classes.classesbyval(val) #:nodoc: all
|
|
162
|
+
if (val.class == String)
|
|
163
|
+
if ((val =~ /^\s*0*([0-9]+)\s*$/) == nil)
|
|
164
|
+
raise ArgumentError, "classesbybal() argument is not numeric (#{val})" # unless val.gsub!("^\s*0*([0-9]+)\s*$", "$1")
|
|
165
|
+
# val =~ s/^\s*0*([0-9]+)\s*$/$1/o;#
|
|
166
|
+
end
|
|
167
|
+
val = $1.to_i
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
return to_string(val) if to_string(val)
|
|
171
|
+
|
|
172
|
+
raise ArgumentError, 'classesbyval() argument larger than ' + 0xffff if val > 0xffff;
|
|
173
|
+
|
|
174
|
+
return "CLASS#{val}";
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# The RR types explicitly supported by Dnsruby.
|
|
179
|
+
#
|
|
180
|
+
# New RR types should be added to this set
|
|
181
|
+
class Types < CodeMapper
|
|
182
|
+
SIGZERO = 0 # RFC2931 consider this a pseudo type
|
|
183
|
+
A = 1 # RFC 1035, Section 3.4.1
|
|
184
|
+
NS = 2 # RFC 1035, Section 3.3.11
|
|
185
|
+
MD = 3 # RFC 1035, Section 3.3.4 (obsolete)
|
|
186
|
+
MF = 4 # RFC 1035, Section 3.3.5 (obsolete)
|
|
187
|
+
CNAME = 5 # RFC 1035, Section 3.3.1
|
|
188
|
+
SOA = 6 # RFC 1035, Section 3.3.13
|
|
189
|
+
MB = 7 # RFC 1035, Section 3.3.3
|
|
190
|
+
MG = 8 # RFC 1035, Section 3.3.6
|
|
191
|
+
MR = 9 # RFC 1035, Section 3.3.8
|
|
192
|
+
NULL = 10 # RFC 1035, Section 3.3.10
|
|
193
|
+
WKS = 11 # RFC 1035, Section 3.4.2 (deprecated)
|
|
194
|
+
PTR = 12 # RFC 1035, Section 3.3.12
|
|
195
|
+
HINFO = 13 # RFC 1035, Section 3.3.2
|
|
196
|
+
MINFO = 14 # RFC 1035, Section 3.3.7
|
|
197
|
+
MX = 15 # RFC 1035, Section 3.3.9
|
|
198
|
+
TXT = 16 # RFC 1035, Section 3.3.14
|
|
199
|
+
RP = 17 # RFC 1183, Section 2.2
|
|
200
|
+
AFSDB = 18 # RFC 1183, Section 1
|
|
201
|
+
X25 = 19 # RFC 1183, Section 3.1
|
|
202
|
+
ISDN = 20 # RFC 1183, Section 3.2
|
|
203
|
+
RT = 21 # RFC 1183, Section 3.3
|
|
204
|
+
NSAP = 22 # RFC 1706, Section 5
|
|
205
|
+
NSAP_PTR = 23 # RFC 1348 (obsolete)
|
|
206
|
+
SIG = 24 # RFC 2535, Section 4.1
|
|
207
|
+
KEY = 25 # RFC 2535, Section 3.1
|
|
208
|
+
PX = 26 # RFC 2163,
|
|
209
|
+
GPOS = 27 # RFC 1712 (obsolete)
|
|
210
|
+
AAAA = 28 # RFC 1886, Section 2.1
|
|
211
|
+
LOC = 29 # RFC 1876
|
|
212
|
+
NXT = 30 # RFC 2535, Section 5.2 obsoleted by RFC3755
|
|
213
|
+
EID = 31 # draft-ietf-nimrod-dns-xx.txt
|
|
214
|
+
NIMLOC = 32 # draft-ietf-nimrod-dns-xx.txt
|
|
215
|
+
SRV = 33 # RFC 2052
|
|
216
|
+
ATMA = 34 # ???
|
|
217
|
+
NAPTR = 35 # RFC 2168
|
|
218
|
+
KX = 36 # RFC 2230
|
|
219
|
+
CERT = 37 # RFC 2538
|
|
220
|
+
DNAME = 39 # RFC 2672
|
|
221
|
+
OPT = 41 # RFC 2671
|
|
222
|
+
DS = 43 # RFC 4034
|
|
223
|
+
SSHFP = 44 # draft-ietf-secsh-dns (No RFC yet at time of coding)
|
|
224
|
+
IPSECKEY = 45 # RFC 4025
|
|
225
|
+
RRSIG = 46 # RFC 4034
|
|
226
|
+
NSEC = 47 # RFC 4034
|
|
227
|
+
DNSKEY = 48 # RFC 4034
|
|
228
|
+
DHCID = 49 # RFC 4701
|
|
229
|
+
SPF = 99 # rfc-schlitt-spf-classic-o2 (No RFC yet at time of coding)
|
|
230
|
+
UINFO = 100 # non-standard
|
|
231
|
+
UID = 101 # non-standard
|
|
232
|
+
GID = 102 # non-standard
|
|
233
|
+
UNSPEC = 103 # non-standard
|
|
234
|
+
TKEY = 249 # RFC 2930
|
|
235
|
+
TSIG = 250 # RFC 2931
|
|
236
|
+
IXFR = 251 # RFC 1995
|
|
237
|
+
AXFR = 252 # RFC 1035
|
|
238
|
+
MAILB = 253 # RFC 1035 (MB, MG, MR)
|
|
239
|
+
MAILA = 254 # RFC 1035 (obsolete - see MX)
|
|
240
|
+
ANY = 255 # RFC 1035
|
|
241
|
+
update()
|
|
242
|
+
|
|
243
|
+
def unknown_string(arg) #:nodoc: all
|
|
244
|
+
if (arg=~/^TYPE/i)
|
|
245
|
+
Types.add_pair(arg, arg.gsub('TYPE', '').to_i)
|
|
246
|
+
set_string(arg)
|
|
247
|
+
else
|
|
248
|
+
raise ArgumentError.new("String #{arg} not a member of #{self.class}")
|
|
249
|
+
end
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
def unknown_code(arg) #:nodoc: all
|
|
253
|
+
Types.add_pair('TYPE' + arg.to_s, arg)
|
|
254
|
+
set_code(arg)
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
#--
|
|
258
|
+
# typesbyval and typesbyname functions are wrappers around the similarly named
|
|
259
|
+
# hashes. They are used for 'unknown' DNS RR types (RFC3597)
|
|
260
|
+
# typesbyname returns they TYPEcode as a function of the TYPE
|
|
261
|
+
# mnemonic. If the TYPE mapping is not specified the generic mnemonic
|
|
262
|
+
# TYPE### is returned.
|
|
263
|
+
def Types.typesbyname(name) #:nodoc: all
|
|
264
|
+
name.upcase!
|
|
265
|
+
|
|
266
|
+
if to_code(name)
|
|
267
|
+
return to_code(name)
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
if ((name =~/^\s*TYPE(\d+)\s*$/o)==nil)
|
|
272
|
+
raise ArgumentError, "Net::DNS::typesbyname() argument (#{name}) is not TYPE###"
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
val = $1.to_i
|
|
276
|
+
if val > 0xffff
|
|
277
|
+
raise ArgumentError, 'Net::DNS::typesbyname() argument larger than ' + 0xffff
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
return val;
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
# typesbyval returns they TYPE mnemonic as a function of the TYPE
|
|
285
|
+
# code. If the TYPE mapping is not specified the generic mnemonic
|
|
286
|
+
# TYPE### is returned.
|
|
287
|
+
def Types.typesbyval(val) #:nodoc: all
|
|
288
|
+
if (!defined?val)
|
|
289
|
+
raise ArgumentError, "Net::DNS::typesbyval() argument is not defined"
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
if val.class == String
|
|
293
|
+
# if val.gsub!("^\s*0*(\d+)\s*$", "$1")
|
|
294
|
+
if ((val =~ /^\s*0*(\d+)\s*$", "$1/o) == nil)
|
|
295
|
+
raise ArgumentError, "Net::DNS::typesbyval() argument (#{val}) is not numeric"
|
|
296
|
+
# val =~s/^\s*0*(\d+)\s*$/$1/o;
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
val = $1.to_i
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
if to_string(val)
|
|
304
|
+
return to_string(val)
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
raise ArgumentError, 'Net::DNS::typesbyval() argument larger than ' + 0xffff if
|
|
308
|
+
val > 0xffff;
|
|
309
|
+
|
|
310
|
+
return "TYPE#{val}";
|
|
311
|
+
end
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
class QTypes < CodeMapper
|
|
315
|
+
IXFR = 251 # incremental transfer [RFC1995]
|
|
316
|
+
AXFR = 252 # transfer of an entire zone [RFC1035]
|
|
317
|
+
MAILB = 253 # mailbox-related RRs (MB, MG or MR) [RFC1035]
|
|
318
|
+
MAILA = 254 # mail agent RRs (Obsolete - see MX) [RFC1035]
|
|
319
|
+
ANY = 255 # all records [RFC1035]
|
|
320
|
+
update()
|
|
321
|
+
end
|
|
322
|
+
|
|
323
|
+
class MetaTypes < CodeMapper
|
|
324
|
+
TKEY = 249 # Transaction Key [RFC2930]
|
|
325
|
+
TSIG = 250 # Transaction Signature [RFC2845]
|
|
326
|
+
OPT = 41 # RFC 2671
|
|
327
|
+
end
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
class ResolvError < StandardError
|
|
331
|
+
end
|
|
332
|
+
|
|
333
|
+
class ResolvTimeout < TimeoutError
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
class NXDomain < ResolvError
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
class FormErr < ResolvError
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
class ServFail < ResolvError
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
class NotImp < ResolvError
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
class Refused < ResolvError
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
class OtherResolvError < ResolvError
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
#== Dnsruby::Resolv class
|
|
355
|
+
#
|
|
356
|
+
#=== class methods
|
|
357
|
+
#* Dnsruby::Resolv.getaddress(name)
|
|
358
|
+
#* Dnsruby::Resolv.getaddresses(name)
|
|
359
|
+
#* Dnsruby::Resolv.each_address(name) {|address| ...}
|
|
360
|
+
#
|
|
361
|
+
# They lookups IP addresses of ((|name|)) which represents a hostname
|
|
362
|
+
# as a string by default resolver.
|
|
363
|
+
#
|
|
364
|
+
#* getaddress returns first entry of resultant addresses.
|
|
365
|
+
#* getaddresses returns resultant addresses as an array.
|
|
366
|
+
#* each_address iterates over resultant addresses.
|
|
367
|
+
#
|
|
368
|
+
#* Dnsruby::Resolv.getname(address)
|
|
369
|
+
#* Dnsruby::Resolv.getnames(address)
|
|
370
|
+
#* Dnsruby::Resolv.each_name(address) {|name| ...}
|
|
371
|
+
# lookups hostnames of ((|address|)) which represents IP address as a string.
|
|
372
|
+
#
|
|
373
|
+
#* getname returns first entry of resultant names.
|
|
374
|
+
#* getnames returns resultant names as an array.
|
|
375
|
+
#* each_names iterates over resultant names.
|
|
376
|
+
#
|
|
377
|
+
#The DNS class may be used to perform more queries. If greater control over the sending
|
|
378
|
+
#of packets is required, then the Resolver or SingleResolver classes may be used.
|
|
379
|
+
#
|
|
380
|
+
class Resolv
|
|
381
|
+
|
|
382
|
+
def self.getaddress(name)
|
|
383
|
+
DefaultResolver.getaddress(name)
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
def self.getaddresses(name)
|
|
387
|
+
DefaultResolver.getaddresses(name)
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
def self.each_address(name, &block)
|
|
391
|
+
DefaultResolver.each_address(name, &block)
|
|
392
|
+
end
|
|
393
|
+
|
|
394
|
+
def self.getname(address)
|
|
395
|
+
DefaultResolver.getname(address)
|
|
396
|
+
end
|
|
397
|
+
|
|
398
|
+
def self.getnames(address)
|
|
399
|
+
DefaultResolver.getnames(address)
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
def self.each_name(address, &proc)
|
|
403
|
+
DefaultResolver.each_name(address, &proc)
|
|
404
|
+
end
|
|
405
|
+
|
|
406
|
+
def initialize(resolvers=[Hosts.new, DNS.new])
|
|
407
|
+
@resolvers = resolvers
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
def getaddress(name)
|
|
411
|
+
each_address(name) {|address| return address}
|
|
412
|
+
raise ResolvError.new("no address for #{name}")
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
def getaddresses(name)
|
|
416
|
+
ret = []
|
|
417
|
+
each_address(name) {|address| ret << address}
|
|
418
|
+
return ret
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
def each_address(name)
|
|
422
|
+
if AddressRegex =~ name
|
|
423
|
+
yield name
|
|
424
|
+
return
|
|
425
|
+
end
|
|
426
|
+
yielded = false
|
|
427
|
+
@resolvers.each {|r|
|
|
428
|
+
r.each_address(name) {|address|
|
|
429
|
+
yield address.to_s
|
|
430
|
+
yielded = true
|
|
431
|
+
}
|
|
432
|
+
return if yielded
|
|
433
|
+
}
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
def getname(address)
|
|
437
|
+
each_name(address) {|name| return name}
|
|
438
|
+
raise ResolvError.new("no name for #{address}")
|
|
439
|
+
end
|
|
440
|
+
|
|
441
|
+
def getnames(address)
|
|
442
|
+
ret = []
|
|
443
|
+
each_name(address) {|name| ret << name}
|
|
444
|
+
return ret
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
def each_name(address)
|
|
448
|
+
yielded = false
|
|
449
|
+
@resolvers.each {|r|
|
|
450
|
+
r.each_name(address) {|name|
|
|
451
|
+
yield name.to_s
|
|
452
|
+
yielded = true
|
|
453
|
+
}
|
|
454
|
+
return if yielded
|
|
455
|
+
}
|
|
456
|
+
end
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
require 'Dnsruby/DNS'
|
|
460
|
+
require 'Dnsruby/Hosts'
|
|
461
|
+
require 'Dnsruby/message'
|
|
462
|
+
require 'Dnsruby/DNSSEC'
|
|
463
|
+
require 'Dnsruby/update'
|
|
464
|
+
require 'Dnsruby/zone_transfer'
|
|
465
|
+
DefaultResolver = self.new
|
|
466
|
+
AddressRegex = /(?:#{IPv4::Regex})|(?:#{IPv6::Regex})/
|
|
467
|
+
end
|
|
468
|
+
end
|
data/test/custom.txt
ADDED
data/test/resolv.conf
ADDED
data/test/tc_axfr.rb
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2007 Nominet UK
|
|
3
|
+
#
|
|
4
|
+
#Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
#you may not use this file except in compliance with the License.
|
|
6
|
+
#You may obtain a copy of the License at
|
|
7
|
+
#
|
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
#
|
|
10
|
+
#Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
#See the License for the specific language governing permissions and
|
|
14
|
+
#limitations under the License.
|
|
15
|
+
#++
|
|
16
|
+
require 'rubygems'
|
|
17
|
+
require 'test/unit'
|
|
18
|
+
require 'Dnsruby'
|
|
19
|
+
require 'socket'
|
|
20
|
+
class TestAxfr < Test::Unit::TestCase
|
|
21
|
+
def test_axfr
|
|
22
|
+
zt = Dnsruby::ZoneTransfer.new
|
|
23
|
+
zt.transfer_type = Dnsruby::Types.AXFR
|
|
24
|
+
zt.server = "ns0.validation-test-servers.nominet.org.uk"
|
|
25
|
+
zone = zt.transfer("validation-test-servers.nominet.org.uk")
|
|
26
|
+
assert(zone.length > 0)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_ixfr
|
|
30
|
+
# @TODO@
|
|
31
|
+
# zone.gsub!(/\.$/o, "")
|
|
32
|
+
|
|
33
|
+
zt = Dnsruby::ZoneTransfer.new
|
|
34
|
+
zt.transfer_type = Dnsruby::Types.IXFR
|
|
35
|
+
zt.server = "ns0.validation-test-servers.nominet.org.uk"
|
|
36
|
+
zt.serial = 2007090401
|
|
37
|
+
deltas = zt.transfer("validation-test-servers.nominet.org.uk")
|
|
38
|
+
assert(deltas.length > 0)
|
|
39
|
+
assert(deltas[0].class == Dnsruby::ZoneTransfer::Delta)
|
|
40
|
+
assert_equal("Should show up in transfer", deltas[0].adds[1].data)
|
|
41
|
+
end
|
|
42
|
+
end
|