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.
Files changed (476) hide show
  1. data/demo/axfr.rb +176 -0
  2. data/demo/check_soa.rb +141 -0
  3. data/demo/check_zone.rb +157 -0
  4. data/demo/example_recurse.rb +11 -0
  5. data/demo/mresolv.rb +67 -0
  6. data/demo/mx.rb +33 -0
  7. data/demo/rubydig.rb +58 -0
  8. data/demo/to_resolve.txt +3088 -0
  9. data/demo/trace_dns.rb +15 -0
  10. data/doc/classes/Dnsruby.html +463 -0
  11. data/doc/classes/Dnsruby/Algorithms.html +171 -0
  12. data/doc/classes/Dnsruby/Classes.html +197 -0
  13. data/doc/classes/Dnsruby/Classes.src/M000209.html +23 -0
  14. data/doc/classes/Dnsruby/Classes.src/M000210.html +19 -0
  15. data/doc/classes/Dnsruby/CodeMapper.html +375 -0
  16. data/doc/classes/Dnsruby/CodeMapper.src/M000186.html +18 -0
  17. data/doc/classes/Dnsruby/CodeMapper.src/M000187.html +33 -0
  18. data/doc/classes/Dnsruby/CodeMapper.src/M000188.html +21 -0
  19. data/doc/classes/Dnsruby/CodeMapper.src/M000189.html +19 -0
  20. data/doc/classes/Dnsruby/CodeMapper.src/M000190.html +19 -0
  21. data/doc/classes/Dnsruby/CodeMapper.src/M000191.html +18 -0
  22. data/doc/classes/Dnsruby/CodeMapper.src/M000192.html +22 -0
  23. data/doc/classes/Dnsruby/CodeMapper.src/M000193.html +22 -0
  24. data/doc/classes/Dnsruby/CodeMapper.src/M000194.html +22 -0
  25. data/doc/classes/Dnsruby/CodeMapper.src/M000195.html +31 -0
  26. data/doc/classes/Dnsruby/CodeMapper.src/M000196.html +19 -0
  27. data/doc/classes/Dnsruby/Config.html +413 -0
  28. data/doc/classes/Dnsruby/Config.src/M000148.html +18 -0
  29. data/doc/classes/Dnsruby/Config.src/M000149.html +19 -0
  30. data/doc/classes/Dnsruby/Config.src/M000150.html +19 -0
  31. data/doc/classes/Dnsruby/Config.src/M000151.html +25 -0
  32. data/doc/classes/Dnsruby/Config.src/M000152.html +21 -0
  33. data/doc/classes/Dnsruby/Config.src/M000153.html +38 -0
  34. data/doc/classes/Dnsruby/Config.src/M000154.html +26 -0
  35. data/doc/classes/Dnsruby/Config.src/M000155.html +22 -0
  36. data/doc/classes/Dnsruby/Config.src/M000156.html +27 -0
  37. data/doc/classes/Dnsruby/Config.src/M000157.html +22 -0
  38. data/doc/classes/Dnsruby/Config.src/M000158.html +21 -0
  39. data/doc/classes/Dnsruby/DNS.html +571 -0
  40. data/doc/classes/Dnsruby/DNS.src/M000258.html +24 -0
  41. data/doc/classes/Dnsruby/DNS.src/M000259.html +18 -0
  42. data/doc/classes/Dnsruby/DNS.src/M000260.html +18 -0
  43. data/doc/classes/Dnsruby/DNS.src/M000261.html +20 -0
  44. data/doc/classes/Dnsruby/DNS.src/M000262.html +19 -0
  45. data/doc/classes/Dnsruby/DNS.src/M000263.html +20 -0
  46. data/doc/classes/Dnsruby/DNS.src/M000264.html +18 -0
  47. data/doc/classes/Dnsruby/DNS.src/M000265.html +19 -0
  48. data/doc/classes/Dnsruby/DNS.src/M000266.html +20 -0
  49. data/doc/classes/Dnsruby/DNS.src/M000267.html +28 -0
  50. data/doc/classes/Dnsruby/DNS.src/M000268.html +19 -0
  51. data/doc/classes/Dnsruby/DNS.src/M000269.html +20 -0
  52. data/doc/classes/Dnsruby/DNS.src/M000270.html +31 -0
  53. data/doc/classes/Dnsruby/DecodeError.html +120 -0
  54. data/doc/classes/Dnsruby/Dnssec.html +287 -0
  55. data/doc/classes/Dnsruby/Dnssec.src/M000249.html +23 -0
  56. data/doc/classes/Dnsruby/Dnssec.src/M000250.html +19 -0
  57. data/doc/classes/Dnsruby/Dnssec.src/M000251.html +90 -0
  58. data/doc/classes/Dnsruby/Dnssec.src/M000252.html +76 -0
  59. data/doc/classes/Dnsruby/EncodeError.html +120 -0
  60. data/doc/classes/Dnsruby/FormErr.html +119 -0
  61. data/doc/classes/Dnsruby/Header.html +501 -0
  62. data/doc/classes/Dnsruby/Header.src/M000231.html +35 -0
  63. data/doc/classes/Dnsruby/Header.src/M000232.html +18 -0
  64. data/doc/classes/Dnsruby/Header.src/M000233.html +18 -0
  65. data/doc/classes/Dnsruby/Header.src/M000234.html +21 -0
  66. data/doc/classes/Dnsruby/Header.src/M000235.html +20 -0
  67. data/doc/classes/Dnsruby/Header.src/M000236.html +32 -0
  68. data/doc/classes/Dnsruby/Header.src/M000237.html +27 -0
  69. data/doc/classes/Dnsruby/Header.src/M000238.html +26 -0
  70. data/doc/classes/Dnsruby/Header.src/M000239.html +47 -0
  71. data/doc/classes/Dnsruby/Header.src/M000240.html +28 -0
  72. data/doc/classes/Dnsruby/Header.src/M000241.html +30 -0
  73. data/doc/classes/Dnsruby/Hosts.html +316 -0
  74. data/doc/classes/Dnsruby/Hosts.src/M000197.html +20 -0
  75. data/doc/classes/Dnsruby/Hosts.src/M000198.html +19 -0
  76. data/doc/classes/Dnsruby/Hosts.src/M000199.html +20 -0
  77. data/doc/classes/Dnsruby/Hosts.src/M000200.html +21 -0
  78. data/doc/classes/Dnsruby/Hosts.src/M000201.html +19 -0
  79. data/doc/classes/Dnsruby/Hosts.src/M000202.html +20 -0
  80. data/doc/classes/Dnsruby/Hosts.src/M000203.html +21 -0
  81. data/doc/classes/Dnsruby/IPv4.html +233 -0
  82. data/doc/classes/Dnsruby/IPv4.src/M000204.html +32 -0
  83. data/doc/classes/Dnsruby/IPv4.src/M000205.html +19 -0
  84. data/doc/classes/Dnsruby/IPv4.src/M000206.html +18 -0
  85. data/doc/classes/Dnsruby/IPv4.src/M000207.html +18 -0
  86. data/doc/classes/Dnsruby/IPv4.src/M000208.html +18 -0
  87. data/doc/classes/Dnsruby/IPv6.html +281 -0
  88. data/doc/classes/Dnsruby/IPv6.src/M000242.html +60 -0
  89. data/doc/classes/Dnsruby/IPv6.src/M000243.html +22 -0
  90. data/doc/classes/Dnsruby/IPv6.src/M000244.html +20 -0
  91. data/doc/classes/Dnsruby/IPv6.src/M000245.html +18 -0
  92. data/doc/classes/Dnsruby/Message.html +803 -0
  93. data/doc/classes/Dnsruby/Message.src/M000119.html +38 -0
  94. data/doc/classes/Dnsruby/Message.src/M000120.html +26 -0
  95. data/doc/classes/Dnsruby/Message.src/M000121.html +22 -0
  96. data/doc/classes/Dnsruby/Message.src/M000122.html +22 -0
  97. data/doc/classes/Dnsruby/Message.src/M000123.html +20 -0
  98. data/doc/classes/Dnsruby/Message.src/M000124.html +20 -0
  99. data/doc/classes/Dnsruby/Message.src/M000125.html +20 -0
  100. data/doc/classes/Dnsruby/Message.src/M000126.html +20 -0
  101. data/doc/classes/Dnsruby/Message.src/M000127.html +18 -0
  102. data/doc/classes/Dnsruby/Message.src/M000128.html +20 -0
  103. data/doc/classes/Dnsruby/Message.src/M000129.html +23 -0
  104. data/doc/classes/Dnsruby/Message.src/M000130.html +30 -0
  105. data/doc/classes/Dnsruby/Message.src/M000131.html +20 -0
  106. data/doc/classes/Dnsruby/Message.src/M000132.html +18 -0
  107. data/doc/classes/Dnsruby/Message.src/M000133.html +56 -0
  108. data/doc/classes/Dnsruby/Message.src/M000134.html +35 -0
  109. data/doc/classes/Dnsruby/Message.src/M000135.html +46 -0
  110. data/doc/classes/Dnsruby/Message/Section.html +160 -0
  111. data/doc/classes/Dnsruby/Message/Section.src/M000141.html +29 -0
  112. data/doc/classes/Dnsruby/Message/Section.src/M000142.html +30 -0
  113. data/doc/classes/Dnsruby/MetaTypes.html +136 -0
  114. data/doc/classes/Dnsruby/Modes.html +171 -0
  115. data/doc/classes/Dnsruby/NXDomain.html +119 -0
  116. data/doc/classes/Dnsruby/Name.html +330 -0
  117. data/doc/classes/Dnsruby/Name.src/M000104.html +28 -0
  118. data/doc/classes/Dnsruby/Name.src/M000105.html +20 -0
  119. data/doc/classes/Dnsruby/Name.src/M000106.html +18 -0
  120. data/doc/classes/Dnsruby/Name.src/M000107.html +21 -0
  121. data/doc/classes/Dnsruby/Name.src/M000108.html +22 -0
  122. data/doc/classes/Dnsruby/Name.src/M000109.html +18 -0
  123. data/doc/classes/Dnsruby/Name/Label.html +300 -0
  124. data/doc/classes/Dnsruby/Name/Label.src/M000110.html +21 -0
  125. data/doc/classes/Dnsruby/Name/Label.src/M000111.html +18 -0
  126. data/doc/classes/Dnsruby/Name/Label.src/M000112.html +22 -0
  127. data/doc/classes/Dnsruby/Name/Label.src/M000113.html +18 -0
  128. data/doc/classes/Dnsruby/Name/Label.src/M000114.html +18 -0
  129. data/doc/classes/Dnsruby/Name/Label.src/M000115.html +18 -0
  130. data/doc/classes/Dnsruby/Name/Label.src/M000116.html +18 -0
  131. data/doc/classes/Dnsruby/Name/Label.src/M000117.html +18 -0
  132. data/doc/classes/Dnsruby/Name/Label.src/M000118.html +18 -0
  133. data/doc/classes/Dnsruby/NotImp.html +119 -0
  134. data/doc/classes/Dnsruby/OpCode.html +146 -0
  135. data/doc/classes/Dnsruby/OtherResolvError.html +119 -0
  136. data/doc/classes/Dnsruby/QTypes.html +146 -0
  137. data/doc/classes/Dnsruby/Question.html +301 -0
  138. data/doc/classes/Dnsruby/Question.src/M000226.html +47 -0
  139. data/doc/classes/Dnsruby/Question.src/M000227.html +18 -0
  140. data/doc/classes/Dnsruby/Question.src/M000228.html +18 -0
  141. data/doc/classes/Dnsruby/Question.src/M000229.html +32 -0
  142. data/doc/classes/Dnsruby/Question.src/M000230.html +18 -0
  143. data/doc/classes/Dnsruby/RCode.html +211 -0
  144. data/doc/classes/Dnsruby/RR.html +648 -0
  145. data/doc/classes/Dnsruby/RR.src/M000001.html +18 -0
  146. data/doc/classes/Dnsruby/RR.src/M000002.html +22 -0
  147. data/doc/classes/Dnsruby/RR.src/M000003.html +18 -0
  148. data/doc/classes/Dnsruby/RR.src/M000004.html +18 -0
  149. data/doc/classes/Dnsruby/RR.src/M000005.html +26 -0
  150. data/doc/classes/Dnsruby/RR.src/M000006.html +18 -0
  151. data/doc/classes/Dnsruby/RR.src/M000007.html +36 -0
  152. data/doc/classes/Dnsruby/RR.src/M000008.html +100 -0
  153. data/doc/classes/Dnsruby/RR.src/M000009.html +18 -0
  154. data/doc/classes/Dnsruby/RR.src/M000010.html +18 -0
  155. data/doc/classes/Dnsruby/RR.src/M000011.html +22 -0
  156. data/doc/classes/Dnsruby/RR.src/M000012.html +29 -0
  157. data/doc/classes/Dnsruby/RR.src/M000013.html +24 -0
  158. data/doc/classes/Dnsruby/RR/ANY.html +133 -0
  159. data/doc/classes/Dnsruby/RR/CERT.html +180 -0
  160. data/doc/classes/Dnsruby/RR/CERT/CertificateTypes.html +169 -0
  161. data/doc/classes/Dnsruby/RR/CNAME.html +151 -0
  162. data/doc/classes/Dnsruby/RR/DNAME.html +150 -0
  163. data/doc/classes/Dnsruby/RR/DNSKEY.html +422 -0
  164. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000044.html +20 -0
  165. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000045.html +21 -0
  166. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000046.html +28 -0
  167. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000047.html +22 -0
  168. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000048.html +18 -0
  169. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000049.html +22 -0
  170. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000050.html +18 -0
  171. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000051.html +26 -0
  172. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000052.html +38 -0
  173. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000053.html +45 -0
  174. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000054.html +21 -0
  175. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000055.html +24 -0
  176. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000056.html +32 -0
  177. data/doc/classes/Dnsruby/RR/DNSKEY.src/M000057.html +24 -0
  178. data/doc/classes/Dnsruby/RR/DS.html +286 -0
  179. data/doc/classes/Dnsruby/RR/DS.src/M000039.html +22 -0
  180. data/doc/classes/Dnsruby/RR/DS.src/M000040.html +28 -0
  181. data/doc/classes/Dnsruby/RR/DS.src/M000041.html +24 -0
  182. data/doc/classes/Dnsruby/RR/DS.src/M000042.html +28 -0
  183. data/doc/classes/Dnsruby/RR/DS.src/M000043.html +36 -0
  184. data/doc/classes/Dnsruby/RR/DomainName.html +175 -0
  185. data/doc/classes/Dnsruby/RR/DomainName.src/M000083.html +18 -0
  186. data/doc/classes/Dnsruby/RR/Generic.html +133 -0
  187. data/doc/classes/Dnsruby/RR/HINFO.html +155 -0
  188. data/doc/classes/Dnsruby/RR/IN.html +155 -0
  189. data/doc/classes/Dnsruby/RR/IN/A.html +200 -0
  190. data/doc/classes/Dnsruby/RR/IN/A.src/M000017.html +18 -0
  191. data/doc/classes/Dnsruby/RR/IN/A.src/M000018.html +18 -0
  192. data/doc/classes/Dnsruby/RR/IN/A.src/M000019.html +18 -0
  193. data/doc/classes/Dnsruby/RR/IN/AAAA.html +139 -0
  194. data/doc/classes/Dnsruby/RR/IN/AFSDB.html +145 -0
  195. data/doc/classes/Dnsruby/RR/IN/PX.html +143 -0
  196. data/doc/classes/Dnsruby/RR/IN/SRV.html +238 -0
  197. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000014.html +29 -0
  198. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000015.html +26 -0
  199. data/doc/classes/Dnsruby/RR/IN/SRV.src/M000016.html +22 -0
  200. data/doc/classes/Dnsruby/RR/IN/WKS.html +166 -0
  201. data/doc/classes/Dnsruby/RR/IN/WKS.src/M000020.html +20 -0
  202. data/doc/classes/Dnsruby/RR/ISDN.html +155 -0
  203. data/doc/classes/Dnsruby/RR/LOC.html +395 -0
  204. data/doc/classes/Dnsruby/RR/LOC.src/M000025.html +32 -0
  205. data/doc/classes/Dnsruby/RR/LOC.src/M000026.html +23 -0
  206. data/doc/classes/Dnsruby/RR/LOC.src/M000027.html +25 -0
  207. data/doc/classes/Dnsruby/RR/LOC.src/M000028.html +21 -0
  208. data/doc/classes/Dnsruby/RR/LOC.src/M000029.html +20 -0
  209. data/doc/classes/Dnsruby/RR/LOC.src/M000030.html +23 -0
  210. data/doc/classes/Dnsruby/RR/MB.html +150 -0
  211. data/doc/classes/Dnsruby/RR/MG.html +150 -0
  212. data/doc/classes/Dnsruby/RR/MINFO.html +156 -0
  213. data/doc/classes/Dnsruby/RR/MR.html +150 -0
  214. data/doc/classes/Dnsruby/RR/MX.html +155 -0
  215. data/doc/classes/Dnsruby/RR/NAPTR.html +190 -0
  216. data/doc/classes/Dnsruby/RR/NS.html +151 -0
  217. data/doc/classes/Dnsruby/RR/NSAP.html +293 -0
  218. data/doc/classes/Dnsruby/RR/NSAP.src/M000093.html +19 -0
  219. data/doc/classes/Dnsruby/RR/NSAP.src/M000094.html +19 -0
  220. data/doc/classes/Dnsruby/RR/NSAP.src/M000095.html +22 -0
  221. data/doc/classes/Dnsruby/RR/NSAP.src/M000096.html +31 -0
  222. data/doc/classes/Dnsruby/RR/NSEC.html +301 -0
  223. data/doc/classes/Dnsruby/RR/NSEC.src/M000031.html +19 -0
  224. data/doc/classes/Dnsruby/RR/NSEC.src/M000032.html +18 -0
  225. data/doc/classes/Dnsruby/RR/NSEC.src/M000033.html +34 -0
  226. data/doc/classes/Dnsruby/RR/NSEC.src/M000034.html +18 -0
  227. data/doc/classes/Dnsruby/RR/NSEC.src/M000035.html +71 -0
  228. data/doc/classes/Dnsruby/RR/NSEC.src/M000036.html +18 -0
  229. data/doc/classes/Dnsruby/RR/NSEC.src/M000037.html +80 -0
  230. data/doc/classes/Dnsruby/RR/NSEC.src/M000038.html +23 -0
  231. data/doc/classes/Dnsruby/RR/NSEC3.html +366 -0
  232. data/doc/classes/Dnsruby/RR/NSEC3.src/M000085.html +28 -0
  233. data/doc/classes/Dnsruby/RR/NSEC3.src/M000086.html +18 -0
  234. data/doc/classes/Dnsruby/RR/NSEC3.src/M000087.html +18 -0
  235. data/doc/classes/Dnsruby/RR/NSEC3.src/M000088.html +22 -0
  236. data/doc/classes/Dnsruby/RR/NSEC3.src/M000089.html +18 -0
  237. data/doc/classes/Dnsruby/RR/NSEC3.src/M000090.html +21 -0
  238. data/doc/classes/Dnsruby/RR/NSEC3.src/M000091.html +21 -0
  239. data/doc/classes/Dnsruby/RR/NSEC3.src/M000092.html +29 -0
  240. data/doc/classes/Dnsruby/RR/NSEC3PARAM.html +279 -0
  241. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000077.html +28 -0
  242. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000078.html +18 -0
  243. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000079.html +22 -0
  244. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000080.html +21 -0
  245. data/doc/classes/Dnsruby/RR/NSEC3PARAM.src/M000081.html +25 -0
  246. data/doc/classes/Dnsruby/RR/PTR.html +132 -0
  247. data/doc/classes/Dnsruby/RR/RP.html +183 -0
  248. data/doc/classes/Dnsruby/RR/RP.src/M000082.html +19 -0
  249. data/doc/classes/Dnsruby/RR/RRSIG.html +357 -0
  250. data/doc/classes/Dnsruby/RR/RRSIG.src/M000097.html +26 -0
  251. data/doc/classes/Dnsruby/RR/RRSIG.src/M000098.html +28 -0
  252. data/doc/classes/Dnsruby/RR/RRSIG.src/M000099.html +23 -0
  253. data/doc/classes/Dnsruby/RR/RRSIG.src/M000100.html +23 -0
  254. data/doc/classes/Dnsruby/RR/RRSIG.src/M000101.html +46 -0
  255. data/doc/classes/Dnsruby/RR/RRSIG.src/M000102.html +50 -0
  256. data/doc/classes/Dnsruby/RR/RRSIG.src/M000103.html +27 -0
  257. data/doc/classes/Dnsruby/RR/RT.html +155 -0
  258. data/doc/classes/Dnsruby/RR/SOA.html +233 -0
  259. data/doc/classes/Dnsruby/RR/SOA.src/M000066.html +24 -0
  260. data/doc/classes/Dnsruby/RR/SOA.src/M000067.html +27 -0
  261. data/doc/classes/Dnsruby/RR/SPF.html +138 -0
  262. data/doc/classes/Dnsruby/RR/TKEY.html +313 -0
  263. data/doc/classes/Dnsruby/RR/TKEY.src/M000021.html +19 -0
  264. data/doc/classes/Dnsruby/RR/TKEY.src/M000022.html +29 -0
  265. data/doc/classes/Dnsruby/RR/TKEY.src/M000023.html +21 -0
  266. data/doc/classes/Dnsruby/RR/TKEY.src/M000024.html +29 -0
  267. data/doc/classes/Dnsruby/RR/TSIG.html +524 -0
  268. data/doc/classes/Dnsruby/RR/TSIG.src/M000068.html +24 -0
  269. data/doc/classes/Dnsruby/RR/TSIG.src/M000069.html +32 -0
  270. data/doc/classes/Dnsruby/RR/TSIG.src/M000070.html +54 -0
  271. data/doc/classes/Dnsruby/RR/TSIG.src/M000071.html +121 -0
  272. data/doc/classes/Dnsruby/RR/TSIG.src/M000072.html +33 -0
  273. data/doc/classes/Dnsruby/RR/TSIG.src/M000073.html +25 -0
  274. data/doc/classes/Dnsruby/RR/TSIG.src/M000074.html +36 -0
  275. data/doc/classes/Dnsruby/RR/TSIG.src/M000075.html +22 -0
  276. data/doc/classes/Dnsruby/RR/TSIG.src/M000076.html +29 -0
  277. data/doc/classes/Dnsruby/RR/TXT.html +233 -0
  278. data/doc/classes/Dnsruby/RR/TXT.src/M000061.html +18 -0
  279. data/doc/classes/Dnsruby/RR/TXT.src/M000062.html +18 -0
  280. data/doc/classes/Dnsruby/RR/TXT.src/M000063.html +20 -0
  281. data/doc/classes/Dnsruby/RR/TXT.src/M000064.html +27 -0
  282. data/doc/classes/Dnsruby/RR/TXT.src/M000065.html +25 -0
  283. data/doc/classes/Dnsruby/RR/X25.html +203 -0
  284. data/doc/classes/Dnsruby/RR/X25.src/M000058.html +18 -0
  285. data/doc/classes/Dnsruby/RR/X25.src/M000059.html +18 -0
  286. data/doc/classes/Dnsruby/RR/X25.src/M000060.html +22 -0
  287. data/doc/classes/Dnsruby/RRSet.html +404 -0
  288. data/doc/classes/Dnsruby/RRSet.src/M000211.html +23 -0
  289. data/doc/classes/Dnsruby/RRSet.src/M000212.html +18 -0
  290. data/doc/classes/Dnsruby/RRSet.src/M000213.html +18 -0
  291. data/doc/classes/Dnsruby/RRSet.src/M000214.html +47 -0
  292. data/doc/classes/Dnsruby/RRSet.src/M000215.html +42 -0
  293. data/doc/classes/Dnsruby/RRSet.src/M000216.html +18 -0
  294. data/doc/classes/Dnsruby/RRSet.src/M000217.html +20 -0
  295. data/doc/classes/Dnsruby/RRSet.src/M000218.html +18 -0
  296. data/doc/classes/Dnsruby/RRSet.src/M000219.html +18 -0
  297. data/doc/classes/Dnsruby/RRSet.src/M000220.html +18 -0
  298. data/doc/classes/Dnsruby/RRSet.src/M000221.html +18 -0
  299. data/doc/classes/Dnsruby/RRSet.src/M000222.html +22 -0
  300. data/doc/classes/Dnsruby/RRSet.src/M000223.html +18 -0
  301. data/doc/classes/Dnsruby/RRSet.src/M000224.html +22 -0
  302. data/doc/classes/Dnsruby/RRSet.src/M000225.html +18 -0
  303. data/doc/classes/Dnsruby/Refused.html +119 -0
  304. data/doc/classes/Dnsruby/Resolv.html +401 -0
  305. data/doc/classes/Dnsruby/Resolv.src/M000159.html +18 -0
  306. data/doc/classes/Dnsruby/Resolv.src/M000160.html +18 -0
  307. data/doc/classes/Dnsruby/Resolv.src/M000161.html +18 -0
  308. data/doc/classes/Dnsruby/Resolv.src/M000162.html +18 -0
  309. data/doc/classes/Dnsruby/Resolv.src/M000163.html +18 -0
  310. data/doc/classes/Dnsruby/Resolv.src/M000164.html +18 -0
  311. data/doc/classes/Dnsruby/Resolv.src/M000165.html +18 -0
  312. data/doc/classes/Dnsruby/Resolv.src/M000166.html +19 -0
  313. data/doc/classes/Dnsruby/Resolv.src/M000167.html +20 -0
  314. data/doc/classes/Dnsruby/Resolv.src/M000168.html +29 -0
  315. data/doc/classes/Dnsruby/Resolv.src/M000169.html +19 -0
  316. data/doc/classes/Dnsruby/Resolv.src/M000170.html +20 -0
  317. data/doc/classes/Dnsruby/Resolv.src/M000171.html +25 -0
  318. data/doc/classes/Dnsruby/ResolvError.html +117 -0
  319. data/doc/classes/Dnsruby/ResolvTimeout.html +117 -0
  320. data/doc/classes/Dnsruby/Resolver.html +1055 -0
  321. data/doc/classes/Dnsruby/Resolver.src/M000271.html +21 -0
  322. data/doc/classes/Dnsruby/Resolver.src/M000272.html +27 -0
  323. data/doc/classes/Dnsruby/Resolver.src/M000273.html +28 -0
  324. data/doc/classes/Dnsruby/Resolver.src/M000274.html +18 -0
  325. data/doc/classes/Dnsruby/Resolver.src/M000275.html +51 -0
  326. data/doc/classes/Dnsruby/Resolver.src/M000276.html +21 -0
  327. data/doc/classes/Dnsruby/Resolver.src/M000277.html +22 -0
  328. data/doc/classes/Dnsruby/Resolver.src/M000278.html +18 -0
  329. data/doc/classes/Dnsruby/Resolver.src/M000279.html +20 -0
  330. data/doc/classes/Dnsruby/Resolver.src/M000280.html +19 -0
  331. data/doc/classes/Dnsruby/Resolver.src/M000281.html +19 -0
  332. data/doc/classes/Dnsruby/Resolver.src/M000282.html +19 -0
  333. data/doc/classes/Dnsruby/Resolver.src/M000283.html +19 -0
  334. data/doc/classes/Dnsruby/Resolver.src/M000284.html +19 -0
  335. data/doc/classes/Dnsruby/Resolver.src/M000285.html +19 -0
  336. data/doc/classes/Dnsruby/Resolver.src/M000286.html +19 -0
  337. data/doc/classes/Dnsruby/Resolver.src/M000287.html +19 -0
  338. data/doc/classes/Dnsruby/Resolver.src/M000288.html +19 -0
  339. data/doc/classes/Dnsruby/Resolver.src/M000289.html +19 -0
  340. data/doc/classes/Dnsruby/Resolver.src/M000290.html +19 -0
  341. data/doc/classes/Dnsruby/Resolver.src/M000291.html +19 -0
  342. data/doc/classes/Dnsruby/Resolver.src/M000292.html +26 -0
  343. data/doc/classes/Dnsruby/Resolver.src/M000293.html +18 -0
  344. data/doc/classes/Dnsruby/Resolver.src/M000294.html +23 -0
  345. data/doc/classes/Dnsruby/Resolver.src/M000295.html +18 -0
  346. data/doc/classes/Dnsruby/ServFail.html +119 -0
  347. data/doc/classes/Dnsruby/SingleResolver.html +674 -0
  348. data/doc/classes/Dnsruby/SingleResolver.src/M000172.html +18 -0
  349. data/doc/classes/Dnsruby/SingleResolver.src/M000173.html +24 -0
  350. data/doc/classes/Dnsruby/SingleResolver.src/M000174.html +36 -0
  351. data/doc/classes/Dnsruby/SingleResolver.src/M000175.html +18 -0
  352. data/doc/classes/Dnsruby/SingleResolver.src/M000176.html +19 -0
  353. data/doc/classes/Dnsruby/SingleResolver.src/M000177.html +50 -0
  354. data/doc/classes/Dnsruby/SingleResolver.src/M000178.html +19 -0
  355. data/doc/classes/Dnsruby/SingleResolver.src/M000179.html +21 -0
  356. data/doc/classes/Dnsruby/SingleResolver.src/M000180.html +25 -0
  357. data/doc/classes/Dnsruby/SingleResolver.src/M000181.html +54 -0
  358. data/doc/classes/Dnsruby/SingleResolver.src/M000182.html +27 -0
  359. data/doc/classes/Dnsruby/SingleResolver.src/M000183.html +27 -0
  360. data/doc/classes/Dnsruby/SingleResolver.src/M000184.html +35 -0
  361. data/doc/classes/Dnsruby/SingleResolver.src/M000185.html +21 -0
  362. data/doc/classes/Dnsruby/TheLog.html +196 -0
  363. data/doc/classes/Dnsruby/TheLog.src/M000246.html +20 -0
  364. data/doc/classes/Dnsruby/TheLog.src/M000247.html +20 -0
  365. data/doc/classes/Dnsruby/TheLog.src/M000248.html +20 -0
  366. data/doc/classes/Dnsruby/Types.html +436 -0
  367. data/doc/classes/Dnsruby/Update.html +368 -0
  368. data/doc/classes/Dnsruby/Update.src/M000253.html +32 -0
  369. data/doc/classes/Dnsruby/Update.src/M000254.html +36 -0
  370. data/doc/classes/Dnsruby/Update.src/M000255.html +32 -0
  371. data/doc/classes/Dnsruby/Update.src/M000256.html +41 -0
  372. data/doc/classes/Dnsruby/Update.src/M000257.html +34 -0
  373. data/doc/classes/Dnsruby/VerifyError.html +119 -0
  374. data/doc/classes/Dnsruby/ZoneTransfer.html +300 -0
  375. data/doc/classes/Dnsruby/ZoneTransfer.src/M000143.html +18 -0
  376. data/doc/classes/Dnsruby/ZoneTransfer.src/M000144.html +24 -0
  377. data/doc/classes/Dnsruby/ZoneTransfer.src/M000145.html +35 -0
  378. data/doc/classes/Dnsruby/ZoneTransfer/Delta.html +200 -0
  379. data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000146.html +19 -0
  380. data/doc/classes/Dnsruby/ZoneTransfer/Delta.src/M000147.html +19 -0
  381. data/doc/created.rid +1 -0
  382. data/doc/files/lib/Dnsruby/Config_rb.html +101 -0
  383. data/doc/files/lib/Dnsruby/DNS_rb.html +110 -0
  384. data/doc/files/lib/Dnsruby/Hosts_rb.html +108 -0
  385. data/doc/files/lib/Dnsruby/Resolver_rb.html +109 -0
  386. data/doc/files/lib/Dnsruby/SingleResolver_rb.html +108 -0
  387. data/doc/files/lib/Dnsruby/TheLog_rb.html +110 -0
  388. data/doc/files/lib/Dnsruby/code_mapper_rb.html +101 -0
  389. data/doc/files/lib/Dnsruby/dnssec_rb.html +107 -0
  390. data/doc/files/lib/Dnsruby/event_machine_interface_rb.html +108 -0
  391. data/doc/files/lib/Dnsruby/ipv4_rb.html +101 -0
  392. data/doc/files/lib/Dnsruby/ipv6_rb.html +101 -0
  393. data/doc/files/lib/Dnsruby/message_rb.html +109 -0
  394. data/doc/files/lib/Dnsruby/name_rb.html +101 -0
  395. data/doc/files/lib/Dnsruby/resource/AAAA_rb.html +101 -0
  396. data/doc/files/lib/Dnsruby/resource/AFSDB_rb.html +101 -0
  397. data/doc/files/lib/Dnsruby/resource/A_rb.html +101 -0
  398. data/doc/files/lib/Dnsruby/resource/CERT_rb.html +101 -0
  399. data/doc/files/lib/Dnsruby/resource/DNSKEY_rb.html +101 -0
  400. data/doc/files/lib/Dnsruby/resource/DS_rb.html +101 -0
  401. data/doc/files/lib/Dnsruby/resource/HINFO_rb.html +101 -0
  402. data/doc/files/lib/Dnsruby/resource/IN_rb.html +112 -0
  403. data/doc/files/lib/Dnsruby/resource/ISDN_rb.html +101 -0
  404. data/doc/files/lib/Dnsruby/resource/LOC_rb.html +101 -0
  405. data/doc/files/lib/Dnsruby/resource/MINFO_rb.html +101 -0
  406. data/doc/files/lib/Dnsruby/resource/MX_rb.html +101 -0
  407. data/doc/files/lib/Dnsruby/resource/NAPTR_rb.html +101 -0
  408. data/doc/files/lib/Dnsruby/resource/NSAP_rb.html +101 -0
  409. data/doc/files/lib/Dnsruby/resource/NSEC3PARAM_rb.html +101 -0
  410. data/doc/files/lib/Dnsruby/resource/NSEC3_rb.html +101 -0
  411. data/doc/files/lib/Dnsruby/resource/NSEC_rb.html +101 -0
  412. data/doc/files/lib/Dnsruby/resource/OPT_rb.html +101 -0
  413. data/doc/files/lib/Dnsruby/resource/PX_rb.html +101 -0
  414. data/doc/files/lib/Dnsruby/resource/RP_rb.html +101 -0
  415. data/doc/files/lib/Dnsruby/resource/RRSIG_rb.html +101 -0
  416. data/doc/files/lib/Dnsruby/resource/RT_rb.html +101 -0
  417. data/doc/files/lib/Dnsruby/resource/SOA_rb.html +101 -0
  418. data/doc/files/lib/Dnsruby/resource/SPF_rb.html +101 -0
  419. data/doc/files/lib/Dnsruby/resource/SRV_rb.html +101 -0
  420. data/doc/files/lib/Dnsruby/resource/TKEY_rb.html +101 -0
  421. data/doc/files/lib/Dnsruby/resource/TSIG_rb.html +114 -0
  422. data/doc/files/lib/Dnsruby/resource/TXT_rb.html +108 -0
  423. data/doc/files/lib/Dnsruby/resource/X25_rb.html +101 -0
  424. data/doc/files/lib/Dnsruby/resource/domain_name_rb.html +101 -0
  425. data/doc/files/lib/Dnsruby/resource/generic_rb.html +131 -0
  426. data/doc/files/lib/Dnsruby/resource/resource_rb.html +110 -0
  427. data/doc/files/lib/Dnsruby/select_thread_rb.html +111 -0
  428. data/doc/files/lib/Dnsruby/update_rb.html +101 -0
  429. data/doc/files/lib/Dnsruby/zone_transfer_rb.html +101 -0
  430. data/doc/files/lib/dnsruby_rb.html +118 -0
  431. data/doc/fr_class_index.html +108 -0
  432. data/doc/fr_file_index.html +75 -0
  433. data/doc/fr_method_index.html +321 -0
  434. data/doc/index.html +24 -0
  435. data/lib/Dnsruby/DNS.rb +3 -3
  436. data/lib/Dnsruby/Resolver.rb +11 -2
  437. data/lib/Dnsruby/SingleResolver.rb +28 -20
  438. data/lib/Dnsruby/code_mapper.rb +9 -4
  439. data/lib/Dnsruby/dnssec.rb +6 -3
  440. data/lib/Dnsruby/message.rb +108 -32
  441. data/lib/Dnsruby/resource/DLV.rb +27 -0
  442. data/lib/Dnsruby/resource/DNSKEY.rb +29 -7
  443. data/lib/Dnsruby/resource/DS.rb +97 -18
  444. data/lib/Dnsruby/resource/DS.rb.new +202 -0
  445. data/lib/Dnsruby/resource/DS.rb.orig +162 -0
  446. data/lib/Dnsruby/resource/NSEC.rb +22 -6
  447. data/lib/Dnsruby/resource/OPT.rb +14 -13
  448. data/lib/Dnsruby/resource/PX.rb +1 -1
  449. data/lib/Dnsruby/resource/RRSIG.rb +17 -9
  450. data/lib/Dnsruby/resource/RT.rb +1 -1
  451. data/lib/Dnsruby/resource/TSIG.rb +4 -0
  452. data/lib/Dnsruby/resource/generic.rb +2 -1
  453. data/lib/Dnsruby/resource/resource.rb +23 -8
  454. data/lib/Dnsruby/select_thread.rb +15 -7
  455. data/lib/Dnsruby/update.rb +3 -3
  456. data/lib/Dnsruby/zone_transfer.rb +1 -1
  457. data/lib/dnsruby.rb +4 -2
  458. data/test/tc_dns.rb +1 -1
  459. data/test/tc_ds.rb +47 -4
  460. data/test/tc_em_deferrable.rb +38 -0
  461. data/test/tc_event_machine_res.rb +1 -1
  462. data/test/tc_header.rb +2 -2
  463. data/test/tc_inet6.rb +170 -0
  464. data/test/tc_nsec3.rb +6 -5
  465. data/test/tc_packet.rb +18 -4
  466. data/test/tc_queue.rb +17 -0
  467. data/test/tc_resolver.rb +14 -14
  468. data/test/tc_rr-opt.rb +21 -2
  469. data/test/tc_rr.rb +4 -0
  470. data/test/tc_rrset.rb +2 -2
  471. data/test/tc_rrsig.rb +2 -2
  472. data/test/tc_tcp.rb +1 -1
  473. data/test/tc_tsig.rb +6 -6
  474. data/test/ts_offline.rb +17 -2
  475. data/test/ts_online.rb +4 -0
  476. metadata +496 -3
@@ -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
- raise ArgumentError.new("Code #{arg} not a member of #{self.class}")
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 unknown_string(arg)
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 unknown_code(arg)
98
+ else
99
+ unknown_code(arg)
95
100
  end
96
101
  elsif (arg.kind_of?self.class)
97
102
  set_code(arg.code)
@@ -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.to_i
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.string} unsupported by Dnsruby")
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
 
@@ -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
- retval = retval + @header.to_s;
317
- retval = retval + "\n";
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
- # @TODO@ OPT pseudosection? EDNS flags, udpsize
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
- retval = retval + "\n";
328
- section = (@header.opcode == OpCode.UPDATE) ? "PREREQUISITE" : "ANSWER";
329
- retval = retval + ";; #{section} SECTION (#{@header.ancount} record#{@header.ancount == 1 ? '' : 's'})\n";
330
- each_answer { |rr|
331
- retval = retval + rr.to_s + "\n";
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
- retval = retval + "\n";
335
- section = (@header.opcode == OpCode.UPDATE) ? "UPDATE" : "AUTHORITY";
336
- retval = retval + ";; #{section} SECTION (#{@header.nscount} record#{@header.nscount == 1 ? '' : 's'})\n";
337
- each_authority { |rr|
338
- retval = retval + rr.to_s + "\n";
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
- retval = retval + "\n";
342
- retval = retval + ";; ADDITIONAL SECTION (#{@header.arcount} record#{@header.arcount == 1 ? '' : 's'})\n";
343
- each_additional { |rr|
344
- retval = retval + rr.to_s+ "\n";
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
- attr_reader :rcode
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.rcode
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 = #{@rcode.string}\n";
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 ?c, ?C
770
+ when littlec, bigc
705
771
  len += 1
706
- when ?h, ?H
772
+ when littleh, bigh
707
773
  len += 1
708
- when ?n
774
+ when littlen
709
775
  len += 2
710
- when ?N
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
- raise DecodeError.new("limit exceeded") if @limit < @index + 1 + len
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
- case @data[@index]
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
- return Name::Label.new(Name::decode(self.get_string))
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 for the specific language governing permissions and
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.to_i)
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] & 0xFF
182
- d2 = rdata[i + 1] & 0xFF
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] & 0xFF
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
- exponentLength = (@key[1]<<8) + @key[1]
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])
@@ -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
- if ((d == 1) || (d == "SHA-1") || (d == "1"))
63
- @digest_type = 1
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
- msg.put_rr(key, true)
112
+ msg.put_name(key.name, true)
113
+ key.encode_rdata(msg, true)
87
114
  }.to_s
88
115
 
89
- OpenSSL::Digest::SHA1.new(data)
90
- return digest
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
- digest = digest_key(key)
98
- if (@digest == digest)
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.digest=(digest)
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
- self.digest=buf.unpack("m*")[0]
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(@digest)
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