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/DNS.rb
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
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/Hosts'
|
|
17
|
+
require 'Dnsruby/Config'
|
|
18
|
+
require "Dnsruby/Resolver"
|
|
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
|
+
|
|
31
|
+
#== Dnsruby::DNS class
|
|
32
|
+
#DNS stub resolver.
|
|
33
|
+
#
|
|
34
|
+
#=== class methods
|
|
35
|
+
#* Dnsruby::DNS.new(config_info=nil)
|
|
36
|
+
#
|
|
37
|
+
# ((|config_info|)) should be nil, a string or a hash.
|
|
38
|
+
# If nil is given, /etc/resolv.conf and platform specific information is used.
|
|
39
|
+
# If a string is given, it should be a filename which format is same as /etc/resolv.conf.
|
|
40
|
+
# If a hash is given, it may contains information for nameserver, search and ndots as follows.
|
|
41
|
+
#
|
|
42
|
+
# Dnsruby::DNS.new({:nameserver=>["210.251.121.21"], :search=>["ruby-lang.org"], :ndots=>1})
|
|
43
|
+
#
|
|
44
|
+
#* Dnsruby::DNS.open(config_info=nil)
|
|
45
|
+
#* Dnsruby::Resolv::DNS.open(config_info=nil) {|dns| ...}
|
|
46
|
+
#
|
|
47
|
+
#=== methods
|
|
48
|
+
#* Dnsruby::DNS#close
|
|
49
|
+
#
|
|
50
|
+
#* Dnsruby::DNS#getaddress(name)
|
|
51
|
+
#* Dnsruby::DNS#getaddresses(name)
|
|
52
|
+
#* Dnsruby::DNS#each_address(name) {|address| ...}
|
|
53
|
+
# address lookup methods.
|
|
54
|
+
#
|
|
55
|
+
# ((|name|)) must be an instance of Dnsruby::Name or String. Resultant
|
|
56
|
+
# address is represented as an instance of Dnsruby::IPv4 or Dnsruby::IPv6.
|
|
57
|
+
#
|
|
58
|
+
#* Dnsruby::DNS#getname(address)
|
|
59
|
+
#* Dnsruby::DNS#getnames(address)
|
|
60
|
+
#* Dnsruby::DNS#each_name(address) {|name| ...}
|
|
61
|
+
# These methods lookup hostnames .
|
|
62
|
+
#
|
|
63
|
+
# ((|address|)) must be an instance of Dnsruby::IPv4, Dnsruby::IPv6 or String.
|
|
64
|
+
# Resultant name is represented as an instance of Dnsruby::Name.
|
|
65
|
+
#
|
|
66
|
+
#* Dnsruby::DNS#getresource(name, type, class)
|
|
67
|
+
#* Dnsruby::DNS#getresources(name, type, class)
|
|
68
|
+
#* Dnsruby::DNS#each_resource(name, type, class) {|resource| ...}
|
|
69
|
+
# These methods lookup DNS resources of ((|name|)).
|
|
70
|
+
# ((|name|)) must be a instance of Dnsruby::Name or String.
|
|
71
|
+
#
|
|
72
|
+
# ((|type|)) must be a member of Dnsruby::Types
|
|
73
|
+
# ((|class|)) must be a member of Dnsruby::Classes
|
|
74
|
+
#
|
|
75
|
+
# Resultant resource is represented as an instance of (a subclass of)
|
|
76
|
+
# Dnsruby::RR.
|
|
77
|
+
# (Dnsruby::RR::IN::A, etc.)
|
|
78
|
+
#
|
|
79
|
+
#The searchlist and other Config info is applied to the domain name if appropriate. All the nameservers
|
|
80
|
+
#are tried (if there is no timely answer from the first).
|
|
81
|
+
#
|
|
82
|
+
#This class uses Resolver to perform the queries.
|
|
83
|
+
class DNS
|
|
84
|
+
# STD0013 (RFC 1035, etc.)
|
|
85
|
+
# ftp://ftp.isi.edu/in-notes/iana/assignments/dns-parameters
|
|
86
|
+
|
|
87
|
+
def self.open(*args)
|
|
88
|
+
dns = new(*args)
|
|
89
|
+
return dns unless block_given?
|
|
90
|
+
begin
|
|
91
|
+
yield dns
|
|
92
|
+
ensure
|
|
93
|
+
dns.close
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def close
|
|
98
|
+
@resolver.close
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def to_s
|
|
103
|
+
return "DNS : " + @config.to_s
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def initialize(config_info=nil)
|
|
107
|
+
@config = Config.new()
|
|
108
|
+
@config.set_config_info(config_info)
|
|
109
|
+
@resolver = Resolver.new(@config)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
attr_reader :config
|
|
113
|
+
|
|
114
|
+
def getaddress(name)
|
|
115
|
+
each_address(name) {|address| return address}
|
|
116
|
+
raise ResolvError.new("DNS result has no information for #{name}")
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def getaddresses(name)
|
|
120
|
+
ret = []
|
|
121
|
+
each_address(name) {|address| ret << address}
|
|
122
|
+
return ret
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def each_address(name)
|
|
126
|
+
each_resource(name) {|resource| yield resource.address}
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def getname(address)
|
|
130
|
+
each_name(address) {|name| return name}
|
|
131
|
+
raise ResolvError.new("DNS result has no information for #{address}")
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def getnames(address)
|
|
135
|
+
ret = []
|
|
136
|
+
each_name(address) {|name| ret << name}
|
|
137
|
+
return ret
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def each_name(address)
|
|
141
|
+
case address
|
|
142
|
+
when Name
|
|
143
|
+
ptr = address
|
|
144
|
+
when IPv4::Regex
|
|
145
|
+
ptr = IPv4.create(address).to_name
|
|
146
|
+
when IPv6::Regex
|
|
147
|
+
ptr = IPv6.create(address).to_name
|
|
148
|
+
else
|
|
149
|
+
raise ResolvError.new("cannot interpret as address: #{address}")
|
|
150
|
+
end
|
|
151
|
+
each_resource(ptr, Types.PTR, Classes.IN) {|resource| yield resource.domainname}
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def getresource(name, type=Types.A, klass=Classes.IN)
|
|
155
|
+
each_resource(name, type, klass) {|resource| return resource}
|
|
156
|
+
raise ResolvError.new("DNS result has no information for #{name}")
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def getresources(name, type=Types.A, klass=Classes.IN)
|
|
160
|
+
ret = []
|
|
161
|
+
each_resource(name, type, klass) {|resource| ret << resource}
|
|
162
|
+
return ret
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def send_query(name, type=Types.A, klass=Classes.IN)
|
|
166
|
+
q = Queue.new
|
|
167
|
+
candidates = @config.generate_candidates(name)
|
|
168
|
+
exception = nil
|
|
169
|
+
candidates.each do |candidate|
|
|
170
|
+
msg = Message.new
|
|
171
|
+
msg.header.rd = 1
|
|
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
|
+
|
|
192
|
+
def each_resource(name, type=Types.A, klass=Classes.IN, &proc)
|
|
193
|
+
type = Types.new(type)
|
|
194
|
+
klass = Classes.new(klass)
|
|
195
|
+
reply, reply_name = send_query(name, type, klass)
|
|
196
|
+
case reply.header.rcode.code
|
|
197
|
+
when RCode::NOERROR
|
|
198
|
+
extract_resources(reply, reply_name, type, klass, &proc)
|
|
199
|
+
return
|
|
200
|
+
# when RCode::NXDomain
|
|
201
|
+
# TheLog.debug("RCode::NXDomain returned - raising error")
|
|
202
|
+
# raise Config::NXDomain.new(reply_name.to_s)
|
|
203
|
+
else
|
|
204
|
+
TheLog.error("Unexpected rcode : #{reply.header.rcode.string}")
|
|
205
|
+
raise Config::OtherResolvError.new(reply_name.to_s)
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def extract_resources(msg, name, type, klass)
|
|
211
|
+
# if type < Types.ANY
|
|
212
|
+
if type == Types.ANY
|
|
213
|
+
n0 = Name.create(name)
|
|
214
|
+
msg.each_answer {|rec|
|
|
215
|
+
yield rec if n0 == rec.name
|
|
216
|
+
}
|
|
217
|
+
end
|
|
218
|
+
yielded = false
|
|
219
|
+
n0 = Name.create(name)
|
|
220
|
+
msg.each_answer {|rec|
|
|
221
|
+
if n0 == rec.name
|
|
222
|
+
case rec.type
|
|
223
|
+
when type
|
|
224
|
+
if (rec.klass == klass)
|
|
225
|
+
yield rec
|
|
226
|
+
yielded = true
|
|
227
|
+
end
|
|
228
|
+
when Types.CNAME
|
|
229
|
+
n0 = rec.domainname
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
}
|
|
233
|
+
return if yielded
|
|
234
|
+
msg.each_answer {|rec|
|
|
235
|
+
if n0 == rec.name
|
|
236
|
+
case rec.type
|
|
237
|
+
when type
|
|
238
|
+
if (rec.klass == klass)
|
|
239
|
+
yield rec
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
}
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
class DecodeError < StandardError
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
class EncodeError < StandardError
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
end
|
|
253
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
module Dnsruby
|
|
17
|
+
module DNSSEC
|
|
18
|
+
class Algorithms < CodeMapper
|
|
19
|
+
RSAMD5 = 1
|
|
20
|
+
DH = 2
|
|
21
|
+
DSA = 3
|
|
22
|
+
ECC = 4
|
|
23
|
+
INDIRECT = 252
|
|
24
|
+
PRIVATEDNS = 253
|
|
25
|
+
PRIVATEOID = 254
|
|
26
|
+
update()
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,119 @@
|
|
|
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
|
+
module Dnsruby
|
|
17
|
+
#== Dnsruby::Hosts class
|
|
18
|
+
#hostname resolver using /etc/hosts format.
|
|
19
|
+
#
|
|
20
|
+
#=== class methods
|
|
21
|
+
#* Dnsruby::Hosts.new(hosts='/etc/hosts')
|
|
22
|
+
#
|
|
23
|
+
#=== methods
|
|
24
|
+
#* Dnsruby::Hosts#getaddress(name)
|
|
25
|
+
#* Dnsruby::Hosts#getaddresses(name)
|
|
26
|
+
#* Dnsruby::Hosts#each_address(name) {|address| ...}
|
|
27
|
+
# address lookup methods.
|
|
28
|
+
#
|
|
29
|
+
#* Dnsruby::Hosts#getname(address)
|
|
30
|
+
#* Dnsruby::Hosts#getnames(address)
|
|
31
|
+
#* Dnsruby::Hosts#each_name(address) {|name| ...}
|
|
32
|
+
# hostnames lookup methods.
|
|
33
|
+
#
|
|
34
|
+
class Hosts
|
|
35
|
+
if /mswin32|cygwin|mingw|bccwin/ =~ RUBY_PLATFORM
|
|
36
|
+
require 'win32/resolv'
|
|
37
|
+
DefaultFileName = Win32::Resolv.get_hosts_path
|
|
38
|
+
else
|
|
39
|
+
DefaultFileName = '/etc/hosts'
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def initialize(filename = DefaultFileName)
|
|
43
|
+
@filename = filename
|
|
44
|
+
@mutex = Mutex.new
|
|
45
|
+
@initialized = nil
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def lazy_initialize
|
|
49
|
+
@mutex.synchronize {
|
|
50
|
+
unless @initialized
|
|
51
|
+
@name2addr = {}
|
|
52
|
+
@addr2name = {}
|
|
53
|
+
begin
|
|
54
|
+
open(@filename) {|f|
|
|
55
|
+
f.each {|line|
|
|
56
|
+
line.sub!(/#.*/, '')
|
|
57
|
+
addr, hostname, *aliases = line.split(/\s+/)
|
|
58
|
+
next unless addr
|
|
59
|
+
addr.untaint
|
|
60
|
+
hostname.untaint
|
|
61
|
+
@addr2name[addr] = [] unless @addr2name.include? addr
|
|
62
|
+
@addr2name[addr] << hostname
|
|
63
|
+
@addr2name[addr] += aliases
|
|
64
|
+
@name2addr[hostname] = [] unless @name2addr.include? hostname
|
|
65
|
+
@name2addr[hostname] << addr
|
|
66
|
+
aliases.each {|n|
|
|
67
|
+
n.untaint
|
|
68
|
+
@name2addr[n] = [] unless @name2addr.include? n
|
|
69
|
+
@name2addr[n] << addr
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
rescue Exception
|
|
74
|
+
# Java won't find this file if running on Windows
|
|
75
|
+
end
|
|
76
|
+
@name2addr.each {|name, arr| arr.reverse!}
|
|
77
|
+
@initialized = true
|
|
78
|
+
end
|
|
79
|
+
}
|
|
80
|
+
self
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def getaddress(name)
|
|
84
|
+
each_address(name) {|address| return address}
|
|
85
|
+
raise ResolvError.new("#{@filename} has no name: #{name}")
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def getaddresses(name)
|
|
89
|
+
ret = []
|
|
90
|
+
each_address(name) {|address| ret << address}
|
|
91
|
+
return ret
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def each_address(name, &proc)
|
|
95
|
+
lazy_initialize
|
|
96
|
+
if @name2addr.include?(name)
|
|
97
|
+
@name2addr[name].each(&proc)
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def getname(address)
|
|
102
|
+
each_name(address) {|name| return name}
|
|
103
|
+
raise ResolvError.new("#{@filename} has no address: #{address}")
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def getnames(address)
|
|
107
|
+
ret = []
|
|
108
|
+
each_name(address) {|name| ret << name}
|
|
109
|
+
return ret
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def each_name(address, &proc)
|
|
113
|
+
lazy_initialize
|
|
114
|
+
if @addr2name.include?(address)
|
|
115
|
+
@addr2name[address].each(&proc)
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|