Dnsruby 0.5.0

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