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,325 @@
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
+ module Dnsruby
17
+ #== Dnsruby::Name class
18
+ #
19
+ #(RFC1035, section 3.1)
20
+ #
21
+ #== methods
22
+ #
23
+ #* Name::create(namestring)
24
+ #* Name#absolute?
25
+ #* Name#wild?
26
+ #* Name#subdomain_of?(other)
27
+ #* Name#labels
28
+ #
29
+ class Name
30
+ MaxNameLength=255
31
+ #--
32
+ # A Name is a collection of Labels. Each label is presentation-formatted
33
+ # When a Name is wire-encoded, the label array is walked, and each label is wire-encoded.
34
+ # When a Name is unencoded, each label is unencoded, and added to the Name collection of labels.
35
+ # When a Name is made from a string, the Name is split into Labels.
36
+ #++
37
+ def self.create(arg)
38
+ case arg
39
+ when Name
40
+ return arg
41
+ when String
42
+ # arg.gsub!(/\.$/o, "")
43
+ return Name.new(split_escaped(arg), /\.\z/ =~ arg ? true : false)
44
+ when Array
45
+ return Name.new(arg, /\.\z/ =~ ((arg.last.kind_of?String)?arg.last : arg.last.string) ? true : false)
46
+ else
47
+ raise ArgumentError.new("cannot interpret as DNS name: #{arg.inspect}")
48
+ end
49
+ end
50
+
51
+ def self.split_escaped(arg) #:nodoc: all
52
+ encodedlabels = name2encodedlabels(arg)
53
+ return encodedlabels2name(encodedlabels).labels
54
+ end
55
+
56
+ attr_reader :labels
57
+
58
+ #This method should only be called internally.
59
+ #Use Name::create to create a new Name
60
+ def initialize(labels, absolute=true) #:nodoc: all
61
+ total_length=labels.length-1
62
+ labels.each do |l|
63
+ if (!l.kind_of?Label)
64
+ raise ArgumentError.new("Name::new called with non-labels. Use Name::create instead?")
65
+ end
66
+ total_length+=l.length
67
+ end
68
+ if (total_length > MaxNameLength)
69
+ raise ResolvError.new("Name length is #{total_length}, greater than max of #{MaxNameLength} octets!")
70
+ end
71
+ @labels = labels
72
+ @absolute = absolute
73
+ end
74
+
75
+ def downcase
76
+ labels = []
77
+ @labels.each do |label| labels << Label.new(label.downcase) end
78
+ return Name.create(labels)
79
+ end
80
+
81
+ def inspect
82
+ "#<#{self.class}: #{self.to_s}#{@absolute ? '.' : ''}>"
83
+ end
84
+
85
+ def absolute?
86
+ return @absolute
87
+ end
88
+
89
+ #Is this name a wildcard?
90
+ def wild?
91
+ if (labels.length == 0)
92
+ return false
93
+ end
94
+ return (labels[0].string == '*')
95
+ end
96
+
97
+ def ==(other)
98
+ return false unless Name === other
99
+ return @labels == other.labels && @absolute == other.absolute?
100
+ end
101
+ alias eql? ==
102
+
103
+ # tests subdomain-of relation.
104
+ #
105
+ # domain = Resolv::Name.create("y.z")
106
+ # p Resolv::Name.create("w.x.y.z").subdomain_of?(domain) #=> true
107
+ # p Resolv::Name.create("x.y.z").subdomain_of?(domain) #=> true
108
+ # p Resolv::Name.create("y.z").subdomain_of?(domain) #=> false
109
+ # p Resolv::Name.create("z").subdomain_of?(domain) #=> false
110
+ # p Resolv::Name.create("x.y.z.").subdomain_of?(domain) #=> false
111
+ # p Resolv::Name.create("w.z").subdomain_of?(domain) #=> false
112
+ #
113
+ def subdomain_of?(other)
114
+ raise ArgumentError, "not a domain name: #{other.inspect}" unless Name === other
115
+ return false if @absolute != other.absolute?
116
+ other_len = other.length
117
+ return false if @labels.length <= other_len
118
+ return @labels[-other_len, other_len] == other.to_a
119
+ end
120
+
121
+ def hash
122
+ return @labels.hash ^ @absolute.hash
123
+ end
124
+
125
+ def to_a #:nodoc: all
126
+ return @labels
127
+ end
128
+
129
+ def length #:nodoc: all
130
+ return @labels.length
131
+ end
132
+
133
+ def [](i) #:nodoc: all
134
+ return @labels[i]
135
+ end
136
+
137
+ # returns the domain name as a string.
138
+ #
139
+ # The domain name doesn't have a trailing dot even if the name object is
140
+ # absolute.
141
+ #
142
+ # p Resolv::Name.create("x.y.z.").to_s #=> "x.y.z"
143
+ # p Resolv::Name.create("x.y.z").to_s #=> "x.y.z"
144
+ #
145
+ def to_s
146
+ # @todo@ Need to think about escaped characters here?
147
+ return @labels.collect{|l| (l.kind_of?String) ? l : l.string}.join('.')
148
+
149
+ end
150
+
151
+ # Utility function
152
+ #
153
+ # name2labels to translate names from presentation format into an
154
+ # array of "wire-format" labels.
155
+ # in: dName a string with a domain name in presentation format (1035
156
+ # sect 5.1)
157
+ # out: an array of labels in wire format.
158
+ def self.name2encodedlabels (dName) #:nodoc: all
159
+ names=[]
160
+ j=0;
161
+ while (dName && dName.length > 0)
162
+ names[j],dName = encode(dName)
163
+ j+=1
164
+ end
165
+
166
+ return names
167
+ end
168
+
169
+ def self.encodedlabels2name(labels) #:nodoc: all
170
+ ls = []
171
+ labels.each do |l|
172
+ ls.push(Name.decode(l.string))
173
+ end
174
+ return Name.new(ls)
175
+ end
176
+
177
+ def self.decode(wire) #:nodoc: all
178
+ presentation=""
179
+ length=wire.length
180
+ # There must be a nice regexp to do this.. but since I failed to
181
+ # find one I scan the name string until I find a '\', at that time
182
+ # I start looking forward and do the magic.
183
+
184
+ i=0;
185
+
186
+ while (i < length )
187
+ c=wire.unpack("x#{i}C1") [0]
188
+ if ( c < 33 || c > 126 )
189
+ presentation=presentation + sprintf("\\%03u" ,c)
190
+ elsif ( c.chr == "\"" )
191
+ presentation=presentation + "\\\""
192
+ elsif ( c.chr == "\$")
193
+ presentation=presentation + "\\\$"
194
+ elsif ( c.chr == "(" )
195
+ presentation=presentation + "\\("
196
+ elsif ( c.chr == ")" )
197
+ presentation=presentation + "\\)"
198
+ elsif ( c.chr == ";" )
199
+ presentation=presentation + "\\;"
200
+ elsif ( c.chr == "@" )
201
+ presentation=presentation + "\\@"
202
+ elsif ( c.chr == "\\" )
203
+ presentation=presentation + "\\\\"
204
+ elsif ( c.chr == ".")
205
+ presentation=presentation + "\\."
206
+ else
207
+ presentation=presentation + c.chr()
208
+ end
209
+ i=i+1
210
+ end
211
+
212
+ return Label.new(presentation)
213
+ end
214
+
215
+
216
+
217
+ # wire,leftover=presentation2wire(leftover)
218
+ # Will parse the input presentation format and return everything before
219
+ # the first non-escaped "." in the first element of the return array and
220
+ # all that has not been parsed yet in the 2nd argument.
221
+ def self.encode(presentation) #:nodoc: all
222
+ presentation=presentation.to_s
223
+ wire="";
224
+ length=presentation.length;
225
+
226
+ i=0;
227
+
228
+ while (i < length )
229
+ c=presentation.unpack("x#{i}C1") [0]
230
+ if (c == 46) # ord('.')
231
+ endstring = presentation[i+1, presentation.length-(i+1)]
232
+ return Label.new(wire),endstring
233
+ end
234
+ if (c == 92) # ord'\\'
235
+ #backslash found
236
+ pos = i+1
237
+ # pos sets where next pattern matching should start
238
+ if (presentation.index(/\G(\d\d\d)/o, pos))
239
+ wire=wire+[$1.to_i].pack("C")
240
+ i=i+3
241
+ elsif(presentation.index(/\Gx([0..9a..fA..F][0..9a..fA..F])/o, pos))
242
+ wire=wire+[$1].pack("H*")
243
+ i=i+3
244
+ elsif(presentation.index(/\G\./o, pos))
245
+ wire=wire+"\."
246
+ i=i+1
247
+ elsif(presentation.index(/\G@/o,pos))
248
+ wire=wire+"@"
249
+ i=i+1
250
+ elsif(presentation.index(/\G\(/o, pos))
251
+ wire=wire+"("
252
+ i=i+1
253
+ elsif(presentation.index(/\G\)/o, pos))
254
+ wire=wire+")"
255
+ i=i+1
256
+ elsif(presentation.index(/\G\\/o, pos))
257
+ wire=wire+"\\"
258
+ i+=1
259
+ end
260
+ else
261
+ wire = wire + [c].pack("C")
262
+ end
263
+ i=i+1
264
+ end
265
+
266
+ return Label.new(wire)
267
+ end
268
+
269
+ # end
270
+
271
+
272
+ #== Dnsruby::Label class
273
+ #
274
+ #(RFC1035, section 3.1)
275
+ #
276
+ class Label
277
+ MaxLabelLength = 63
278
+ @@max_length=MaxLabelLength
279
+ # Split a Name into its component Labels
280
+ def self.split(arg)
281
+ labels = []
282
+ # arg.scan(/[^\.]+/) {labels << Str.new($&)}
283
+ arg.scan(/[^\.]+/) {labels << new($&)}
284
+ return labels
285
+ end
286
+
287
+ def self.set_max_length(l)
288
+ @@max_length=l
289
+ end
290
+
291
+ def initialize(string)
292
+ if (string.length > @@max_length)
293
+ raise ResolvError.new("Label too long (#{string.length}, max length=#{MaxLabelLength}). Label = #{string}")
294
+ end
295
+ @downcase = string.downcase
296
+ @string = string
297
+ end
298
+ attr_reader :string, :downcase
299
+
300
+ def to_s
301
+ return @string.to_s # + "."
302
+ end
303
+
304
+ def length
305
+ return @string.length
306
+ end
307
+
308
+ def inspect
309
+ return "#<#{self.class} #{self.to_s}>"
310
+ end
311
+
312
+ def ==(other)
313
+ return @downcase == other.downcase
314
+ end
315
+
316
+ def eql?(other)
317
+ return self == other
318
+ end
319
+
320
+ def hash
321
+ return @downcase.hash
322
+ end
323
+ end
324
+ end
325
+ end
@@ -0,0 +1,56 @@
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
+ module Dnsruby
17
+ class RR
18
+ module IN
19
+ #Class for DNS Address (A) resource records.
20
+ #
21
+ #RFC 1035 Section 3.4.1
22
+ class A < RR
23
+ ClassHash[[TypeValue = Types::A, ClassValue = ClassValue]] = self #:nodoc: all
24
+
25
+ #The RR's address field.
26
+ attr_accessor :address
27
+
28
+ def from_data(data) #:nodoc: all
29
+ @address = IPv4.create(data)
30
+ end
31
+
32
+ #Create the RR from a hash
33
+ def from_hash(hash)
34
+ @address = IPv4.create(hash[:address])
35
+ end
36
+
37
+ # Create the RR from a standard string
38
+ def from_string(input)
39
+ @address = IPv4.create(input)
40
+ end
41
+
42
+ def rdata_to_string
43
+ return @address.to_s
44
+ end
45
+
46
+ def encode_rdata(msg) #:nodoc: all
47
+ msg.put_bytes(@address.address)
48
+ end
49
+
50
+ def self.decode_rdata(msg) #:nodoc: all
51
+ return self.new(IPv4.new(msg.get_bytes(4)))
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,54 @@
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
+ module Dnsruby
17
+ class RR
18
+ module IN
19
+ #Class for DNS IPv6 Address (AAAA) resource records.
20
+ #
21
+ #RFC 1886 Section 2, RFC 1884 Sections 2.2 & 2.4.4
22
+ class AAAA < RR
23
+ ClassHash[[TypeValue = Types::AAAA, ClassValue = ClassValue]] = self #:nodoc: all
24
+
25
+ # The RR's address field
26
+ attr_accessor :address
27
+
28
+ def from_data(data) #:nodoc: all
29
+ @address = IPv6.create(data)
30
+ end
31
+
32
+ def from_hash(hash) #:nodoc: all
33
+ @address = IPv6.create(hash[:address])
34
+ end
35
+
36
+ def from_string(input) #:nodoc: all
37
+ @address = IPv6.create(input)
38
+ end
39
+
40
+ def rdata_to_string #:nodoc: all
41
+ return @address.to_s
42
+ end
43
+
44
+ def encode_rdata(msg) #:nodoc: all
45
+ msg.put_bytes(@address.address)
46
+ end
47
+
48
+ def self.decode_rdata(msg) #:nodoc: all
49
+ return self.new(IPv6.new(msg.get_bytes(16)))
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,68 @@
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
+ module Dnsruby
17
+ class RR
18
+ module IN
19
+ #Class for DNS AFS Data Base (AFSDB) resource records.
20
+ #
21
+ #RFC 1183 Section 1
22
+ class AFSDB < RR
23
+ ClassHash[[TypeValue = Types::AFSDB, ClassValue = ClassValue]] = self #:nodoc: all
24
+
25
+ #The RR's subtype field. See RFC 1183.
26
+ attr_accessor :subtype
27
+
28
+ #The RR's hostname field. See RFC 1183.
29
+ attr_accessor :hostname
30
+
31
+ def from_hash(hash) #:nodoc: all
32
+ @subtype = hash[:subtype]
33
+ @hostname = Name.create(hash[:hostname])
34
+ end
35
+
36
+ def from_data(data) #:nodoc: all
37
+ @subtype, @hostname = data
38
+ end
39
+
40
+ def from_string(input) #:nodoc: all
41
+ if (input!=nil && (input =~ /^(\d+)\s+(\S+)$/o))
42
+ @subtype = $1;
43
+ @hostname = Name.create($2)
44
+ end
45
+ end
46
+
47
+ def rdata_to_string #:nodoc: all
48
+ if defined?@subtype
49
+ return "#{@subtype} #{@hostname}."
50
+ else
51
+ return '';
52
+ end
53
+ end
54
+
55
+ def encode_rdata(msg, canonical=false) #:nodoc: all
56
+ msg.put_pack("n", @subtype)
57
+ msg.put_name(@hostname, canonical)
58
+ end
59
+
60
+ def self.decode_rdata(msg) #:nodoc: all
61
+ subtype, = msg.get_unpack("n")
62
+ hostname = msg.get_name
63
+ return self.new([subtype, hostname])
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,89 @@
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
+ module Dnsruby
17
+ class RR
18
+ #Class for DNS Certificate (CERT) resource records. (see RFC 2538)
19
+ #
20
+ #RFC 2782
21
+ class CERT < RR
22
+ ClassValue = nil #:nodoc: all
23
+ TypeValue = Types::CERT #:nodoc: all
24
+
25
+ #Returns the format code for the certificate
26
+ attr_accessor :certtype
27
+ #Returns the key tag for the public key in the certificate
28
+ attr_accessor :keytag
29
+ #Returns the algorithm used by the certificate
30
+ attr_accessor :alg
31
+ #Returns the data comprising the certificate itself (in raw binary form)
32
+ attr_accessor :cert
33
+
34
+ class CertificateTypes < CodeMapper
35
+ PKIX = 1 # PKIX (X.509v3)
36
+ SPKI = 2 # Simple Public Key Infrastructure
37
+ PGP = 3 # Pretty Good Privacy
38
+ IPKIX = 4 # URL of an X.509 data object
39
+ ISPKI = 5 # URL of an SPKI certificate
40
+ IPGP = 6 # Fingerprint and URL of an OpenPGP packet
41
+ ACPKIX = 7 # Attribute Certificate
42
+ IACPKIX = 8 # URL of an Attribute Certificate
43
+ URI = 253 # Certificate format defined by URI
44
+ OID = 254 # Certificate format defined by OID
45
+
46
+ update()
47
+ end
48
+
49
+ def from_data(data) #:nodoc: all
50
+ @certtype = CertificateTypes::new(data[0])
51
+ @keytag = data[1]
52
+ @alg = DNSSEC::Algorithms.new(data[2])
53
+ @cert= data[3]
54
+ end
55
+
56
+ def from_hash(hash) #:nodoc: all
57
+ @certtype = CertificateTypes::new(hash[:certtype])
58
+ @keytag = hash[:keytag]
59
+ @alg = DNSSEC::Algorithms.new(hash[:alg])
60
+ @cert= hash[:cert]
61
+ end
62
+
63
+ def from_string(input) #:nodoc: all
64
+ if (input != "")
65
+ names = input.split(" ")
66
+ @certtype = CertificateTypes::new(names[0])
67
+ @keytag = names[1]
68
+ @alg = DNSSEC::Algorithms.new(names[2])
69
+ @cert = names[3]
70
+ end
71
+ end
72
+
73
+ def rdata_to_string #:nodoc: all
74
+ return "#{@certtype.string} #{@keytag} #{@alg.string} #{@cert}"
75
+ end
76
+
77
+ def encode_rdata(msg) #:nodoc: all
78
+ msg.put_pack('nnn', @certtype.code, @keytag, @alg.code)
79
+ msg.put_string(@cert)
80
+ end
81
+
82
+ def self.decode_rdata(msg) #:nodoc: all
83
+ certtype, keytag, alg = msg.get_unpack('nnn')
84
+ cert = msg.get_string
85
+ return self.new([certtype, keytag, alg, cert])
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,52 @@
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
+ module Dnsruby
17
+ class RR
18
+ #Class for DNS Host Information (HINFO) resource records.
19
+ class HINFO < RR
20
+ ClassValue = nil #:nodoc: all
21
+ TypeValue = Types::HINFO #:nodoc: all
22
+
23
+ #The CPU type for this RR.
24
+ attr_accessor :cpu
25
+ #The operating system type for this RR.
26
+ attr_accessor :os
27
+
28
+ def from_data(data) #:nodoc: all
29
+ @cpu, @os= data
30
+ end
31
+
32
+ def from_string(input) #:nodoc: all
33
+ @cpu, @os = input.split(" ")
34
+ end
35
+
36
+ def rdata_to_string #:nodoc: all
37
+ return "#{@cpu} #{@os}"
38
+ end
39
+
40
+ def encode_rdata(msg) #:nodoc: all
41
+ msg.put_string(@cpu)
42
+ msg.put_string(@os)
43
+ end
44
+
45
+ def self.decode_rdata(msg) #:nodoc: all
46
+ cpu = msg.get_string
47
+ os = msg.get_string
48
+ return self.new([cpu, os])
49
+ end
50
+ end
51
+ end
52
+ end