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
@@ -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
+ class TestAResolverFile < Test::Unit::TestCase
20
+ def setup
21
+ Dnsruby::Config.reset
22
+ end
23
+
24
+ def test_resFile
25
+ res = Dnsruby::DNS.new("test/resolv.conf")
26
+
27
+ assert(res, "new() returned something")
28
+ assert(res.config.nameserver, "nameservers() works")
29
+
30
+ servers = res.config.nameserver
31
+
32
+ assert_equal(servers[0], '10.0.1.128', 'Nameserver set correctly')
33
+ assert_equal(servers[1], '10.0.2.128', 'Nameserver set correctly')
34
+
35
+
36
+ search = res.config.search
37
+ assert(search.include?('dnsruby.validation-test-servers.nominet.org.uk'), 'Search set correctly' )
38
+ assert(search.include?('lib.dnsruby.validation-test-servers.nominet.org.uk'), 'Search set correctly' )
39
+
40
+ assert(res.config.domain=='t.dnsruby.validation-test-servers.nominet.org.uk', 'Local domain works' )
41
+ end
42
+ end
@@ -0,0 +1,185 @@
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
+ include Dnsruby
20
+ class TestResOpt < Test::Unit::TestCase
21
+ def test_dns_file
22
+
23
+ # .txt because this test will run under windows, unlike the other file
24
+ # configuration tests.
25
+ res = Dnsruby::DNS.new('test/custom.txt')
26
+
27
+ assert(res, 'new() returned something')
28
+ assert_instance_of(DNS, res, 'new() returns an object of the correct class.')
29
+ assert(res.config.nameserver, 'nameservers() works')
30
+
31
+ servers = res.config.nameserver
32
+
33
+ assert_equal('10.0.1.42', servers[0], 'Nameserver set correctly')
34
+ assert_equal('10.0.2.42', servers[1], 'Nameserver set correctly')
35
+
36
+
37
+ search = res.config.search
38
+ assert(search.include?('alt.dnsruby.validation-test-servers.nominet.org.uk'), 'Search set correctly' )
39
+ assert(search.include?('ext.dnsruby.validation-test-servers.nominet.org.uk'), 'Search set correctly' )
40
+
41
+ assert(res.config.domain == 't2.dnsruby.validation-test-servers.nominet.org.uk', 'Local domain works' )
42
+ end
43
+
44
+ def test_resolver_file
45
+ res = Dnsruby::Resolver.new({:config_info => 'test/custom.txt'})
46
+ assert(res.config.nameserver==['10.0.1.42', '10.0.2.42'], res.config.nameserver.to_s)
47
+ end
48
+
49
+ def test_no_file
50
+ res=nil
51
+ begin
52
+ res = DNS.new('nosuch.txt')
53
+ assert_equal(["0.0.0.0"], res.nameserver,"No nameservers should be set for #{test} = #{input}")
54
+ rescue Exception
55
+ end
56
+ begin
57
+ res = Resolver.new('nosuch.txt')
58
+ assert_equal(["0.0.0.0"], res.nameserver,"No nameservers should be set for #{test} = #{input}")
59
+ rescue Exception
60
+ end
61
+ end
62
+
63
+ def test_config_hash_singleresolver
64
+ # Resolver interface gives us : port, TCP, IgnoreTruncation, TSIGkey, timeout
65
+ # SR : server, local_address, persistent_tcp, persistent_udp, udp_size
66
+ test_config = {
67
+ :server => '10.0.0.1',
68
+ :port => 54, # SingleResolver and Multi-Resolver
69
+ :src_address => '10.1.0.1', # SingleResolver and Multi-Resolver
70
+ :src_port => 53, # SingleResolver and Multi-Resolver
71
+ :use_tcp => true, # SingleResolver and Multi-Resolver
72
+ :ignore_truncation => true, # SingleResolver and Multi-Resolver
73
+ :recurse => false,
74
+ :packet_timeout => 60, # SingleResolver and Multi-Resolver # Only have one timeout for both UDP and TCP
75
+ :persistent_tcp => true, # SingleResolver and Multi-Resolver
76
+ :persistent_udp => true, # SingleResolver and Multi-Resolver
77
+ #@todo Add dnssec when dnssec added to Net::DNS
78
+ # 'dnssec' => true,
79
+ }
80
+
81
+ res = SingleResolver.new(test_config)
82
+ test_config.keys.each do |item|
83
+ assert_equal(test_config[item], res.send(item), "#{item} is correct")
84
+ end
85
+ end
86
+
87
+ def test_config_hash_multiresolver
88
+ # Resolver interface gives us : port, TCP, IgnoreTruncation, TSIGkey, timeout
89
+ # ER : retries, load_balance. Also loads servers from Config and configures SRs to point to them
90
+ # Also implements Resolver interface - but iterates this through *all* SRs
91
+ test_config = {
92
+ :nameserver => ['10.0.0.1', '10.0.0.2'], # for Multi-Resolver & DNS
93
+ :port => 54, # SingleResolver and Multi-Resolver
94
+ :src_address => '10.1.0.1', # SingleResolver and Multi-Resolver
95
+ :src_port => 53, # SingleResolver and Multi-Resolver
96
+ :retry_delay => 6, # DNS and Multi-Resolver
97
+ :retry_times => 5, # DNSand Multi-Resolver
98
+ :use_tcp => true, # SingleResolver and Multi-Resolver
99
+ :ignore_truncation => true, # SingleResolver and Multi-Resolver
100
+ :recurse => false,
101
+ :packet_timeout => 60, # SingleResolver and Multi-Resolver # Only have one timeout for both UDP and TCP
102
+ :query_timeout => 60, # Multi-Resolver only
103
+ :persistent_tcp => true, # SingleResolver and Multi-Resolver
104
+ :persistent_udp => true, # SingleResolver and Multi-Resolver
105
+ #@todo Add dnssec when dnssec added to Net::DNS
106
+ # 'dnssec' => true,
107
+ }
108
+
109
+ res = Resolver.new(test_config)
110
+ test_config.keys.each do |item|
111
+ if (item==:nameserver)
112
+ assert_equal(res.config.nameserver, test_config[item], "#{item} is correct")
113
+ else
114
+ assert_equal(res.send(item), test_config[item], "#{item} is correct")
115
+ end
116
+ end
117
+ end
118
+
119
+ def test_config_hash_lookup
120
+ # Lookup : can specify resolver, searchpath
121
+ #
122
+ # Check that we can set things in new()
123
+ #
124
+ res=nil
125
+
126
+ test_config = {
127
+ :nameserver => ['10.0.0.1', '10.0.0.2'], # for Multi-Resolver & DNS
128
+ :domain => 'dnsruby.validation-test-servers.nominet.org.uk', # one for DNS only?
129
+ :search => ['dnsruby.validation-test-servers.nominet.org.uk', 't.dnsruby.validation-test-servers.nominet.org.uk'], # one for DNS
130
+ :ndots => 2, # DNS only
131
+ :apply_search_list => false, # DNS only
132
+ :apply_domain => false, # DNS only
133
+ }
134
+
135
+ res = DNS.new(test_config)
136
+ test_config.keys.each do |item|
137
+ assert_equal(res.config.send(item), test_config[item], "#{item} is correct")
138
+ end
139
+ end
140
+
141
+
142
+ def test_bad_config
143
+ res=nil
144
+
145
+ bad_input = {
146
+ :tsig_rr => 'set',
147
+ :errorstring => 'set',
148
+ :answerfrom => 'set',
149
+ :answersize => 'set',
150
+ :querytime => 'set',
151
+ :axfr_sel => 'set',
152
+ :axfr_rr => 'set',
153
+ :axfr_soa_count => 'set',
154
+ :udppacketsize => 'set',
155
+ :cdflag => 'set',
156
+ }
157
+ res=nil
158
+ begin
159
+ res = Resolver.new(bad_input)
160
+ rescue Exception
161
+ end
162
+ if (res)
163
+ bad_input.keys.each do |key|
164
+ begin
165
+ assert_not_equal(res.send(key), 'set', "#{key} is not set")
166
+ rescue Exception
167
+ end
168
+ end
169
+ end
170
+
171
+ res=nil
172
+ begin
173
+ res = DNS.new(bad_input)
174
+ rescue Exception
175
+ end
176
+ if (res)
177
+ bad_input.keys.each do |key|
178
+ begin
179
+ assert_not_equal(res.send(key), 'set', "#{key} is not set")
180
+ rescue Exception
181
+ end
182
+ end
183
+ end
184
+ end
185
+ end
@@ -0,0 +1,177 @@
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'
17
+ require 'socket'
18
+ require 'test/unit'
19
+ include Dnsruby
20
+ #@TODO@ We also need a test server so we can control behaviour of server to test
21
+ #different aspects of retry strategy.
22
+ #Of course, with Ruby's limit of 256 open sockets per process, we'd need to run
23
+ #the server in a different Ruby process.
24
+
25
+ class TestResolver < Test::Unit::TestCase
26
+ include Dnsruby
27
+ Thread::abort_on_exception = true
28
+ def setup
29
+ Dnsruby::Config.reset
30
+ end
31
+
32
+ def test_send_message
33
+ res = Resolver.new
34
+ ret = res.send_message(Message.new("example.com", Types.A))
35
+ assert(ret.kind_of?(Message))
36
+ end
37
+
38
+ def test_query
39
+ res = Resolver.new
40
+ ret = res.query("example.com")
41
+ assert(ret.kind_of?(Message))
42
+ end
43
+
44
+ def test_query_async
45
+ res = Resolver.new
46
+ q = Queue.new
47
+ res.send_async(Message.new("example.com", Types.A),q,q)
48
+ id, ret, error = q.pop
49
+ assert_equal(id, q, "Id wrong!")
50
+ assert(ret.kind_of?(Message), "Ret wrong!")
51
+ assert(error==nil)
52
+ end
53
+
54
+ def test_query_one_duff_server_one_good
55
+ res = Resolver.new({:nameserver => ["localhost", "128.8.10.90"]})
56
+ res.retry_delay=1
57
+ q = Queue.new
58
+ res.send_async(Message.new("example.com", Types.A),q,q)
59
+ id, ret, error = q.pop
60
+ assert_equal(id, q, "Id wrong!")
61
+ assert(ret.kind_of?(Message), "Ret wrong! (#{ret.class}")
62
+ assert(error==nil)
63
+ end
64
+
65
+ # @TODO@ Implement!!
66
+ # def test_many_threaded_clients
67
+ # assert(false, "IMPLEMENT!")
68
+ # end
69
+
70
+ def test_reverse_lookup
71
+ m = Message.new("210.251.121.214", Types.PTR)
72
+ r = Resolver.new
73
+ q=Queue.new
74
+ r.send_async(m,q,q)
75
+ id,ret, error=q.pop
76
+ assert(ret.kind_of?(Message))
77
+ no_pointer=true
78
+ ret.each_answer do |answer|
79
+ if (answer.type==Types.PTR)
80
+ no_pointer=false
81
+ assert(answer.domainname.to_s=~/ruby-lang/)
82
+ end
83
+ end
84
+ assert(!no_pointer)
85
+ end
86
+
87
+ def test_bad_host
88
+ res = Resolver.new({:nameserver => "localhost"})
89
+ res.retry_times=1
90
+ res.retry_delay=0
91
+ res.query_timeout = 1
92
+ q = Queue.new
93
+ res.send_async(Message.new("example.com", Types.A), q, q)
94
+ id, m, err = q.pop
95
+ assert(id==q)
96
+ assert(m == nil)
97
+ print err.class
98
+ assert(err.kind_of?(OtherResolvError))
99
+ end
100
+
101
+ def test_nxdomain
102
+ res=Resolver.new
103
+ q = Queue.new
104
+ res.send_async(Message.new("dklfjhdFHFHDVVUIEWRFDSAJKVCNASDLFJHN.com", Types.A), 1, q)
105
+ id, m, err = q.pop
106
+ assert(id==1)
107
+ assert(m.header.rcode == RCode.NXDOMAIN)
108
+ assert(err.kind_of?(NXDomain))
109
+ end
110
+
111
+ def test_timeouts
112
+ #@TODO@ test timeout behaviour for different retry, retrans, total timeout etc.
113
+ #Problem here is that many sockets will be created for queries which time out.
114
+ # Run a query which will not respond, and check that the timeout works
115
+ start=stop=0
116
+ retry_times = 3
117
+ retry_delay=1
118
+ packet_timeout=2
119
+ # Work out what time should be, then time it to check
120
+ expected = ((2**(retry_times-1))*retry_delay) + packet_timeout
121
+ begin
122
+ res = Resolver.new({:nameserver => "10.0.1.128"})
123
+ # res = Resolver.new({:nameserver => "213.248.199.17"})
124
+ res.packet_timeout=packet_timeout
125
+ res.retry_times=retry_times
126
+ res.retry_delay=retry_delay
127
+ start=Time.now
128
+ m = res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
129
+ fail
130
+ rescue ResolvTimeout
131
+ stop=Time.now
132
+ time = stop-start
133
+ assert(time <= expected *1.2 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
134
+ end
135
+ end
136
+
137
+ def test_packet_timeout
138
+ res = Resolver.new({:nameserver => "10.0.1.128"})
139
+ start=stop=0
140
+ retry_times = retry_delay = packet_timeout= 10
141
+ query_timeout=1
142
+ begin
143
+ res.packet_timeout=packet_timeout
144
+ res.retry_times=retry_times
145
+ res.retry_delay=retry_delay
146
+ res.query_timeout=query_timeout
147
+ # Work out what time should be, then time it to check
148
+ expected = query_timeout
149
+ start=Time.now
150
+ m = res.send_message(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A))
151
+ fail
152
+ rescue ResolvTimeout
153
+ stop=Time.now
154
+ time = stop-start
155
+ assert(time <= expected *1.1 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
156
+ end
157
+ end
158
+
159
+ def test_queue_packet_timeout
160
+ res = Resolver.new({:nameserver => "10.0.1.128"})
161
+ bad = SingleResolver.new("localhost")
162
+ res.add_resolver(bad)
163
+ expected = 1
164
+ res.query_timeout=expected
165
+ q = Queue.new
166
+ start = Time.now
167
+ m = res.send_async(Message.new("a.t.dnsruby.validation-test-servers.nominet.org.uk", Types.A), q, q)
168
+ id,ret,err = q.pop
169
+ stop = Time.now
170
+ assert(id=q)
171
+ assert(ret==nil)
172
+ assert(err.class == ResolvTimeout, "#{err.class}, #{err}")
173
+ time = stop-start
174
+ assert(time <= expected *1.2 && time >= expected *0.9, "Wrong time take, expected #{expected}, took #{time}")
175
+ end
176
+
177
+ end
data/test/tc_rr-opt.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
+ include Dnsruby
20
+ class TestRrOpt < Test::Unit::TestCase
21
+ def test_RrOpt
22
+ size=2048;
23
+ ednsflags=0x9e22;
24
+
25
+ optrr = RR::OPT.new(
26
+ :name => '',
27
+ :class => size, # Decimal UDPpayload
28
+ :flags => ednsflags # first bit set see RFC 3225
29
+ )
30
+ assert(optrr.d_o,"DO bit set")
31
+ optrr.d_o=false
32
+ assert_equal(optrr.flags,0x1e22,"Clearing do, leaving the other bits ");
33
+ assert(!optrr.d_o,"DO bit cleared")
34
+ optrr.d_o=true
35
+ assert_equal(optrr.flags,0x9e22,"Clearing do, leaving the other bits ");
36
+
37
+
38
+ assert_equal(optrr.payloadsize,2048,"Size read")
39
+ assert_equal(optrr.payloadsize=(1498),1498,"Size set")
40
+
41
+ end
42
+ end
data/test/tc_rr-txt.rb ADDED
@@ -0,0 +1,137 @@
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
+ include Dnsruby
20
+ class TestRrTest < Test::Unit::TestCase
21
+ #Stimulus, expected response, and test name:
22
+
23
+ TESTLIST = [
24
+ { # 2-5
25
+ :stim => %<"">,
26
+ :rdatastr => %<"">,
27
+ :char_str_list_r => ['',],
28
+ :descr => 'Double-quoted null string',
29
+ },
30
+ { # 6-9
31
+ :stim => %<''>,
32
+ :rdatastr => %<"">,
33
+ :char_str_list_r => ['',],
34
+ :descr => 'Single-quoted null string',
35
+ },
36
+ { # 10-13
37
+ :stim => %<" \t">,
38
+ :rdatastr => %<" \t">,
39
+ :char_str_list_r => [ %< \t>, ],
40
+ :descr => 'Double-quoted whitespace string',
41
+ },
42
+ { # 14-17
43
+ :stim => %<noquotes>,
44
+ :rdatastr => %<"noquotes">,
45
+ :char_str_list_r => [ %<noquotes>, ],
46
+ :descr => 'unquoted single string',
47
+ },
48
+ { # 18-21
49
+ :stim => %<"yes_quotes">,
50
+ :rdatastr => %<"yes_quotes">,
51
+ :char_str_list_r => [ %<yes_quotes>, ],
52
+ :descr => 'Double-quoted single string',
53
+ },
54
+ { # 26-29
55
+ :stim => %<two tokens>,
56
+ :rdatastr => %<"two" "tokens">,
57
+ :char_str_list_r => [ %q|two|, %q|tokens|, ],
58
+ :descr => 'Two unquoted strings',
59
+ },
60
+ # @TODO@ Why don't escaped quotes work?
61
+ # { # 22-25
62
+ # :stim => %<"escaped \" quote">,
63
+ # :rdatastr => %<"escaped \" quote">,
64
+ # :char_str_list_r => [ %<escaped " quote>, ],
65
+ # :descr => 'Quoted, escaped double-quote',
66
+ # },
67
+ # { # 30-33
68
+ # :stim => %<"missing quote>,
69
+ # :rdatastr => %<>,
70
+ # :char_str_list_r => [],
71
+ # :descr => 'Unbalanced quotes work',
72
+ # }
73
+ ]
74
+
75
+ def test_RrTest
76
+ #------------------------------------------------------------------------------
77
+ # Canned data.
78
+ #------------------------------------------------------------------------------
79
+
80
+ name = 'foo.example.com';
81
+ klass = 'IN';
82
+ type = 'TXT';
83
+ ttl = 43201;
84
+
85
+ rr_base = [name, ttl, klass, type, " " ].join(' ')
86
+
87
+
88
+ #------------------------------------------------------------------------------
89
+ # Run the tests
90
+ #------------------------------------------------------------------------------
91
+
92
+ TESTLIST.each do |test_hr|
93
+ assert( uut = RR.create(rr_base + test_hr[:stim]),
94
+ test_hr[:descr] + " -- Stimulus " )
95
+
96
+ assert_equal(test_hr[:rdatastr], uut.rdata_to_string(),
97
+ test_hr[:descr] + " -- Response ( rdatastr ) " )
98
+
99
+ list = uut.strings
100
+
101
+ assert_equal(test_hr[:char_str_list_r], list,
102
+ test_hr[:descr] + " -- char_str_list equality" )
103
+ end
104
+
105
+ string1 = %<no>
106
+ string2 = %<quotes>
107
+
108
+ rdata = [string1.length].pack("C") + string1
109
+ rdata += [string2.length].pack("C") + string2
110
+
111
+ work_hash = {
112
+ :name => name,
113
+ :ttl => ttl,
114
+ :class => klass,
115
+ :type => type,
116
+ }
117
+
118
+
119
+ # Don't break RR.new_from_hash (e.i. "See the manual pages for each RR
120
+ # type to see what fields the type requires.").
121
+
122
+ work_hash[:strings] = %<no quotes>
123
+
124
+ uut = RR.create(work_hash)
125
+ assert( uut , # 30
126
+ "RR.new_from_hash with txtdata -- Stimulus")
127
+ assert_equal( uut.rdata_to_string() , %<"no" "quotes">, # 31
128
+ "RR.new_from_hash with txtdata -- Response (rdatastr())")
129
+
130
+ rr_rdata = MessageEncoder.new {|msg|
131
+ uut.encode_rdata(msg)
132
+ }.to_s
133
+ assert( rr_rdata == rdata , "TXT.rr_rdata" ) # 32
134
+
135
+
136
+ end
137
+ end
@@ -0,0 +1,99 @@
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
+ class TestRrUnknown < Test::Unit::TestCase
20
+ def test_RrUnknown
21
+ assert_equal(10226, Types::typesbyname('TYPE10226'), 'typesbyname(TYPE10226) returns 10226')
22
+ assert_equal('TYPE10226', Types::typesbyval(10226), 'typesbyval(10226) returns TYPE10226')
23
+ assert_equal(Types::typesbyval(1), "A", ' typesbyval(1) returns A')
24
+
25
+ assert_equal(Types::typesbyval(Types.typesbyname('TYPE001')), 'A', 'typesbyval(typebyname(TYPE001)) returns A')
26
+
27
+
28
+ begin
29
+ Types.typesbyval(0xffff+1)
30
+ flunk("Should fail on large TYPE code")
31
+ rescue Exception
32
+ end
33
+
34
+ assert_equal(Classes::classesbyname('CLASS124'), 124, 'classesbyname(CLASS124) returns 124')
35
+ assert_equal(Classes::classesbyval(125), 'CLASS125','classesbyval(125) returns CLASS125')
36
+ assert_equal(Classes::classesbyval(1), 'IN', 'classesbyval(1) returns IN')
37
+
38
+ assert_equal('HS', Classes::classesbyval(Classes::classesbyname('CLASS04')), 'classesbyval(typebyname(CLASS04)) returns HS')
39
+
40
+ begin
41
+ Classes::classesbyval(0xffff+1)
42
+ flunk("Should fail on large CLASS code")
43
+ rescue Exception
44
+ end
45
+ end
46
+
47
+ def test_rr_new
48
+ rr = RR.new_from_string('e.example CLASS01 TYPE01 10.0.0.2')
49
+ assert_equal(RR::IN::A, rr.class, 'TYPE01 parsed OK')
50
+ assert_equal('A', rr.type.string, 'TYPE01 parsed OK')
51
+ assert_equal('IN', rr.klass.string,'CLASS01 parsed OK')
52
+ assert_equal(1, rr.klass.code,'CLASS01 parsed OK')
53
+
54
+ rr = RR.new_from_string('e.example IN A \# 4 0A0000 01 ')
55
+ assert_equal('10.0.0.1', rr.address.to_s,'Unknown RR representation for A parsed OK')
56
+
57
+ begin
58
+ res=RR.new_from_string('e.example IN A \# 4 0A0000 01 11 ')
59
+ flunk "Should fail on inconsistent length and hex presentation"
60
+ rescue Exception
61
+ #like($@, '/\\\# 4 0A0000 01 11 assert_equal inconsistent\ length does not match content/', 'Fails on inconsassert_equaltent length and hex presentation')
62
+ end
63
+
64
+
65
+ rr = RR.new_from_string('e.example IN TYPE4555 \# 4 0A0000 01 ')
66
+ assert_equal('e.example. 0 IN TYPE4555 \# 4 0a000001', rr.to_s, 'Fully unknown RR parsed correctly')
67
+
68
+ rr4 = RR.new_from_string('e.example CLASS122 TYPE4555 \# 4 0A0000 01 ')
69
+ assert_equal('e.example. 0 CLASS122 TYPE4555 \# 4 0a000001', rr4.to_s, 'Fully unknown RR in unknown CLASS parsed correctly')
70
+ end
71
+
72
+ def test_real_data
73
+ uuencodedPacket=%w{
74
+ 02 79 85 00 00 01
75
+ 00 01 00 01 00 01 04 54 45 53 54 07 65 78 61 6d
76
+ 70 6c 65 03 63 6f 6d 00 00 ff 00 01 c0 0c 30 39
77
+ 00 01 00 00 00 7b 00 0a 11 22 33 44 55 aa bb cc
78
+ dd ee c0 11 00 02 00 01 00 00 03 84 00 05 02 6e
79
+ 73 c0 11 c0 44 00 01 00 01 00 00 03 84 00 04 7f
80
+ 00 00 01}
81
+
82
+ # packetdata = uuencodedPacket.pack('H*')
83
+ # packetdata = packetdata.gsub("\s*", "")
84
+
85
+ uuencodedPacket.map!{|e| e.hex}
86
+ packetdata = uuencodedPacket.pack('c*')
87
+ # packet = Net::Packet.new_from_binary(packetdata)
88
+ packet = Message.decode(packetdata)
89
+
90
+ string_representation = (packet.answer)[0].to_s
91
+ #string_representation =~ s/\s+/ /g,
92
+ string_representation = string_representation.gsub(/\s+/, " ")
93
+ assert_equal(
94
+ 'TEST.example.com. 123 IN TYPE12345 \# 10 1122334455aabbccddee',
95
+ string_representation,
96
+ 'Packet read from a packet dumped by bind...'
97
+ )
98
+ end
99
+ end