dnsruby 1.2 → 1.23
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/demo/axfr.rb +176 -0
- data/demo/check_soa.rb +141 -0
- data/demo/check_zone.rb +157 -0
- data/demo/example_recurse.rb +11 -0
- data/demo/mresolv.rb +67 -0
- data/demo/mx.rb +33 -0
- data/demo/rubydig.rb +58 -0
- data/demo/to_resolve.txt +3088 -0
- data/demo/trace_dns.rb +15 -0
- data/doc/classes/Dnsruby.html +463 -0
- data/doc/classes/Dnsruby/Algorithms.html +171 -0
- data/doc/classes/Dnsruby/Classes.html +197 -0
- data/doc/classes/Dnsruby/Classes.src/M000209.html +23 -0
- data/doc/classes/Dnsruby/Classes.src/M000210.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.html +375 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000186.html +18 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000187.html +33 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000188.html +21 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000189.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000190.html +19 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000191.html +18 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000192.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000193.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000194.html +22 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000195.html +31 -0
- data/doc/classes/Dnsruby/CodeMapper.src/M000196.html +19 -0
- data/doc/classes/Dnsruby/Config.html +413 -0
- data/doc/classes/Dnsruby/Config.src/M000148.html +18 -0
- data/doc/classes/Dnsruby/Config.src/M000149.html +19 -0
- data/doc/classes/Dnsruby/Config.src/M000150.html +19 -0
- data/doc/classes/Dnsruby/Config.src/M000151.html +25 -0
- data/doc/classes/Dnsruby/Config.src/M000152.html +21 -0
- data/doc/classes/Dnsruby/Config.src/M000153.html +38 -0
- data/doc/classes/Dnsruby/Config.src/M000154.html +26 -0
- data/doc/classes/Dnsruby/Config.src/M000155.html +22 -0
- data/doc/classes/Dnsruby/Config.src/M000156.html +27 -0
- data/doc/classes/Dnsruby/Config.src/M000157.html +22 -0
- data/doc/classes/Dnsruby/Config.src/M000158.html +21 -0
- data/doc/classes/Dnsruby/DNS.html +571 -0
- data/doc/classes/Dnsruby/DNS.src/M000258.html +24 -0
- data/doc/classes/Dnsruby/DNS.src/M000259.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000260.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000261.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000262.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000263.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000264.html +18 -0
- data/doc/classes/Dnsruby/DNS.src/M000265.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000266.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000267.html +28 -0
- data/doc/classes/Dnsruby/DNS.src/M000268.html +19 -0
- data/doc/classes/Dnsruby/DNS.src/M000269.html +20 -0
- data/doc/classes/Dnsruby/DNS.src/M000270.html +31 -0
- data/doc/classes/Dnsruby/DecodeError.html +120 -0
- data/doc/classes/Dnsruby/Dnssec.html +287 -0
- data/doc/classes/Dnsruby/Dnssec.src/M000249.html +23 -0
- data/doc/classes/Dnsruby/Dnssec.src/M000250.html +19 -0
- data/doc/classes/Dnsruby/Dnssec.src/M000251.html +90 -0
- data/doc/classes/Dnsruby/Dnssec.src/M000252.html +76 -0
- data/doc/classes/Dnsruby/EncodeError.html +120 -0
- data/doc/classes/Dnsruby/FormErr.html +119 -0
- data/doc/classes/Dnsruby/Header.html +501 -0
- data/doc/classes/Dnsruby/Header.src/M000231.html +35 -0
- data/doc/classes/Dnsruby/Header.src/M000232.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000233.html +18 -0
- data/doc/classes/Dnsruby/Header.src/M000234.html +21 -0
- data/doc/classes/Dnsruby/Header.src/M000235.html +20 -0
- data/doc/classes/Dnsruby/Header.src/M000236.html +32 -0
- data/doc/classes/Dnsruby/Header.src/M000237.html +27 -0
- data/doc/classes/Dnsruby/Header.src/M000238.html +26 -0
- data/doc/classes/Dnsruby/Header.src/M000239.html +47 -0
- data/doc/classes/Dnsruby/Header.src/M000240.html +28 -0
- data/doc/classes/Dnsruby/Header.src/M000241.html +30 -0
- data/doc/classes/Dnsruby/Hosts.html +316 -0
- data/doc/classes/Dnsruby/Hosts.src/M000197.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000198.html +19 -0
- data/doc/classes/Dnsruby/Hosts.src/M000199.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000200.html +21 -0
- data/doc/classes/Dnsruby/Hosts.src/M000201.html +19 -0
- data/doc/classes/Dnsruby/Hosts.src/M000202.html +20 -0
- data/doc/classes/Dnsruby/Hosts.src/M000203.html +21 -0
- data/doc/classes/Dnsruby/IPv4.html +233 -0
- data/doc/classes/Dnsruby/IPv4.src/M000204.html +32 -0
- data/doc/classes/Dnsruby/IPv4.src/M000205.html +19 -0
- data/doc/classes/Dnsruby/IPv4.src/M000206.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000207.html +18 -0
- data/doc/classes/Dnsruby/IPv4.src/M000208.html +18 -0
- data/doc/classes/Dnsruby/IPv6.html +281 -0
- data/doc/classes/Dnsruby/IPv6.src/M000242.html +60 -0
- data/doc/classes/Dnsruby/IPv6.src/M000243.html +22 -0
- data/doc/classes/Dnsruby/IPv6.src/M000244.html +20 -0
- data/doc/classes/Dnsruby/IPv6.src/M000245.html +18 -0
- data/doc/classes/Dnsruby/Message.html +803 -0
- data/doc/classes/Dnsruby/Message.src/M000119.html +38 -0
- data/doc/classes/Dnsruby/Message.src/M000120.html +26 -0
- data/doc/classes/Dnsruby/Message.src/M000121.html +22 -0
- data/doc/classes/Dnsruby/Message.src/M000122.html +22 -0
- data/doc/classes/Dnsruby/Message.src/M000123.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000124.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000125.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000126.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000127.html +18 -0
- data/doc/classes/Dnsruby/Message.src/M000128.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000129.html +23 -0
- data/doc/classes/Dnsruby/Message.src/M000130.html +30 -0
- data/doc/classes/Dnsruby/Message.src/M000131.html +20 -0
- data/doc/classes/Dnsruby/Message.src/M000132.html +18 -0
- data/doc/classes/Dnsruby/Message.src/M000133.html +56 -0
- data/doc/classes/Dnsruby/Message.src/M000134.html +35 -0
- data/doc/classes/Dnsruby/Message.src/M000135.html +46 -0
- data/doc/classes/Dnsruby/Message/Section.html +160 -0
- data/doc/classes/Dnsruby/Message/Section.src/M000141.html +29 -0
- data/doc/classes/Dnsruby/Message/Section.src/M000142.html +30 -0
- data/doc/classes/Dnsruby/MetaTypes.html +136 -0
- data/doc/classes/Dnsruby/Modes.html +171 -0
- data/doc/classes/Dnsruby/NXDomain.html +119 -0
- data/doc/classes/Dnsruby/Name.html +330 -0
- data/doc/classes/Dnsruby/Name.src/M000104.html +28 -0
- data/doc/classes/Dnsruby/Name.src/M000105.html +20 -0
- data/doc/classes/Dnsruby/Name.src/M000106.html +18 -0
- data/doc/classes/Dnsruby/Name.src/M000107.html +21 -0
- data/doc/classes/Dnsruby/Name.src/M000108.html +22 -0
- data/doc/classes/Dnsruby/Name.src/M000109.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.html +300 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000110.html +21 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000111.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000112.html +22 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000113.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000114.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000115.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000116.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000117.html +18 -0
- data/doc/classes/Dnsruby/Name/Label.src/M000118.html +18 -0
- data/doc/classes/Dnsruby/NotImp.html +119 -0
- data/doc/classes/Dnsruby/OpCode.html +146 -0
- data/doc/classes/Dnsruby/OtherResolvError.html +119 -0
- data/doc/classes/Dnsruby/QTypes.html +146 -0
- data/doc/classes/Dnsruby/Question.html +301 -0
- data/doc/classes/Dnsruby/Question.src/M000226.html +47 -0
- data/doc/classes/Dnsruby/Question.src/M000227.html +18 -0
- data/doc/classes/Dnsruby/Question.src/M000228.html +18 -0
- data/doc/classes/Dnsruby/Question.src/M000229.html +32 -0
- data/doc/classes/Dnsruby/Question.src/M000230.html +18 -0
- data/doc/classes/Dnsruby/RCode.html +211 -0
- data/doc/classes/Dnsruby/RR.html +648 -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 +26 -0
- data/doc/classes/Dnsruby/RR.src/M000006.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000007.html +36 -0
- data/doc/classes/Dnsruby/RR.src/M000008.html +100 -0
- data/doc/classes/Dnsruby/RR.src/M000009.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000010.html +18 -0
- data/doc/classes/Dnsruby/RR.src/M000011.html +22 -0
- data/doc/classes/Dnsruby/RR.src/M000012.html +29 -0
- data/doc/classes/Dnsruby/RR.src/M000013.html +24 -0
- data/doc/classes/Dnsruby/RR/ANY.html +133 -0
- data/doc/classes/Dnsruby/RR/CERT.html +180 -0
- data/doc/classes/Dnsruby/RR/CERT/CertificateTypes.html +169 -0
- data/doc/classes/Dnsruby/RR/CNAME.html +151 -0
- data/doc/classes/Dnsruby/RR/DNAME.html +150 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.html +422 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000044.html +20 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000045.html +21 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000046.html +28 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000047.html +22 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000048.html +18 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000049.html +22 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000050.html +18 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000051.html +26 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000052.html +38 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000053.html +45 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000054.html +21 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000055.html +24 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000056.html +32 -0
- data/doc/classes/Dnsruby/RR/DNSKEY.src/M000057.html +24 -0
- data/doc/classes/Dnsruby/RR/DS.html +286 -0
- data/doc/classes/Dnsruby/RR/DS.src/M000039.html +22 -0
- data/doc/classes/Dnsruby/RR/DS.src/M000040.html +28 -0
- data/doc/classes/Dnsruby/RR/DS.src/M000041.html +24 -0
- data/doc/classes/Dnsruby/RR/DS.src/M000042.html +28 -0
- data/doc/classes/Dnsruby/RR/DS.src/M000043.html +36 -0
- data/doc/classes/Dnsruby/RR/DomainName.html +175 -0
- data/doc/classes/Dnsruby/RR/DomainName.src/M000083.html +18 -0
- data/doc/classes/Dnsruby/RR/Generic.html +133 -0
- data/doc/classes/Dnsruby/RR/HINFO.html +155 -0
- data/doc/classes/Dnsruby/RR/IN.html +155 -0
- data/doc/classes/Dnsruby/RR/IN/A.html +200 -0
- data/doc/classes/Dnsruby/RR/IN/A.src/M000017.html +18 -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/AAAA.html +139 -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 +238 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000014.html +29 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000015.html +26 -0
- data/doc/classes/Dnsruby/RR/IN/SRV.src/M000016.html +22 -0
- data/doc/classes/Dnsruby/RR/IN/WKS.html +166 -0
- data/doc/classes/Dnsruby/RR/IN/WKS.src/M000020.html +20 -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 +151 -0
- data/doc/classes/Dnsruby/RR/NSAP.html +293 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000093.html +19 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000094.html +19 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000095.html +22 -0
- data/doc/classes/Dnsruby/RR/NSAP.src/M000096.html +31 -0
- data/doc/classes/Dnsruby/RR/NSEC.html +301 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000031.html +19 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000032.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000033.html +34 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000034.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000035.html +71 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000036.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000037.html +80 -0
- data/doc/classes/Dnsruby/RR/NSEC.src/M000038.html +23 -0
- data/doc/classes/Dnsruby/RR/NSEC3.html +366 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000085.html +28 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000086.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000087.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000088.html +22 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000089.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000090.html +21 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000091.html +21 -0
- data/doc/classes/Dnsruby/RR/NSEC3.src/M000092.html +29 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.html +279 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000077.html +28 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000078.html +18 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000079.html +22 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000080.html +21 -0
- data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000081.html +25 -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/M000082.html +19 -0
- data/doc/classes/Dnsruby/RR/RRSIG.html +357 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000097.html +26 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000098.html +28 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000099.html +23 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000100.html +23 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000101.html +46 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000102.html +50 -0
- data/doc/classes/Dnsruby/RR/RRSIG.src/M000103.html +27 -0
- data/doc/classes/Dnsruby/RR/RT.html +155 -0
- data/doc/classes/Dnsruby/RR/SOA.html +233 -0
- data/doc/classes/Dnsruby/RR/SOA.src/M000066.html +24 -0
- data/doc/classes/Dnsruby/RR/SOA.src/M000067.html +27 -0
- data/doc/classes/Dnsruby/RR/SPF.html +138 -0
- data/doc/classes/Dnsruby/RR/TKEY.html +313 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000021.html +19 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000022.html +29 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000023.html +21 -0
- data/doc/classes/Dnsruby/RR/TKEY.src/M000024.html +29 -0
- data/doc/classes/Dnsruby/RR/TSIG.html +524 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000068.html +24 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000069.html +32 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000070.html +54 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000071.html +121 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000072.html +33 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000073.html +25 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000074.html +36 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000075.html +22 -0
- data/doc/classes/Dnsruby/RR/TSIG.src/M000076.html +29 -0
- data/doc/classes/Dnsruby/RR/TXT.html +233 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000061.html +18 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000062.html +18 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000063.html +20 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000064.html +27 -0
- data/doc/classes/Dnsruby/RR/TXT.src/M000065.html +25 -0
- data/doc/classes/Dnsruby/RR/X25.html +203 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000058.html +18 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000059.html +18 -0
- data/doc/classes/Dnsruby/RR/X25.src/M000060.html +22 -0
- data/doc/classes/Dnsruby/RRSet.html +404 -0
- data/doc/classes/Dnsruby/RRSet.src/M000211.html +23 -0
- data/doc/classes/Dnsruby/RRSet.src/M000212.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000213.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000214.html +47 -0
- data/doc/classes/Dnsruby/RRSet.src/M000215.html +42 -0
- data/doc/classes/Dnsruby/RRSet.src/M000216.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000217.html +20 -0
- data/doc/classes/Dnsruby/RRSet.src/M000218.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000219.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000220.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000221.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000222.html +22 -0
- data/doc/classes/Dnsruby/RRSet.src/M000223.html +18 -0
- data/doc/classes/Dnsruby/RRSet.src/M000224.html +22 -0
- data/doc/classes/Dnsruby/RRSet.src/M000225.html +18 -0
- data/doc/classes/Dnsruby/Refused.html +119 -0
- data/doc/classes/Dnsruby/Resolv.html +401 -0
- data/doc/classes/Dnsruby/Resolv.src/M000159.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000160.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000161.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000162.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000163.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000164.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000165.html +18 -0
- data/doc/classes/Dnsruby/Resolv.src/M000166.html +19 -0
- data/doc/classes/Dnsruby/Resolv.src/M000167.html +20 -0
- data/doc/classes/Dnsruby/Resolv.src/M000168.html +29 -0
- data/doc/classes/Dnsruby/Resolv.src/M000169.html +19 -0
- data/doc/classes/Dnsruby/Resolv.src/M000170.html +20 -0
- data/doc/classes/Dnsruby/Resolv.src/M000171.html +25 -0
- data/doc/classes/Dnsruby/ResolvError.html +117 -0
- data/doc/classes/Dnsruby/ResolvTimeout.html +117 -0
- data/doc/classes/Dnsruby/Resolver.html +1055 -0
- data/doc/classes/Dnsruby/Resolver.src/M000271.html +21 -0
- data/doc/classes/Dnsruby/Resolver.src/M000272.html +27 -0
- data/doc/classes/Dnsruby/Resolver.src/M000273.html +28 -0
- data/doc/classes/Dnsruby/Resolver.src/M000274.html +18 -0
- data/doc/classes/Dnsruby/Resolver.src/M000275.html +51 -0
- data/doc/classes/Dnsruby/Resolver.src/M000276.html +21 -0
- data/doc/classes/Dnsruby/Resolver.src/M000277.html +22 -0
- data/doc/classes/Dnsruby/Resolver.src/M000278.html +18 -0
- data/doc/classes/Dnsruby/Resolver.src/M000279.html +20 -0
- data/doc/classes/Dnsruby/Resolver.src/M000280.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000281.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000282.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000283.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000284.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000285.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000286.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000287.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000288.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000289.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000290.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000291.html +19 -0
- data/doc/classes/Dnsruby/Resolver.src/M000292.html +26 -0
- data/doc/classes/Dnsruby/Resolver.src/M000293.html +18 -0
- data/doc/classes/Dnsruby/Resolver.src/M000294.html +23 -0
- data/doc/classes/Dnsruby/Resolver.src/M000295.html +18 -0
- data/doc/classes/Dnsruby/ServFail.html +119 -0
- data/doc/classes/Dnsruby/SingleResolver.html +674 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000172.html +18 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000173.html +24 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000174.html +36 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000175.html +18 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000176.html +19 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000177.html +50 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000178.html +19 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000179.html +21 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000180.html +25 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000181.html +54 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000182.html +27 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000183.html +27 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000184.html +35 -0
- data/doc/classes/Dnsruby/SingleResolver.src/M000185.html +21 -0
- data/doc/classes/Dnsruby/TheLog.html +196 -0
- data/doc/classes/Dnsruby/TheLog.src/M000246.html +20 -0
- data/doc/classes/Dnsruby/TheLog.src/M000247.html +20 -0
- data/doc/classes/Dnsruby/TheLog.src/M000248.html +20 -0
- data/doc/classes/Dnsruby/Types.html +436 -0
- data/doc/classes/Dnsruby/Update.html +368 -0
- data/doc/classes/Dnsruby/Update.src/M000253.html +32 -0
- data/doc/classes/Dnsruby/Update.src/M000254.html +36 -0
- data/doc/classes/Dnsruby/Update.src/M000255.html +32 -0
- data/doc/classes/Dnsruby/Update.src/M000256.html +41 -0
- data/doc/classes/Dnsruby/Update.src/M000257.html +34 -0
- data/doc/classes/Dnsruby/VerifyError.html +119 -0
- data/doc/classes/Dnsruby/ZoneTransfer.html +300 -0
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000143.html +18 -0
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000144.html +24 -0
- data/doc/classes/Dnsruby/ZoneTransfer.src/M000145.html +35 -0
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.html +200 -0
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000146.html +19 -0
- data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000147.html +19 -0
- data/doc/created.rid +1 -0
- data/doc/files/lib/Dnsruby/Config_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 +109 -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/dnssec_rb.html +107 -0
- data/doc/files/lib/Dnsruby/event_machine_interface_rb.html +108 -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/DNSKEY_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/DS_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/NSEC3PARAM_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NSEC3_rb.html +101 -0
- data/doc/files/lib/Dnsruby/resource/NSEC_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/RRSIG_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 +114 -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 +131 -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 +108 -0
- data/doc/fr_file_index.html +75 -0
- data/doc/fr_method_index.html +321 -0
- data/doc/index.html +24 -0
- data/lib/Dnsruby/DNS.rb +3 -3
- data/lib/Dnsruby/Resolver.rb +11 -2
- data/lib/Dnsruby/SingleResolver.rb +28 -20
- data/lib/Dnsruby/code_mapper.rb +9 -4
- data/lib/Dnsruby/dnssec.rb +6 -3
- data/lib/Dnsruby/message.rb +108 -32
- data/lib/Dnsruby/resource/DLV.rb +27 -0
- data/lib/Dnsruby/resource/DNSKEY.rb +29 -7
- data/lib/Dnsruby/resource/DS.rb +97 -18
- data/lib/Dnsruby/resource/DS.rb.new +202 -0
- data/lib/Dnsruby/resource/DS.rb.orig +162 -0
- data/lib/Dnsruby/resource/NSEC.rb +22 -6
- data/lib/Dnsruby/resource/OPT.rb +14 -13
- data/lib/Dnsruby/resource/PX.rb +1 -1
- data/lib/Dnsruby/resource/RRSIG.rb +17 -9
- data/lib/Dnsruby/resource/RT.rb +1 -1
- data/lib/Dnsruby/resource/TSIG.rb +4 -0
- data/lib/Dnsruby/resource/generic.rb +2 -1
- data/lib/Dnsruby/resource/resource.rb +23 -8
- data/lib/Dnsruby/select_thread.rb +15 -7
- data/lib/Dnsruby/update.rb +3 -3
- data/lib/Dnsruby/zone_transfer.rb +1 -1
- data/lib/dnsruby.rb +4 -2
- data/test/tc_dns.rb +1 -1
- data/test/tc_ds.rb +47 -4
- data/test/tc_em_deferrable.rb +38 -0
- data/test/tc_event_machine_res.rb +1 -1
- data/test/tc_header.rb +2 -2
- data/test/tc_inet6.rb +170 -0
- data/test/tc_nsec3.rb +6 -5
- data/test/tc_packet.rb +18 -4
- data/test/tc_queue.rb +17 -0
- data/test/tc_resolver.rb +14 -14
- data/test/tc_rr-opt.rb +21 -2
- data/test/tc_rr.rb +4 -0
- data/test/tc_rrset.rb +2 -2
- data/test/tc_rrsig.rb +2 -2
- data/test/tc_tcp.rb +1 -1
- data/test/tc_tsig.rb +6 -6
- data/test/ts_offline.rb +17 -2
- data/test/ts_online.rb +4 -0
- metadata +496 -3
data/lib/Dnsruby/code_mapper.rb
CHANGED
|
@@ -51,7 +51,7 @@ module Dnsruby
|
|
|
51
51
|
|
|
52
52
|
constants = self.constants - CodeMapper.constants
|
|
53
53
|
constants.each do |i|
|
|
54
|
-
@@strings[self].store(i, const_get(i))
|
|
54
|
+
@@strings[self].store(i.to_s, const_get(i))
|
|
55
55
|
end
|
|
56
56
|
@@maxcode[self] = constants.length
|
|
57
57
|
@@values[self] = @@strings[self].invert
|
|
@@ -74,7 +74,10 @@ module Dnsruby
|
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
def unknown_code(arg) #:nodoc: all
|
|
77
|
-
|
|
77
|
+
# Be liberal in what you accept...
|
|
78
|
+
# raise ArgumentError.new("Code #{arg} not a member of #{self.class}")
|
|
79
|
+
Classes.add_pair(arg.to_s, arg)
|
|
80
|
+
set_code(arg)
|
|
78
81
|
end
|
|
79
82
|
|
|
80
83
|
def self.method_missing(methId) #:nodoc: all
|
|
@@ -86,12 +89,14 @@ module Dnsruby
|
|
|
86
89
|
if (arg.kind_of?String)
|
|
87
90
|
if (@@stringsdown[self.class][arg.downcase] != nil)
|
|
88
91
|
set_string(arg)
|
|
89
|
-
else
|
|
92
|
+
else
|
|
93
|
+
unknown_string(arg)
|
|
90
94
|
end
|
|
91
95
|
elsif (arg.kind_of?Fixnum)
|
|
92
96
|
if (@@values[self.class][arg] != nil)
|
|
93
97
|
set_code(arg)
|
|
94
|
-
else
|
|
98
|
+
else
|
|
99
|
+
unknown_code(arg)
|
|
95
100
|
end
|
|
96
101
|
elsif (arg.kind_of?self.class)
|
|
97
102
|
set_code(arg.code)
|
data/lib/Dnsruby/dnssec.rb
CHANGED
|
@@ -151,7 +151,7 @@ module Dnsruby
|
|
|
151
151
|
end
|
|
152
152
|
|
|
153
153
|
# Now check that we are in the validity period for the RRSIG
|
|
154
|
-
now = Time.now
|
|
154
|
+
now = Time.now
|
|
155
155
|
if ((sigrec.expiration < now) || (sigrec.inception > now))
|
|
156
156
|
raise VerifyError.new("Signature record not in validity period")
|
|
157
157
|
end
|
|
@@ -329,6 +329,9 @@ module Dnsruby
|
|
|
329
329
|
data = MessageEncoder.new { |msg|
|
|
330
330
|
msg.put_rr(rec, true)
|
|
331
331
|
}.to_s # @TODO@ worry about wildcards here?
|
|
332
|
+
if (RUBY_VERSION >= "1.9")
|
|
333
|
+
data.force_encoding("ASCII-8BIT")
|
|
334
|
+
end
|
|
332
335
|
sig_data += data
|
|
333
336
|
end
|
|
334
337
|
|
|
@@ -339,12 +342,12 @@ module Dnsruby
|
|
|
339
342
|
elsif (sigrec.algorithm == HMAC_SHA256)
|
|
340
343
|
verified = keyrec.public_key.verify(OpenSSL::Digest::SHA256.new, sigrec.signature, sig_data)
|
|
341
344
|
else
|
|
342
|
-
raise RuntimeError.new("Algorithm #{sigrec.algorithm.
|
|
345
|
+
raise RuntimeError.new("Algorithm #{sigrec.algorithm.code} unsupported by Dnsruby")
|
|
343
346
|
end
|
|
344
347
|
|
|
345
348
|
if (verified)
|
|
346
349
|
# Sort out the TTLs - set it to the minimum valid ttl
|
|
347
|
-
expiration_diff = (sigrec.expiration - Time.now.to_i).abs
|
|
350
|
+
expiration_diff = (sigrec.expiration.to_i - Time.now.to_i).abs
|
|
348
351
|
rrset.ttl = ([rrset.ttl, sigrec.ttl, sigrec.original_ttl,
|
|
349
352
|
expiration_diff].sort)[0]
|
|
350
353
|
|
data/lib/Dnsruby/message.rb
CHANGED
|
@@ -111,6 +111,7 @@ module Dnsruby
|
|
|
111
111
|
@signing = false
|
|
112
112
|
@tsigkey = nil
|
|
113
113
|
@answerfrom = nil
|
|
114
|
+
@answerip = nil
|
|
114
115
|
type = Types.A
|
|
115
116
|
klass = Classes.IN
|
|
116
117
|
if (args.length > 0)
|
|
@@ -140,6 +141,9 @@ module Dnsruby
|
|
|
140
141
|
#If this Message is a response from a server, then answerfrom contains the address of the server
|
|
141
142
|
attr_accessor :answerfrom
|
|
142
143
|
|
|
144
|
+
#If this Message is a response from a server, then answerfrom contains the IP address of the server
|
|
145
|
+
attr_accessor :answerip
|
|
146
|
+
|
|
143
147
|
#If this Message is a response from a server, then answersize contains the size of the response
|
|
144
148
|
attr_accessor :answersize
|
|
145
149
|
|
|
@@ -305,6 +309,25 @@ module Dnsruby
|
|
|
305
309
|
return (@tsigstate == :Verified)
|
|
306
310
|
end
|
|
307
311
|
|
|
312
|
+
def get_opt
|
|
313
|
+
each_additional do |r|
|
|
314
|
+
if (r.type == Types.OPT)
|
|
315
|
+
return r
|
|
316
|
+
end
|
|
317
|
+
end
|
|
318
|
+
return nil
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
def rcode
|
|
322
|
+
rcode = @header.get_header_rcode
|
|
323
|
+
opt = get_opt
|
|
324
|
+
if (opt != nil)
|
|
325
|
+
rcode = rcode.code + (opt.xrcode << 4)
|
|
326
|
+
rcode = RCode.new(rcode)
|
|
327
|
+
end
|
|
328
|
+
return rcode;
|
|
329
|
+
end
|
|
330
|
+
|
|
308
331
|
def to_s
|
|
309
332
|
retval = "";
|
|
310
333
|
|
|
@@ -312,11 +335,20 @@ module Dnsruby
|
|
|
312
335
|
retval = retval + ";; Answer received from #{@answerfrom} (#{@answersize} bytes)\n;;\n";
|
|
313
336
|
end
|
|
314
337
|
|
|
315
|
-
retval = retval + ";; HEADER SECTION\n"
|
|
316
|
-
|
|
317
|
-
|
|
338
|
+
retval = retval + ";; HEADER SECTION\n"
|
|
339
|
+
# OPT pseudosection? EDNS flags, udpsize
|
|
340
|
+
opt = get_opt
|
|
341
|
+
if (!opt)
|
|
342
|
+
retval = retval + @header.to_s
|
|
343
|
+
else
|
|
344
|
+
retval = retval + @header.to_s_with_rcode(rcode())
|
|
345
|
+
end
|
|
346
|
+
retval = retval + "\n"
|
|
318
347
|
|
|
319
|
-
|
|
348
|
+
if (opt)
|
|
349
|
+
retval = retval + opt.to_s
|
|
350
|
+
retval = retval + "\n"
|
|
351
|
+
end
|
|
320
352
|
|
|
321
353
|
section = (@header.opcode == OpCode.UPDATE) ? "ZONE" : "QUESTION";
|
|
322
354
|
retval = retval + ";; #{section} SECTION (#{@header.qdcount} record#{@header.qdcount == 1 ? '' : 's'})\n";
|
|
@@ -324,25 +356,33 @@ module Dnsruby
|
|
|
324
356
|
retval = retval + ";; #{qr.to_s}\n";
|
|
325
357
|
}
|
|
326
358
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
359
|
+
if (@answer.size > 0)
|
|
360
|
+
retval = retval + "\n";
|
|
361
|
+
section = (@header.opcode == OpCode.UPDATE) ? "PREREQUISITE" : "ANSWER";
|
|
362
|
+
retval = retval + ";; #{section} SECTION (#{@header.ancount} record#{@header.ancount == 1 ? '' : 's'})\n";
|
|
363
|
+
each_answer { |rr|
|
|
364
|
+
retval = retval + rr.to_s + "\n";
|
|
365
|
+
}
|
|
366
|
+
end
|
|
333
367
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
368
|
+
if (@authority.size > 0)
|
|
369
|
+
retval = retval + "\n";
|
|
370
|
+
section = (@header.opcode == OpCode.UPDATE) ? "UPDATE" : "AUTHORITY";
|
|
371
|
+
retval = retval + ";; #{section} SECTION (#{@header.nscount} record#{@header.nscount == 1 ? '' : 's'})\n";
|
|
372
|
+
each_authority { |rr|
|
|
373
|
+
retval = retval + rr.to_s + "\n";
|
|
374
|
+
}
|
|
375
|
+
end
|
|
340
376
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
377
|
+
if ((@additional.size > 0 && !opt) || (@additional.size > 1))
|
|
378
|
+
retval = retval + "\n";
|
|
379
|
+
retval = retval + ";; ADDITIONAL SECTION (#{@header.arcount} record#{@header.arcount == 1 ? '' : 's'})\n";
|
|
380
|
+
each_additional { |rr|
|
|
381
|
+
if (rr.type != Types.OPT)
|
|
382
|
+
retval = retval + rr.to_s+ "\n"
|
|
383
|
+
end
|
|
384
|
+
}
|
|
385
|
+
end
|
|
346
386
|
|
|
347
387
|
return retval;
|
|
348
388
|
end
|
|
@@ -488,7 +528,12 @@ module Dnsruby
|
|
|
488
528
|
attr_accessor :ra
|
|
489
529
|
|
|
490
530
|
#Query response code
|
|
491
|
-
|
|
531
|
+
#deprecated - use Message#rcode
|
|
532
|
+
# attr_reader :rcode
|
|
533
|
+
# This new get_header_rcode method is intended for use only by the Message class
|
|
534
|
+
def get_header_rcode
|
|
535
|
+
@rcode
|
|
536
|
+
end
|
|
492
537
|
|
|
493
538
|
# The header opcode
|
|
494
539
|
attr_reader :opcode
|
|
@@ -584,10 +629,14 @@ module Dnsruby
|
|
|
584
629
|
@ra == other.ra &&
|
|
585
630
|
@cd == other.cd &&
|
|
586
631
|
@ad == other.ad &&
|
|
587
|
-
@rcode == other.
|
|
632
|
+
@rcode == other.get_header_rcode
|
|
588
633
|
end
|
|
589
634
|
|
|
590
635
|
def to_s
|
|
636
|
+
to_s_with_rcode(@rcode)
|
|
637
|
+
end
|
|
638
|
+
|
|
639
|
+
def to_s_with_rcode(rcode)
|
|
591
640
|
retval = ";; id = #{@id}\n";
|
|
592
641
|
|
|
593
642
|
if (@opcode == OpCode::Update)
|
|
@@ -609,7 +658,7 @@ module Dnsruby
|
|
|
609
658
|
retval += ";; ra = #{@ra} " +\
|
|
610
659
|
"ad = #{@ad} " +\
|
|
611
660
|
"cd = #{@cd} " +\
|
|
612
|
-
"rcode = #{
|
|
661
|
+
"rcode = #{rcode.string}\n";
|
|
613
662
|
|
|
614
663
|
retval += ";; qdcount = #{@qdcount} " +\
|
|
615
664
|
"ancount = #{@ancount} " +\
|
|
@@ -699,17 +748,34 @@ module Dnsruby
|
|
|
699
748
|
|
|
700
749
|
def get_unpack(template)
|
|
701
750
|
len = 0
|
|
751
|
+
littlec = ?c
|
|
752
|
+
bigc = ?C
|
|
753
|
+
littleh = ?h
|
|
754
|
+
bigh = ?H
|
|
755
|
+
littlen = ?n
|
|
756
|
+
bign = ?N
|
|
757
|
+
star = ?*
|
|
758
|
+
if (littlec.class != Fixnum)
|
|
759
|
+
# We're using Ruby 1.9 - convert the codes
|
|
760
|
+
littlec = littlec.getbyte(0)
|
|
761
|
+
bigc = bigc.getbyte(0)
|
|
762
|
+
littleh = littleh.getbyte(0)
|
|
763
|
+
bigh = bigh.getbyte(0)
|
|
764
|
+
littlen = littlen.getbyte(0)
|
|
765
|
+
bign = bign.getbyte(0)
|
|
766
|
+
star = star.getbyte(0)
|
|
767
|
+
end
|
|
702
768
|
template.each_byte {|byte|
|
|
703
769
|
case byte
|
|
704
|
-
when
|
|
770
|
+
when littlec, bigc
|
|
705
771
|
len += 1
|
|
706
|
-
when
|
|
772
|
+
when littleh, bigh
|
|
707
773
|
len += 1
|
|
708
|
-
when
|
|
774
|
+
when littlen
|
|
709
775
|
len += 2
|
|
710
|
-
when
|
|
776
|
+
when bign
|
|
711
777
|
len += 4
|
|
712
|
-
when
|
|
778
|
+
when star
|
|
713
779
|
len = @limit-@index
|
|
714
780
|
else
|
|
715
781
|
raise StandardError.new("unsupported template: '#{byte.chr}' in '#{template}'")
|
|
@@ -723,7 +789,10 @@ module Dnsruby
|
|
|
723
789
|
|
|
724
790
|
def get_string
|
|
725
791
|
len = @data[@index]
|
|
726
|
-
|
|
792
|
+
if (len.class == String)
|
|
793
|
+
len = len.getbyte(0)
|
|
794
|
+
end
|
|
795
|
+
raise DecodeError.new("limit exceeded\nlimit = #{@limit}, index = #{@index}, len = #{len}\n") if @limit < @index + 1 + len
|
|
727
796
|
d = @data[@index + 1, len]
|
|
728
797
|
@index += 1 + len
|
|
729
798
|
return d
|
|
@@ -745,7 +814,11 @@ module Dnsruby
|
|
|
745
814
|
limit = @index if !limit || @index < limit
|
|
746
815
|
d = []
|
|
747
816
|
while true
|
|
748
|
-
|
|
817
|
+
temp = @data[@index]
|
|
818
|
+
if (temp.class == String)
|
|
819
|
+
temp = (temp.getbyte(0))
|
|
820
|
+
end
|
|
821
|
+
case temp # @data[@index]
|
|
749
822
|
when 0
|
|
750
823
|
@index += 1
|
|
751
824
|
return d
|
|
@@ -767,7 +840,8 @@ module Dnsruby
|
|
|
767
840
|
end
|
|
768
841
|
|
|
769
842
|
def get_label
|
|
770
|
-
|
|
843
|
+
label = Name::Label.new(Name::decode(self.get_string))
|
|
844
|
+
return label
|
|
771
845
|
end
|
|
772
846
|
|
|
773
847
|
def get_question
|
|
@@ -957,5 +1031,7 @@ module Dnsruby
|
|
|
957
1031
|
alias ztype qtype
|
|
958
1032
|
# For Updates, the qclass field is redefined to zclass (RFC2136, section 2.3)
|
|
959
1033
|
alias zclass qclass
|
|
1034
|
+
|
|
1035
|
+
alias type qtype
|
|
960
1036
|
end
|
|
961
1037
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#--
|
|
2
|
+
#Copyright 2008 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
|
+
|
|
17
|
+
module Dnsruby
|
|
18
|
+
class RR
|
|
19
|
+
#RFC4431 specifies that the DLV is assigned type 32769, and the
|
|
20
|
+
# rdata is identical to that of the DS record.
|
|
21
|
+
|
|
22
|
+
class DLV < RR::DS
|
|
23
|
+
ClassValue = nil #:nodoc: all
|
|
24
|
+
TypeValue = Types::DLV #:nodoc: all
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
#Unless required by applicable law or agreed to in writing, software
|
|
11
11
|
#distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
12
|
#WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
#See the License
|
|
13
|
+
#See the License f181or the specific language governing permissions and
|
|
14
14
|
#limitations under the License.
|
|
15
15
|
#++
|
|
16
16
|
module Dnsruby
|
|
@@ -142,7 +142,7 @@ module Dnsruby
|
|
|
142
142
|
def rdata_to_string #:nodoc: all
|
|
143
143
|
if (@flags!=nil)
|
|
144
144
|
# return "#{@flags} #{@protocol} #{@algorithm.string} ( #{Base64.encode64(@key.to_s)} )"
|
|
145
|
-
return "#{@flags} #{@protocol} #{@algorithm.string} ( #{[@key.to_s].pack("m*")} )"
|
|
145
|
+
return "#{@flags} #{@protocol} #{@algorithm.string} ( #{[@key.to_s].pack("m*").gsub("\n", "")} )"
|
|
146
146
|
else
|
|
147
147
|
return ""
|
|
148
148
|
end
|
|
@@ -150,7 +150,7 @@ module Dnsruby
|
|
|
150
150
|
|
|
151
151
|
def encode_rdata(msg, canonical=false) #:nodoc: all
|
|
152
152
|
# 2 octets, then 2 sets of 1 octet
|
|
153
|
-
msg.put_pack('ncc', @flags, @protocol, @algorithm.
|
|
153
|
+
msg.put_pack('ncc', @flags, @protocol, @algorithm.code)
|
|
154
154
|
msg.put_bytes(@key)
|
|
155
155
|
end
|
|
156
156
|
|
|
@@ -178,13 +178,28 @@ module Dnsruby
|
|
|
178
178
|
last = 0
|
|
179
179
|
0.step(rdata.length-1, 2) {|i|
|
|
180
180
|
last = i
|
|
181
|
-
d1 = rdata[i]
|
|
182
|
-
d2 = rdata[i + 1]
|
|
181
|
+
d1 = rdata[i]
|
|
182
|
+
d2 = rdata[i + 1]
|
|
183
|
+
|
|
184
|
+
if (d1.class == String) # Ruby 1.9
|
|
185
|
+
d1 = d1.getbyte(0)
|
|
186
|
+
d2 = d2.getbyte(0)
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
d1 = d1 & 0xFF
|
|
190
|
+
d2 = d2 & 0xFF
|
|
191
|
+
|
|
183
192
|
tag += ((d1 << 8) + d2)
|
|
184
193
|
}
|
|
185
194
|
last+=2
|
|
186
195
|
if (last < rdata.length)
|
|
187
|
-
d1 = rdata[last]
|
|
196
|
+
d1 = rdata[last]
|
|
197
|
+
|
|
198
|
+
if (d1.class == String) # Ruby 1.9
|
|
199
|
+
d1 = d1.getbyte(0)
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
d1 = d1 & 0xFF
|
|
188
203
|
tag += (d1 << 8)
|
|
189
204
|
end
|
|
190
205
|
tag += ((tag >> 16) & 0xFFFF)
|
|
@@ -212,9 +227,16 @@ module Dnsruby
|
|
|
212
227
|
|
|
213
228
|
def rsa_key
|
|
214
229
|
exponentLength = @key[0]
|
|
230
|
+
if (exponentLength.class == String)
|
|
231
|
+
exponentLength = exponentLength.getbyte(0) # Ruby 1.9
|
|
232
|
+
end
|
|
215
233
|
pos = 1
|
|
216
234
|
if (exponentLength == 0)
|
|
217
|
-
|
|
235
|
+
key1 = @key[1]
|
|
236
|
+
if (key1.class == String) # Ruby 1.9
|
|
237
|
+
key1 = key1.getbyte(0)
|
|
238
|
+
end
|
|
239
|
+
exponentLength = (key1<<8) + key1
|
|
218
240
|
pos += 2
|
|
219
241
|
end
|
|
220
242
|
exponent = get_num(@key[pos, exponentLength])
|
data/lib/Dnsruby/resource/DS.rb
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#See the License for the specific language governing permissions and
|
|
14
14
|
#limitations under the License.
|
|
15
15
|
#++
|
|
16
|
+
require 'base64'
|
|
16
17
|
module Dnsruby
|
|
17
18
|
class RR
|
|
18
19
|
#RFC4034, section 4
|
|
@@ -27,6 +28,12 @@ module Dnsruby
|
|
|
27
28
|
#[RFC4035].
|
|
28
29
|
|
|
29
30
|
class DS < RR
|
|
31
|
+
class DigestTypes < CodeMapper
|
|
32
|
+
update()
|
|
33
|
+
add_pair("SHA-1", 1)
|
|
34
|
+
add_pair("SHA-2", 2 )
|
|
35
|
+
end
|
|
36
|
+
|
|
30
37
|
ClassValue = nil #:nodoc: all
|
|
31
38
|
TypeValue = Types::DS #:nodoc: all
|
|
32
39
|
|
|
@@ -57,15 +64,27 @@ module Dnsruby
|
|
|
57
64
|
#The DS record refers to a DNSKEY RR by including a digest of that
|
|
58
65
|
#DNSKEY RR.
|
|
59
66
|
attr_accessor :digest
|
|
67
|
+
attr_accessor :digestbin
|
|
60
68
|
|
|
61
69
|
def digest_type=(d)
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
else
|
|
65
|
-
raise DecodeError.new("Unsupported DS digest type (#{d})")
|
|
66
|
-
end
|
|
70
|
+
dig = DS.get_digest_type(d)
|
|
71
|
+
@digest_type = dig
|
|
67
72
|
end
|
|
68
73
|
|
|
74
|
+
def DS.get_digest_type(d)
|
|
75
|
+
if (d.instance_of?String)
|
|
76
|
+
if (d.length == 1)
|
|
77
|
+
d = d.to_i
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
begin
|
|
81
|
+
digest = DigestTypes.new(d)
|
|
82
|
+
return digest
|
|
83
|
+
rescue ArgumentError => e
|
|
84
|
+
raise DecodeError.new(e)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
69
88
|
def algorithm=(a)
|
|
70
89
|
if (a.instance_of?String)
|
|
71
90
|
if (a.length == 1)
|
|
@@ -81,21 +100,36 @@ module Dnsruby
|
|
|
81
100
|
end
|
|
82
101
|
|
|
83
102
|
# Return the digest of the specified DNSKEY RR
|
|
84
|
-
def digest_key(key)
|
|
103
|
+
def digest_key(*args) # key, digest_type)
|
|
104
|
+
digest_type = @digest_type
|
|
105
|
+
key = args[0]
|
|
106
|
+
if (args.length == 2)
|
|
107
|
+
digest_type = args[1]
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
|
|
85
111
|
data = MessageEncoder.new {|msg|
|
|
86
|
-
|
|
112
|
+
msg.put_name(key.name, true)
|
|
113
|
+
key.encode_rdata(msg, true)
|
|
87
114
|
}.to_s
|
|
88
115
|
|
|
89
|
-
|
|
90
|
-
|
|
116
|
+
|
|
117
|
+
if (digest_type.code == 1)
|
|
118
|
+
digestbin = OpenSSL::Digest::SHA1.digest(data)
|
|
119
|
+
return digestbin
|
|
120
|
+
elsif (digest_type.code == 2)
|
|
121
|
+
digestbin = OpenSSL::Digest::SHA256.digest(data)
|
|
122
|
+
return digestbin
|
|
123
|
+
end
|
|
91
124
|
|
|
92
125
|
end
|
|
93
|
-
|
|
126
|
+
|
|
94
127
|
# Check if the key's digest is the same as that stored in the DS record
|
|
95
128
|
def check_key(key)
|
|
96
129
|
if (key.key_tag == @key_tag)
|
|
97
|
-
|
|
98
|
-
|
|
130
|
+
|
|
131
|
+
digestbin = digest_key(key)
|
|
132
|
+
if (@digestbin == digestbin)
|
|
99
133
|
if (!key.zone_key?)
|
|
100
134
|
else
|
|
101
135
|
return true
|
|
@@ -107,12 +141,52 @@ module Dnsruby
|
|
|
107
141
|
end
|
|
108
142
|
|
|
109
143
|
|
|
144
|
+
def DS.from_key(key, digest_type)
|
|
145
|
+
## The key must not be a NULL key.
|
|
146
|
+
# if ((key.flags & 0xc000 ) == 0xc000 )
|
|
147
|
+
# puts "\nCreating a DS record for a NULL key is illegal"
|
|
148
|
+
# return
|
|
149
|
+
# end
|
|
150
|
+
#
|
|
151
|
+
# # Bit 0 must not be set.
|
|
152
|
+
# if (key.flags & 0x8000)
|
|
153
|
+
# puts "\nCreating a DS record for a key with flag bit 0 set " +
|
|
154
|
+
# "to 0 is illegal"
|
|
155
|
+
# return
|
|
156
|
+
# end
|
|
157
|
+
#
|
|
158
|
+
# Bit 6 must be set to 0 bit 7 must be set to 1
|
|
159
|
+
if (( key.flags & 0x300) != 0x100)
|
|
160
|
+
puts "\nCreating a DS record for a key with flags 6 and 7 not set "+
|
|
161
|
+
"0 and 1 respectively is illegal"
|
|
162
|
+
return
|
|
163
|
+
end
|
|
164
|
+
#
|
|
165
|
+
#
|
|
166
|
+
# if (key.protocol != 3 )
|
|
167
|
+
# puts "\nCreating a DS record for a non DNSSEC (protocol=3) " +
|
|
168
|
+
# "key is illegal"
|
|
169
|
+
# return
|
|
170
|
+
# end
|
|
171
|
+
#
|
|
172
|
+
digest_type = get_digest_type(digest_type)
|
|
173
|
+
# Create a new DS record from the specified key
|
|
174
|
+
ds = RR.create(:name => key.name, :type => "DS", :ttl => key.ttl,
|
|
175
|
+
:key_tag => key.key_tag,
|
|
176
|
+
:digest_type => digest_type, :algorithm => key.algorithm)
|
|
177
|
+
|
|
178
|
+
ds.digestbin = ds.digest_key(key, digest_type)
|
|
179
|
+
ds.digest = ds.digestbin.unpack("H*")[0]
|
|
180
|
+
return ds
|
|
181
|
+
end
|
|
182
|
+
|
|
110
183
|
def from_data(data) #:nodoc: all
|
|
111
184
|
key_tag, algorithm, digest_type, digest = data
|
|
112
185
|
self.key_tag=(key_tag)
|
|
113
186
|
self.algorithm=(algorithm)
|
|
114
187
|
self.digest_type=(digest_type)
|
|
115
|
-
self.
|
|
188
|
+
self.digestbin=(digest)
|
|
189
|
+
self.digest=@digestbin.unpack("H*")[0]
|
|
116
190
|
end
|
|
117
191
|
|
|
118
192
|
def from_string(input)
|
|
@@ -133,22 +207,27 @@ module Dnsruby
|
|
|
133
207
|
buf += data[i]
|
|
134
208
|
}
|
|
135
209
|
# self.digest=Base64.decode64(buf)
|
|
136
|
-
|
|
210
|
+
buf.gsub!(/\n/, "")
|
|
211
|
+
buf.gsub!(/ /, "")
|
|
212
|
+
# self.digest=buf.unpack("m*")[0]
|
|
213
|
+
self.digest=buf
|
|
214
|
+
self.digestbin = [buf].pack("H*")
|
|
137
215
|
end
|
|
138
216
|
end
|
|
139
217
|
|
|
140
218
|
def rdata_to_string #:nodoc: all
|
|
141
219
|
if (@key_tag != nil)
|
|
142
220
|
# return "#{@key_tag.to_i} #{@algorithm.string} #{@digest_type} ( #{Base64.encode64(@digest)} )"
|
|
143
|
-
return "#{@key_tag.to_i} #{@algorithm.string} #{@digest_type} ( #{[@digest].pack("m*")} )"
|
|
221
|
+
# return "#{@key_tag.to_i} #{@algorithm.string} #{@digest_type.code} ( #{[@digest].pack("m*").gsub("\n", "")} )"
|
|
222
|
+
return "#{@key_tag.to_i} #{@algorithm.string} #{@digest_type.code} ( #{@digest.upcase} )"
|
|
144
223
|
else
|
|
145
224
|
return ""
|
|
146
|
-
end
|
|
225
|
+
end
|
|
147
226
|
end
|
|
148
227
|
|
|
149
228
|
def encode_rdata(msg, canonical=false) #:nodoc: all
|
|
150
|
-
msg.put_pack("ncc", @key_tag, @algorithm.code, @digest_type)
|
|
151
|
-
msg.put_bytes(@
|
|
229
|
+
msg.put_pack("ncc", @key_tag, @algorithm.code, @digest_type.code)
|
|
230
|
+
msg.put_bytes(@digestbin)
|
|
152
231
|
end
|
|
153
232
|
|
|
154
233
|
def self.decode_rdata(msg) #:nodoc: all
|