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/test/tc_soak.rb ADDED
@@ -0,0 +1,310 @@
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
+ begin
20
+ require 'test/tc_single_resolver'
21
+ rescue Exception
22
+ require 'tc_single_resolver'
23
+ end
24
+ include Dnsruby
25
+ # This class tries to soak test the Dnsruby library.
26
+ # It can't do this very well, owing to the small number of sockets allowed to be open simultaneously.
27
+ # @TODO@ Future versions of dnsruby will allow random streaming over a fixed number of (cycling) random sockets,
28
+ # so this test can be beefed up considerably at that point.
29
+ # @todo@ A test DNS server running on localhost is really needed here
30
+ class TestSingleResolverSoak < TestSingleResolver
31
+
32
+ # def test_many_queries_single_socket
33
+ # @todo@ Implement this test?
34
+ # end
35
+
36
+
37
+ def test_many_asynchronous_queries_one_single_resolver
38
+ run_many_asynch_queries_test_single_res(1)
39
+ end
40
+
41
+ def test_many_asynchronous_queries_many_single_resolvers
42
+ run_many_asynch_queries_test_single_res(50)
43
+ end
44
+
45
+ def run_many_asynch_queries_test_single_res(num_resolvers)
46
+ q = Queue.new
47
+ resolvers = []
48
+ timed_out = 0
49
+ query_count = 0
50
+ num_resolvers.times do |n|
51
+ resolvers.push(SingleResolver.new)
52
+ resolvers[n].packet_timeout=4
53
+ end
54
+ res_pos = 0
55
+ start = Time.now
56
+ # @todo@ On windows, MAX_FILES is 256. This means that we have to limit
57
+ # this test while we're not using single sockets.
58
+ # We run four queries per iteration, so we're limited to 64 runs.
59
+ 63.times do |i|
60
+ rr_count = 0
61
+ Rrs.each do |data|
62
+ rr_count+=1
63
+ res = resolvers[res_pos]
64
+ res_pos=+1
65
+ if (res_pos >= num_resolvers)
66
+ res_pos = 0
67
+ end
68
+ res.send_async(Message.new(data[:name], data[:type]), [i,rr_count], q)
69
+ # p "Sent #{i}, #{rr_count}, Queue #{q}"
70
+ query_count+=1
71
+ end
72
+ end
73
+ query_count.times do |i|
74
+ id,ret, error = q.pop
75
+ # p "Got response #{i}"
76
+ if (error.class == ResolvTimeout)
77
+ timed_out+=1
78
+ elsif (ret.class != Message)
79
+ p "ERROR RETURNED : #{error}"
80
+ end
81
+
82
+ end
83
+ stop=Time.now
84
+ time_taken=stop-start
85
+ p "Query count : #{query_count}, #{timed_out} timed out. #{time_taken} time taken"
86
+ assert(timed_out < query_count * 0.1, "#{timed_out} of #{query_count} timed out!")
87
+ end
88
+
89
+
90
+ def test_many_threads_on_one_single_resolver_synchronous
91
+ # Test multi-threaded behaviour
92
+ # Check the header IDs to make sure they're all different
93
+ threads = Array.new
94
+ res = SingleResolver.new
95
+ ids = []
96
+ mutex = Mutex.new
97
+ timed_out = 0
98
+ query_count = 0
99
+ res.packet_timeout=4
100
+ start=Time.now
101
+ # Windows limits us to 256 sockets
102
+ num_times=250
103
+ if (/java/ =~ RUBY_PLATFORM)
104
+ # JRuby threads are native threads, so let's not go too mad!
105
+ num_times=50
106
+ end
107
+ num_times.times do |i|
108
+ threads[i] = Thread.new{
109
+ 4.times do |j|
110
+ Rrs.each do |data|
111
+ mutex.synchronize do
112
+ query_count+=1
113
+ end
114
+ packet=nil
115
+ begin
116
+ packet = res.query(data[:name], data[:type])
117
+ rescue ResolvTimeout
118
+ # p "TIMEOUT for Thread #{i}, reply #{j}, type #{data[:type]}"
119
+ mutex.synchronize {
120
+ timed_out+=1
121
+ }
122
+ next
123
+ end
124
+ assert(packet)
125
+ ids.push(packet.header.id)
126
+ assert_equal(packet.question[0].qclass, 'IN', 'Class correct' )
127
+ end
128
+ end
129
+ }
130
+ end
131
+ threads.each do |thread|
132
+ thread.join
133
+ end
134
+ stop=Time.now
135
+ time_taken=stop-start
136
+ p "Query count : #{query_count}, #{timed_out} timed out. #{time_taken} time taken"
137
+ # check_ids(ids) # only do this if we expect all different IDs - e.g. if we stream over a single socket
138
+ assert(timed_out < query_count * 0.1, "#{timed_out} of #{query_count} timed out!")
139
+ end
140
+
141
+ def check_ids(ids)
142
+ ids.sort!
143
+ count = 0
144
+ ids.each do |id|
145
+ count+=1
146
+ if (count < ids.length-1)
147
+ assert(ids[count+1] != id, "Two identical header ids used!")
148
+ end
149
+ end
150
+ end
151
+
152
+ def test_many_threads_on_many_single_resolvers
153
+ # Test multi-threaded behaviour
154
+ # @todo@ Check the header IDs to make sure they're all different
155
+ threads = Array.new
156
+ mutex = Mutex.new
157
+ timed_out = 0
158
+ query_count = 0
159
+ start=Time.now
160
+ num_times=250
161
+ if (/java/ =~ RUBY_PLATFORM)
162
+ # JRuby threads are native threads, so let's not go too mad!
163
+ num_times=50
164
+ end
165
+ num_times.times do |i|
166
+ threads[i] = Thread.new{
167
+ res = SingleResolver.new
168
+ res.packet_timeout=4
169
+ 4.times do |j|
170
+ Rrs.each do |data|
171
+ mutex.synchronize do
172
+ query_count+=1
173
+ end
174
+ q = Queue.new
175
+ res.send_async(Message.new(data[:name], data[:type]), [i,j], q)
176
+ id, packet, error = q.pop
177
+ if (error.class == ResolvTimeout)
178
+ # p "TIMEOUT for Thread #{i}, reply #{j}, type #{data[:type]}"
179
+ mutex.synchronize {
180
+ timed_out+=1
181
+ }
182
+ next
183
+ elsif (packet.class!=Message)
184
+ p "ERROR! #{error}"
185
+ end
186
+
187
+ # p packet.to_s
188
+ assert(packet)
189
+ assert_equal(packet.question[0].qclass, 'IN', 'Class correct' )
190
+ end
191
+ end
192
+ }
193
+ end
194
+ threads.each do |thread|
195
+ thread.join
196
+ end
197
+ stop=Time.now
198
+ time_taken=stop-start
199
+ p "Query count : #{query_count}, #{timed_out} timed out. #{time_taken} time taken"
200
+ assert(timed_out < query_count * 0.1, "#{timed_out} of #{query_count} timed out!")
201
+ end
202
+
203
+ def test_continuous_queries_asynch_single_res
204
+ # Have two threads looping, with one sending, and one receiving queries.
205
+ # Never exceed more than 250 concurrent queries, but make sure they're always running.
206
+ num_loops = 2000
207
+ num_sent = 0
208
+ q = Queue.new
209
+ timed_out = 0
210
+ mutex = Mutex.new
211
+ start = Time.now
212
+ num_in_progress = 0
213
+ sender = Thread.new{
214
+ res = SingleResolver.new
215
+ res.packet_timeout=5
216
+ # On windows, MAX_FILES is 256. This means that we have to limit
217
+ # this test while we're not using single sockets.
218
+ # We run four queries per iteration, so we're limited to 64 runs.
219
+ num_loops.times do |i|
220
+ rr_count = 0
221
+ Rrs.each do |data|
222
+ rr_count+=1
223
+ while (mutex.synchronize{num_in_progress> 250}) do
224
+ sleep(0.01)
225
+ end
226
+ res.send_async(Message.new(data[:name], data[:type]), [i,rr_count], q)
227
+ num_sent+=1
228
+ mutex.synchronize {
229
+ num_in_progress+=1
230
+ }
231
+ end
232
+ end
233
+
234
+ }
235
+ receiver = Thread.new{
236
+ (num_loops*4).times do |i|
237
+ id,ret, error = q.pop
238
+ mutex.synchronize {
239
+ num_in_progress-=1
240
+ }
241
+ if (error.class == ResolvTimeout)
242
+ timed_out+=1
243
+ # p "Number #{i} timed out!"
244
+ elsif (ret.class != Message)
245
+ TheLog.debug("tc_single_resolver : Query #{i} ERROR RETURNED : #{error.class}, #{error}")
246
+ end
247
+ end
248
+ }
249
+ sender.join
250
+ receiver.join
251
+ assert(num_in_progress==0)
252
+ stop=Time.now
253
+ time_taken=stop-start
254
+ p "Query count : #{num_sent}, #{timed_out} timed out. #{time_taken} time taken"
255
+ assert(timed_out < num_sent * 0.1, "#{timed_out} of #{num_sent} timed out!")
256
+ end
257
+
258
+ def test_continuous_queries_asynch_resolver
259
+ # Have two threads looping, with one sending, and one receiving queries.
260
+ # Never exceed more than 250 concurrent queries, but make sure they're always running.
261
+ num_loops = 1000
262
+ num_sent = 0
263
+ q = Queue.new
264
+ timed_out = 0
265
+ mutex = Mutex.new
266
+ start = Time.now
267
+ num_in_progress = 0
268
+ sender = Thread.new{
269
+ res = Resolver.new
270
+ # On windows, MAX_FILES is 256. This means that we have to limit
271
+ # this test while we're not using single sockets.
272
+ # We run four queries per iteration, so we're limited to 64 runs.
273
+ num_loops.times do |i|
274
+ while (mutex.synchronize{num_in_progress> 50}) do # One query has several sockets in Resolver
275
+ sleep(0.01)
276
+ end
277
+ res.send_async(Message.new("example.com", Types.A), [i,1], q)
278
+ num_sent+=1
279
+ mutex.synchronize {
280
+ num_in_progress+=1
281
+ }
282
+ end
283
+ }
284
+ error_count=0
285
+ receiver = Thread.new{
286
+ (num_loops).times do |i|
287
+ id,ret, error = q.pop
288
+ mutex.synchronize {
289
+ num_in_progress-=1
290
+ }
291
+ if (error.class == ResolvTimeout)
292
+ timed_out+=1
293
+ # p "Number #{i} timed out!"
294
+ elsif (ret.class != Message)
295
+ error_count+=1
296
+ TheLog.error("tc_single_resolver : Query #{i} ERROR RETURNED : #{error.class}, #{error}")
297
+ end
298
+ end
299
+ }
300
+ sender.join
301
+ receiver.join
302
+ assert(num_in_progress==0)
303
+ stop=Time.now
304
+ time_taken=stop-start
305
+ p "Query count : #{num_sent}, #{timed_out} timed out, #{error_count} other errors. #{time_taken} time taken"
306
+ assert(timed_out < num_sent * 0.1, "#{timed_out} of #{num_sent} timed out!")
307
+ assert(error_count == 0)
308
+ end
309
+
310
+ end
data/test/tc_tcp.rb ADDED
@@ -0,0 +1,35 @@
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 TestTcp < Test::Unit::TestCase
20
+ def test_TCP
21
+ res = Dnsruby::Resolver.new()
22
+ res.use_tcp = true
23
+ ret=res.query("example.com")
24
+ assert(ret.is_a?(Dnsruby::Message))
25
+ end
26
+ def test_TCP_port
27
+ #@TODO@ Need a test server so we can tell what port this message was actually sent on!
28
+ res = Dnsruby::Resolver.new()
29
+ res.use_tcp = true
30
+ res.src_port=5379
31
+ ret=res.query("example.com")
32
+ assert(ret.is_a?(Dnsruby::Message))
33
+ end
34
+ #@TODO@ Check stuff like persistent sockets
35
+ end
data/test/tc_tkey.rb ADDED
@@ -0,0 +1,106 @@
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 "digest/md5"
20
+ class TestTKey < Test::Unit::TestCase
21
+ def is_empty(string)
22
+ return (string == "; no data" || string == "; rdlength = 0")
23
+ end
24
+
25
+ def test_tkey
26
+
27
+
28
+ #------------------------------------------------------------------------------
29
+ # Canned data.
30
+ #------------------------------------------------------------------------------
31
+
32
+ zone = "example.com"
33
+ name = "123456789-test"
34
+ klass = "IN"
35
+ type = Dnsruby::Types.TKEY
36
+ algorithm = "fake.algorithm.example.com"
37
+ key = "fake key"
38
+ inception = 100000 # use a strange fixed inception time to give a fixed
39
+ # checksum
40
+ expiration = inception + 24*60*60
41
+
42
+ rr = nil
43
+
44
+ #------------------------------------------------------------------------------
45
+ # Packet creation.
46
+ #------------------------------------------------------------------------------
47
+
48
+ rr = Dnsruby::RR.create(
49
+ :name => name,
50
+ :type => "TKEY",
51
+ :ttl => 0,
52
+ :klass => "ANY",
53
+ :algorithm => algorithm,
54
+ :inception => inception,
55
+ :expiration => expiration,
56
+ :mode => 3, # GSSAPI
57
+ :key => "fake key",
58
+ :other_data => ""
59
+ )
60
+
61
+ packet = Dnsruby::Message.new(name, Dnsruby::Types.TKEY, "IN")
62
+ packet.add_answer(rr)
63
+
64
+ z = (packet.zone)[0]
65
+
66
+ assert(packet, 'new() returned packet') #2
67
+ assert_equal(Dnsruby::OpCode.QUERY, packet.header.opcode, 'header opcode correct') #3
68
+ assert_equal(name, z.zname.to_s, 'zname correct') #4
69
+ assert_equal(Dnsruby::Classes.IN, z.zclass, 'zclass correct') #5
70
+ assert_equal(Dnsruby::Types.TKEY, z.ztype, 'ztype correct') #6
71
+
72
+
73
+ end
74
+
75
+ def test_tsig
76
+
77
+ name="example.com."
78
+ key = "1234"
79
+ print key.to_s + "\n"
80
+ tsig = Dnsruby::RR.create({
81
+ :name => name,
82
+ :type => "TSIG",
83
+ :ttl => 0,
84
+ :klass => "ANY",
85
+ :algorithm => "HMAC-MD5.SIG-ALG.REG.INT.",
86
+ :time_signed => 1189686346,
87
+ :fudge => 300,
88
+ :key => key,
89
+ :error => 0
90
+ })
91
+
92
+
93
+ message = Dnsruby::Message.new
94
+ message.header.id=(1234)
95
+ tsig.apply(message)
96
+
97
+ mac_string = Base64.encode64(message.additional[0].mac)
98
+ print mac_string + "\n"
99
+
100
+ assert_equal("S8w22c0nlOhC9wNwwHPY7g==", mac_string, "MAC wrong")
101
+
102
+ res = Dnsruby::Resolver.new
103
+ response = res.send_message(message)
104
+ print response+"\n"
105
+ end
106
+ end
data/test/tc_update.rb ADDED
@@ -0,0 +1,215 @@
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 TestUpdate < Test::Unit::TestCase
21
+ def is_empty(string)
22
+ return true if string == nil || string.length == 0
23
+
24
+ return (string == "; no data" || string == "; rdlength = 0");
25
+ end
26
+
27
+ def test_update
28
+ #------------------------------------------------------------------------------
29
+ # Canned data.
30
+ #------------------------------------------------------------------------------
31
+
32
+ zone = "example.com";
33
+ name = "foo.example.com";
34
+ klass = "HS";
35
+ klass2 = Classes.CH;
36
+ type = Types.A;
37
+ ttl = 43200;
38
+ rdata = "10.1.2.3";
39
+ rr = nil;
40
+
41
+ #------------------------------------------------------------------------------
42
+ # Packet creation.
43
+ #------------------------------------------------------------------------------
44
+
45
+ update = Dnsruby::Update.new(zone, klass);
46
+ z = (update.zone)[0];
47
+
48
+ assert(update, 'new() returned packet'); #2
49
+ assert_equal(update.header.opcode, OpCode.UPDATE, 'header opcode correct'); #3
50
+ assert_equal(z.zname.to_s, zone, 'zname correct'); #4
51
+ assert_equal(z.zclass.to_s, klass, 'zclass correct'); #5
52
+ assert_equal(z.ztype, Types.SOA, 'ztype correct'); #6
53
+
54
+ #------------------------------------------------------------------------------
55
+ # RRset exists (value-independent).
56
+ #------------------------------------------------------------------------------
57
+
58
+ rr = update.present(name, type);
59
+
60
+ assert(rr, 'yxrrset() returned RR'); #7
61
+ assert_equal(name, rr.name.to_s, 'yxrrset - right name'); #8
62
+ assert_equal(0, rr.ttl, 'yxrrset - right TTL'); #9
63
+ assert_equal('ANY', rr.klass.string, 'yxrrset - right class'); #10
64
+ assert_equal(type, rr.type, 'yxrrset - right type'); #11
65
+ assert(is_empty(rr.rdata), "yxrrset - data empty (#{rr.rdata})"); #12
66
+
67
+ rr = nil
68
+
69
+ #------------------------------------------------------------------------------
70
+ # RRset exists (value-dependent).
71
+ #------------------------------------------------------------------------------
72
+
73
+ rr = update.present(name, type, rdata, klass);
74
+
75
+ assert(rr, 'yxrrset() returned RR'); #13
76
+ assert_equal(name, rr.name.to_s, 'yxrrset - right name'); #14
77
+ assert_equal(0, rr.ttl, 'yxrrset - right TTL'); #15
78
+ assert_equal(klass, rr.klass.string, 'yxrrset - right class'); #16
79
+ assert_equal(type, rr.type, 'yxrrset - right type'); #17
80
+ assert_equal(rdata, rr.rdata, 'yxrrset - right data'); #18
81
+
82
+ rr=nil
83
+
84
+ #------------------------------------------------------------------------------
85
+ # RRset does not exist.
86
+ #------------------------------------------------------------------------------
87
+
88
+ rr = update.absent(name, type);
89
+
90
+ assert(rr, 'nxrrset() returned RR'); #19
91
+ assert_equal(name, rr.name.to_s, 'nxrrset - right name'); #20
92
+ assert_equal(0, rr.ttl, 'nxrrset - right ttl'); #21
93
+ assert_equal('NONE', rr.klass.string, 'nxrrset - right class'); #22
94
+ assert_equal(type, rr.type, 'nxrrset - right type'); #23
95
+ assert(is_empty(rr.rdata), 'nxrrset - data empty'); #24
96
+
97
+ rr = nil
98
+
99
+ #------------------------------------------------------------------------------
100
+ # Name is in use.
101
+ #------------------------------------------------------------------------------
102
+
103
+ rr = update.present(name);
104
+
105
+ assert(rr, 'yxdomain() returned RR'); #25
106
+ assert_equal(rr.name.to_s, name, 'yxdomain - right name'); #26
107
+ assert_equal(rr.ttl, 0, 'yxdomain - right ttl'); #27
108
+ assert_equal(rr.klass.string, 'ANY', 'yxdomain - right class'); #28
109
+ assert_equal(rr.type.string, 'ANY', 'yxdomain - right type'); #29
110
+ assert(is_empty(rr.rdata), 'yxdomain - data empty'); #30
111
+
112
+ rr = nil
113
+
114
+ #------------------------------------------------------------------------------
115
+ # Name is not in use. (No Class)
116
+ #------------------------------------------------------------------------------
117
+
118
+ rr = update.absent(name);
119
+
120
+ assert(rr, 'nxdomain() returned RR'); #31
121
+ assert_equal(rr.name.to_s, name, 'nxdomain - right name'); #32
122
+ assert_equal(rr.ttl, 0, 'nxdomain - right ttl'); #33
123
+ assert_equal(rr.klass.string, 'NONE', 'nxdomain - right class'); #34
124
+ assert_equal(rr.type.string, 'ANY', 'nxdomain - right type'); #35
125
+ assert(is_empty(rr.rdata), 'nxdomain - data empty'); #36
126
+
127
+ rr = nil
128
+
129
+
130
+
131
+ #------------------------------------------------------------------------------
132
+ # Add to an RRset.
133
+ #------------------------------------------------------------------------------
134
+
135
+ rr = update.add(name, type, ttl, rdata);
136
+
137
+ assert(rr, 'rr_add() returned RR'); #37
138
+ assert_equal(rr.name.to_s, name, 'rr_add - right name'); #38
139
+ assert_equal(rr.ttl, ttl, 'rr_add - right ttl'); #39
140
+ assert_equal(rr.klass, klass, 'rr_add - right class'); #40
141
+ assert_equal(rr.type, type, 'rr_add - right type'); #41
142
+ assert_equal(rr.rdata, rdata, 'rr_add - right data'); #42
143
+
144
+ rr = nil
145
+
146
+ #------------------------------------------------------------------------------
147
+ # Delete an RRset.
148
+ #------------------------------------------------------------------------------
149
+
150
+ rr = update.delete(name, type);
151
+
152
+ assert(rr, 'rr_del() returned RR'); #43
153
+ assert_equal(name, rr.name.to_s, 'rr_del - right name'); #44
154
+ assert_equal(0, rr.ttl, 'rr_del - right ttl'); #45
155
+ assert_equal('ANY', rr.klass.string, 'rr_del - right class'); #46
156
+ assert_equal(type, rr.type, 'rr_del - right type'); #47
157
+ assert(is_empty(rr.rdata), 'rr_del - data empty'); #48
158
+
159
+ rr = nil
160
+
161
+ #------------------------------------------------------------------------------
162
+ # Delete All RRsets From A Name.
163
+ #------------------------------------------------------------------------------
164
+
165
+ rr = update.delete(name);
166
+
167
+ assert(rr, 'rr_del() returned RR'); #49
168
+ assert_equal(name, rr.name.to_s, 'rr_del - right name'); #50
169
+ assert_equal(0, rr.ttl, 'rr_del - right ttl'); #51
170
+ assert_equal(Classes.ANY, rr.klass, 'rr_del - right class'); #52
171
+ assert_equal(Classes.ANY, rr.type, 'rr_del - right type'); #53
172
+ assert(is_empty(rr.rdata), 'rr_del - data empty'); #54
173
+
174
+ rr = nil
175
+
176
+ #------------------------------------------------------------------------------
177
+ # Delete An RR From An RRset.
178
+ #------------------------------------------------------------------------------
179
+
180
+ rr = update.delete(name, type, rdata);
181
+
182
+ assert(rr, 'rr_del() returned RR'); #55
183
+ assert_equal(name, rr.name.to_s, 'rr_del - right name'); #56
184
+ assert_equal(0, rr.ttl, 'rr_del - right ttl'); #57
185
+ assert_equal('NONE', rr.klass.string, 'rr_del - right class'); #58
186
+ assert_equal(type, rr.type, 'rr_del - right type'); #59
187
+ assert_equal(rdata, rr.rdata, 'rr_del - right data'); #60
188
+
189
+ rr = nil
190
+
191
+ #------------------------------------------------------------------------------
192
+ # Make sure RRs in an update packet have the same class as the zone, unless
193
+ # the class is NONE or ANY.
194
+ #------------------------------------------------------------------------------
195
+
196
+ update = Dnsruby::Update.new(zone, klass);
197
+ assert(update, 'packet created'); #61
198
+
199
+
200
+ update.present(name, type, rdata);
201
+
202
+ update.present(name, type, rdata);
203
+
204
+ update.present(name, type);
205
+
206
+ update.absent(name, type);
207
+
208
+ pre = update.pre;
209
+
210
+ assert_equal(3, pre.size, 'pushed inserted correctly'); #62
211
+ assert_equal(klass, pre[0].klass.string, 'first class right'); #63
212
+ assert_equal(Classes.ANY, pre[1].klass, 'third class right'); #65
213
+ assert_equal(Classes.NONE, pre[2].klass, 'forth class right'); #66
214
+ end
215
+ end
@@ -0,0 +1,17 @@
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 "test/ts_online.rb"
17
+ require "test/ts_offline.rb"