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,890 @@
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/http'
20
+
21
+ module Ronin
22
+ module Support
23
+ module Network
24
+ class HTTP
25
+ #
26
+ # Provides helper methods for communicating with HTTP Servers.
27
+ #
28
+ module Mixin
29
+ #
30
+ # @!macro connect_kwargs
31
+ # @param [Boolean, Hash{Symbol => Object}, nil] ssl
32
+ # Specifies whether to enable SSL and/or the SSL context
33
+ # configuration.
34
+ #
35
+ # @param [Hash{Symbol => Object}] kwargs
36
+ # Additional keyword arguments.
37
+ #
38
+ # @option kwargs [String, URI::HTTP, Addressable::URI, nil] :proxy
39
+ # The optional proxy to send requests through.
40
+ #
41
+ # @option kwargs [Hash{Symbol,String => String,Array}, nil] :headers
42
+ # Additional headers to add to each request.
43
+ #
44
+ # @option kwargs [String, :random, :chrome, :chrome_linux, :chrome_macos, :chrome_windows, :chrome_iphone, :chrome_ipad, :chrome_android, :firefox, :firefox_linux, :firefox_macos, :firefox_windows, :firefox_iphone, :firefox_ipad, :firefox_android, :safari, :safari_macos, :safari_iphone, :safari_ipad, :edge, :linux, :macos, :windows, :iphone, :ipad, :android, nil] user_agent (HTTP.user_agent)
45
+ # The default `User-Agent` string to add to each request.
46
+ #
47
+ # @option ssl [String, nil] :ca_bundle
48
+ # The path to the CA bundle directory or file.
49
+ #
50
+ # @option ssl [Crypto::Cert, OpenSSL::X509::Certificate, nil] :cert
51
+ # The certificate to use for the SSL/TLS connection.
52
+ #
53
+ # @option ssl [OpenSSL::X509::Store, nil] :cert_store
54
+ # The certificate store to use for the SSL/TLS connection.
55
+ #
56
+ # @option ssl [Array<(name, version, bits, alg_bits)>, nil] :ciphers
57
+ # The accepted ciphers to use for the SSL/TLS connection.
58
+ #
59
+ # @option ssl [Crypto::Cert, OpenSSL::X509::Certificate, nil] :extra_chain_cert
60
+ # The extra certificate to add to the SSL/TLS certificate chain.
61
+ #
62
+ # @option ssl [Crypto::Key::RSA, Crypto::Key::DSA, OpenSSL::PKey::RSA, OpenSSL::PKey::DSA, nil] :key
63
+ # The RSA or DSA key to use for the SSL/TLS connection.
64
+ #
65
+ # @option ssl [Integer, nil] :timeout
66
+ # The connection timeout limit.
67
+ #
68
+ # @option ssl [1, 1.1, 1.2, Symbol, nil] :version
69
+ # The desired SSL/TLS version.
70
+ #
71
+ # @option ssl [1, 1.1, 1.2, Symbol, nil] :min_version
72
+ # The minimum SSL/TLS version.
73
+ #
74
+ # @option ssl [1, 1.1, 1.2, Symbol, nil] :max_version
75
+ # The maximum SSL/TLS version.
76
+ #
77
+ # @option ssl [Proc, nil] :verify_callback
78
+ # The callback to use when verifying the server's certificate.
79
+ #
80
+ # @option ssl [Integer, nil] :verify_depth
81
+ # The verification depth limit.
82
+ #
83
+ # @option ssl [:none, :peer, :fail_if_no_peer_cert, true, false, Integer, nil] :verify
84
+ # The verification mode.
85
+ #
86
+ # @option ssl [Boolean, nil] :verify_hostname
87
+ # Indicates whether to verify the server's hostname.
88
+ #
89
+
90
+ #
91
+ # Creates a HTTP connection to the host nad port.
92
+ #
93
+ # @param [String] host
94
+ # The host to connect to.
95
+ #
96
+ # @param [Integer] port
97
+ # The port to connect to.
98
+ #
99
+ # @!macro connect_kwargs
100
+ #
101
+ # @yield [http]
102
+ # If a block is given, it will be passed the newly created HTTP
103
+ # session object. Once the block returns, the HTTP session will be
104
+ # closed.
105
+ #
106
+ # @yieldparam [HTTP] http
107
+ # The HTTP session object.
108
+ #
109
+ # @return [HTTP, nil]
110
+ # The HTTP session object. If a block is given, then `nil` will be
111
+ # returned.
112
+ #
113
+ # @since 1.0.0
114
+ #
115
+ # @api public
116
+ #
117
+ def http_connect(host,port, ssl: nil, **kwargs,&block)
118
+ Network::HTTP.connect(host,port, ssl: ssl, **kwargs,&block)
119
+ end
120
+
121
+ #
122
+ # Creates a HTTP connection using the URI.
123
+ #
124
+ # @param [URI::HTTP, Addressable::URI, String] url
125
+ # The URI to connect to.
126
+ #
127
+ # @!macro connect_kwargs
128
+ #
129
+ # @yield [http]
130
+ # If a block is given, it will be passed the newly created HTTP
131
+ # session object. Once the block returns, the HTTP session will be
132
+ # closed.
133
+ #
134
+ # @yieldparam [HTTP] http
135
+ # The HTTP session object.
136
+ #
137
+ # @return [HTTP, nil]
138
+ # The HTTP session object. If a block is given, then `nil` will be
139
+ # returned.
140
+ #
141
+ # @since 1.0.0
142
+ #
143
+ # @api public
144
+ #
145
+ def http_connect_uri(url, ssl: nil, **kwargs,&block)
146
+ Network::HTTP.connect_uri(url, ssl: ssl, **kwargs,&block)
147
+ end
148
+
149
+ #
150
+ # @!macro request_kwargs
151
+ # @option kwargs [String, nil] :query
152
+ # The query-string to append to the request path.
153
+ #
154
+ # @option kwargs [Hash, nil] :query_params
155
+ # The query-params to append to the request path.
156
+ #
157
+ # @option kwargs [String, nil] :user
158
+ # The user to authenticate as.
159
+ #
160
+ # @option kwargs [String, nil] :password
161
+ # The password to authenticate with.
162
+ #
163
+ # @option kwargs [Hash{Symbol,String => String}, nil] :headers
164
+ # Additional HTTP headers to use for the request.
165
+ #
166
+ # @option kwargs [String, Hash{String => String}, Cookie, nil] :cookie
167
+ # Additional `Cookie` header. If a `Hash` is given, it will be
168
+ # converted to a `String` using {Cookie}. If the cookie value is
169
+ # empty, the `Cookie` header will not be set.
170
+ #
171
+ # @option kwargs [String, nil] :body
172
+ # The body of the request.
173
+ #
174
+ # @option kwargs [Hash, String, nil] :form_data
175
+ # The form data that may be sent in the body of the request.
176
+ #
177
+
178
+ #
179
+ # Performs and arbitrary HTTP request.
180
+ #
181
+ # @param [Symbol, String] method
182
+ # The HTTP method to use for the request.
183
+ #
184
+ # @param [URI::HTTP, Addressable::URI, String] url
185
+ # Optional URL to create the HTTP request for.
186
+ #
187
+ # @!macro request_kwargs
188
+ # @!macro connect_kwargs
189
+ #
190
+ # @yield [response]
191
+ # If a block is given it will be passed the received HTTP response.
192
+ #
193
+ # @yieldparam [Net::HTTPRresponse] response
194
+ # The received HTTP response object.
195
+ #
196
+ # @return [Net::HTTPResponse]
197
+ # The new HTTP Request object.
198
+ #
199
+ # @raise [ArgumentError]
200
+ # The `:method` option did not match a known `Net::HTTP` request
201
+ # class.
202
+ #
203
+ # @see Network::HTTP.request
204
+ #
205
+ # @api public
206
+ #
207
+ def http_request(method,url, ssl: nil, **kwargs,&block)
208
+ Network::HTTP.request(method,url, ssl: ssl, **kwargs,&block)
209
+ end
210
+
211
+ #
212
+ # Sends an arbitrary HTTP request and returns the response status.
213
+ #
214
+ # @param [Symbol, String] method
215
+ # The HTTP method to use for the request.
216
+ #
217
+ # @param [URI::HTTP, Addressable::URI, String] url
218
+ # Optional URL to create the HTTP request for.
219
+ #
220
+ # @!macro request_kwargs
221
+ # @!macro connect_kwargs
222
+ #
223
+ # @return [Integer]
224
+ # The status code of the response.
225
+ #
226
+ # @see Network::HTTP.response_status
227
+ #
228
+ # @since 1.0.0
229
+ #
230
+ # @api public
231
+ #
232
+ def http_response_status(method=:head,url, ssl: nil, **kwargs)
233
+ Network::HTTP.response_status(method,url, ssl: ssl, **kwargs)
234
+ end
235
+
236
+ #
237
+ # Sends a HTTP request and determines if the response status was 200.
238
+ #
239
+ # @param [Symbol, String] method
240
+ # The HTTP method to use for the request.
241
+ #
242
+ # @param [URI::HTTP, Addressable::URI, String] url
243
+ # Optional URL to create the HTTP request for.
244
+ #
245
+ # @!macro request_kwargs
246
+ # @!macro connect_kwargs
247
+ #
248
+ # @return [Boolean]
249
+ # Indicates that the response status was 200.
250
+ #
251
+ # @see Network::HTTP.ok?
252
+ #
253
+ # @api public
254
+ #
255
+ def http_ok?(method=:head,url, ssl: nil, **kwargs)
256
+ Network::HTTP.ok?(method,url, ssl: ssl, **kwargs)
257
+ end
258
+
259
+ #
260
+ # Sends an arbitrary HTTP request and returns the response headers.
261
+ #
262
+ # @param [Symbol, String] method
263
+ # The HTTP method to use for the request.
264
+ #
265
+ # @param [URI::HTTP, Addressable::URI, String] url
266
+ # Optional URL to create the HTTP request for.
267
+ #
268
+ # @!macro request_kwargs
269
+ # @!macro connect_kwargs
270
+ #
271
+ # @return [Hash{String => String}]
272
+ # The response headers.
273
+ #
274
+ # @see Network::HTTP.response_headers
275
+ #
276
+ # @since 1.0.0
277
+ #
278
+ # @api public
279
+ #
280
+ def http_response_headers(method=:head,url, ssl: nil, **kwargs)
281
+ Network::HTTP.response_headers(method,url, ssl: ssl, **kwargs)
282
+ end
283
+
284
+ #
285
+ # Sends an HTTP request and returns the `Server` header.
286
+ #
287
+ # @param [URI::HTTP, Addressable::URI, String] url
288
+ # Optional URL to create the HTTP request for.
289
+ #
290
+ # @!macro connect_kwargs
291
+ # @!macro request_kwargs
292
+ #
293
+ # @return [String, nil]
294
+ # The `Server` header.
295
+ #
296
+ # @see Network::HTTP.server_header
297
+ #
298
+ # @since 1.0.0
299
+ #
300
+ # @api public
301
+ #
302
+ def http_server_header(url, ssl: nil, **kwargs)
303
+ Network::HTTP.server_header(url, ssl: ssl, **kwargs)
304
+ end
305
+
306
+ #
307
+ # Sends an HTTP request and returns the `X-Powered-By` header.
308
+ #
309
+ # @param [URI::HTTP, Addressable::URI, String] url
310
+ # Optional URL to create the HTTP request for.
311
+ #
312
+ # @!macro request_kwargs
313
+ # @!macro connect_kwargs
314
+ #
315
+ # @return [String, nil]
316
+ # The `X-Powered-By` header.
317
+ #
318
+ # @see Network::HTTP.powered_by_header
319
+ #
320
+ # @since 1.0.0
321
+ #
322
+ # @api public
323
+ #
324
+ def http_powered_by_header(url, ssl: nil, **kwargs)
325
+ Network::HTTP.powered_by_header(url, ssl: ssl, **kwargs)
326
+ end
327
+
328
+ #
329
+ # Sends an arbitrary HTTP request and returns the response body.
330
+ #
331
+ # @param [Symbol, String] method
332
+ # The HTTP method to use for the request.
333
+ #
334
+ # @param [URI::HTTP, Addressable::URI, String] url
335
+ # Optional URL to create the HTTP request for.
336
+ #
337
+ # @!macro request_kwargs
338
+ # @!macro connect_kwargs
339
+ #
340
+ # @return [String]
341
+ # The response body.
342
+ #
343
+ # @see Network::HTTP.response_body
344
+ #
345
+ # @since 1.0.0
346
+ #
347
+ # @api public
348
+ #
349
+ def http_response_body(method=:get,url, ssl: nil, **kwargs)
350
+ Network::HTTP.response_body(method,url, ssl: ssl, **kwargs)
351
+ end
352
+
353
+ #
354
+ # Performs a `COPY` request for the given URI.
355
+ #
356
+ # @param [URI::HTTP, Addressable::URI, String] url
357
+ # Optional URL to create the HTTP request for.
358
+ #
359
+ # @!macro request_kwargs
360
+ # @!macro connect_kwargs
361
+ #
362
+ # @yield [response]
363
+ # If a block is given it will be passed the received HTTP response.
364
+ #
365
+ # @yieldparam [Net::HTTPRresponse] response
366
+ # The received HTTP response object.
367
+ #
368
+ # @return [Net::HTTPResponse]
369
+ # The new HTTP Request object.
370
+ #
371
+ # @see Network::HTTP.copy
372
+ #
373
+ # @api public
374
+ #
375
+ def http_copy(url, ssl: nil, **kwargs)
376
+ Network::HTTP.copy(url, ssl: ssl, **kwargs)
377
+ end
378
+
379
+ #
380
+ # Performs a `DELETE` request for the given URI.
381
+ #
382
+ # @param [URI::HTTP, Addressable::URI, String] url
383
+ # Optional URL to create the HTTP request for.
384
+ #
385
+ # @!macro request_kwargs
386
+ # @!macro connect_kwargs
387
+ #
388
+ # @yield [response]
389
+ # If a block is given it will be passed the received HTTP response.
390
+ #
391
+ # @yieldparam [Net::HTTPRresponse] response
392
+ # The received HTTP response object.
393
+ #
394
+ # @return [Net::HTTPResponse]
395
+ # The new HTTP Request object.
396
+ #
397
+ # @see Network::HTTP.delete
398
+ #
399
+ # @api public
400
+ #
401
+ def http_delete(url, ssl: nil, **kwargs,&block)
402
+ Network::HTTP.delete(url, ssl: ssl, **kwargs,&block)
403
+ end
404
+
405
+ #
406
+ # Performs a `GET` request for the given URI.
407
+ #
408
+ # @param [URI::HTTP, Addressable::URI, String] url
409
+ # Optional URL to create the HTTP request for.
410
+ #
411
+ # @!macro request_kwargs
412
+ # @!macro connect_kwargs
413
+ #
414
+ # @yield [response]
415
+ # If a block is given it will be passed the received HTTP response.
416
+ #
417
+ # @yieldparam [Net::HTTPRresponse] response
418
+ # The received HTTP response object.
419
+ #
420
+ # @return [Net::HTTPResponse]
421
+ # The new HTTP Request object.
422
+ #
423
+ # @see Network::HTTP.get
424
+ #
425
+ # @api public
426
+ #
427
+ def http_get(url, ssl: nil, **kwargs,&block)
428
+ Network::HTTP.get(url, ssl: ssl, **kwargs,&block)
429
+ end
430
+
431
+ #
432
+ # Performs a `GET` request for the given URI and returns the response
433
+ # headers.
434
+ #
435
+ # @param [URI::HTTP, Addressable::URI, String] url
436
+ # Optional URL to create the HTTP request for.
437
+ #
438
+ # @!macro request_kwargs
439
+ # @!macro connect_kwargs
440
+ #
441
+ # @return [Hash{String => String}]
442
+ # The response headers.
443
+ #
444
+ # @see Network::HTTP.get_headers
445
+ #
446
+ # @since 0.2.0
447
+ #
448
+ # @api public
449
+ #
450
+ def http_get_headers(url, ssl: nil, **kwargs)
451
+ Network::HTTP.get_headers(url, ssl: ssl, **kwargs)
452
+ end
453
+
454
+ #
455
+ # Sends an HTTP request and returns the parsed `Set-Cookie`
456
+ # header(s).
457
+ #
458
+ # @param [URI::HTTP, Addressable::URI, String] url
459
+ # Optional URL to create the HTTP request for.
460
+ #
461
+ # @!macro request_kwargs
462
+ # @!macro connect_kwargs
463
+ #
464
+ # @return [Array<SetCookie>, nil]
465
+ # The parsed `SetCookie` header(s).
466
+ #
467
+ # @see Network::HTTP.get_cookies
468
+ #
469
+ # @api public
470
+ #
471
+ def http_get_cookies(url, ssl: nil, **kwargs)
472
+ Network::HTTP.get_cookies(url, ssl: ssl, **kwargs)
473
+ end
474
+
475
+ #
476
+ # Performs a `GET` request for the given URI and returns the response
477
+ # body.
478
+ #
479
+ # @param [URI::HTTP, Addressable::URI, String] url
480
+ # Optional URL to create the HTTP request for.
481
+ #
482
+ # @!macro request_kwargs
483
+ # @!macro connect_kwargs
484
+ #
485
+ # @return [String]
486
+ # The response body.
487
+ #
488
+ # @see Network::HTTP.get_body
489
+ #
490
+ # @api public
491
+ #
492
+ def http_get_body(url, ssl: nil, **kwargs)
493
+ Network::HTTP.get_body(url, ssl: ssl, **kwargs)
494
+ end
495
+
496
+ #
497
+ # Performs a `HEAD` request for the given URI.
498
+ #
499
+ # @param [URI::HTTP, Addressable::URI, String] url
500
+ # Optional URL to create the HTTP request for.
501
+ #
502
+ # @!macro request_kwargs
503
+ # @!macro connect_kwargs
504
+ #
505
+ # @yield [response]
506
+ # If a block is given it will be passed the received HTTP response.
507
+ #
508
+ # @yieldparam [Net::HTTPRresponse] response
509
+ # The received HTTP response object.
510
+ #
511
+ # @return [Net::HTTPResponse]
512
+ # The new HTTP Request object.
513
+ #
514
+ # @see Network::HTTP.head
515
+ #
516
+ # @api public
517
+ #
518
+ def http_head(url, ssl: nil, **kwargs,&block)
519
+ Network::HTTP.head(url, ssl: ssl, **kwargs,&block)
520
+ end
521
+
522
+ #
523
+ # Performs a `LOCK` request for the given URI.
524
+ #
525
+ # @param [URI::HTTP, Addressable::URI, String] url
526
+ # Optional URL to create the HTTP request for.
527
+ #
528
+ # @!macro request_kwargs
529
+ # @!macro connect_kwargs
530
+ #
531
+ # @yield [response]
532
+ # If a block is given it will be passed the received HTTP response.
533
+ #
534
+ # @yieldparam [Net::HTTPRresponse] response
535
+ # The received HTTP response object.
536
+ #
537
+ # @return [Net::HTTPResponse]
538
+ # The new HTTP Request object.
539
+ #
540
+ # @see Network::HTTP.lock
541
+ #
542
+ # @api public
543
+ #
544
+ def http_lock(url, ssl: nil, **kwargs,&block)
545
+ Network::HTTP.lock(url, ssl: ssl, **kwargs,&block)
546
+ end
547
+
548
+ #
549
+ # Performs a `MKCOL` request for the given URI.
550
+ #
551
+ # @param [URI::HTTP, Addressable::URI, String] url
552
+ # Optional URL to create the HTTP request for.
553
+ #
554
+ # @!macro request_kwargs
555
+ # @!macro connect_kwargs
556
+ #
557
+ # @yield [response]
558
+ # If a block is given it will be passed the received HTTP response.
559
+ #
560
+ # @yieldparam [Net::HTTPRresponse] response
561
+ # The received HTTP response object.
562
+ #
563
+ # @return [Net::HTTPResponse]
564
+ # The new HTTP Request object.
565
+ #
566
+ # @see Network::HTTP.mkcol
567
+ #
568
+ # @api public
569
+ #
570
+ def http_mkcol(url, ssl: nil, **kwargs,&block)
571
+ Network::HTTP.mkcol(url, ssl: ssl, **kwargs,&block)
572
+ end
573
+
574
+ #
575
+ # Performs a `MOVE` request for the given URI.
576
+ #
577
+ # @param [URI::HTTP, Addressable::URI, String] url
578
+ # Optional URL to create the HTTP request for.
579
+ #
580
+ # @!macro request_kwargs
581
+ # @!macro connect_kwargs
582
+ #
583
+ # @yield [response]
584
+ # If a block is given it will be passed the received HTTP response.
585
+ #
586
+ # @yieldparam [Net::HTTPRresponse] response
587
+ # The received HTTP response object.
588
+ #
589
+ # @return [Net::HTTPResponse]
590
+ # The new HTTP Request object.
591
+ #
592
+ # @see Network::HTTP.move
593
+ #
594
+ # @api public
595
+ #
596
+ def http_move(url, ssl: nil, **kwargs,&block)
597
+ Network::HTTP.move(url, ssl: ssl, **kwargs,&block)
598
+ end
599
+
600
+ #
601
+ # Performs a `OPTIONS` request for the given URI.
602
+ #
603
+ # @param [URI::HTTP, Addressable::URI, String] url
604
+ # Optional URL to create the HTTP request for.
605
+ #
606
+ # @!macro request_kwargs
607
+ # @!macro connect_kwargs
608
+ #
609
+ # @yield [response]
610
+ # If a block is given it will be passed the received HTTP response.
611
+ #
612
+ # @yieldparam [Net::HTTPRresponse] response
613
+ # The received HTTP response object.
614
+ #
615
+ # @return [Net::HTTPResponse]
616
+ # The new HTTP Request object.
617
+ #
618
+ # @see Network::HTTP.options
619
+ #
620
+ # @api public
621
+ #
622
+ def http_options(url, ssl: nil, **kwargs,&block)
623
+ Network::HTTP.options(url, ssl: ssl, **kwargs,&block)
624
+ end
625
+
626
+ #
627
+ # Performs a `OPTIONS` HTTP request for the given URI and parses the
628
+ # `Allow` response header.
629
+ #
630
+ # @param [URI::HTTP, Addressable::URI, String] url
631
+ # Optional URL to create the HTTP request for.
632
+ #
633
+ # @!macro request_kwargs
634
+ # @!macro connect_kwargs
635
+ #
636
+ # @yield [response]
637
+ # If a block is given it will be passed the received HTTP response.
638
+ #
639
+ # @yieldparam [Net::HTTPRresponse] response
640
+ # The received HTTP response object.
641
+ #
642
+ # @return [Array<Symbol>]
643
+ # The allowed HTTP request methods for the given URL.
644
+ #
645
+ # @see Network::HTTP.allowed_methods
646
+ #
647
+ # @api public
648
+ #
649
+ def http_allowed_methods(url, ssl: nil, **kwargs,&block)
650
+ Network::HTTP.allowed_methods(url, ssl: ssl, **kwargs,&block)
651
+ end
652
+
653
+ #
654
+ # Performs a `PATCH` request for the given URI.
655
+ #
656
+ # @param [URI::HTTP, Addressable::URI, String] url
657
+ # Optional URL to create the HTTP request for.
658
+ #
659
+ # @!macro request_kwargs
660
+ # @!macro connect_kwargs
661
+ #
662
+ # @yield [response]
663
+ # If a block is given it will be passed the received HTTP response.
664
+ #
665
+ # @yieldparam [Net::HTTPRresponse] response
666
+ # The received HTTP response object.
667
+ #
668
+ # @return [Net::HTTPResponse]
669
+ # The new HTTP Request object.
670
+ #
671
+ # @see Network::HTTP.patch
672
+ #
673
+ # @since 1.0.0
674
+ #
675
+ # @api public
676
+ #
677
+ def http_patch(url, ssl: nil, **kwargs,&block)
678
+ Network::HTTP.patch(url, ssl: ssl, **kwargs,&block)
679
+ end
680
+
681
+ #
682
+ # Performs a `POST` request for the given URI.
683
+ #
684
+ # @param [URI::HTTP, Addressable::URI, String] url
685
+ # Optional URL to create the HTTP request for.
686
+ #
687
+ # @!macro request_kwargs
688
+ # @!macro connect_kwargs
689
+ #
690
+ # @yield [response]
691
+ # If a block is given it will be passed the received HTTP response.
692
+ #
693
+ # @yieldparam [Net::HTTPRresponse] response
694
+ # The received HTTP response object.
695
+ #
696
+ # @return [Net::HTTPResponse]
697
+ # The new HTTP Request object.
698
+ #
699
+ # @see Network::HTTP.post
700
+ #
701
+ # @api public
702
+ #
703
+ def http_post(url, ssl: nil, **kwargs,&block)
704
+ Network::HTTP.post(url, ssl: ssl, **kwargs,&block)
705
+ end
706
+
707
+ #
708
+ # Performs a `POST` request on the given URI and returns the response
709
+ # headers.
710
+ #
711
+ # @param [URI::HTTP, Addressable::URI, String] url
712
+ # Optional URL to create the HTTP request for.
713
+ #
714
+ # @!macro request_kwargs
715
+ # @!macro connect_kwargs
716
+ #
717
+ # @return [Hash{String => String}]
718
+ # The response headers.
719
+ #
720
+ # @see Network::HTTP.post_headers
721
+ #
722
+ # @since 0.2.0
723
+ #
724
+ # @api public
725
+ #
726
+ def http_post_headers(url, ssl: nil, **kwargs)
727
+ Network::HTTP.post_headers(url, ssl: ssl, **kwargs)
728
+ end
729
+
730
+ #
731
+ # Performs a `POST` request for the given URI and returns the
732
+ # response body.
733
+ #
734
+ # @param [URI::HTTP, Addressable::URI, String] url
735
+ # Optional URL to create the HTTP request for.
736
+ #
737
+ # @!macro request_kwargs
738
+ # @!macro connect_kwargs
739
+ #
740
+ # @return [String]
741
+ # The response body.
742
+ #
743
+ # @see Network::HTTP.post_body
744
+ #
745
+ # @api public
746
+ #
747
+ def http_post_body(url, ssl: nil, **kwargs)
748
+ Network::HTTP.post_body(url, ssl: ssl, **kwargs)
749
+ end
750
+
751
+ #
752
+ # Performs a `PROPFIND` request for the given URI.
753
+ #
754
+ # @param [URI::HTTP, Addressable::URI, String] url
755
+ # Optional URL to create the HTTP request for.
756
+ #
757
+ # @!macro request_kwargs
758
+ # @!macro connect_kwargs
759
+ #
760
+ # @yield [response]
761
+ # If a block is given it will be passed the received HTTP response.
762
+ #
763
+ # @yieldparam [Net::HTTPRresponse] response
764
+ # The received HTTP response object.
765
+ #
766
+ # @return [Net::HTTPResponse]
767
+ # The new HTTP Request object.
768
+ #
769
+ # @see Network::HTTP.propfind
770
+ #
771
+ # @api public
772
+ #
773
+ def http_propfind(url, ssl: nil, **kwargs,&block)
774
+ Network::HTTP.propfind(url, ssl: ssl, **kwargs,&block)
775
+ end
776
+
777
+ alias http_prop_find http_propfind
778
+
779
+ #
780
+ # Performs a `PROPPATCH` request for the given URI.
781
+ #
782
+ # @param [URI::HTTP, Addressable::URI, String] url
783
+ # Optional URL to create the HTTP request for.
784
+ #
785
+ # @!macro request_kwargs
786
+ # @!macro connect_kwargs
787
+ #
788
+ # @yield [response]
789
+ # If a block is given it will be passed the received HTTP response.
790
+ #
791
+ # @yieldparam [Net::HTTPRresponse] response
792
+ # The received HTTP response object.
793
+ #
794
+ # @return [Net::HTTPResponse]
795
+ # The new HTTP Request object.
796
+ #
797
+ # @see Network::HTTP.proppatch
798
+ #
799
+ # @api public
800
+ #
801
+ def http_proppatch(url, ssl: nil, **kwargs,&block)
802
+ Network::HTTP.proppatch(url, ssl: ssl, **kwargs,&block)
803
+ end
804
+
805
+ alias http_prop_patch http_proppatch
806
+
807
+ #
808
+ # Performs a `PUT` request for the given URI.
809
+ #
810
+ # @param [URI::HTTP, Addressable::URI, String] url
811
+ # Optional URL to create the HTTP request for.
812
+ #
813
+ # @!macro request_kwargs
814
+ # @!macro connect_kwargs
815
+ #
816
+ # @yield [response]
817
+ # If a block is given it will be passed the received HTTP response.
818
+ #
819
+ # @yieldparam [Net::HTTPRresponse] response
820
+ # The received HTTP response object.
821
+ #
822
+ # @return [Net::HTTPResponse]
823
+ # The new HTTP Request object.
824
+ #
825
+ # @see Network::HTTP.put
826
+ #
827
+ # @since 0.4.0
828
+ #
829
+ # @api public
830
+ #
831
+ def http_put(url, ssl: nil, **kwargs,&block)
832
+ Network::HTTP.put(url, ssl: ssl, **kwargs,&block)
833
+ end
834
+
835
+ #
836
+ # Performs a `TRACE` request for the given URI.
837
+ #
838
+ # @param [URI::HTTP, Addressable::URI, String] url
839
+ # Optional URL to create the HTTP request for.
840
+ #
841
+ # @!macro request_kwargs
842
+ # @!macro connect_kwargs
843
+ #
844
+ # @yield [response]
845
+ # If a block is given it will be passed the received HTTP response.
846
+ #
847
+ # @yieldparam [Net::HTTPRresponse] response
848
+ # The received HTTP response object.
849
+ #
850
+ # @return [Net::HTTPResponse]
851
+ # The new HTTP Request object.
852
+ #
853
+ # @see Network::HTTP.trace
854
+ #
855
+ # @api public
856
+ #
857
+ def http_trace(url, ssl: nil, **kwargs,&block)
858
+ Network::HTTP.trace(url, ssl: ssl, **kwargs,&block)
859
+ end
860
+
861
+ #
862
+ # Performs a `UNLOCK` request for the given URI.
863
+ #
864
+ # @param [URI::HTTP, Addressable::URI, String] url
865
+ # Optional URL to create the HTTP request for.
866
+ #
867
+ # @!macro request_kwargs
868
+ # @!macro connect_kwargs
869
+ #
870
+ # @yield [response]
871
+ # If a block is given it will be passed the received HTTP response.
872
+ #
873
+ # @yieldparam [Net::HTTPRresponse] response
874
+ # The received HTTP response object.
875
+ #
876
+ # @return [Net::HTTPResponse]
877
+ # The new HTTP Request object.
878
+ #
879
+ # @see Network::HTTP.unlock
880
+ #
881
+ # @api public
882
+ #
883
+ def http_unlock(url, ssl: nil, **kwargs,&block)
884
+ Network::HTTP.unlock(url, ssl: ssl, **kwargs,&block)
885
+ end
886
+ end
887
+ end
888
+ end
889
+ end
890
+ end