ronin-support 0.5.1 → 1.0.0.beta1

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 (517) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +11 -0
  3. data/.github/workflows/ruby.yml +27 -0
  4. data/.gitignore +7 -6
  5. data/.mailmap +1 -0
  6. data/.ruby-version +1 -0
  7. data/.yardopts +1 -2
  8. data/ChangeLog.md +533 -137
  9. data/Gemfile +20 -20
  10. data/README.md +137 -61
  11. data/Rakefile +29 -10
  12. data/data/text/homoglyphs/ascii.txt +8 -0
  13. data/data/text/homoglyphs/cyrillic.txt +33 -0
  14. data/data/text/homoglyphs/full_width.txt +81 -0
  15. data/data/text/homoglyphs/greek.txt +21 -0
  16. data/data/text/homoglyphs/latin_numbers.txt +14 -0
  17. data/data/text/homoglyphs/punctuation.txt +7 -0
  18. data/data/text/patterns/network/public_suffix.rb.erb +44 -0
  19. data/examples/ssl_proxy.rb +38 -0
  20. data/examples/tcp_proxy.rb +41 -0
  21. data/gemspec.yml +25 -15
  22. data/lib/ronin/support/archive/core_ext/file.rb +118 -0
  23. data/lib/ronin/{formatting/sql.rb → support/archive/core_ext.rb} +6 -7
  24. data/lib/ronin/support/archive/mixin.rb +213 -0
  25. data/lib/ronin/support/archive/tar/reader.rb +135 -0
  26. data/lib/ronin/support/archive/tar/writer.rb +197 -0
  27. data/lib/ronin/support/archive/tar.rb +155 -0
  28. data/lib/ronin/support/archive/zip/reader/entry.rb +134 -0
  29. data/lib/ronin/support/archive/zip/reader/statistics.rb +76 -0
  30. data/lib/ronin/support/archive/zip/reader.rb +273 -0
  31. data/lib/ronin/support/archive/zip/writer.rb +175 -0
  32. data/lib/ronin/support/archive/zip.rb +105 -0
  33. data/lib/ronin/support/archive.rb +211 -0
  34. data/lib/ronin/support/binary/array.rb +255 -0
  35. data/lib/ronin/support/binary/bit_flip.rb +147 -0
  36. data/lib/ronin/support/binary/buffer.rb +2027 -0
  37. data/lib/ronin/support/binary/byte_slice.rb +324 -0
  38. data/lib/ronin/support/binary/core_ext/array.rb +75 -0
  39. data/lib/ronin/support/binary/core_ext/float.rb +80 -0
  40. data/lib/ronin/support/binary/core_ext/integer.rb +305 -0
  41. data/lib/ronin/support/binary/core_ext/io.rb +38 -0
  42. data/lib/ronin/support/binary/core_ext/string.rb +115 -0
  43. data/lib/ronin/{formatting/extensions/text.rb → support/binary/core_ext.rb} +9 -9
  44. data/lib/ronin/support/binary/cstring.rb +259 -0
  45. data/lib/ronin/support/binary/ctypes/aggregate_type.rb +98 -0
  46. data/lib/ronin/support/binary/ctypes/arch/arm/big_endian.rb +77 -0
  47. data/lib/ronin/support/binary/ctypes/arch/arm.rb +75 -0
  48. data/lib/ronin/support/binary/ctypes/arch/arm64/big_endian.rb +77 -0
  49. data/lib/ronin/support/binary/ctypes/arch/arm64.rb +75 -0
  50. data/lib/ronin/support/binary/ctypes/arch/mips/little_endian.rb +77 -0
  51. data/lib/ronin/support/binary/ctypes/arch/mips.rb +75 -0
  52. data/lib/ronin/support/binary/ctypes/arch/mips64/little_endian.rb +77 -0
  53. data/lib/ronin/support/binary/ctypes/arch/mips64.rb +75 -0
  54. data/lib/ronin/support/binary/ctypes/arch/ppc.rb +75 -0
  55. data/lib/ronin/support/binary/ctypes/arch/ppc64.rb +75 -0
  56. data/lib/ronin/support/binary/ctypes/arch/x86.rb +75 -0
  57. data/lib/ronin/support/binary/ctypes/arch/x86_64.rb +75 -0
  58. data/lib/ronin/support/binary/ctypes/arch.rb +30 -0
  59. data/lib/ronin/support/binary/ctypes/array_object_type.rb +164 -0
  60. data/lib/ronin/support/binary/ctypes/array_type.rb +232 -0
  61. data/lib/ronin/support/binary/ctypes/big_endian.rb +195 -0
  62. data/lib/ronin/support/binary/ctypes/char_type.rb +59 -0
  63. data/lib/ronin/support/binary/ctypes/char_types.rb +39 -0
  64. data/lib/ronin/support/binary/ctypes/enum_type.rb +181 -0
  65. data/lib/ronin/support/binary/ctypes/float32_type.rb +50 -0
  66. data/lib/ronin/support/binary/ctypes/float64_type.rb +50 -0
  67. data/lib/ronin/support/binary/ctypes/float_type.rb +62 -0
  68. data/lib/ronin/support/binary/ctypes/int16_type.rb +50 -0
  69. data/lib/ronin/support/binary/ctypes/int32_type.rb +50 -0
  70. data/lib/ronin/support/binary/ctypes/int64_type.rb +50 -0
  71. data/lib/ronin/support/binary/ctypes/int8_type.rb +41 -0
  72. data/lib/ronin/support/binary/ctypes/int_type.rb +62 -0
  73. data/lib/ronin/support/binary/ctypes/little_endian.rb +195 -0
  74. data/lib/ronin/support/binary/ctypes/mixin.rb +135 -0
  75. data/lib/ronin/support/binary/ctypes/native.rb +205 -0
  76. data/lib/ronin/support/binary/ctypes/network.rb +29 -0
  77. data/lib/ronin/support/binary/ctypes/object_type.rb +55 -0
  78. data/lib/ronin/support/binary/ctypes/os/bsd.rb +65 -0
  79. data/lib/ronin/support/binary/ctypes/os/freebsd.rb +215 -0
  80. data/lib/ronin/support/binary/ctypes/os/linux.rb +193 -0
  81. data/lib/ronin/support/binary/ctypes/os/macos.rb +151 -0
  82. data/lib/ronin/support/binary/ctypes/os/netbsd.rb +147 -0
  83. data/lib/ronin/support/binary/ctypes/os/openbsd.rb +168 -0
  84. data/lib/ronin/support/binary/ctypes/os/unix.rb +78 -0
  85. data/lib/ronin/support/binary/ctypes/os/windows.rb +125 -0
  86. data/lib/ronin/support/binary/ctypes/os.rb +125 -0
  87. data/lib/ronin/support/binary/ctypes/scalar_type.rb +200 -0
  88. data/lib/ronin/support/binary/ctypes/string_type.rb +143 -0
  89. data/lib/ronin/support/binary/ctypes/struct_object_type.rb +173 -0
  90. data/lib/ronin/support/binary/ctypes/struct_type.rb +359 -0
  91. data/lib/ronin/support/binary/ctypes/type.rb +193 -0
  92. data/lib/ronin/support/binary/ctypes/type_resolver.rb +206 -0
  93. data/lib/ronin/support/binary/ctypes/uint16_type.rb +50 -0
  94. data/lib/ronin/support/binary/ctypes/uint32_type.rb +50 -0
  95. data/lib/ronin/support/binary/ctypes/uint64_type.rb +50 -0
  96. data/lib/ronin/support/binary/ctypes/uint8_type.rb +41 -0
  97. data/lib/ronin/support/binary/ctypes/uint_type.rb +59 -0
  98. data/lib/ronin/support/binary/ctypes/unbounded_array_type.rb +258 -0
  99. data/lib/ronin/support/binary/ctypes/union_object_type.rb +173 -0
  100. data/lib/ronin/support/binary/ctypes/union_type.rb +261 -0
  101. data/lib/ronin/support/binary/ctypes.rb +462 -0
  102. data/lib/ronin/support/binary/hexdump/core_ext/file.rb +118 -0
  103. data/lib/ronin/support/binary/hexdump/core_ext/string.rb +115 -0
  104. data/lib/ronin/support/binary/hexdump/core_ext.rb +20 -0
  105. data/lib/ronin/support/binary/hexdump/parser.rb +492 -0
  106. data/lib/ronin/support/binary/hexdump.rb +20 -0
  107. data/lib/ronin/support/binary/memory.rb +268 -0
  108. data/lib/ronin/support/binary/packet.rb +33 -0
  109. data/lib/ronin/support/binary/stack.rb +256 -0
  110. data/lib/ronin/support/binary/stream/methods.rb +1755 -0
  111. data/lib/ronin/support/binary/stream.rb +151 -0
  112. data/lib/ronin/support/binary/struct/member.rb +86 -0
  113. data/lib/ronin/support/binary/struct.rb +830 -0
  114. data/lib/ronin/support/binary/template.rb +284 -0
  115. data/lib/ronin/support/binary/union.rb +162 -0
  116. data/lib/ronin/support/binary.rb +26 -0
  117. data/lib/ronin/support/cli/ansi.rb +330 -0
  118. data/lib/ronin/support/cli/io_shell/core_ext/io.rb +67 -0
  119. data/lib/ronin/{fuzzing/extensions.rb → support/cli/io_shell/core_ext.rb} +6 -7
  120. data/lib/ronin/support/cli/io_shell.rb +161 -0
  121. data/lib/ronin/support/cli/printing.rb +216 -0
  122. data/lib/ronin/support/cli.rb +20 -0
  123. data/lib/ronin/support/compression/core_ext/file.rb +70 -0
  124. data/lib/ronin/support/compression/core_ext/string.rb +101 -0
  125. data/lib/ronin/{formatting/html.rb → support/compression/core_ext.rb} +6 -7
  126. data/lib/ronin/support/compression/gzip/reader.rb +70 -0
  127. data/lib/ronin/support/compression/gzip/writer.rb +74 -0
  128. data/lib/ronin/support/compression/gzip.rb +105 -0
  129. data/lib/ronin/support/compression/mixin.rb +180 -0
  130. data/lib/ronin/{network/extensions/esmtp/net.rb → support/compression/zlib.rb} +9 -10
  131. data/lib/ronin/support/compression.rb +174 -0
  132. data/lib/ronin/{extensions → support/core_ext}/enumerable.rb +5 -6
  133. data/lib/ronin/{extensions → support/core_ext}/file.rb +11 -34
  134. data/lib/ronin/support/core_ext/integer.rb +37 -0
  135. data/lib/ronin/support/core_ext/ipaddr.rb +65 -0
  136. data/lib/ronin/{extensions → support/core_ext}/kernel.rb +10 -9
  137. data/lib/ronin/{extensions → support/core_ext}/resolv.rb +5 -28
  138. data/lib/ronin/{extensions → support/core_ext}/string.rb +117 -57
  139. data/lib/ronin/support/core_ext.rb +33 -0
  140. data/lib/ronin/support/crypto/cert.rb +522 -0
  141. data/lib/ronin/support/crypto/cert_chain.rb +204 -0
  142. data/lib/ronin/support/crypto/cipher/aes.rb +71 -0
  143. data/lib/ronin/support/crypto/cipher/aes128.rb +54 -0
  144. data/lib/ronin/support/crypto/cipher/aes256.rb +54 -0
  145. data/lib/ronin/support/crypto/cipher.rb +194 -0
  146. data/lib/ronin/support/crypto/core_ext/file.rb +660 -0
  147. data/lib/ronin/support/crypto/core_ext/string.rb +548 -0
  148. data/lib/ronin/{binary.rb → support/crypto/core_ext.rb} +7 -8
  149. data/lib/ronin/support/crypto/hmac.rb +48 -0
  150. data/lib/ronin/support/crypto/key/dh.rb +122 -0
  151. data/lib/ronin/support/crypto/key/dsa.rb +103 -0
  152. data/lib/ronin/support/crypto/key/ec.rb +99 -0
  153. data/lib/ronin/support/crypto/key/methods.rb +163 -0
  154. data/lib/ronin/support/crypto/key/rsa.rb +169 -0
  155. data/lib/ronin/support/crypto/key.rb +105 -0
  156. data/lib/ronin/support/crypto/mixin.rb +620 -0
  157. data/lib/ronin/{network/extensions/http/net.rb → support/crypto/openssl.rb} +9 -10
  158. data/lib/ronin/support/crypto.rb +779 -0
  159. data/lib/ronin/support/encoding/base16/core_ext/string.rb +63 -0
  160. data/lib/ronin/support/encoding/base16/core_ext.rb +19 -0
  161. data/lib/ronin/support/encoding/base16.rb +82 -0
  162. data/lib/ronin/support/encoding/base32/core_ext/string.rb +63 -0
  163. data/lib/ronin/support/encoding/base32/core_ext.rb +19 -0
  164. data/lib/ronin/support/encoding/base32.rb +164 -0
  165. data/lib/ronin/support/encoding/base64/core_ext/string.rb +76 -0
  166. data/lib/ronin/support/encoding/base64/core_ext.rb +19 -0
  167. data/lib/ronin/support/encoding/base64.rb +78 -0
  168. data/lib/ronin/support/encoding/c/core_ext/integer.rb +82 -0
  169. data/lib/ronin/support/encoding/c/core_ext/string.rb +125 -0
  170. data/lib/ronin/support/encoding/c/core_ext.rb +20 -0
  171. data/lib/ronin/support/encoding/c.rb +277 -0
  172. data/lib/ronin/support/encoding/core_ext/string.rb +107 -0
  173. data/lib/ronin/support/encoding/core_ext.rb +33 -0
  174. data/lib/ronin/support/encoding/hex/core_ext/integer.rb +82 -0
  175. data/lib/ronin/support/encoding/hex/core_ext/string.rb +133 -0
  176. data/lib/ronin/support/encoding/hex/core_ext.rb +22 -0
  177. data/lib/ronin/support/encoding/hex.rb +248 -0
  178. data/lib/ronin/support/encoding/html/core_ext/integer.rb +106 -0
  179. data/lib/ronin/support/encoding/html/core_ext/string.rb +130 -0
  180. data/lib/ronin/support/encoding/html/core_ext.rb +20 -0
  181. data/lib/ronin/support/encoding/html.rb +233 -0
  182. data/lib/ronin/support/encoding/http/core_ext/integer.rb +95 -0
  183. data/lib/ronin/support/encoding/http/core_ext/string.rb +129 -0
  184. data/lib/ronin/support/encoding/http/core_ext.rb +20 -0
  185. data/lib/ronin/support/encoding/http.rb +241 -0
  186. data/lib/ronin/support/encoding/js/core_ext/integer.rb +67 -0
  187. data/lib/ronin/support/encoding/js/core_ext/string.rb +125 -0
  188. data/lib/ronin/support/encoding/js/core_ext.rb +20 -0
  189. data/lib/ronin/support/encoding/js.rb +279 -0
  190. data/lib/ronin/support/encoding/powershell/core_ext/integer.rb +87 -0
  191. data/lib/ronin/support/encoding/powershell/core_ext/string.rb +145 -0
  192. data/lib/ronin/support/encoding/powershell/core_ext.rb +20 -0
  193. data/lib/ronin/support/encoding/powershell.rb +297 -0
  194. data/lib/ronin/support/encoding/punycode/core_ext/string.rb +63 -0
  195. data/lib/ronin/support/encoding/punycode/core_ext.rb +19 -0
  196. data/lib/ronin/support/encoding/punycode.rb +76 -0
  197. data/lib/ronin/support/encoding/quoted_printable/core_ext/string.rb +75 -0
  198. data/lib/ronin/support/encoding/quoted_printable/core_ext.rb +19 -0
  199. data/lib/ronin/support/encoding/quoted_printable.rb +102 -0
  200. data/lib/ronin/support/encoding/ruby/core_ext/string.rb +129 -0
  201. data/lib/ronin/{formatting/binary.rb → support/encoding/ruby/core_ext.rb} +6 -7
  202. data/lib/ronin/support/encoding/ruby.rb +235 -0
  203. data/lib/ronin/support/encoding/shell/core_ext/integer.rb +89 -0
  204. data/lib/ronin/support/encoding/shell/core_ext/string.rb +134 -0
  205. data/lib/ronin/support/encoding/shell/core_ext.rb +20 -0
  206. data/lib/ronin/support/encoding/shell.rb +293 -0
  207. data/lib/ronin/{network/extensions → support/encoding}/smtp.rb +7 -7
  208. data/lib/ronin/support/encoding/sql/core_ext/string.rb +114 -0
  209. data/lib/ronin/{formatting/http.rb → support/encoding/sql/core_ext.rb} +6 -7
  210. data/lib/ronin/support/encoding/sql.rb +124 -0
  211. data/lib/ronin/support/encoding/uri/core_ext/integer.rb +149 -0
  212. data/lib/ronin/support/encoding/uri/core_ext/string.rb +195 -0
  213. data/lib/ronin/support/encoding/uri/core_ext.rb +20 -0
  214. data/lib/ronin/support/encoding/uri.rb +424 -0
  215. data/lib/ronin/support/encoding/uuencoding/core_ext/string.rb +73 -0
  216. data/lib/ronin/support/encoding/uuencoding/core_ext.rb +19 -0
  217. data/lib/ronin/support/encoding/uuencoding.rb +70 -0
  218. data/lib/ronin/support/encoding/xml/core_ext/integer.rb +100 -0
  219. data/lib/ronin/support/encoding/xml/core_ext/string.rb +124 -0
  220. data/lib/ronin/support/encoding/xml/core_ext.rb +20 -0
  221. data/lib/ronin/support/encoding/xml.rb +328 -0
  222. data/lib/ronin/support/encoding.rb +46 -0
  223. data/lib/ronin/support/home.rb +88 -0
  224. data/lib/ronin/support/mixin.rb +42 -0
  225. data/lib/ronin/support/network/asn/dns_record.rb +112 -0
  226. data/lib/ronin/support/network/asn/list.rb +269 -0
  227. data/lib/ronin/support/network/asn/record.rb +164 -0
  228. data/lib/ronin/support/network/asn/record_set.rb +226 -0
  229. data/lib/ronin/support/network/asn.rb +88 -0
  230. data/lib/ronin/{binary/hexdump.rb → support/network/core_ext.rb} +6 -7
  231. data/lib/ronin/support/network/dns/idn.rb +38 -0
  232. data/lib/ronin/support/network/dns/mixin.rb +941 -0
  233. data/lib/ronin/support/network/dns/resolver.rb +707 -0
  234. data/lib/ronin/support/network/dns.rb +1109 -0
  235. data/lib/ronin/support/network/domain.rb +70 -0
  236. data/lib/ronin/support/network/email_address.rb +574 -0
  237. data/lib/ronin/support/network/esmtp/mixin.rb +115 -0
  238. data/lib/ronin/support/network/exceptions.rb +43 -0
  239. data/lib/ronin/support/network/ftp/mixin.rb +106 -0
  240. data/lib/ronin/support/network/host.rb +1473 -0
  241. data/lib/ronin/support/network/http/cookie.rb +245 -0
  242. data/lib/ronin/support/network/http/core_ext/uri/http.rb +63 -0
  243. data/lib/ronin/support/network/http/core_ext.rb +19 -0
  244. data/lib/ronin/support/network/http/mixin.rb +890 -0
  245. data/lib/ronin/support/network/http/request.rb +215 -0
  246. data/lib/ronin/support/network/http/set_cookie.rb +210 -0
  247. data/lib/ronin/support/network/http/user_agents.rb +115 -0
  248. data/lib/ronin/support/network/http.rb +2582 -0
  249. data/lib/ronin/support/network/imap/mixin.rb +133 -0
  250. data/lib/ronin/support/network/ip/mixin.rb +114 -0
  251. data/lib/ronin/support/network/ip.rb +540 -0
  252. data/lib/ronin/support/network/ip_range/cidr.rb +252 -0
  253. data/lib/ronin/support/network/ip_range/glob.rb +309 -0
  254. data/lib/ronin/support/network/ip_range/range.rb +249 -0
  255. data/lib/ronin/support/network/ip_range.rb +284 -0
  256. data/lib/ronin/support/network/mixin.rb +58 -0
  257. data/lib/ronin/support/network/packet.rb +27 -0
  258. data/lib/ronin/support/network/pop3/mixin.rb +113 -0
  259. data/lib/ronin/support/network/proxy.rb +602 -0
  260. data/lib/ronin/support/network/public_suffix/list.rb +339 -0
  261. data/lib/ronin/support/network/public_suffix/suffix.rb +118 -0
  262. data/lib/ronin/support/network/public_suffix/suffix_set.rb +150 -0
  263. data/lib/ronin/support/network/public_suffix.rb +41 -0
  264. data/lib/ronin/support/network/smtp/email.rb +190 -0
  265. data/lib/ronin/support/network/smtp/mixin.rb +290 -0
  266. data/lib/ronin/{extensions/meta.rb → support/network/smtp.rb} +6 -7
  267. data/lib/ronin/support/network/ssl/local_cert.rb +114 -0
  268. data/lib/ronin/support/network/ssl/local_key.rb +84 -0
  269. data/lib/ronin/support/network/ssl/mixin.rb +740 -0
  270. data/lib/ronin/{network/extensions/imap/net.rb → support/network/ssl/openssl.rb} +9 -10
  271. data/lib/ronin/support/network/ssl/proxy.rb +296 -0
  272. data/lib/ronin/support/network/ssl.rb +173 -0
  273. data/lib/ronin/support/network/tcp/mixin.rb +400 -0
  274. data/lib/ronin/support/network/tcp/proxy.rb +435 -0
  275. data/lib/ronin/support/network/tcp.rb +443 -0
  276. data/lib/ronin/support/network/telnet/mixin.rb +150 -0
  277. data/lib/ronin/support/network/telnet.rb +90 -0
  278. data/lib/ronin/support/network/tld/list.rb +266 -0
  279. data/lib/ronin/support/network/tld.rb +41 -0
  280. data/lib/ronin/support/network/tls/mixin.rb +670 -0
  281. data/lib/ronin/support/network/tls/proxy.rb +135 -0
  282. data/lib/ronin/support/network/tls.rb +53 -0
  283. data/lib/ronin/support/network/udp/mixin.rb +389 -0
  284. data/lib/ronin/support/network/udp/proxy.rb +192 -0
  285. data/lib/ronin/support/network/udp.rb +435 -0
  286. data/lib/ronin/support/network/unix/mixin.rb +273 -0
  287. data/lib/ronin/support/network.rb +37 -0
  288. data/lib/ronin/support/path.rb +136 -0
  289. data/lib/ronin/{network/extensions/dns/net.rb → support/text/core_ext/regexp.rb} +8 -9
  290. data/lib/ronin/support/text/core_ext/string.rb +46 -0
  291. data/lib/ronin/support/text/core_ext.rb +23 -0
  292. data/lib/ronin/support/text/entropy/core_ext/string.rb +45 -0
  293. data/lib/ronin/support/text/entropy/core_ext.rb +19 -0
  294. data/lib/ronin/support/text/entropy.rb +66 -0
  295. data/lib/ronin/support/text/erb/mixin.rb +44 -0
  296. data/lib/ronin/support/text/erb.rb +19 -0
  297. data/lib/ronin/support/text/homoglyph/core_ext/string.rb +108 -0
  298. data/lib/ronin/{formatting/digest.rb → support/text/homoglyph/core_ext.rb} +6 -7
  299. data/lib/ronin/{network/http/exceptions/unknown_request.rb → support/text/homoglyph/exceptions.rb} +10 -9
  300. data/lib/ronin/support/text/homoglyph/table.rb +228 -0
  301. data/lib/ronin/support/text/homoglyph.rb +142 -0
  302. data/lib/ronin/support/text/mixin.rb +31 -0
  303. data/lib/ronin/support/text/patterns/credentials.rb +75 -0
  304. data/lib/ronin/support/text/patterns/crypto.rb +67 -0
  305. data/lib/ronin/support/text/patterns/file_system.rb +93 -0
  306. data/lib/ronin/support/text/patterns/language.rb +37 -0
  307. data/lib/ronin/support/text/patterns/network/public_suffix.rb +44 -0
  308. data/lib/ronin/support/text/patterns/network.rb +140 -0
  309. data/lib/ronin/support/text/patterns/numeric.rb +52 -0
  310. data/lib/ronin/support/text/patterns/pii.rb +105 -0
  311. data/lib/ronin/support/text/patterns/source_code.rb +148 -0
  312. data/lib/ronin/support/text/patterns.rb +25 -0
  313. data/lib/ronin/support/text/random/mixin.rb +437 -0
  314. data/lib/ronin/support/text/random.rb +419 -0
  315. data/lib/ronin/support/text/typo/core_ext/string.rb +123 -0
  316. data/lib/ronin/support/text/typo/core_ext.rb +19 -0
  317. data/lib/ronin/support/text/typo/exceptions.rb +28 -0
  318. data/lib/ronin/support/text/typo/generator.rb +161 -0
  319. data/lib/ronin/support/text/typo.rb +260 -0
  320. data/lib/ronin/support/text.rb +26 -0
  321. data/lib/ronin/support/version.rb +6 -7
  322. data/lib/ronin/support.rb +20 -15
  323. data/ronin-support.gemspec +3 -1
  324. metadata +462 -369
  325. data/.gemtest +0 -0
  326. data/lib/ronin/binary/hexdump/parser.rb +0 -403
  327. data/lib/ronin/binary/struct.rb +0 -567
  328. data/lib/ronin/binary/template.rb +0 -454
  329. data/lib/ronin/extensions/ip_addr.rb +0 -217
  330. data/lib/ronin/extensions/meta/object.rb +0 -24
  331. data/lib/ronin/extensions/regexp.rb +0 -157
  332. data/lib/ronin/extensions.rb +0 -29
  333. data/lib/ronin/formatting/extensions/binary/array.rb +0 -61
  334. data/lib/ronin/formatting/extensions/binary/base64.rb +0 -106
  335. data/lib/ronin/formatting/extensions/binary/file.rb +0 -77
  336. data/lib/ronin/formatting/extensions/binary/float.rb +0 -65
  337. data/lib/ronin/formatting/extensions/binary/integer.rb +0 -180
  338. data/lib/ronin/formatting/extensions/binary/string.rb +0 -345
  339. data/lib/ronin/formatting/extensions/binary.rb +0 -26
  340. data/lib/ronin/formatting/extensions/digest/file.rb +0 -129
  341. data/lib/ronin/formatting/extensions/digest/string.rb +0 -86
  342. data/lib/ronin/formatting/extensions/digest.rb +0 -21
  343. data/lib/ronin/formatting/extensions/html/integer.rb +0 -142
  344. data/lib/ronin/formatting/extensions/html/string.rb +0 -194
  345. data/lib/ronin/formatting/extensions/html.rb +0 -21
  346. data/lib/ronin/formatting/extensions/http/integer.rb +0 -69
  347. data/lib/ronin/formatting/extensions/http/string.rb +0 -110
  348. data/lib/ronin/formatting/extensions/http.rb +0 -21
  349. data/lib/ronin/formatting/extensions/sql/string.rb +0 -128
  350. data/lib/ronin/formatting/extensions/sql.rb +0 -20
  351. data/lib/ronin/formatting/extensions/text/array.rb +0 -137
  352. data/lib/ronin/formatting/extensions/text/string.rb +0 -297
  353. data/lib/ronin/formatting/extensions.rb +0 -24
  354. data/lib/ronin/formatting/text.rb +0 -20
  355. data/lib/ronin/formatting.rb +0 -25
  356. data/lib/ronin/fuzzing/extensions/string.rb +0 -209
  357. data/lib/ronin/fuzzing/fuzzer.rb +0 -110
  358. data/lib/ronin/fuzzing/fuzzing.rb +0 -360
  359. data/lib/ronin/fuzzing/mutator.rb +0 -161
  360. data/lib/ronin/fuzzing/repeater.rb +0 -81
  361. data/lib/ronin/fuzzing/template.rb +0 -133
  362. data/lib/ronin/fuzzing.rb +0 -21
  363. data/lib/ronin/mixin.rb +0 -89
  364. data/lib/ronin/network/dns.rb +0 -201
  365. data/lib/ronin/network/esmtp.rb +0 -113
  366. data/lib/ronin/network/extensions/dns.rb +0 -20
  367. data/lib/ronin/network/extensions/esmtp.rb +0 -20
  368. data/lib/ronin/network/extensions/http/uri/http.rb +0 -228
  369. data/lib/ronin/network/extensions/http.rb +0 -21
  370. data/lib/ronin/network/extensions/imap.rb +0 -20
  371. data/lib/ronin/network/extensions/pop3/net.rb +0 -24
  372. data/lib/ronin/network/extensions/pop3.rb +0 -20
  373. data/lib/ronin/network/extensions/smtp/net.rb +0 -24
  374. data/lib/ronin/network/extensions/ssl/net.rb +0 -24
  375. data/lib/ronin/network/extensions/ssl.rb +0 -20
  376. data/lib/ronin/network/extensions/tcp/net.rb +0 -24
  377. data/lib/ronin/network/extensions/tcp.rb +0 -20
  378. data/lib/ronin/network/extensions/telnet/net.rb +0 -24
  379. data/lib/ronin/network/extensions/telnet.rb +0 -20
  380. data/lib/ronin/network/extensions/udp/net.rb +0 -24
  381. data/lib/ronin/network/extensions/udp.rb +0 -20
  382. data/lib/ronin/network/extensions.rb +0 -29
  383. data/lib/ronin/network/ftp.rb +0 -149
  384. data/lib/ronin/network/http/exceptions.rb +0 -20
  385. data/lib/ronin/network/http/http.rb +0 -1127
  386. data/lib/ronin/network/http/proxy.rb +0 -330
  387. data/lib/ronin/network/http.rb +0 -22
  388. data/lib/ronin/network/imap.rb +0 -158
  389. data/lib/ronin/network/mixins/dns.rb +0 -55
  390. data/lib/ronin/network/mixins/esmtp.rb +0 -164
  391. data/lib/ronin/network/mixins/ftp.rb +0 -155
  392. data/lib/ronin/network/mixins/http.rb +0 -227
  393. data/lib/ronin/network/mixins/imap.rb +0 -156
  394. data/lib/ronin/network/mixins/mixin.rb +0 -58
  395. data/lib/ronin/network/mixins/pop3.rb +0 -149
  396. data/lib/ronin/network/mixins/smtp.rb +0 -159
  397. data/lib/ronin/network/mixins/ssl.rb +0 -148
  398. data/lib/ronin/network/mixins/tcp.rb +0 -368
  399. data/lib/ronin/network/mixins/telnet.rb +0 -208
  400. data/lib/ronin/network/mixins/udp.rb +0 -381
  401. data/lib/ronin/network/mixins/unix.rb +0 -279
  402. data/lib/ronin/network/mixins.rb +0 -29
  403. data/lib/ronin/network/network.rb +0 -45
  404. data/lib/ronin/network/pop3.rb +0 -124
  405. data/lib/ronin/network/proxy.rb +0 -578
  406. data/lib/ronin/network/smtp/email.rb +0 -174
  407. data/lib/ronin/network/smtp/smtp.rb +0 -230
  408. data/lib/ronin/network/smtp.rb +0 -22
  409. data/lib/ronin/network/ssl.rb +0 -186
  410. data/lib/ronin/network/tcp/proxy.rb +0 -417
  411. data/lib/ronin/network/tcp/tcp.rb +0 -443
  412. data/lib/ronin/network/tcp.rb +0 -21
  413. data/lib/ronin/network/telnet.rb +0 -264
  414. data/lib/ronin/network/udp/proxy.rb +0 -191
  415. data/lib/ronin/network/udp/udp.rb +0 -450
  416. data/lib/ronin/network/udp.rb +0 -21
  417. data/lib/ronin/network/unix.rb +0 -286
  418. data/lib/ronin/network.rb +0 -31
  419. data/lib/ronin/path.rb +0 -137
  420. data/lib/ronin/spec/ui/output.rb +0 -22
  421. data/lib/ronin/support/inflector.rb +0 -92
  422. data/lib/ronin/support/support.rb +0 -42
  423. data/lib/ronin/templates/erb.rb +0 -78
  424. data/lib/ronin/templates/template.rb +0 -169
  425. data/lib/ronin/templates.rb +0 -21
  426. data/lib/ronin/ui/output/helpers.rb +0 -296
  427. data/lib/ronin/ui/output/output.rb +0 -146
  428. data/lib/ronin/ui/output/terminal/color.rb +0 -124
  429. data/lib/ronin/ui/output/terminal/raw.rb +0 -103
  430. data/lib/ronin/ui/output/terminal.rb +0 -21
  431. data/lib/ronin/ui/output.rb +0 -21
  432. data/lib/ronin/ui/shell.rb +0 -286
  433. data/lib/ronin/wordlist.rb +0 -287
  434. data/spec/binary/hexdump/helpers/hexdumps/ascii.bin +0 -0
  435. data/spec/binary/hexdump/helpers/hexdumps/hexdump_decimal_shorts.txt +0 -17
  436. data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_bytes.txt +0 -17
  437. data/spec/binary/hexdump/helpers/hexdumps/hexdump_hex_shorts.txt +0 -17
  438. data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_bytes.txt +0 -17
  439. data/spec/binary/hexdump/helpers/hexdumps/hexdump_octal_shorts.txt +0 -17
  440. data/spec/binary/hexdump/helpers/hexdumps/hexdump_repeated.txt +0 -6
  441. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_bytes.txt +0 -17
  442. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_ints.txt +0 -17
  443. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_quads.txt +0 -17
  444. data/spec/binary/hexdump/helpers/hexdumps/od_decimal_shorts.txt +0 -17
  445. data/spec/binary/hexdump/helpers/hexdumps/od_doubles.txt +0 -17
  446. data/spec/binary/hexdump/helpers/hexdumps/od_floats.txt +0 -17
  447. data/spec/binary/hexdump/helpers/hexdumps/od_hex_bytes.txt +0 -17
  448. data/spec/binary/hexdump/helpers/hexdumps/od_hex_ints.txt +0 -17
  449. data/spec/binary/hexdump/helpers/hexdumps/od_hex_quads.txt +0 -17
  450. data/spec/binary/hexdump/helpers/hexdumps/od_hex_shorts.txt +0 -17
  451. data/spec/binary/hexdump/helpers/hexdumps/od_named_chars.txt +0 -17
  452. data/spec/binary/hexdump/helpers/hexdumps/od_octal_bytes.txt +0 -17
  453. data/spec/binary/hexdump/helpers/hexdumps/od_octal_ints.txt +0 -17
  454. data/spec/binary/hexdump/helpers/hexdumps/od_octal_quads.txt +0 -17
  455. data/spec/binary/hexdump/helpers/hexdumps/od_octal_shorts.txt +0 -17
  456. data/spec/binary/hexdump/helpers/hexdumps/od_repeated.txt +0 -6
  457. data/spec/binary/hexdump/helpers/hexdumps/repeated.bin +0 -1
  458. data/spec/binary/hexdump/helpers/hexdumps.rb +0 -13
  459. data/spec/binary/hexdump/parser_spec.rb +0 -302
  460. data/spec/binary/struct_spec.rb +0 -496
  461. data/spec/binary/template_spec.rb +0 -414
  462. data/spec/extensions/enumerable_spec.rb +0 -24
  463. data/spec/extensions/file_spec.rb +0 -63
  464. data/spec/extensions/ip_addr_spec.rb +0 -203
  465. data/spec/extensions/kernel_spec.rb +0 -30
  466. data/spec/extensions/regexp_spec.rb +0 -482
  467. data/spec/extensions/resolv_spec.rb +0 -18
  468. data/spec/extensions/string_spec.rb +0 -179
  469. data/spec/formatting/binary/array_spec.rb +0 -26
  470. data/spec/formatting/binary/base64_spec.rb +0 -50
  471. data/spec/formatting/binary/float_spec.rb +0 -34
  472. data/spec/formatting/binary/integer_spec.rb +0 -166
  473. data/spec/formatting/binary/string_spec.rb +0 -197
  474. data/spec/formatting/digest/string_spec.rb +0 -82
  475. data/spec/formatting/html/integer_spec.rb +0 -66
  476. data/spec/formatting/html/string_spec.rb +0 -103
  477. data/spec/formatting/http/integer_spec.rb +0 -42
  478. data/spec/formatting/http/string_spec.rb +0 -76
  479. data/spec/formatting/sql/string_spec.rb +0 -75
  480. data/spec/formatting/text/array_spec.rb +0 -105
  481. data/spec/formatting/text/string_spec.rb +0 -162
  482. data/spec/fuzzing/extensions/string_spec.rb +0 -87
  483. data/spec/fuzzing/fuzzer_spec.rb +0 -109
  484. data/spec/fuzzing/fuzzing_spec.rb +0 -24
  485. data/spec/fuzzing/mutator_spec.rb +0 -112
  486. data/spec/fuzzing/repeater_spec.rb +0 -57
  487. data/spec/fuzzing/template_spec.rb +0 -54
  488. data/spec/mixin_spec.rb +0 -53
  489. data/spec/network/dns_spec.rb +0 -201
  490. data/spec/network/ftp_spec.rb +0 -81
  491. data/spec/network/http/http_spec.rb +0 -466
  492. data/spec/network/http/proxy_spec.rb +0 -148
  493. data/spec/network/network_spec.rb +0 -8
  494. data/spec/network/proxy_spec.rb +0 -121
  495. data/spec/network/shared/unix_server.rb +0 -31
  496. data/spec/network/smtp/email_spec.rb +0 -100
  497. data/spec/network/ssl_spec.rb +0 -70
  498. data/spec/network/tcp/proxy_spec.rb +0 -116
  499. data/spec/network/tcp/tcp_spec.rb +0 -273
  500. data/spec/network/telnet_spec.rb +0 -67
  501. data/spec/network/udp/udp_spec.rb +0 -271
  502. data/spec/network/unix_spec.rb +0 -183
  503. data/spec/path_spec.rb +0 -86
  504. data/spec/spec_helper.rb +0 -9
  505. data/spec/support/inflector_spec.rb +0 -22
  506. data/spec/support_spec.rb +0 -8
  507. data/spec/templates/classes/example_erb.rb +0 -11
  508. data/spec/templates/classes/example_template.rb +0 -35
  509. data/spec/templates/erb_spec.rb +0 -21
  510. data/spec/templates/helpers/data/includes/_relative.erb +0 -1
  511. data/spec/templates/helpers/data/templates/example.erb +0 -1
  512. data/spec/templates/helpers/data.rb +0 -9
  513. data/spec/templates/template_spec.rb +0 -54
  514. data/spec/ui/classes/test_shell.rb +0 -22
  515. data/spec/ui/output_spec.rb +0 -32
  516. data/spec/ui/shell_spec.rb +0 -83
  517. data/spec/wordlist_spec.rb +0 -151
@@ -0,0 +1,1109 @@
1
+ # frozen_string_literal: true
2
+ #
3
+ # Copyright (c) 2006-2022 Hal Brodigan (postmodern.mod3 at gmail.com)
4
+ #
5
+ # ronin-support is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Lesser General Public License as published
7
+ # by the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # ronin-support is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Lesser General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Lesser General Public License
16
+ # along with ronin-support. If not, see <https://www.gnu.org/licenses/>.
17
+ #
18
+
19
+ require 'ronin/support/network/dns/resolver'
20
+
21
+ require 'resolv'
22
+
23
+ module Ronin
24
+ module Support
25
+ module Network
26
+ #
27
+ # @since 0.4.0
28
+ #
29
+ module DNS
30
+ #
31
+ # The primary DNS nameserver(s) to query.
32
+ #
33
+ # @return [Array<String>]
34
+ # The addresses of the nameservers.
35
+ #
36
+ # @api public
37
+ #
38
+ def self.nameservers
39
+ @nameservers ||= Resolver.default_nameservers
40
+ end
41
+
42
+ #
43
+ # Sets the DNS nameserver to be queried.
44
+ #
45
+ # @param [Array<String>] new_nameservers
46
+ # The addresses of the new nameservers.
47
+ #
48
+ # @return [Array<String>]
49
+ # The addresses of the new nameservers.
50
+ #
51
+ # @api public
52
+ #
53
+ def self.nameservers=(new_nameservers)
54
+ @nameservers = new_nameservers.map(&:to_s)
55
+ @resolver = Resolver.new(nameservers: @nameservers)
56
+ return new_nameservers
57
+ end
58
+
59
+ #
60
+ # Sets the primary DNS nameserver to be queried.
61
+ #
62
+ # @param [String] new_nameserver
63
+ # The new primary nameserver address.
64
+ #
65
+ # @return [String]
66
+ # The address of the primary nameserver.
67
+ #
68
+ def self.nameserver=(new_nameserver)
69
+ self.nameservers = [new_nameserver]
70
+ return new_nameserver
71
+ end
72
+
73
+ #
74
+ # Creates a DNS Resolver for the given nameserver(s).
75
+ #
76
+ # @param [Array<String>, String, nil] nameservers
77
+ # Optional DNS nameserver(s) to query.
78
+ #
79
+ # @param [String, nil] nameserver
80
+ # Optional DNS nameserver to query.
81
+ #
82
+ # @return [Resolver]
83
+ # The DNS Resolver.
84
+ #
85
+ # @api public
86
+ #
87
+ # @since 0.6.0
88
+ #
89
+ def self.resolver(nameservers: nil, nameserver: nil)
90
+ if nameserver
91
+ Resolver.new(nameserver: nameserver.to_s)
92
+ elsif nameservers
93
+ Resolver.new(nameservers: nameservers.map(&:to_s))
94
+ else
95
+ @resolver ||= Resolver.new(nameservers: self.nameservers)
96
+ end
97
+ end
98
+
99
+ #
100
+ # Looks up the address of a hostname.
101
+ #
102
+ # @param [String] host
103
+ # The hostname to lookup.
104
+ #
105
+ # @param [Hash{Symbol => Object}] kwargs
106
+ # Additional keyword arguments.
107
+ #
108
+ # @option [Array<String>, String, nil] :nameservers
109
+ # Optional DNS nameserver(s) to query.
110
+ #
111
+ # @option [String, nil] :nameserver
112
+ # Optional DNS nameserver to query.
113
+ #
114
+ # @return [String, nil]
115
+ # The address of the hostname.
116
+ #
117
+ # @api public
118
+ #
119
+ def self.get_address(host,**kwargs)
120
+ resolver(**kwargs).get_address(host.to_s)
121
+ end
122
+
123
+ #
124
+ # Alias for {get_address}.
125
+ #
126
+ # @param [String] host
127
+ # The hostname to lookup.
128
+ #
129
+ # @param [Hash{Symbol => Object}] kwargs
130
+ # Additional keyword arguments for {get_address}.
131
+ #
132
+ # @return [String, nil]
133
+ # The address of the hostname.
134
+ #
135
+ # @see get_address
136
+ #
137
+ def self.lookup(host,**kwargs)
138
+ get_address(host,**kwargs)
139
+ end
140
+
141
+ #
142
+ # Looks up all addresses of a hostname.
143
+ #
144
+ # @param [String] host
145
+ # The hostname to lookup.
146
+ #
147
+ # @param [Hash{Symbol => Object}] kwargs
148
+ # Additional keyword arguments.
149
+ #
150
+ # @option [Array<String>, String, nil] :nameservers
151
+ # Optional DNS nameserver(s) to query.
152
+ #
153
+ # @option [String, nil] :nameserver
154
+ # Optional DNS nameserver to query.
155
+ #
156
+ # @return [Array<String>]
157
+ # The addresses of the hostname.
158
+ #
159
+ # @api public
160
+ #
161
+ def self.get_addresses(host,**kwargs)
162
+ resolver(**kwargs).get_addresses(host.to_s)
163
+ end
164
+
165
+ #
166
+ # Looks up the hostname of the address.
167
+ #
168
+ # @param [String] ip
169
+ # The IP address to lookup.
170
+ #
171
+ # @param [Hash{Symbol => Object}] kwargs
172
+ # Additional keyword arguments.
173
+ #
174
+ # @option [Array<String>, String, nil] :nameservers
175
+ # Optional DNS nameserver(s) to query.
176
+ #
177
+ # @option [String, nil] :nameserver
178
+ # Optional DNS nameserver to query.
179
+ #
180
+ # @return [String, nil]
181
+ # The hostname of the address.
182
+ #
183
+ # @api public
184
+ #
185
+ def self.get_name(ip,**kwargs)
186
+ resolver(**kwargs).get_name(ip.to_s)
187
+ end
188
+
189
+ #
190
+ # Alias for {get_name}.
191
+ #
192
+ # @param [String] ip
193
+ # The IP address to lookup.
194
+ #
195
+ # @param [Hash{Symbol => Object}] kwargs
196
+ # Additional keyword arguments for {get_name}.
197
+ #
198
+ # @return [String, nil]
199
+ # The hostname of the address.
200
+ #
201
+ # @see get_name
202
+ #
203
+ def self.reverse_lookup(ip,**kwargs)
204
+ get_name(ip,**kwargs)
205
+ end
206
+
207
+ #
208
+ # Looks up all hostnames associated with the address.
209
+ #
210
+ # @param [String] ip
211
+ # The IP address to lookup.
212
+ #
213
+ # @param [Hash{Symbol => Object}] kwargs
214
+ # Additional keyword arguments.
215
+ #
216
+ # @option [Array<String>, String, nil] :nameservers
217
+ # Optional DNS nameserver(s) to query.
218
+ #
219
+ # @option [String, nil] :nameserver
220
+ # Optional DNS nameserver to query.
221
+ #
222
+ # @return [Array<String>]
223
+ # The hostnames of the address.
224
+ #
225
+ # @api public
226
+ #
227
+ def self.get_names(ip,**kwargs)
228
+ resolver(**kwargs).get_names(ip.to_s)
229
+ end
230
+
231
+ #
232
+ # Queries a single matching DNS record for the host name.
233
+ #
234
+ # @param [String] name
235
+ # The host name to query.
236
+ #
237
+ # @param [:a, :aaaa, :any, :cname, :hinfo, :loc, :minfo, :mx, :ns, :ptr, :soa, :srv, :txt, :wks] record_type
238
+ # The record type.
239
+ #
240
+ # @param [Hash{Symbol => Object}] kwargs
241
+ # Additional keyword arguments.
242
+ #
243
+ # @option [Array<String>, String, nil] :nameservers
244
+ # Optional DNS nameserver(s) to query.
245
+ #
246
+ # @option [String, nil] :nameserver
247
+ # Optional DNS nameserver to query.
248
+ #
249
+ # @return [Resolv::DNS::Resource, nil]
250
+ # The matching DNS records or `nil` if no matching DNS records
251
+ # could be found.
252
+ #
253
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource
254
+ #
255
+ def self.get_record(name,record_type,**kwargs)
256
+ resolver(**kwargs).get_record(name.to_s,record_type)
257
+ end
258
+
259
+ #
260
+ # Queries all matching DNS records for the host name.
261
+ #
262
+ # @param [String] name
263
+ # The host name to query.
264
+ #
265
+ # @param [:a, :aaaa, :any, :cname, :hinfo, :loc, :minfo, :mx, :ns, :ptr, :soa, :srv, :txt, :wks] record_type
266
+ # The record type.
267
+ #
268
+ # @param [Hash{Symbol => Object}] kwargs
269
+ # Additional keyword arguments.
270
+ #
271
+ # @option [Array<String>, String, nil] :nameservers
272
+ # Optional DNS nameserver(s) to query.
273
+ #
274
+ # @option [String, nil] :nameserver
275
+ # Optional DNS nameserver to query.
276
+ #
277
+ # @return [Array<Resolv::DNS::Resource>]
278
+ # All matching DNS records.
279
+ #
280
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource
281
+ #
282
+ def self.get_records(name,record_type,**kwargs)
283
+ resolver(**kwargs).get_records(name.to_s,record_type)
284
+ end
285
+
286
+ #
287
+ # Queries all records of the host name using the `ANY` DNS query.
288
+ #
289
+ # @param [String] name
290
+ # The host name to query.
291
+ #
292
+ # @param [Hash{Symbol => Object}] kwargs
293
+ # Additional keyword arguments.
294
+ #
295
+ # @option [Array<String>, String, nil] :nameservers
296
+ # Optional DNS nameserver(s) to query.
297
+ #
298
+ # @option [String, nil] :nameserver
299
+ # Optional DNS nameserver to query.
300
+ #
301
+ # @return [Array<Resolv::DNS::Resource>]
302
+ # All of the DNS records belonging to the host name.
303
+ #
304
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/ANY
305
+ #
306
+ def self.get_any_records(name,**kwargs)
307
+ resolver(**kwargs).get_any_records(name.to_s)
308
+ end
309
+
310
+ #
311
+ # Queries the `CNAME` record for the host name.
312
+ #
313
+ # @param [String] name
314
+ # The host name to query.
315
+ #
316
+ # @param [Hash{Symbol => Object}] kwargs
317
+ # Additional keyword arguments.
318
+ #
319
+ # @option [Array<String>, String, nil] :nameservers
320
+ # Optional DNS nameserver(s) to query.
321
+ #
322
+ # @option [String, nil] :nameserver
323
+ # Optional DNS nameserver to query.
324
+ #
325
+ # @return [Resolv::DNS::Resource::IN::CNAME, nil]
326
+ # The `CNAME` record or `nil` if the host name has no `CNAME`
327
+ # record.
328
+ #
329
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/CNAME
330
+ #
331
+ def self.get_cname_record(name,**kwargs)
332
+ resolver(**kwargs).get_cname_record(name.to_s)
333
+ end
334
+
335
+ #
336
+ # Queries the canonical name for the host name.
337
+ #
338
+ # @param [String] name
339
+ # The host name to query.
340
+ #
341
+ # @param [Hash{Symbol => Object}] kwargs
342
+ # Additional keyword arguments.
343
+ #
344
+ # @option [Array<String>, String, nil] :nameservers
345
+ # Optional DNS nameserver(s) to query.
346
+ #
347
+ # @option [String, nil] :nameserver
348
+ # Optional DNS nameserver to query.
349
+ #
350
+ # @return [String, nil]
351
+ # The canonical name for the host or `nil` if the host has no
352
+ # `CNAME` record.
353
+ #
354
+ def self.get_cname(name,**kwargs)
355
+ resolver(**kwargs).get_cname(name.to_s)
356
+ end
357
+
358
+ #
359
+ # Queries the `HINFO` record for the host name.
360
+ #
361
+ # @param [String] name
362
+ # The host name to query.
363
+ #
364
+ # @param [Hash{Symbol => Object}] kwargs
365
+ # Additional keyword arguments.
366
+ #
367
+ # @option [Array<String>, String, nil] :nameservers
368
+ # Optional DNS nameserver(s) to query.
369
+ #
370
+ # @option [String, nil] :nameserver
371
+ # Optional DNS nameserver to query.
372
+ #
373
+ # @return [Resolv::DNS::Resource::IN::HINFO, nil]
374
+ # The `HINFO` DNS record or `nil` if the host name has no `HINFO`
375
+ # record.
376
+ #
377
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/HINFO
378
+ #
379
+ def self.get_hinfo_record(name,**kwargs)
380
+ resolver(**kwargs).get_hinfo_record(name.to_s)
381
+ end
382
+
383
+ #
384
+ # Queries the first `A` record belonging to the host name.
385
+ #
386
+ # @param [String] name
387
+ # The host name to query.
388
+ #
389
+ # @param [Hash{Symbol => Object}] kwargs
390
+ # Additional keyword arguments.
391
+ #
392
+ # @option [Array<String>, String, nil] :nameservers
393
+ # Optional DNS nameserver(s) to query.
394
+ #
395
+ # @option [String, nil] :nameserver
396
+ # Optional DNS nameserver to query.
397
+ #
398
+ # @return [Resolv::DNS::Resource::IN::A, nil]
399
+ # The first `A` DNS record or `nil` if the host name has no `A`
400
+ # records.
401
+ #
402
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/A
403
+ #
404
+ def self.get_a_record(name,**kwargs)
405
+ resolver(**kwargs).get_a_record(name.to_s)
406
+ end
407
+
408
+ #
409
+ # Queries the first IPv4 address belonging to the host name.
410
+ #
411
+ # @param [String] name
412
+ # The host name to query.
413
+ #
414
+ # @param [Hash{Symbol => Object}] kwargs
415
+ # Additional keyword arguments.
416
+ #
417
+ # @option [Array<String>, String, nil] :nameservers
418
+ # Optional DNS nameserver(s) to query.
419
+ #
420
+ # @option [String, nil] :nameserver
421
+ # Optional DNS nameserver to query.
422
+ #
423
+ # @return [String, nil]
424
+ # The first IPv4 address belonging to the host name.
425
+ #
426
+ def self.get_a_address(name,**kwargs)
427
+ resolver(**kwargs).get_a_address(name.to_s)
428
+ end
429
+
430
+ #
431
+ # Queries the first IPv4 address belonging to the host name.
432
+ #
433
+ # @param [String] name
434
+ # The host name to query.
435
+ #
436
+ # @param [Hash{Symbol => Object}] kwargs
437
+ # Additional keyword arguments.
438
+ #
439
+ # @option [Array<String>, String, nil] :nameservers
440
+ # Optional DNS nameserver(s) to query.
441
+ #
442
+ # @option [String, nil] :nameserver
443
+ # Optional DNS nameserver to query.
444
+ #
445
+ # @return [String, nil]
446
+ # The first IPv4 address belonging to the host name.
447
+ #
448
+ def self.get_ipv4_address(name,**kwargs)
449
+ resolver(**kwargs).get_ipv4_address(name.to_s)
450
+ end
451
+
452
+ #
453
+ # Queries all `A` records belonging to the host name.
454
+ #
455
+ # @param [String] name
456
+ # The host name to query.
457
+ #
458
+ # @param [Hash{Symbol => Object}] kwargs
459
+ # Additional keyword arguments.
460
+ #
461
+ # @option [Array<String>, String, nil] :nameservers
462
+ # Optional DNS nameserver(s) to query.
463
+ #
464
+ # @option [String, nil] :nameserver
465
+ # Optional DNS nameserver to query.
466
+ #
467
+ # @return [Array<Resolv::DNS::Resource::IN::A>]
468
+ # All of the `A` DNS records belonging to the host name.
469
+ #
470
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/A
471
+ #
472
+ def self.get_a_records(name,**kwargs)
473
+ resolver(**kwargs).get_a_records(name.to_s)
474
+ end
475
+
476
+ #
477
+ # Queries all IPv4 addresses belonging to the host name.
478
+ #
479
+ # @param [String] name
480
+ # The host name to query.
481
+ #
482
+ # @param [Hash{Symbol => Object}] kwargs
483
+ # Additional keyword arguments.
484
+ #
485
+ # @option [Array<String>, String, nil] :nameservers
486
+ # Optional DNS nameserver(s) to query.
487
+ #
488
+ # @option [String, nil] :nameserver
489
+ # Optional DNS nameserver to query.
490
+ #
491
+ # @return [Array<String>]
492
+ # All of the IPv4 addresses belonging to the host name.
493
+ #
494
+ def self.get_a_addresses(name,**kwargs)
495
+ resolver(**kwargs).get_a_addresses(name.to_s)
496
+ end
497
+
498
+ #
499
+ # Queries all IPv4 addresses belonging to the host name.
500
+ #
501
+ # @param [String] name
502
+ # The host name to query.
503
+ #
504
+ # @param [Hash{Symbol => Object}] kwargs
505
+ # Additional keyword arguments.
506
+ #
507
+ # @option [Array<String>, String, nil] :nameservers
508
+ # Optional DNS nameserver(s) to query.
509
+ #
510
+ # @option [String, nil] :nameserver
511
+ # Optional DNS nameserver to query.
512
+ #
513
+ # @return [Array<String>]
514
+ # All of the IPv4 addresses belonging to the host name.
515
+ #
516
+ def self.get_ipv4_addresses(name,**kwargs)
517
+ resolver(**kwargs).get_ipv4_addresses(name.to_s)
518
+ end
519
+
520
+ #
521
+ # Queries the first `AAAA` DNS records belonging to the host name.
522
+ #
523
+ # @param [String] name
524
+ # The host name to query.
525
+ #
526
+ # @param [Hash{Symbol => Object}] kwargs
527
+ # Additional keyword arguments.
528
+ #
529
+ # @option [Array<String>, String, nil] :nameservers
530
+ # Optional DNS nameserver(s) to query.
531
+ #
532
+ # @option [String, nil] :nameserver
533
+ # Optional DNS nameserver to query.
534
+ #
535
+ # @return [Resolv::DNS::Resource::IN::AAAA, nil]
536
+ # The first `AAAA` DNS record or `nil` if the host name has no
537
+ # `AAAA` records.
538
+ #
539
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/AAAA
540
+ #
541
+ def self.get_aaaa_record(name,**kwargs)
542
+ resolver(**kwargs).get_aaaa_record(name.to_s)
543
+ end
544
+
545
+ #
546
+ # Queries the first IPv6 address belonging to the host name.
547
+ #
548
+ # @param [String] name
549
+ # The host name to query.
550
+ #
551
+ # @param [Hash{Symbol => Object}] kwargs
552
+ # Additional keyword arguments.
553
+ #
554
+ # @option [Array<String>, String, nil] :nameservers
555
+ # Optional DNS nameserver(s) to query.
556
+ #
557
+ # @option [String, nil] :nameserver
558
+ # Optional DNS nameserver to query.
559
+ #
560
+ # @return [String, nil]
561
+ # The first IPv6 address or `nil` if the host name has no IPv6
562
+ # addresses.
563
+ #
564
+ def self.get_aaaa_address(name,**kwargs)
565
+ resolver(**kwargs).get_aaaa_address(name.to_s)
566
+ end
567
+
568
+ #
569
+ # Queries the first IPv6 address belonging to the host name.
570
+ #
571
+ # @param [String] name
572
+ # The host name to query.
573
+ #
574
+ # @param [Hash{Symbol => Object}] kwargs
575
+ # Additional keyword arguments.
576
+ #
577
+ # @option [Array<String>, String, nil] :nameservers
578
+ # Optional DNS nameserver(s) to query.
579
+ #
580
+ # @option [String, nil] :nameserver
581
+ # Optional DNS nameserver to query.
582
+ #
583
+ # @return [String, nil]
584
+ # The first IPv6 address or `nil` if the host name has no IPv6
585
+ # addresses.
586
+ #
587
+ def self.get_ipv6_address(name,**kwargs)
588
+ resolver(**kwargs).get_ipv6_address(name.to_s)
589
+ end
590
+
591
+ #
592
+ # Queries all `AAAA` DNS records belonging to the host name.
593
+ #
594
+ # @param [String] name
595
+ # The host name to query.
596
+ #
597
+ # @param [Hash{Symbol => Object}] kwargs
598
+ # Additional keyword arguments.
599
+ #
600
+ # @option [Array<String>, String, nil] :nameservers
601
+ # Optional DNS nameserver(s) to query.
602
+ #
603
+ # @option [String, nil] :nameserver
604
+ # Optional DNS nameserver to query.
605
+ #
606
+ # @return [Array<Resolv::DNS::Resource::IN::AAAA>]
607
+ # All of the `AAAA` DNS records belonging to the host name.
608
+ #
609
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/AAAA
610
+ #
611
+ def self.get_aaaa_records(name,**kwargs)
612
+ resolver(**kwargs).get_aaaa_records(name.to_s)
613
+ end
614
+
615
+ #
616
+ # Queries all IPv6 addresses belonging to the host name.
617
+ #
618
+ # @param [String] name
619
+ # The host name to query.
620
+ #
621
+ # @param [Hash{Symbol => Object}] kwargs
622
+ # Additional keyword arguments.
623
+ #
624
+ # @option [Array<String>, String, nil] :nameservers
625
+ # Optional DNS nameserver(s) to query.
626
+ #
627
+ # @option [String, nil] :nameserver
628
+ # Optional DNS nameserver to query.
629
+ #
630
+ # @return [Array<String>]
631
+ # All IPv6 addresses belonging to the host name.
632
+ #
633
+ def self.get_aaaa_addresses(name,**kwargs)
634
+ resolver(**kwargs).get_aaaa_addresses(name.to_s)
635
+ end
636
+
637
+ #
638
+ # Queries all IPv6 addresses belonging to the host name.
639
+ #
640
+ # @param [String] name
641
+ # The host name to query.
642
+ #
643
+ # @param [Hash{Symbol => Object}] kwargs
644
+ # Additional keyword arguments.
645
+ #
646
+ # @option [Array<String>, String, nil] :nameservers
647
+ # Optional DNS nameserver(s) to query.
648
+ #
649
+ # @option [String, nil] :nameserver
650
+ # Optional DNS nameserver to query.
651
+ #
652
+ # @return [Array<String>]
653
+ # All IPv6 addresses belonging to the host name.
654
+ #
655
+ def self.get_ipv6_addresses(name,**kwargs)
656
+ resolver(**kwargs).get_ipv6_addresses(name.to_s)
657
+ end
658
+
659
+ #
660
+ # Queries the first IPv4 or IPv6 address belonging to the host name.
661
+ #
662
+ # @param [String] name
663
+ # The host name to query.
664
+ #
665
+ # @param [Hash{Symbol => Object}] kwargs
666
+ # Additional keyword arguments.
667
+ #
668
+ # @option [Array<String>, String, nil] :nameservers
669
+ # Optional DNS nameserver(s) to query.
670
+ #
671
+ # @option [String, nil] :nameserver
672
+ # Optional DNS nameserver to query.
673
+ #
674
+ # @return [String, nil]
675
+ # The first IPv4 or IPv6 address or `nil` if the host name has no
676
+ # IPv4 or IPv6 addresses.
677
+ #
678
+ def self.get_ip_address(name,**kwargs)
679
+ resolver(**kwargs).get_ip_address(name.to_s)
680
+ end
681
+
682
+ #
683
+ # Queries all IP addresses belonging to the host name.
684
+ #
685
+ # @param [String] name
686
+ # The host name to query.
687
+ #
688
+ # @param [Hash{Symbol => Object}] kwargs
689
+ # Additional keyword arguments.
690
+ #
691
+ # @option [Array<String>, String, nil] :nameservers
692
+ # Optional DNS nameserver(s) to query.
693
+ #
694
+ # @option [String, nil] :nameserver
695
+ # Optional DNS nameserver to query.
696
+ #
697
+ # @return [Array<String>]
698
+ # All IPv4 or IPv6 addresses belonging to the host name.
699
+ #
700
+ def self.get_ip_addresses(name,**kwargs)
701
+ resolver(**kwargs).get_ip_addresses(name.to_s)
702
+ end
703
+
704
+ #
705
+ # Queries all `SRV` DNS records belonging to the host name.
706
+ #
707
+ # @param [String] name
708
+ # The host name to query.
709
+ #
710
+ # @param [Hash{Symbol => Object}] kwargs
711
+ # Additional keyword arguments.
712
+ #
713
+ # @option [Array<String>, String, nil] :nameservers
714
+ # Optional DNS nameserver(s) to query.
715
+ #
716
+ # @option [String, nil] :nameserver
717
+ # Optional DNS nameserver to query.
718
+ #
719
+ # @return [Array<Resolv::DNS::Resource::IN::SRV>]
720
+ # All `SRV` DNS records belonging to the host name.
721
+ #
722
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/SRV
723
+ #
724
+ def self.get_srv_records(name,**kwargs)
725
+ resolver(**kwargs).get_srv_records(name.to_s)
726
+ end
727
+
728
+ #
729
+ # Queries all `WKS` (Well-Known-Service) DNS records belonging to the
730
+ # host name.
731
+ #
732
+ # @param [String] name
733
+ # The host name to query.
734
+ #
735
+ # @param [Hash{Symbol => Object}] kwargs
736
+ # Additional keyword arguments.
737
+ #
738
+ # @option [Array<String>, String, nil] :nameservers
739
+ # Optional DNS nameserver(s) to query.
740
+ #
741
+ # @option [String, nil] :nameserver
742
+ # Optional DNS nameserver to query.
743
+ #
744
+ # @return [Array<Resolv::DNS::Resource::IN::WKS>]
745
+ # All `WKS` DNS records belonging to the host name.
746
+ #
747
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/IN/WKS
748
+ #
749
+ def self.get_wks_records(name,**kwargs)
750
+ resolver(**kwargs).get_wks_records(name.to_s)
751
+ end
752
+
753
+ #
754
+ # Queries the `LOC` (Location) DNS record of the host name.
755
+ #
756
+ # @param [String] name
757
+ # The host name to query.
758
+ #
759
+ # @param [Hash{Symbol => Object}] kwargs
760
+ # Additional keyword arguments.
761
+ #
762
+ # @option [Array<String>, String, nil] :nameservers
763
+ # Optional DNS nameserver(s) to query.
764
+ #
765
+ # @option [String, nil] :nameserver
766
+ # Optional DNS nameserver to query.
767
+ #
768
+ # @return [Resolv::DNS::Resource::LOC, nil]
769
+ # The `LOC` DNS record of the host name or `nil` if the host name
770
+ # has no `LOC` record.
771
+ #
772
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/LOC
773
+ #
774
+ def self.get_loc_record(name,**kwargs)
775
+ resolver(**kwargs).get_loc_record(name.to_s)
776
+ end
777
+
778
+ #
779
+ # Queries the `MINFO` (Machine-Info) DNS record of the host name.
780
+ #
781
+ # @param [String] name
782
+ # The host name to query.
783
+ #
784
+ # @param [Hash{Symbol => Object}] kwargs
785
+ # Additional keyword arguments.
786
+ #
787
+ # @option [Array<String>, String, nil] :nameservers
788
+ # Optional DNS nameserver(s) to query.
789
+ #
790
+ # @option [String, nil] :nameserver
791
+ # Optional DNS nameserver to query.
792
+ #
793
+ # @return [Resolv::DNS::Resource::MINFO, nil]
794
+ # The `MINFO` DNS record of the host name or `nil` if the host name
795
+ # has no `MINFO` record.
796
+ #
797
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/MINFO
798
+ #
799
+ def self.get_minfo_record(name,**kwargs)
800
+ resolver(**kwargs).get_minfo_record(name.to_s)
801
+ end
802
+
803
+ #
804
+ # Queries all `MX` DNS records belonging to the host name.
805
+ #
806
+ # @param [String] name
807
+ # The host name to query.
808
+ #
809
+ # @param [Hash{Symbol => Object}] kwargs
810
+ # Additional keyword arguments.
811
+ #
812
+ # @option [Array<String>, String, nil] :nameservers
813
+ # Optional DNS nameserver(s) to query.
814
+ #
815
+ # @option [String, nil] :nameserver
816
+ # Optional DNS nameserver to query.
817
+ #
818
+ # @return [Array<Resolv::DNS::Resource::MX>]
819
+ # All `MX` DNS records belonging to the host name.
820
+ #
821
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/MX
822
+ #
823
+ def self.get_mx_records(name,**kwargs)
824
+ resolver(**kwargs).get_mx_records(name.to_s)
825
+ end
826
+
827
+ #
828
+ # Queries the mailservers for the host name.
829
+ #
830
+ # @param [String] name
831
+ # The host name to query.
832
+ #
833
+ # @param [Hash{Symbol => Object}] kwargs
834
+ # Additional keyword arguments.
835
+ #
836
+ # @option [Array<String>, String, nil] :nameservers
837
+ # Optional DNS nameserver(s) to query.
838
+ #
839
+ # @option [String, nil] :nameserver
840
+ # Optional DNS nameserver to query.
841
+ #
842
+ # @return [Array<String>]
843
+ # The host names of the mailservers serving the given host name.
844
+ #
845
+ def self.get_mailservers(name,**kwargs)
846
+ resolver(**kwargs).get_mailservers(name.to_s)
847
+ end
848
+
849
+ #
850
+ # Queries all `NS` DNS records belonging to the host name.
851
+ #
852
+ # @param [String] name
853
+ # The host name to query.
854
+ #
855
+ # @param [Hash{Symbol => Object}] kwargs
856
+ # Additional keyword arguments.
857
+ #
858
+ # @option [Array<String>, String, nil] :nameservers
859
+ # Optional DNS nameserver(s) to query.
860
+ #
861
+ # @option [String, nil] :nameserver
862
+ # Optional DNS nameserver to query.
863
+ #
864
+ # @return [Array<Resolv::DNS::Resource::NS>]
865
+ # All `NS` DNS records belonging to the host name.
866
+ #
867
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/NS
868
+ #
869
+ def self.get_ns_records(name,**kwargs)
870
+ resolver(**kwargs).get_ns_records(name.to_s)
871
+ end
872
+
873
+ #
874
+ # Queries the nameservers for the host name.
875
+ #
876
+ # @param [String] name
877
+ # The host name to query.
878
+ #
879
+ # @param [Hash{Symbol => Object}] kwargs
880
+ # Additional keyword arguments.
881
+ #
882
+ # @option [Array<String>, String, nil] :nameservers
883
+ # Optional DNS nameserver(s) to query.
884
+ #
885
+ # @option [String, nil] :nameserver
886
+ # Optional DNS nameserver to query.
887
+ #
888
+ # @return [Array<String>]
889
+ # The host names of the nameservers serving the given host name.
890
+ #
891
+ def self.get_nameservers(name,**kwargs)
892
+ resolver(**kwargs).get_nameservers(name.to_s)
893
+ end
894
+
895
+ #
896
+ # Queries the first `PTR` DNS record for the IP address.
897
+ #
898
+ # @param [String] ip
899
+ # The IP address to query.
900
+ #
901
+ # @param [Hash{Symbol => Object}] kwargs
902
+ # Additional keyword arguments.
903
+ #
904
+ # @option [Array<String>, String, nil] :nameservers
905
+ # Optional DNS nameserver(s) to query.
906
+ #
907
+ # @option [String, nil] :nameserver
908
+ # Optional DNS nameserver to query.
909
+ #
910
+ # @return [Resolv::DNS::Resource::PTR, nil]
911
+ # The first `PTR` DNS record of the host name or `nil` if the host
912
+ # name has no `PTR` records.
913
+ #
914
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/PTR
915
+ #
916
+ def self.get_ptr_record(ip,**kwargs)
917
+ resolver(**kwargs).get_ptr_record(ip.to_s)
918
+ end
919
+
920
+ #
921
+ # Queries the `PTR` host name for the IP address.
922
+ #
923
+ # @param [String] ip
924
+ # The IP address to query.
925
+ #
926
+ # @param [Hash{Symbol => Object}] kwargs
927
+ # Additional keyword arguments.
928
+ #
929
+ # @option [Array<String>, String, nil] :nameservers
930
+ # Optional DNS nameserver(s) to query.
931
+ #
932
+ # @option [String, nil] :nameserver
933
+ # Optional DNS nameserver to query.
934
+ #
935
+ # @return [String, nil]
936
+ # The host name that points to the given IP.
937
+ #
938
+ def self.get_ptr_name(ip,**kwargs)
939
+ resolver(**kwargs).get_ptr_name(ip.to_s)
940
+ end
941
+
942
+ #
943
+ # Queries all `PTR` DNS records for the IP address.
944
+ #
945
+ # @param [String] ip
946
+ # The IP address to query.
947
+ #
948
+ # @param [Hash{Symbol => Object}] kwargs
949
+ # Additional keyword arguments.
950
+ #
951
+ # @option [Array<String>, String, nil] :nameservers
952
+ # Optional DNS nameserver(s) to query.
953
+ #
954
+ # @option [String, nil] :nameserver
955
+ # Optional DNS nameserver to query.
956
+ #
957
+ # @return [Array<Resolv::DNS::Resource::PTR>]
958
+ # All `PTR` DNS records for the given IP.
959
+ #
960
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/PTR
961
+ #
962
+ def self.get_ptr_records(ip,**kwargs)
963
+ resolver(**kwargs).get_ptr_records(ip.to_s)
964
+ end
965
+
966
+ #
967
+ # Queries all `PTR` names for the IP address.
968
+ #
969
+ # @param [String] ip
970
+ # The IP address to query.
971
+ #
972
+ # @param [Hash{Symbol => Object}] kwargs
973
+ # Additional keyword arguments.
974
+ #
975
+ # @option [Array<String>, String, nil] :nameservers
976
+ # Optional DNS nameserver(s) to query.
977
+ #
978
+ # @option [String, nil] :nameserver
979
+ # Optional DNS nameserver to query.
980
+ #
981
+ # @return [Array<String>]
982
+ # The `PTR` names for the given IP.
983
+ #
984
+ def self.get_ptr_names(ip,**kwargs)
985
+ resolver(**kwargs).get_ptr_names(ip.to_s)
986
+ end
987
+
988
+ #
989
+ # Queries the first `SOA` DNS record belonging to the host name.
990
+ #
991
+ # @param [String] name
992
+ # The host name to query.
993
+ #
994
+ # @param [Hash{Symbol => Object}] kwargs
995
+ # Additional keyword arguments.
996
+ #
997
+ # @option [Array<String>, String, nil] :nameservers
998
+ # Optional DNS nameserver(s) to query.
999
+ #
1000
+ # @option [String, nil] :nameserver
1001
+ # Optional DNS nameserver to query.
1002
+ #
1003
+ # @return [Resolv::DNS::Resource::SOA, nil]
1004
+ # The first `SOA` DNS record for the host name or `nil` if the host
1005
+ # name has no `SOA` records.
1006
+ #
1007
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/SOA
1008
+ #
1009
+ def self.get_soa_record(name,**kwargs)
1010
+ resolver(**kwargs).get_soa_record(name.to_s)
1011
+ end
1012
+
1013
+ #
1014
+ # Queiries the first `TXT` DNS record belonging to the host name.
1015
+ #
1016
+ # @param [String] name
1017
+ # The host name to query.
1018
+ #
1019
+ # @param [Hash{Symbol => Object}] kwargs
1020
+ # Additional keyword arguments.
1021
+ #
1022
+ # @option [Array<String>, String, nil] :nameservers
1023
+ # Optional DNS nameserver(s) to query.
1024
+ #
1025
+ # @option [String, nil] :nameserver
1026
+ # Optional DNS nameserver to query.
1027
+ #
1028
+ # @return [Resolv::DNS::Resource::TXT, nil]
1029
+ # The first `TXT` DNS record for the host name or `nil` if the host
1030
+ # name has no `TXT` records.
1031
+ #
1032
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/TXT
1033
+ #
1034
+ def self.get_txt_record(name,**kwargs)
1035
+ resolver(**kwargs).get_txt_record(name.to_s)
1036
+ end
1037
+
1038
+ #
1039
+ # Queries the first `TXT` string belonging to the host name.
1040
+ #
1041
+ # @param [String] name
1042
+ # The host name to query.
1043
+ #
1044
+ # @param [Hash{Symbol => Object}] kwargs
1045
+ # Additional keyword arguments.
1046
+ #
1047
+ # @option [Array<String>, String, nil] :nameservers
1048
+ # Optional DNS nameserver(s) to query.
1049
+ #
1050
+ # @option [String, nil] :nameserver
1051
+ # Optional DNS nameserver to query.
1052
+ #
1053
+ # @return [String, nil]
1054
+ # The first `TXT` string belonging to the host name or `nil` if the
1055
+ # host name has no `TXT` records.
1056
+ #
1057
+ def self.get_txt_string(name,**kwargs)
1058
+ resolver(**kwargs).get_txt_string(name.to_s)
1059
+ end
1060
+
1061
+ #
1062
+ # Queries all `TXT` DNS records belonging to the host name.
1063
+ #
1064
+ # @param [String] name
1065
+ # The host name to query.
1066
+ #
1067
+ # @param [Hash{Symbol => Object}] kwargs
1068
+ # Additional keyword arguments.
1069
+ #
1070
+ # @option [Array<String>, String, nil] :nameservers
1071
+ # Optional DNS nameserver(s) to query.
1072
+ #
1073
+ # @option [String, nil] :nameserver
1074
+ # Optional DNS nameserver to query.
1075
+ #
1076
+ # @return [Array<Resolv::DNS::Resource::TXT>]
1077
+ # All of the `TXT` DNS records belonging to the host name.
1078
+ #
1079
+ # @see https://rubydoc.info/stdlib/resolv/Resolv/DNS/Resource/TXT
1080
+ #
1081
+ def self.get_txt_records(name,**kwargs)
1082
+ resolver(**kwargs).get_txt_records(name.to_s)
1083
+ end
1084
+
1085
+ #
1086
+ # Queries all of the `TXT` string values of the host name.
1087
+ #
1088
+ # @param [String] name
1089
+ # The host name to query.
1090
+ #
1091
+ # @param [Hash{Symbol => Object}] kwargs
1092
+ # Additional keyword arguments.
1093
+ #
1094
+ # @option [Array<String>, String, nil] :nameservers
1095
+ # Optional DNS nameserver(s) to query.
1096
+ #
1097
+ # @option [String, nil] :nameserver
1098
+ # Optional DNS nameserver to query.
1099
+ #
1100
+ # @return [Array<String>]
1101
+ # All `TXT` string values belonging of the host name.
1102
+ #
1103
+ def self.get_txt_strings(name,**kwargs)
1104
+ resolver(**kwargs).get_txt_strings(name.to_s)
1105
+ end
1106
+ end
1107
+ end
1108
+ end
1109
+ end