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/name.rb
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
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::Name class
|
|
18
|
+
#
|
|
19
|
+
#(RFC1035, section 3.1)
|
|
20
|
+
#
|
|
21
|
+
#== methods
|
|
22
|
+
#
|
|
23
|
+
#* Name::create(namestring)
|
|
24
|
+
#* Name#absolute?
|
|
25
|
+
#* Name#wild?
|
|
26
|
+
#* Name#subdomain_of?(other)
|
|
27
|
+
#* Name#labels
|
|
28
|
+
#
|
|
29
|
+
class Name
|
|
30
|
+
MaxNameLength=255
|
|
31
|
+
#--
|
|
32
|
+
# A Name is a collection of Labels. Each label is presentation-formatted
|
|
33
|
+
# When a Name is wire-encoded, the label array is walked, and each label is wire-encoded.
|
|
34
|
+
# When a Name is unencoded, each label is unencoded, and added to the Name collection of labels.
|
|
35
|
+
# When a Name is made from a string, the Name is split into Labels.
|
|
36
|
+
#++
|
|
37
|
+
def self.create(arg)
|
|
38
|
+
case arg
|
|
39
|
+
when Name
|
|
40
|
+
return arg
|
|
41
|
+
when String
|
|
42
|
+
# arg.gsub!(/\.$/o, "")
|
|
43
|
+
return Name.new(split_escaped(arg), /\.\z/ =~ arg ? true : false)
|
|
44
|
+
when Array
|
|
45
|
+
return Name.new(arg, /\.\z/ =~ ((arg.last.kind_of?String)?arg.last : arg.last.string) ? true : false)
|
|
46
|
+
else
|
|
47
|
+
raise ArgumentError.new("cannot interpret as DNS name: #{arg.inspect}")
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.split_escaped(arg) #:nodoc: all
|
|
52
|
+
encodedlabels = name2encodedlabels(arg)
|
|
53
|
+
return encodedlabels2name(encodedlabels).labels
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
attr_reader :labels
|
|
57
|
+
|
|
58
|
+
#This method should only be called internally.
|
|
59
|
+
#Use Name::create to create a new Name
|
|
60
|
+
def initialize(labels, absolute=true) #:nodoc: all
|
|
61
|
+
total_length=labels.length-1
|
|
62
|
+
labels.each do |l|
|
|
63
|
+
if (!l.kind_of?Label)
|
|
64
|
+
raise ArgumentError.new("Name::new called with non-labels. Use Name::create instead?")
|
|
65
|
+
end
|
|
66
|
+
total_length+=l.length
|
|
67
|
+
end
|
|
68
|
+
if (total_length > MaxNameLength)
|
|
69
|
+
raise ResolvError.new("Name length is #{total_length}, greater than max of #{MaxNameLength} octets!")
|
|
70
|
+
end
|
|
71
|
+
@labels = labels
|
|
72
|
+
@absolute = absolute
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def downcase
|
|
76
|
+
labels = []
|
|
77
|
+
@labels.each do |label| labels << Label.new(label.downcase) end
|
|
78
|
+
return Name.create(labels)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def inspect
|
|
82
|
+
"#<#{self.class}: #{self.to_s}#{@absolute ? '.' : ''}>"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def absolute?
|
|
86
|
+
return @absolute
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
#Is this name a wildcard?
|
|
90
|
+
def wild?
|
|
91
|
+
if (labels.length == 0)
|
|
92
|
+
return false
|
|
93
|
+
end
|
|
94
|
+
return (labels[0].string == '*')
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def ==(other)
|
|
98
|
+
return false unless Name === other
|
|
99
|
+
return @labels == other.labels && @absolute == other.absolute?
|
|
100
|
+
end
|
|
101
|
+
alias eql? ==
|
|
102
|
+
|
|
103
|
+
# tests subdomain-of relation.
|
|
104
|
+
#
|
|
105
|
+
# domain = Resolv::Name.create("y.z")
|
|
106
|
+
# p Resolv::Name.create("w.x.y.z").subdomain_of?(domain) #=> true
|
|
107
|
+
# p Resolv::Name.create("x.y.z").subdomain_of?(domain) #=> true
|
|
108
|
+
# p Resolv::Name.create("y.z").subdomain_of?(domain) #=> false
|
|
109
|
+
# p Resolv::Name.create("z").subdomain_of?(domain) #=> false
|
|
110
|
+
# p Resolv::Name.create("x.y.z.").subdomain_of?(domain) #=> false
|
|
111
|
+
# p Resolv::Name.create("w.z").subdomain_of?(domain) #=> false
|
|
112
|
+
#
|
|
113
|
+
def subdomain_of?(other)
|
|
114
|
+
raise ArgumentError, "not a domain name: #{other.inspect}" unless Name === other
|
|
115
|
+
return false if @absolute != other.absolute?
|
|
116
|
+
other_len = other.length
|
|
117
|
+
return false if @labels.length <= other_len
|
|
118
|
+
return @labels[-other_len, other_len] == other.to_a
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def hash
|
|
122
|
+
return @labels.hash ^ @absolute.hash
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def to_a #:nodoc: all
|
|
126
|
+
return @labels
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def length #:nodoc: all
|
|
130
|
+
return @labels.length
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
def [](i) #:nodoc: all
|
|
134
|
+
return @labels[i]
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
# returns the domain name as a string.
|
|
138
|
+
#
|
|
139
|
+
# The domain name doesn't have a trailing dot even if the name object is
|
|
140
|
+
# absolute.
|
|
141
|
+
#
|
|
142
|
+
# p Resolv::Name.create("x.y.z.").to_s #=> "x.y.z"
|
|
143
|
+
# p Resolv::Name.create("x.y.z").to_s #=> "x.y.z"
|
|
144
|
+
#
|
|
145
|
+
def to_s
|
|
146
|
+
# @todo@ Need to think about escaped characters here?
|
|
147
|
+
return @labels.collect{|l| (l.kind_of?String) ? l : l.string}.join('.')
|
|
148
|
+
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
# Utility function
|
|
152
|
+
#
|
|
153
|
+
# name2labels to translate names from presentation format into an
|
|
154
|
+
# array of "wire-format" labels.
|
|
155
|
+
# in: dName a string with a domain name in presentation format (1035
|
|
156
|
+
# sect 5.1)
|
|
157
|
+
# out: an array of labels in wire format.
|
|
158
|
+
def self.name2encodedlabels (dName) #:nodoc: all
|
|
159
|
+
names=[]
|
|
160
|
+
j=0;
|
|
161
|
+
while (dName && dName.length > 0)
|
|
162
|
+
names[j],dName = encode(dName)
|
|
163
|
+
j+=1
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
return names
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def self.encodedlabels2name(labels) #:nodoc: all
|
|
170
|
+
ls = []
|
|
171
|
+
labels.each do |l|
|
|
172
|
+
ls.push(Name.decode(l.string))
|
|
173
|
+
end
|
|
174
|
+
return Name.new(ls)
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def self.decode(wire) #:nodoc: all
|
|
178
|
+
presentation=""
|
|
179
|
+
length=wire.length
|
|
180
|
+
# There must be a nice regexp to do this.. but since I failed to
|
|
181
|
+
# find one I scan the name string until I find a '\', at that time
|
|
182
|
+
# I start looking forward and do the magic.
|
|
183
|
+
|
|
184
|
+
i=0;
|
|
185
|
+
|
|
186
|
+
while (i < length )
|
|
187
|
+
c=wire.unpack("x#{i}C1") [0]
|
|
188
|
+
if ( c < 33 || c > 126 )
|
|
189
|
+
presentation=presentation + sprintf("\\%03u" ,c)
|
|
190
|
+
elsif ( c.chr == "\"" )
|
|
191
|
+
presentation=presentation + "\\\""
|
|
192
|
+
elsif ( c.chr == "\$")
|
|
193
|
+
presentation=presentation + "\\\$"
|
|
194
|
+
elsif ( c.chr == "(" )
|
|
195
|
+
presentation=presentation + "\\("
|
|
196
|
+
elsif ( c.chr == ")" )
|
|
197
|
+
presentation=presentation + "\\)"
|
|
198
|
+
elsif ( c.chr == ";" )
|
|
199
|
+
presentation=presentation + "\\;"
|
|
200
|
+
elsif ( c.chr == "@" )
|
|
201
|
+
presentation=presentation + "\\@"
|
|
202
|
+
elsif ( c.chr == "\\" )
|
|
203
|
+
presentation=presentation + "\\\\"
|
|
204
|
+
elsif ( c.chr == ".")
|
|
205
|
+
presentation=presentation + "\\."
|
|
206
|
+
else
|
|
207
|
+
presentation=presentation + c.chr()
|
|
208
|
+
end
|
|
209
|
+
i=i+1
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
return Label.new(presentation)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
|
|
217
|
+
# wire,leftover=presentation2wire(leftover)
|
|
218
|
+
# Will parse the input presentation format and return everything before
|
|
219
|
+
# the first non-escaped "." in the first element of the return array and
|
|
220
|
+
# all that has not been parsed yet in the 2nd argument.
|
|
221
|
+
def self.encode(presentation) #:nodoc: all
|
|
222
|
+
presentation=presentation.to_s
|
|
223
|
+
wire="";
|
|
224
|
+
length=presentation.length;
|
|
225
|
+
|
|
226
|
+
i=0;
|
|
227
|
+
|
|
228
|
+
while (i < length )
|
|
229
|
+
c=presentation.unpack("x#{i}C1") [0]
|
|
230
|
+
if (c == 46) # ord('.')
|
|
231
|
+
endstring = presentation[i+1, presentation.length-(i+1)]
|
|
232
|
+
return Label.new(wire),endstring
|
|
233
|
+
end
|
|
234
|
+
if (c == 92) # ord'\\'
|
|
235
|
+
#backslash found
|
|
236
|
+
pos = i+1
|
|
237
|
+
# pos sets where next pattern matching should start
|
|
238
|
+
if (presentation.index(/\G(\d\d\d)/o, pos))
|
|
239
|
+
wire=wire+[$1.to_i].pack("C")
|
|
240
|
+
i=i+3
|
|
241
|
+
elsif(presentation.index(/\Gx([0..9a..fA..F][0..9a..fA..F])/o, pos))
|
|
242
|
+
wire=wire+[$1].pack("H*")
|
|
243
|
+
i=i+3
|
|
244
|
+
elsif(presentation.index(/\G\./o, pos))
|
|
245
|
+
wire=wire+"\."
|
|
246
|
+
i=i+1
|
|
247
|
+
elsif(presentation.index(/\G@/o,pos))
|
|
248
|
+
wire=wire+"@"
|
|
249
|
+
i=i+1
|
|
250
|
+
elsif(presentation.index(/\G\(/o, pos))
|
|
251
|
+
wire=wire+"("
|
|
252
|
+
i=i+1
|
|
253
|
+
elsif(presentation.index(/\G\)/o, pos))
|
|
254
|
+
wire=wire+")"
|
|
255
|
+
i=i+1
|
|
256
|
+
elsif(presentation.index(/\G\\/o, pos))
|
|
257
|
+
wire=wire+"\\"
|
|
258
|
+
i+=1
|
|
259
|
+
end
|
|
260
|
+
else
|
|
261
|
+
wire = wire + [c].pack("C")
|
|
262
|
+
end
|
|
263
|
+
i=i+1
|
|
264
|
+
end
|
|
265
|
+
|
|
266
|
+
return Label.new(wire)
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
# end
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
#== Dnsruby::Label class
|
|
273
|
+
#
|
|
274
|
+
#(RFC1035, section 3.1)
|
|
275
|
+
#
|
|
276
|
+
class Label
|
|
277
|
+
MaxLabelLength = 63
|
|
278
|
+
@@max_length=MaxLabelLength
|
|
279
|
+
# Split a Name into its component Labels
|
|
280
|
+
def self.split(arg)
|
|
281
|
+
labels = []
|
|
282
|
+
# arg.scan(/[^\.]+/) {labels << Str.new($&)}
|
|
283
|
+
arg.scan(/[^\.]+/) {labels << new($&)}
|
|
284
|
+
return labels
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
def self.set_max_length(l)
|
|
288
|
+
@@max_length=l
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def initialize(string)
|
|
292
|
+
if (string.length > @@max_length)
|
|
293
|
+
raise ResolvError.new("Label too long (#{string.length}, max length=#{MaxLabelLength}). Label = #{string}")
|
|
294
|
+
end
|
|
295
|
+
@downcase = string.downcase
|
|
296
|
+
@string = string
|
|
297
|
+
end
|
|
298
|
+
attr_reader :string, :downcase
|
|
299
|
+
|
|
300
|
+
def to_s
|
|
301
|
+
return @string.to_s # + "."
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
def length
|
|
305
|
+
return @string.length
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
def inspect
|
|
309
|
+
return "#<#{self.class} #{self.to_s}>"
|
|
310
|
+
end
|
|
311
|
+
|
|
312
|
+
def ==(other)
|
|
313
|
+
return @downcase == other.downcase
|
|
314
|
+
end
|
|
315
|
+
|
|
316
|
+
def eql?(other)
|
|
317
|
+
return self == other
|
|
318
|
+
end
|
|
319
|
+
|
|
320
|
+
def hash
|
|
321
|
+
return @downcase.hash
|
|
322
|
+
end
|
|
323
|
+
end
|
|
324
|
+
end
|
|
325
|
+
end
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
class RR
|
|
18
|
+
module IN
|
|
19
|
+
#Class for DNS Address (A) resource records.
|
|
20
|
+
#
|
|
21
|
+
#RFC 1035 Section 3.4.1
|
|
22
|
+
class A < RR
|
|
23
|
+
ClassHash[[TypeValue = Types::A, ClassValue = ClassValue]] = self #:nodoc: all
|
|
24
|
+
|
|
25
|
+
#The RR's address field.
|
|
26
|
+
attr_accessor :address
|
|
27
|
+
|
|
28
|
+
def from_data(data) #:nodoc: all
|
|
29
|
+
@address = IPv4.create(data)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
#Create the RR from a hash
|
|
33
|
+
def from_hash(hash)
|
|
34
|
+
@address = IPv4.create(hash[:address])
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Create the RR from a standard string
|
|
38
|
+
def from_string(input)
|
|
39
|
+
@address = IPv4.create(input)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def rdata_to_string
|
|
43
|
+
return @address.to_s
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def encode_rdata(msg) #:nodoc: all
|
|
47
|
+
msg.put_bytes(@address.address)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def self.decode_rdata(msg) #:nodoc: all
|
|
51
|
+
return self.new(IPv4.new(msg.get_bytes(4)))
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
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
|
+
class RR
|
|
18
|
+
module IN
|
|
19
|
+
#Class for DNS IPv6 Address (AAAA) resource records.
|
|
20
|
+
#
|
|
21
|
+
#RFC 1886 Section 2, RFC 1884 Sections 2.2 & 2.4.4
|
|
22
|
+
class AAAA < RR
|
|
23
|
+
ClassHash[[TypeValue = Types::AAAA, ClassValue = ClassValue]] = self #:nodoc: all
|
|
24
|
+
|
|
25
|
+
# The RR's address field
|
|
26
|
+
attr_accessor :address
|
|
27
|
+
|
|
28
|
+
def from_data(data) #:nodoc: all
|
|
29
|
+
@address = IPv6.create(data)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def from_hash(hash) #:nodoc: all
|
|
33
|
+
@address = IPv6.create(hash[:address])
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def from_string(input) #:nodoc: all
|
|
37
|
+
@address = IPv6.create(input)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def rdata_to_string #:nodoc: all
|
|
41
|
+
return @address.to_s
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def encode_rdata(msg) #:nodoc: all
|
|
45
|
+
msg.put_bytes(@address.address)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.decode_rdata(msg) #:nodoc: all
|
|
49
|
+
return self.new(IPv6.new(msg.get_bytes(16)))
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -0,0 +1,68 @@
|
|
|
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
|
+
class RR
|
|
18
|
+
module IN
|
|
19
|
+
#Class for DNS AFS Data Base (AFSDB) resource records.
|
|
20
|
+
#
|
|
21
|
+
#RFC 1183 Section 1
|
|
22
|
+
class AFSDB < RR
|
|
23
|
+
ClassHash[[TypeValue = Types::AFSDB, ClassValue = ClassValue]] = self #:nodoc: all
|
|
24
|
+
|
|
25
|
+
#The RR's subtype field. See RFC 1183.
|
|
26
|
+
attr_accessor :subtype
|
|
27
|
+
|
|
28
|
+
#The RR's hostname field. See RFC 1183.
|
|
29
|
+
attr_accessor :hostname
|
|
30
|
+
|
|
31
|
+
def from_hash(hash) #:nodoc: all
|
|
32
|
+
@subtype = hash[:subtype]
|
|
33
|
+
@hostname = Name.create(hash[:hostname])
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def from_data(data) #:nodoc: all
|
|
37
|
+
@subtype, @hostname = data
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def from_string(input) #:nodoc: all
|
|
41
|
+
if (input!=nil && (input =~ /^(\d+)\s+(\S+)$/o))
|
|
42
|
+
@subtype = $1;
|
|
43
|
+
@hostname = Name.create($2)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def rdata_to_string #:nodoc: all
|
|
48
|
+
if defined?@subtype
|
|
49
|
+
return "#{@subtype} #{@hostname}."
|
|
50
|
+
else
|
|
51
|
+
return '';
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def encode_rdata(msg, canonical=false) #:nodoc: all
|
|
56
|
+
msg.put_pack("n", @subtype)
|
|
57
|
+
msg.put_name(@hostname, canonical)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def self.decode_rdata(msg) #:nodoc: all
|
|
61
|
+
subtype, = msg.get_unpack("n")
|
|
62
|
+
hostname = msg.get_name
|
|
63
|
+
return self.new([subtype, hostname])
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
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
|
+
class RR
|
|
18
|
+
#Class for DNS Certificate (CERT) resource records. (see RFC 2538)
|
|
19
|
+
#
|
|
20
|
+
#RFC 2782
|
|
21
|
+
class CERT < RR
|
|
22
|
+
ClassValue = nil #:nodoc: all
|
|
23
|
+
TypeValue = Types::CERT #:nodoc: all
|
|
24
|
+
|
|
25
|
+
#Returns the format code for the certificate
|
|
26
|
+
attr_accessor :certtype
|
|
27
|
+
#Returns the key tag for the public key in the certificate
|
|
28
|
+
attr_accessor :keytag
|
|
29
|
+
#Returns the algorithm used by the certificate
|
|
30
|
+
attr_accessor :alg
|
|
31
|
+
#Returns the data comprising the certificate itself (in raw binary form)
|
|
32
|
+
attr_accessor :cert
|
|
33
|
+
|
|
34
|
+
class CertificateTypes < CodeMapper
|
|
35
|
+
PKIX = 1 # PKIX (X.509v3)
|
|
36
|
+
SPKI = 2 # Simple Public Key Infrastructure
|
|
37
|
+
PGP = 3 # Pretty Good Privacy
|
|
38
|
+
IPKIX = 4 # URL of an X.509 data object
|
|
39
|
+
ISPKI = 5 # URL of an SPKI certificate
|
|
40
|
+
IPGP = 6 # Fingerprint and URL of an OpenPGP packet
|
|
41
|
+
ACPKIX = 7 # Attribute Certificate
|
|
42
|
+
IACPKIX = 8 # URL of an Attribute Certificate
|
|
43
|
+
URI = 253 # Certificate format defined by URI
|
|
44
|
+
OID = 254 # Certificate format defined by OID
|
|
45
|
+
|
|
46
|
+
update()
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def from_data(data) #:nodoc: all
|
|
50
|
+
@certtype = CertificateTypes::new(data[0])
|
|
51
|
+
@keytag = data[1]
|
|
52
|
+
@alg = DNSSEC::Algorithms.new(data[2])
|
|
53
|
+
@cert= data[3]
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def from_hash(hash) #:nodoc: all
|
|
57
|
+
@certtype = CertificateTypes::new(hash[:certtype])
|
|
58
|
+
@keytag = hash[:keytag]
|
|
59
|
+
@alg = DNSSEC::Algorithms.new(hash[:alg])
|
|
60
|
+
@cert= hash[:cert]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def from_string(input) #:nodoc: all
|
|
64
|
+
if (input != "")
|
|
65
|
+
names = input.split(" ")
|
|
66
|
+
@certtype = CertificateTypes::new(names[0])
|
|
67
|
+
@keytag = names[1]
|
|
68
|
+
@alg = DNSSEC::Algorithms.new(names[2])
|
|
69
|
+
@cert = names[3]
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def rdata_to_string #:nodoc: all
|
|
74
|
+
return "#{@certtype.string} #{@keytag} #{@alg.string} #{@cert}"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def encode_rdata(msg) #:nodoc: all
|
|
78
|
+
msg.put_pack('nnn', @certtype.code, @keytag, @alg.code)
|
|
79
|
+
msg.put_string(@cert)
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def self.decode_rdata(msg) #:nodoc: all
|
|
83
|
+
certtype, keytag, alg = msg.get_unpack('nnn')
|
|
84
|
+
cert = msg.get_string
|
|
85
|
+
return self.new([certtype, keytag, alg, cert])
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
class RR
|
|
18
|
+
#Class for DNS Host Information (HINFO) resource records.
|
|
19
|
+
class HINFO < RR
|
|
20
|
+
ClassValue = nil #:nodoc: all
|
|
21
|
+
TypeValue = Types::HINFO #:nodoc: all
|
|
22
|
+
|
|
23
|
+
#The CPU type for this RR.
|
|
24
|
+
attr_accessor :cpu
|
|
25
|
+
#The operating system type for this RR.
|
|
26
|
+
attr_accessor :os
|
|
27
|
+
|
|
28
|
+
def from_data(data) #:nodoc: all
|
|
29
|
+
@cpu, @os= data
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def from_string(input) #:nodoc: all
|
|
33
|
+
@cpu, @os = input.split(" ")
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def rdata_to_string #:nodoc: all
|
|
37
|
+
return "#{@cpu} #{@os}"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def encode_rdata(msg) #:nodoc: all
|
|
41
|
+
msg.put_string(@cpu)
|
|
42
|
+
msg.put_string(@os)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def self.decode_rdata(msg) #:nodoc: all
|
|
46
|
+
cpu = msg.get_string
|
|
47
|
+
os = msg.get_string
|
|
48
|
+
return self.new([cpu, os])
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|