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,510 @@
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 TestEscapedChars < Test::Unit::TestCase
21
+ def test_one
22
+ Name::Label.set_max_length(150)
23
+ #
24
+ # We test al sorts of escaped non-ascii characters.
25
+ # This is all to be protocol conform... so to speak.
26
+
27
+ #
28
+ # The collection of tests is somewhat of a hodgepodge that tried to
29
+ # assess sensitivity to combinations of characters that the regular
30
+ # expressions and perl itself are sensitive to. (like \\\\\.\..)
31
+ # Development versions of the code tried to split a domain name in
32
+ # invidual labels by a regular expression. It made no sense to remove
33
+ # the more ackward tests as they have to pass anyway ...
34
+
35
+
36
+ # @todo Net::DNS still to have this functionality
37
+ #~ message="Using the "
38
+ #~ message+= if (Net::HAVE_XS) then " XS compiled " else " perl implemented " end
39
+ #~ message+="dn_expand function "
40
+ #~ diag (message)
41
+
42
+
43
+ #~ had_xs=Net::HAVE_XS
44
+
45
+
46
+ # Note that in perl the \\ in a presentation format can only be achieved
47
+ # through \\\\ .
48
+
49
+ # The hex codes are the names in wireformat:
50
+ # length octet. content octets, length octet, content , NULL octet
51
+
52
+
53
+
54
+ # Below are test combos, 1st and 2nd array elements are
55
+ # representations of the name. The output of the perl functions should
56
+ # yield the 2nd presentation (eg \037 gets presented as % )
57
+
58
+ # The 3rd element is a label count.
59
+ # The 4th element represents the number of octets per label
60
+ # The 5th element is a hexdump of the domain name in wireformat
61
+
62
+ # The optional 6th element is a boolean instructing to use the perl
63
+ # based dn_expand. This because the conversion between the native
64
+ # dn_expand output to a perl varialbe provides some problems.
65
+
66
+
67
+ testcombos=[
68
+ ['bla.fo\.o.org',
69
+ 'bla.fo\.o.org',
70
+ 3,
71
+ [3,4,3],
72
+ #Wire: 3 b l a 4 f o . o 3 o r g 0
73
+ "03626c6104666f2e6f036f726700"
74
+ ], # @todo@ Remove this first (repeated) test
75
+
76
+
77
+
78
+ [
79
+ 'bla\255.foo.org',
80
+ 'bla\255.foo.org',
81
+ 3,
82
+ [4,3,3],
83
+ #Wire: 4 b l a 0xff 3 f o o 3 o r g 0
84
+ "04626c61ff03666f6f036f726700"
85
+ ],
86
+
87
+ [
88
+ 'bla.f\xa9oo.org',
89
+ 'bla.f\169oo.org',
90
+ 3,
91
+ [3,4,3] ,
92
+ #Wire: 3 b l a 4 f 0xa9 o o 3 o r g 0
93
+ "03626c610466a96f6f036f726700"
94
+ ], # Note hex to decimal
95
+ ['bla.fo\.o.org',
96
+ 'bla.fo\.o.org',
97
+ 3,
98
+ [3,4,3],
99
+ #Wire: 3 b l a 4 f o . o 3 o r g 0
100
+ "03626c6104666f2e6f036f726700"
101
+ ],
102
+
103
+ ['bla\0000.foo.org',
104
+ 'bla\0000.foo.org',
105
+ 3,
106
+ [5,3,3],
107
+ #Wire: 5 b l a 0x00 0 3 f o o 3 o r g 0
108
+ "05626c61003003666f6f036f726700" ,
109
+ ],
110
+
111
+ ['bla.fo\o.org',
112
+ 'bla.foo.org',
113
+ 3,
114
+ [3,3,3],
115
+ #Wire: 3 b l a 3 f o o 3 o r g 0 ignoring backslash on input
116
+ "03626c6103666f6f036f726700",
117
+ ],
118
+ #drops the \
119
+ ['bla(*.foo.org',
120
+ 'bla\(*.foo.org',
121
+ 3,
122
+ [5,3,3],
123
+
124
+ #Wire: 5 b l a ( * 3 f o o 3 o r g 0
125
+ "05626c61282a03666f6f036f726700"
126
+ ],
127
+
128
+ [' .bla.foo.org',
129
+ '\032.bla.foo.org',
130
+ 4,
131
+ [1,3,3,3],
132
+ "012003626c6103666f6f036f726700",
133
+ ],
134
+
135
+ ['\\\\a.foo',
136
+ '\\\\a.foo',
137
+ 2,
138
+ [2,3],
139
+ #Wire: 2 \ a 3 f o o 0
140
+ "025c6103666f6f00"
141
+ ],
142
+
143
+
144
+ ['\\\\.foo',
145
+ '\\\\.foo',
146
+ 2,
147
+ [1,3],
148
+ #Wire: 1 \ 3 f o o 0
149
+ "015c03666f6f00",
150
+ ],
151
+
152
+ ['a\\..foo',
153
+ 'a\\..foo',
154
+ 2,
155
+ [2,3],
156
+ #Wire: 2 a . 3 f o o 0
157
+ "02612e03666f6f00"
158
+ ],
159
+
160
+ ['a\\.foo.org',
161
+ 'a\\.foo.org',
162
+ 2, [5,3],
163
+ #Wire: 5 a . f o o 3 o r g 0
164
+ "05612e666f6f036f726700" ,
165
+ ],
166
+
167
+ ['\..foo.org',
168
+ '\..foo.org',
169
+ 3,
170
+ [1,3,3],
171
+
172
+ #Wire: 1 . 3 f o o 3 o r g 0
173
+ "012e03666f6f036f726700" ,
174
+ ],
175
+
176
+ [
177
+ '\046.\046',
178
+ '\..\.',
179
+ 2,
180
+ [1,1],
181
+ '012e012e00',
182
+ ],
183
+
184
+ [ # all non \w characters :-)
185
+ '\000\001\002\003\004\005\006\007\008\009\010\011\012\013\014\015\016\017\018\019\020\021\022\023\024\025\026\027\028\029\030\031\032.\033\034\035\036\037\038\039\040\041\042\043\044\045\046\047\048.\058\059\060\061\062\063\064\065.\091\092\093\094\095\096.\123\124\125\126\127\128\129',
186
+ '\000\001\002\003\004\005\006\007\008\009\010\011\012\013\014\015\016\017\018\019\020\021\022\023\024\025\026\027\028\029\030\031\032.!\"#\$%&\'\(\)*+,-\./0.:\;<=>?\@A.[\\\\]^_`.{|}~\127\128\129',
187
+ 5,
188
+ [33,16,8,6,7],
189
+ "21000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20102122232425262728292a2b2c2d2e2f30083a3b3c3d3e3f4041065b5c5d5e5f60077b7c7d7e7f808100",
190
+ ],
191
+
192
+ ]
193
+
194
+
195
+ #foreach my $testinput (@testcombos){
196
+ testcombos.each do |testinput|
197
+ # test back and forth
198
+
199
+ name = Name.create(testinput[0])
200
+ labels = Name.name2encodedlabels(testinput[0])
201
+
202
+ # assert_equal(testinput[1], Net::labels2name(labels), "consistent name2labels labels2name for " + testinput[0])
203
+ name_from_labels = Name.encodedlabels2name(labels)
204
+ assert_equal(name.to_s, name_from_labels.to_s, "Name->Labels->Name for " + testinput[0])
205
+
206
+ # test number of labels
207
+ assert_equal(testinput[2],labels.length(),"consistent labelcount (#{testinput[2]})")
208
+ # test number of elements within label.
209
+ i=0
210
+ # Test length of each individual label
211
+ while i<testinput[2]
212
+ assert_equal(testinput[3][i], labels[i].length,
213
+ "labellength for label #{labels[i]} equals " + testinput[3][i].to_s)
214
+ i = i + 1
215
+ end
216
+
217
+ # wire=Name._name2wire(testinput[0])
218
+ wire=MessageEncoder.new {|msg|
219
+ # msg.put_name_canonical(Name.create(testinput[0]))}.to_s
220
+ msg.put_name_canonical(name)}.to_s
221
+
222
+ wireinhex=wire.unpack("H*")[0]
223
+ assert_equal( testinput[4], wireinhex,"Wireinhex for " + testinput[0] )
224
+ # And now call DN_EXPAND
225
+ # name,offset=Name.dn_expand(wire,0)
226
+
227
+
228
+ MessageDecoder.new(wire) {|msg|
229
+ name = msg.get_name}
230
+
231
+ assert_equal(name.to_s,testinput[1],"DN_EXPAND (pp) consistent")
232
+ end
233
+
234
+ # QUESTION SECTION
235
+ #\\.eg.secret-wg.org. IN TXT
236
+ #
237
+ # ANSWER SECTION:
238
+ #\\.eg.secret-wg.org. 10 IN TXT "WildCard Match"
239
+ #
240
+ # AUTHORITY SECTION:
241
+ #eg.secret-wg.org. 600 IN NS ns.eg.secret-wg.org.
242
+ #
243
+ # ADDITIONAL SECTION:
244
+ #ns.eg.secret-wg.org. 600 IN A 10.0.53.208
245
+ #
246
+
247
+ uuencodedPacket=%w{
248
+ c8 d5 85 00 00 01 00 01 00 01 00 01 02 5c 5c 02
249
+ 65 67 09 73 65 63 72 65 74 2d 77 67 03 6f 72 67
250
+ 00 00 10 00 01 c0 0c 00 10 00 01 00 00 00 0a 00
251
+ 0f 0e 57 69 6c 64 43 61 72 64 20 4d 61 74 63 68
252
+ c0 0f 00 02 00 01 00 00 02 58 00 05 02 6e 73 c0
253
+ 0f c0 4c 00 01 00 01 00 00 02 58 00 04 0a 00 35
254
+ d0
255
+ }
256
+
257
+ # uuEncodedPacket =~ s/\s*//g
258
+ # uuEncodedPacket =uuEncodedPacket.gsub("\s*", "")
259
+ # packetdata = [uuEncodedPacket].pack('H*')
260
+
261
+ uuencodedPacket.map!{|e| e.hex}
262
+ packetdata = uuencodedPacket.pack('c*')
263
+ packetdata = packetdata.gsub("\s*", "")
264
+
265
+ packet = Message.decode(packetdata)
266
+ assert(packet, "nil packet returned from binary data")
267
+ assert_equal( (packet.answer)[0].name.to_s,'\\\\\\\\.eg.secret-wg.org',"Correctly dealt escaped backslash from wireformat \\\\.eg.secret-wg.org")
268
+ end
269
+
270
+ def test_esoteric_stuff
271
+ # Now testing for the real esotheric stuff.
272
+ # domain names can contain NULL and space characters (on the wire)
273
+ # these should be properly expanded
274
+
275
+ # This only works if the dn_expand_XS() is NOT used.
276
+
277
+ # The UUencoded packet contains a captured packet with this content:
278
+
279
+ # QUESTION SECTION:
280
+ #\000.n\032ll.eg.secret-wg.org. IN TXT
281
+
282
+ # ANSWER SECTION:
283
+ #\000.n ll.eg.secret-wg.org. 0 IN TXT "NULL byte ownername"
284
+ # ^ SPACE !!!
285
+ # AUTHORITY SECTION:
286
+ #eg.secret-wg.org. 600 IN NS ns.eg.secret-wg.org.
287
+
288
+ # ADDITIONAL SECTION:
289
+ #ns.eg.secret-wg.org. 600 IN A 10.0.53.208
290
+
291
+ uuencodedPacket =%w{
292
+ a6 58 85 00 00 01 00 01 00 01 00 01 01 00 04 6e
293
+ 20 6c 6c 02 65 67 09 73 65 63 72 65 74 2d 77 67
294
+ 03 6f 72 67 00 00 10 00 01 c0 0c 00 10 00 01 00
295
+ 00 00 00 00 14 13 4e 55 4c 4c 20 62 79 74 65 20
296
+ 6f 77 6e 65 72 6e 61 6d 65 c0 13 00 02 00 01 00
297
+ 00 02 58 00 05 02 6e 73 c0 13 c0 55 00 01 00 01
298
+ 00 00 02 58 00 04 0a 00 35 d0
299
+ }
300
+
301
+ uuencodedPacket.map!{|e| e.hex}
302
+ packetdata = uuencodedPacket.pack('c*')
303
+ packetdata = packetdata.gsub("\s*", "")
304
+ packet = Message.decode(packetdata)
305
+ assert_equal( '\000.n\\032ll.eg.secret-wg.org',(packet.answer)[0].name.to_s,"Correctly dealt with NULL bytes in domain names")
306
+
307
+
308
+ #slightly modified \\ .eg.secret-wg.org instead of \\\\.eg.secret-wg.org
309
+ # That is escaped backslash space
310
+ uuencodedPacket=%w{
311
+ c8 d5 85 00 00 01 00 01 00 01 00 01 02 5c 20 02
312
+ 65 67 09 73 65 63 72 65 74 2d 77 67 03 6f 72 67
313
+ 00 00 10 00 01 c0 0c 00 10 00 01 00 00 00 0a 00
314
+ 0f 0e 57 69 6c 64 43 61 72 64 20 4d 61 74 63 68
315
+ c0 0f 00 02 00 01 00 00 02 58 00 05 02 6e 73 c0
316
+ 0f c0 4c 00 01 00 01 00 00 02 58 00 04 0a 00 35
317
+ d0
318
+ }
319
+
320
+ uuencodedPacket.map!{|e| e.hex}
321
+ packetdata = uuencodedPacket.pack('c*')
322
+ packetdata.gsub!("\s*", "")
323
+ packet = Message.decode(packetdata)
324
+
325
+
326
+ assert_equal( '\\\\\\032.eg.secret-wg.org',(packet.answer)[0].name.to_s,"Correctly dealt escaped backslash from wireformat \\e.eg.secret-wg.org")
327
+ # @todo Replace when Net::DNS does this!
328
+ # if ( had_xs && !Net::HAVE_XS )
329
+ # puts("\nContinuing to use the XS based dn_expand()\n")
330
+ # Net::HAVE_XS=1
331
+ # end
332
+
333
+
334
+
335
+ #slightly modified \\e.eg.secret-wg.org instead of \\\\.eg.secret-wg.org
336
+ uuencodedPacket=%w{
337
+ c8 d5 85 00 00 01 00 01 00 01 00 01 02 5c 65 02
338
+ 65 67 09 73 65 63 72 65 74 2d 77 67 03 6f 72 67
339
+ 00 00 10 00 01 c0 0c 00 10 00 01 00 00 00 0a 00
340
+ 0f 0e 57 69 6c 64 43 61 72 64 20 4d 61 74 63 68
341
+ c0 0f 00 02 00 01 00 00 02 58 00 05 02 6e 73 c0
342
+ 0f c0 4c 00 01 00 01 00 00 02 58 00 04 0a 00 35
343
+ d0
344
+ }
345
+
346
+ # uuEncodedPacket =~ s/\s*//g
347
+ # packetdata = uuEncodedPacket.pack('H*')
348
+ # packetdata = packetdata.gsub("\s*", "")
349
+ uuencodedPacket.map!{|e| e.hex}
350
+ packetdata = uuencodedPacket.pack('c*')
351
+ packet = Message.decode(packetdata)
352
+
353
+
354
+ assert_equal( '\\\\e.eg.secret-wg.org',(packet.answer)[0].name.to_s,"Correctly dealt escaped backslash from wireformat \\e.eg.secret-wg.org")
355
+
356
+
357
+ #slightly modified \\\..eg.secret-wg.org instead of \\e.eg.secret-wg.org
358
+ uuencodedPacket=%w{
359
+ c8 d5 85 00 00 01 00 01 00 01 00 01 02 5c 65 02
360
+ 65 67 09 73 65 63 72 65 74 2d 77 67 03 6f 72 67
361
+ 00 00 10 00 01 c0 0c 00 10 00 01 00 00 00 0a 00
362
+ 0f 0e 57 69 6c 64 43 61 72 64 20 4d 61 74 63 68
363
+ c0 0f 00 02 00 01 00 00 02 58 00 05 02 6e 73 c0
364
+ 0f c0 4c 00 01 00 01 00 00 02 58 00 04 0a 00 35
365
+ d0
366
+ }
367
+
368
+ ## uuEncodedPacket =~ s/\s*//g
369
+ # packetdata = uuEncodedPacket.pack('H*')
370
+ # packetdata = packetdata.gsub("\s*", "")
371
+ uuencodedPacket.map!{|e| e.hex}
372
+ packetdata = uuencodedPacket.pack('c*')
373
+ packet = Message.decode(packetdata)
374
+ assert_equal( '\\\\e.eg.secret-wg.org',(packet.answer)[0].name.to_s,"Correctly dealt escaped backslash from wireformat \\\..eg.secret-wg.org")
375
+
376
+ testrr=RR.create(
377
+ :name => '\\e.eg.secret-wg.org',
378
+ :type => 'TXT',
379
+ :txtdata => '"WildCard Match"',
380
+ :ttl => 10,
381
+ :class => "IN"
382
+ )
383
+
384
+
385
+
386
+ klass = "IN"
387
+ ttl = 43200
388
+ name = 'def0au&lt.example.com'
389
+
390
+
391
+
392
+ rrs = [
393
+ { #[0]
394
+ :name => '\..bla\..example.com',
395
+ :type => Types.A,
396
+ :address => '10.0.0.1',
397
+ },
398
+ { #[2]
399
+ :name => name,
400
+ :type => 'AFSDB',
401
+ :subtype => 1,
402
+ :hostname =>'afsdb-hostname.example.com',
403
+ },
404
+ { #[3]
405
+ :name => '\\.funny.example.com',
406
+ :type => Types::CNAME,
407
+ :domainname => 'cname-cn\244ame.example.com',
408
+ },
409
+ { #[4]
410
+ :name => name,
411
+ :type => Types.DNAME,
412
+ :domainname => 'dn\222ame.example.com',
413
+ },
414
+ { #[9]
415
+ :name => name,
416
+ :type => Types.MINFO,
417
+ :rmailbx => 'minfo\.rmailbx.example.com',
418
+ :emailbx => 'minfo\007emailbx.example.com',
419
+ },
420
+
421
+ { #[13]
422
+ :name => name,
423
+ :type => Types.NS,
424
+ :domainname => '\001ns-nsdname.example.com',
425
+ },
426
+
427
+ { #[19]
428
+ :name => name,
429
+ :type => Types.SOA,
430
+ :mname => 'soa-mn\001ame.example.com',
431
+ :rname => 'soa\.rname.example.com',
432
+ :serial => 12345,
433
+ :refresh => 7200,
434
+ :retry => 3600,
435
+ :expire => 2592000,
436
+ :minimum => 86400,
437
+ },
438
+
439
+ ]
440
+
441
+ #------------------------------------------------------------------------------
442
+ # Create the packet.
443
+ #------------------------------------------------------------------------------
444
+ packet = nil
445
+ packet = Message.new(name)
446
+ assert(packet, 'Packet created')
447
+
448
+ rrs.each do |data|
449
+ data.update({:ttl => ttl,})
450
+
451
+ rec = RR.create(data)
452
+ packet.add_answer(rec)
453
+ end
454
+
455
+
456
+ #------------------------------------------------------------------------------
457
+ # Re-create the packet from data.
458
+ #------------------------------------------------------------------------------
459
+ data = packet.encode
460
+
461
+ assert(data, 'Packet has data after pushes')
462
+
463
+ packet = nil
464
+
465
+ packet = Message.decode(data)
466
+
467
+ assert(packet, 'Packet reconstructed from data')
468
+
469
+ answer = packet.answer
470
+
471
+ # assert(answer && answer == rrs, 'Packet returned correct answer section')
472
+ rrs.each do |rr|
473
+ record = nil
474
+ answer.each do |ansrec|
475
+ if (ansrec.type == rr[:type])
476
+ record = ansrec
477
+ break
478
+ end
479
+ end
480
+ assert(record!=nil, "can't find answer record for #{rr}")
481
+ rr.keys.each do |key|
482
+ if (key == :type)
483
+ assert_equal(Types.new(rr[key]).string, record.send(key).to_s, "value not right for key #{key} for rr #{rr}")
484
+ else
485
+ assert_equal(rr[key].to_s, record.send(key).to_s, "value not right for key #{key} for rr #{rr}")
486
+ end
487
+ end
488
+ end
489
+
490
+
491
+ while (answer.size>0 and rrs.size>0)
492
+ data = rrs.shift
493
+ rr = answer.shift
494
+ type = data[:type]
495
+ # foreach my $meth (keys %{$data}) {
496
+ (data.keys.each do |meth|
497
+ if (meth == :type)
498
+ assert_equal(Types.new(data[meth]).to_s, rr.send(meth).to_s, "#{type} - #meth() correct")
499
+ else
500
+ assert_equal(data[meth].to_s, rr.send(meth).to_s, "#{type} - #meth() correct")
501
+ end
502
+ end)
503
+
504
+ rr2 = RR.new_from_string(rr.to_s)
505
+ assert_equal(rr.to_s, rr2.to_s, "#{type} - Parsing from string works")
506
+ end
507
+
508
+ Name::Label.set_max_length(Name::Label::MaxLabelLength)
509
+ end
510
+ end
data/test/tc_header.rb ADDED
@@ -0,0 +1,104 @@
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 TestHeader < Test::Unit::TestCase
21
+ def test_header
22
+ header = Header.new();
23
+ assert(header, "new() returned something")
24
+
25
+ header.id=41
26
+ assert_equal(header.id, 41, "id() works")
27
+
28
+ header.qr=true
29
+ assert_equal(header.qr, true, "qr() works")
30
+
31
+ header.opcode="QUERY"
32
+ assert_equal(OpCode.Query, header.opcode,
33
+ "opcode() works")
34
+ header.opcode=OpCode::Query
35
+ assert_equal(header.opcode.string, "Query",
36
+ "opcode() works")
37
+
38
+
39
+ header.aa=true
40
+ assert_equal(header.aa, true, "aa() works")
41
+
42
+ header.tc=false
43
+ assert_equal(header.tc, false, "tc() works")
44
+
45
+ header.rd=true
46
+ assert_equal(header.rd, true, "rd() works")
47
+
48
+ header.ad=true
49
+ assert_equal(header.ad, true, "rd() works")
50
+
51
+ header.cd=true
52
+ assert_equal(header.cd, true, "rd() works")
53
+
54
+ header.ra=true
55
+ assert_equal(header.ra, true, "ra() works")
56
+
57
+ header.qr=true
58
+ assert_equal(header.qr, true, "qr() works")
59
+
60
+ header.rcode="NOERROR"
61
+ assert_equal(header.rcode, RCode::NOERROR, "rcode() works")
62
+ header.rcode=RCode.NOERROR
63
+ assert_equal(header.rcode.string, "NOERROR", "rcode() works")
64
+
65
+ header.qdcount=1
66
+ header.ancount=2
67
+ header.nscount=3
68
+ header.arcount=3
69
+
70
+
71
+ # Reenable when support for CD is there
72
+ #header.cd=0
73
+ #assert_equal(header.cd, 0, "cd() works")
74
+ data = header.data
75
+
76
+ header2 = Header.new_from_data(data);
77
+
78
+ assert(header==(header2), 'Headers are the same');
79
+
80
+ #
81
+ # Is header.inspect remotely sane?
82
+ #
83
+ assert(header.to_s =~ /opcode = Query/, 'inspect() has opcode correct');
84
+ assert(header.to_s =~ /ancount = 2/, 'inspect() has ancount correct');
85
+
86
+ header = Header.new;
87
+
88
+ #
89
+ # Check that the aliases work properly.
90
+ #
91
+ header.zocount=(0);
92
+ header.prcount=(1);
93
+ header.upcount=(2);
94
+ header.adcount=(3);
95
+
96
+ assert_equal(header.zocount, 0, 'zocount works');
97
+ assert_equal(header.prcount, 1, 'prcount works');
98
+ assert_equal(header.upcount, 2, 'upcount works');
99
+ assert_equal(header.adcount, 3, 'adcount works');
100
+
101
+
102
+
103
+ end
104
+ end