ronin 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. data.tar.gz.sig +0 -0
  2. data/History.txt +95 -0
  3. data/Manifest.txt +55 -25
  4. data/README.txt +64 -52
  5. data/Rakefile +21 -14
  6. data/bin/ronin +1 -1
  7. data/bin/ronin-add +1 -1
  8. data/bin/ronin-console +1 -1
  9. data/bin/ronin-help +1 -1
  10. data/bin/ronin-install +1 -1
  11. data/bin/ronin-list +1 -1
  12. data/bin/ronin-remove +1 -1
  13. data/bin/ronin-uninstall +1 -1
  14. data/bin/ronin-update +1 -1
  15. data/lib/ronin.rb +2 -4
  16. data/lib/ronin/arch.rb +66 -21
  17. data/lib/ronin/author.rb +27 -18
  18. data/lib/ronin/cacheable.rb +63 -23
  19. data/lib/ronin/code/emittable.rb +1 -4
  20. data/lib/ronin/code/reference.rb +2 -5
  21. data/lib/ronin/code/symbol_table.rb +1 -4
  22. data/lib/ronin/code/token.rb +1 -4
  23. data/lib/ronin/config.rb +31 -10
  24. data/lib/ronin/database.rb +1 -4
  25. data/lib/ronin/database/database.rb +42 -23
  26. data/lib/ronin/database/exceptions.rb +1 -4
  27. data/lib/ronin/database/exceptions/invalid_config.rb +1 -4
  28. data/lib/ronin/environment.rb +1 -5
  29. data/lib/ronin/extensions.rb +1 -5
  30. data/lib/ronin/extensions/array.rb +8 -6
  31. data/lib/ronin/extensions/file.rb +9 -4
  32. data/lib/ronin/extensions/ip_addr.rb +33 -13
  33. data/lib/ronin/extensions/kernel.rb +44 -9
  34. data/lib/ronin/extensions/meta.rb +1 -4
  35. data/lib/ronin/extensions/string.rb +8 -7
  36. data/lib/ronin/extensions/uri.rb +1 -4
  37. data/lib/ronin/extensions/uri/http.rb +1 -48
  38. data/lib/ronin/extensions/uri/query_params.rb +27 -8
  39. data/lib/ronin/formatting.rb +1 -4
  40. data/lib/ronin/formatting/binary.rb +1 -4
  41. data/lib/ronin/formatting/digest.rb +1 -4
  42. data/lib/ronin/formatting/extensions.rb +1 -4
  43. data/lib/ronin/formatting/extensions/binary.rb +1 -4
  44. data/lib/ronin/formatting/extensions/binary/file.rb +3 -28
  45. data/lib/ronin/formatting/extensions/binary/integer.rb +31 -12
  46. data/lib/ronin/formatting/extensions/binary/string.rb +59 -36
  47. data/lib/ronin/formatting/extensions/digest.rb +1 -4
  48. data/lib/ronin/formatting/extensions/digest/string.rb +31 -9
  49. data/lib/ronin/formatting/extensions/http.rb +1 -4
  50. data/lib/ronin/formatting/extensions/http/string.rb +16 -9
  51. data/lib/ronin/formatting/extensions/text.rb +1 -4
  52. data/lib/ronin/formatting/extensions/text/array.rb +17 -7
  53. data/lib/ronin/formatting/extensions/text/string.rb +70 -27
  54. data/lib/ronin/formatting/http.rb +1 -4
  55. data/lib/ronin/formatting/text.rb +1 -4
  56. data/lib/ronin/license.rb +72 -65
  57. data/lib/ronin/model.rb +1 -4
  58. data/lib/ronin/model/has_description.rb +37 -8
  59. data/lib/ronin/model/has_license.rb +12 -8
  60. data/lib/ronin/model/has_name.rb +10 -7
  61. data/lib/ronin/model/has_version.rb +14 -4
  62. data/lib/ronin/model/model.rb +71 -14
  63. data/lib/ronin/network.rb +1 -4
  64. data/lib/ronin/network/esmtp.rb +1 -4
  65. data/lib/ronin/network/extensions.rb +1 -4
  66. data/lib/ronin/network/extensions/esmtp.rb +1 -4
  67. data/lib/ronin/network/extensions/esmtp/net.rb +49 -21
  68. data/lib/ronin/network/extensions/http.rb +1 -4
  69. data/lib/ronin/network/extensions/http/net.rb +319 -531
  70. data/lib/ronin/network/extensions/imap.rb +1 -4
  71. data/lib/ronin/network/extensions/imap/net.rb +50 -23
  72. data/lib/ronin/network/extensions/pop3.rb +1 -4
  73. data/lib/ronin/network/extensions/pop3/net.rb +40 -17
  74. data/lib/ronin/network/extensions/smtp.rb +1 -4
  75. data/lib/ronin/network/extensions/smtp/net.rb +49 -21
  76. data/lib/ronin/network/extensions/tcp.rb +1 -4
  77. data/lib/ronin/network/extensions/tcp/net.rb +234 -31
  78. data/lib/ronin/network/extensions/telnet.rb +1 -4
  79. data/lib/ronin/network/extensions/telnet/net.rb +83 -51
  80. data/lib/ronin/network/extensions/udp.rb +1 -4
  81. data/lib/ronin/network/extensions/udp/net.rb +164 -27
  82. data/lib/ronin/{sessions.rb → network/helpers.rb} +10 -13
  83. data/lib/ronin/network/helpers/esmtp.rb +129 -0
  84. data/lib/ronin/{sessions/session.rb → network/helpers/helper.rb} +25 -17
  85. data/lib/ronin/network/helpers/http.rb +444 -0
  86. data/lib/ronin/network/helpers/imap.rb +115 -0
  87. data/lib/ronin/network/helpers/pop3.rb +110 -0
  88. data/lib/ronin/network/helpers/smtp.rb +123 -0
  89. data/lib/ronin/network/helpers/tcp.rb +309 -0
  90. data/lib/ronin/network/helpers/telnet.rb +158 -0
  91. data/lib/ronin/network/helpers/udp.rb +197 -0
  92. data/lib/ronin/network/http.rb +3 -156
  93. data/lib/ronin/network/http/exceptions.rb +1 -4
  94. data/lib/ronin/network/http/exceptions/unknown_request.rb +1 -4
  95. data/lib/ronin/network/http/http.rb +214 -0
  96. data/lib/ronin/network/http/proxy.rb +308 -0
  97. data/lib/ronin/network/imap.rb +7 -6
  98. data/lib/ronin/network/pop3.rb +7 -6
  99. data/lib/ronin/network/smtp.rb +1 -4
  100. data/lib/ronin/network/smtp/email.rb +34 -18
  101. data/lib/ronin/network/smtp/smtp.rb +19 -7
  102. data/lib/ronin/network/tcp.rb +1 -4
  103. data/lib/ronin/network/telnet.rb +25 -12
  104. data/lib/ronin/network/udp.rb +1 -4
  105. data/lib/ronin/os.rb +43 -21
  106. data/lib/ronin/path.rb +29 -9
  107. data/lib/ronin/platform.rb +1 -4
  108. data/lib/ronin/platform/exceptions.rb +1 -4
  109. data/lib/ronin/platform/exceptions/extension_not_found.rb +1 -4
  110. data/lib/ronin/platform/exceptions/overlay_cached.rb +1 -4
  111. data/lib/ronin/platform/exceptions/overlay_not_found.rb +1 -4
  112. data/lib/ronin/platform/extension.rb +195 -52
  113. data/lib/ronin/platform/extension_cache.rb +60 -24
  114. data/lib/ronin/platform/maintainer.rb +15 -8
  115. data/lib/ronin/platform/object_cache.rb +29 -8
  116. data/lib/ronin/platform/overlay.rb +82 -26
  117. data/lib/ronin/platform/overlay_cache.rb +179 -56
  118. data/lib/ronin/platform/platform.rb +154 -58
  119. data/lib/ronin/platform/ronin.rb +38 -11
  120. data/lib/ronin/product.rb +17 -17
  121. data/lib/ronin/rpc.rb +1 -4
  122. data/lib/ronin/rpc/call.rb +1 -4
  123. data/lib/ronin/rpc/client.rb +1 -4
  124. data/lib/ronin/rpc/console.rb +1 -4
  125. data/lib/ronin/rpc/exceptions.rb +1 -4
  126. data/lib/ronin/rpc/exceptions/not_implemented.rb +1 -4
  127. data/lib/ronin/rpc/exceptions/response_missing.rb +1 -4
  128. data/lib/ronin/rpc/response.rb +1 -4
  129. data/lib/ronin/rpc/service.rb +1 -4
  130. data/lib/ronin/rpc/shell.rb +1 -4
  131. data/lib/ronin/scanners.rb +1 -4
  132. data/lib/ronin/scanners/exceptions.rb +1 -4
  133. data/lib/ronin/scanners/exceptions/unknown_category.rb +1 -4
  134. data/lib/ronin/scanners/scanner.rb +82 -26
  135. data/lib/ronin/static.rb +1 -4
  136. data/lib/ronin/static/finders.rb +1 -4
  137. data/lib/ronin/static/static.rb +16 -7
  138. data/lib/ronin/templates.rb +2 -4
  139. data/lib/ronin/templates/erb.rb +24 -10
  140. data/lib/ronin/templates/template.rb +130 -0
  141. data/lib/ronin/ui.rb +2 -6
  142. data/lib/ronin/ui/command_line.rb +1 -4
  143. data/lib/ronin/ui/command_line/command.rb +137 -68
  144. data/lib/ronin/ui/command_line/command_line.rb +52 -29
  145. data/lib/ronin/ui/command_line/commands/add.rb +39 -67
  146. data/lib/ronin/ui/command_line/commands/console.rb +23 -27
  147. data/lib/ronin/ui/command_line/commands/help.rb +10 -29
  148. data/lib/ronin/ui/command_line/commands/install.rb +31 -56
  149. data/lib/ronin/ui/command_line/commands/list.rb +34 -52
  150. data/lib/ronin/ui/command_line/commands/remove.rb +12 -32
  151. data/lib/ronin/ui/command_line/commands/uninstall.rb +11 -31
  152. data/lib/ronin/ui/command_line/commands/update.rb +15 -35
  153. data/lib/ronin/ui/command_line/exceptions.rb +1 -4
  154. data/lib/ronin/ui/command_line/exceptions/unknown_command.rb +1 -4
  155. data/lib/ronin/ui/console.rb +54 -23
  156. data/lib/ronin/ui/hexdump.rb +1 -4
  157. data/lib/ronin/ui/hexdump/extensions.rb +1 -4
  158. data/lib/ronin/ui/hexdump/extensions/file.rb +8 -6
  159. data/lib/ronin/ui/hexdump/extensions/kernel.rb +4 -5
  160. data/lib/ronin/ui/hexdump/hexdump.rb +8 -5
  161. data/lib/ronin/{sessions/exceptions.rb → ui/output.rb} +3 -5
  162. data/lib/ronin/ui/output/handler.rb +121 -0
  163. data/lib/ronin/ui/output/helpers.rb +110 -0
  164. data/lib/ronin/ui/output/output.rb +144 -0
  165. data/lib/ronin/ui/shell.rb +38 -12
  166. data/lib/ronin/version.rb +2 -5
  167. data/lib/ronin/{sessions/exceptions/variable_missing.rb → yard.rb} +2 -10
  168. data/lib/ronin/{ronin.rb → yard/handlers.rb} +5 -15
  169. data/lib/ronin/yard/handlers/ruby.rb +27 -0
  170. data/lib/ronin/yard/handlers/ruby/base.rb +27 -0
  171. data/lib/ronin/yard/handlers/ruby/belongs_to_handler.rb +45 -0
  172. data/lib/ronin/yard/handlers/ruby/eval_block_handler.rb +18 -0
  173. data/lib/ronin/yard/handlers/ruby/has_handler.rb +49 -0
  174. data/lib/ronin/yard/handlers/ruby/legacy.rb +26 -0
  175. data/lib/ronin/yard/handlers/ruby/legacy/belongs_to_handler.rb +41 -0
  176. data/lib/ronin/yard/handlers/ruby/legacy/eval_block_handler.rb +19 -0
  177. data/lib/ronin/yard/handlers/ruby/legacy/has_handler.rb +34 -0
  178. data/lib/ronin/yard/handlers/ruby/legacy/metaclass_eval_handler.rb +21 -0
  179. data/lib/ronin/yard/handlers/ruby/legacy/property_handler.rb +41 -0
  180. data/lib/ronin/yard/handlers/ruby/legacy/scanner_handler.rb +61 -0
  181. data/lib/ronin/yard/handlers/ruby/metaclass_eval_handler.rb +18 -0
  182. data/lib/ronin/yard/handlers/ruby/property_handler.rb +45 -0
  183. data/lib/ronin/yard/handlers/ruby/scanner_handler.rb +66 -0
  184. data/spec/author_spec.rb +3 -3
  185. data/spec/extensions/classes/some_class.rb +2 -0
  186. data/spec/extensions/kernel_spec.rb +17 -0
  187. data/spec/extensions/uri/http_spec.rb +0 -31
  188. data/spec/formatting/binary/integer_spec.rb +4 -0
  189. data/spec/formatting/text/string_spec.rb +96 -0
  190. data/spec/license_spec.rb +6 -6
  191. data/spec/model/classes/basic_model.rb +13 -0
  192. data/spec/model/classes/custom_model.rb +17 -0
  193. data/spec/model/classes/described_model.rb +10 -0
  194. data/spec/model/has_description_spec.rb +42 -0
  195. data/spec/model/has_license_spec.rb +18 -4
  196. data/spec/model/model_spec.rb +68 -0
  197. data/spec/network/helpers/classes/test_helper.rb +11 -0
  198. data/spec/network/helpers/classes/uses_test_helper.rb +10 -0
  199. data/spec/network/helpers/helper_spec.rb +25 -0
  200. data/spec/network/{http_spec.rb → http/http_spec.rb} +0 -0
  201. data/spec/network/http/proxy_spec.rb +116 -0
  202. data/spec/os_spec.rb +4 -4
  203. data/spec/platform/extension_cache_spec.rb +14 -0
  204. data/spec/platform/extension_spec.rb +11 -0
  205. data/spec/platform/platform_spec.rb +8 -0
  206. data/spec/product_spec.rb +9 -9
  207. data/spec/spec_helper.rb +1 -1
  208. data/spec/templates/classes/{uses_erb.rb → example_erb.rb} +1 -1
  209. data/spec/templates/classes/example_template.rb +21 -0
  210. data/spec/templates/erb_spec.rb +2 -2
  211. data/spec/templates/helpers/static.rb +5 -0
  212. data/spec/templates/helpers/static/templates/_relative.erb +1 -0
  213. data/spec/templates/helpers/static/templates/example.erb +1 -0
  214. data/spec/templates/template_spec.rb +41 -0
  215. data/spec/ui/command_line/classes/test_command.rb +23 -0
  216. data/spec/ui/command_line/command_spec.rb +31 -0
  217. data/spec/ui/output_spec.rb +29 -0
  218. data/static/ronin/platform/overlay.xsl +135 -114
  219. data/tasks/spec.rb +1 -0
  220. data/tasks/yard.rb +18 -0
  221. metadata +98 -59
  222. metadata.gz.sig +0 -0
  223. data/TODO.txt +0 -15
  224. data/lib/ronin/extensions/hash.rb +0 -62
  225. data/lib/ronin/sessions/esmtp.rb +0 -57
  226. data/lib/ronin/sessions/http.rb +0 -678
  227. data/lib/ronin/sessions/imap.rb +0 -54
  228. data/lib/ronin/sessions/pop3.rb +0 -52
  229. data/lib/ronin/sessions/smtp.rb +0 -57
  230. data/lib/ronin/sessions/tcp.rb +0 -100
  231. data/lib/ronin/sessions/telnet.rb +0 -55
  232. data/lib/ronin/sessions/udp.rb +0 -73
  233. data/lib/ronin/ui/command_line/options.rb +0 -136
  234. data/lib/ronin/ui/diagnostics.rb +0 -66
  235. data/lib/ronin/ui/verbose.rb +0 -58
  236. data/spec/extensions/hash_spec.rb +0 -38
  237. data/spec/sessions/classes/test_session.rb +0 -11
  238. data/spec/sessions/classes/uses_test_session.rb +0 -10
  239. data/spec/sessions/session_spec.rb +0 -25
  240. data/spec/ui/verbose_spec.rb +0 -17
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,7 +16,6 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  require 'ronin/ui/hexdump/hexdump'
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,7 +16,6 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  require 'ronin/ui/hexdump/extensions/file'
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,7 +16,6 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  require 'ronin/ui/hexdump/hexdump'
@@ -26,8 +23,13 @@ require 'ronin/ui/hexdump/hexdump'
26
23
  class File
27
24
 
28
25
  #
29
- # Hexdumps the contents of the File at the specified _path_
30
- # to the given _output_ stream.
26
+ # Hexdumps the contents of the File.
27
+ #
28
+ # @param [String] path
29
+ # The path to the File to hexdump.
30
+ #
31
+ # @param [IO] output
32
+ # The output stream to print the hexdump to.
31
33
  #
32
34
  def self.hexdump(path,output=STDOUT)
33
35
  self.open(path) do |file|
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,14 +16,15 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  require 'ronin/ui/hexdump/hexdump'
25
22
 
26
23
  module Kernel
27
24
  #
28
- # Hexdumps the specified _object_ to the given _output_ stream.
25
+ # Hexdumps an object.
26
+ #
27
+ # @see Ronin::UI::Hexdump.dump
29
28
  #
30
29
  def hexdump(object,output=STDOUT)
31
30
  Ronin::UI::Hexdump.dump(object,output)
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A Ruby platform designed for information security and data
4
- # exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,14 +16,19 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
21
  module Ronin
25
22
  module UI
26
23
  module Hexdump
27
24
  #
28
- # Hexdumps the specified _object_ to the given _output_ stream.
25
+ # Hexdumps an object.
26
+ #
27
+ # @param [#each_byte] object
28
+ # The object to hexdump, must respond to the +each_byte+ method.
29
+ #
30
+ # @param [IO] output
31
+ # The output stream to print the hexdump to.
29
32
  #
30
33
  def Hexdump.dump(object,output=STDOUT)
31
34
  index = 0
@@ -1,7 +1,5 @@
1
1
  #
2
- #--
3
- # Ronin - A ruby development platform designed for information security
4
- # and data exploration tasks.
2
+ # Ronin - A Ruby platform for exploit development and security research.
5
3
  #
6
4
  # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
5
  #
@@ -18,7 +16,7 @@
18
16
  # You should have received a copy of the GNU General Public License
19
17
  # along with this program; if not, write to the Free Software
20
18
  # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
- #++
22
19
  #
23
20
 
24
- require 'ronin/sessions/exceptions/variable_missing'
21
+ require 'ronin/ui/output/output'
22
+ require 'ronin/ui/output/helpers'
@@ -0,0 +1,121 @@
1
+ #
2
+ # Ronin - A Ruby platform for exploit development and security research.
3
+ #
4
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ #
6
+ # This program is free software; you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation; either version 2 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # This program is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with this program; if not, write to the Free Software
18
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
+ #
20
+
21
+ require 'thor/shell/basic'
22
+ require 'thor/shell/color'
23
+
24
+ module Ronin
25
+ module UI
26
+ module Output
27
+ module Handler
28
+ #
29
+ # The shell to use for output.
30
+ #
31
+ # @since 0.3.0
32
+ #
33
+ def self.shell
34
+ @@ronin_output_shell ||= Thor::Shell::Color.new
35
+ end
36
+
37
+ #
38
+ # Changes color output.
39
+ #
40
+ # @param [Boolean] mode
41
+ # The new color mode.
42
+ #
43
+ # @return [Boolean]
44
+ # The new color mode.
45
+ #
46
+ # @since 0.3.0
47
+ #
48
+ def Handler.color=(mode)
49
+ if mode
50
+ @@ronin_output_shell = Thor::Shell::Color.new
51
+ else
52
+ @@ronin_output_shell = Thor::Shell::Basic.new
53
+ end
54
+
55
+ return mode
56
+ end
57
+
58
+ #
59
+ # Prints one or more messages.
60
+ #
61
+ # @param [Array] messages
62
+ # The messages to print.
63
+ #
64
+ # @since 0.3.0
65
+ #
66
+ def self.puts(*messages)
67
+ Kernel.puts(*messages)
68
+ end
69
+
70
+ #
71
+ # Prints one or more messages as +info+ messages.
72
+ #
73
+ # @param [Array] messages
74
+ # The messages to print.
75
+ #
76
+ # @since 0.3.0
77
+ #
78
+ def self.print_info(*messages)
79
+ shell.say messages.map { |mesg| "[-] #{mesg}" }.join($/), :green
80
+ end
81
+
82
+ #
83
+ # Prints one or more messages as +debug+ mssages.
84
+ #
85
+ # @param [Array] messages
86
+ # The messages to print.
87
+ #
88
+ # @since 0.3.0
89
+ #
90
+ def self.print_debug(*messages)
91
+ shell.say messages.map { |mesg| "[+] #{mesg}" }.join($/), :cyan
92
+ end
93
+
94
+ #
95
+ # Prints one or more messages as +warning+ mssages.
96
+ #
97
+ # @param [Array] messages
98
+ # The messages to print.
99
+ #
100
+ # @since 0.3.0
101
+ #
102
+ def self.print_warning(*messages)
103
+ shell.say messages.map { |mesg| "[*] #{mesg}" }.join($/), :yellow
104
+ end
105
+
106
+ #
107
+ # Prints one or more messages as +error+ mssages.
108
+ #
109
+ # @param [Array] messages
110
+ # The messages to print.
111
+ #
112
+ # @since 0.3.0
113
+ #
114
+ def self.print_error(*messages)
115
+ shell.say messages.map { |mesg| "[!] #{mesg}" }.join($/), :red
116
+ end
117
+
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,110 @@
1
+ #
2
+ # Ronin - A Ruby platform for exploit development and security research.
3
+ #
4
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ #
6
+ # This program is free software; you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation; either version 2 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # This program is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with this program; if not, write to the Free Software
18
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
+ #
20
+
21
+ require 'ronin/ui/output/output'
22
+
23
+ module Ronin
24
+ module UI
25
+ module Output
26
+ module Helpers
27
+ protected
28
+
29
+ #
30
+ # Prints one or more messages.
31
+ #
32
+ # @param [Array] messages
33
+ # The messages to print.
34
+ #
35
+ # @example
36
+ # puts 'some data'
37
+ #
38
+ # @since 0.3.0
39
+ #
40
+ def puts(*messages)
41
+ Output.handler.puts(*messages) unless Output.silent?
42
+ end
43
+
44
+ #
45
+ # Prints one or more messages as +info+ output.
46
+ #
47
+ # @param [Array] messages
48
+ # The messages to print.
49
+ #
50
+ # @example
51
+ # print_info 'Connecting ...'
52
+ #
53
+ # @since 0.3.0
54
+ #
55
+ def print_info(*messages)
56
+ Output.handler.print_info(*messages) unless Output.silent?
57
+ end
58
+
59
+ #
60
+ # Prints one or more messages as +debug+ output.
61
+ #
62
+ # @param [Array] messages
63
+ # The messages to print.
64
+ #
65
+ # @example
66
+ # print_debug "var1: #{var1.inspect}"
67
+ #
68
+ # @since 0.3.0
69
+ #
70
+ def print_debug(*messages)
71
+ if (Output.verbose? && !(Output.silent?))
72
+ Output.handler.print_debug(*messages)
73
+ end
74
+ end
75
+
76
+ #
77
+ # Prints one or more messages as +warning+ output.
78
+ #
79
+ # @param [Array] messages
80
+ # The messages to print.
81
+ #
82
+ # @example
83
+ # print_warning 'Detecting a restricted character in the buffer'
84
+ #
85
+ # @since 0.3.0
86
+ #
87
+ def print_warning(*messages)
88
+ if (Output.verbose? && !(Output.silent?))
89
+ Output.handler.print_warning(*messages)
90
+ end
91
+ end
92
+
93
+ #
94
+ # Prints one or more messages as +error+ output.
95
+ #
96
+ # @param [Array] messages
97
+ # The messages to print.
98
+ #
99
+ # @example
100
+ # print_error 'Could not connect!'
101
+ #
102
+ # @since 0.3.0
103
+ #
104
+ def print_error(*messages)
105
+ Output.handler.print_error(*messages) unless Output.silent?
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,144 @@
1
+ #
2
+ # Ronin - A Ruby platform for exploit development and security research.
3
+ #
4
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
5
+ #
6
+ # This program is free software; you can redistribute it and/or modify
7
+ # it under the terms of the GNU General Public License as published by
8
+ # the Free Software Foundation; either version 2 of the License, or
9
+ # (at your option) any later version.
10
+ #
11
+ # This program is distributed in the hope that it will be useful,
12
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
13
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
+ # GNU General Public License for more details.
15
+ #
16
+ # You should have received a copy of the GNU General Public License
17
+ # along with this program; if not, write to the Free Software
18
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
+ #
20
+
21
+ require 'ronin/ui/output/handler'
22
+
23
+ module Ronin
24
+ module UI
25
+ module Output
26
+ #
27
+ # @return [Boolean]
28
+ # Specifies whether verbose output is enabled.
29
+ #
30
+ # @since 0.3.0
31
+ #
32
+ def Output.verbose?
33
+ (@@ronin_verbose ||= :quiet) == :verbose
34
+ end
35
+
36
+ #
37
+ # @return [Boolean]
38
+ # Specifies whether quiet output is enabled.
39
+ #
40
+ # @since 0.3.0
41
+ #
42
+ def Output.quiet?
43
+ (@@ronin_verbose ||= :quiet) == :quiet
44
+ end
45
+
46
+ #
47
+ # @return [Boolean]
48
+ # Specifies whether silent output is enabled.
49
+ #
50
+ # @since 0.3.0
51
+ #
52
+ def Output.silent?
53
+ (@@ronin_verbose ||= :quiet) == :silent
54
+ end
55
+
56
+ #
57
+ # Changes the verbose mode.
58
+ #
59
+ # @param [Boolean] mode
60
+ # The new verbose mode.
61
+ #
62
+ # @return [Boolean]
63
+ # The new verbose mode.
64
+ #
65
+ # @since 0.3.0
66
+ #
67
+ def Output.verbose=(mode)
68
+ if mode
69
+ @@ronin_verbose = :verbose
70
+ else
71
+ @@ronin_verbose = :quiet
72
+ end
73
+
74
+ return mode
75
+ end
76
+
77
+ #
78
+ # Changes verbose output.
79
+ #
80
+ # @param [Boolean] mode
81
+ # The new quiet mode.
82
+ #
83
+ # @return [Boolean]
84
+ # The new quiet mode.
85
+ #
86
+ # @since 0.3.0
87
+ #
88
+ def Output.quiet=(mode)
89
+ if mode
90
+ @@ronin_verbose = :quiet
91
+ else
92
+ @@ronin_verbose = :verbose
93
+ end
94
+
95
+ return mode
96
+ end
97
+
98
+ #
99
+ # Changes verbose output.
100
+ #
101
+ # @param [Boolean] mode
102
+ # The new quiet mode.
103
+ #
104
+ # @return [Boolean]
105
+ # The new quiet mode.
106
+ #
107
+ # @since 0.3.0
108
+ #
109
+ def Output.silent=(mode)
110
+ if mode
111
+ @@ronin_verbose = :silent
112
+ else
113
+ @@ronin_verbose = :quiet
114
+ end
115
+
116
+ return mode
117
+ end
118
+
119
+ #
120
+ # @return [Ronin::UI::Output::Handler]
121
+ # The current Output handler.
122
+ #
123
+ # @since 0.3.0
124
+ #
125
+ def Output.handler
126
+ @@ronin_output ||= Handler
127
+ end
128
+
129
+ #
130
+ # Sets the current Output handler.
131
+ #
132
+ # @param [Handler] new_handler
133
+ # The new output handler to use. Must provide the +puts+,
134
+ # +print_info+, +print_debug+, +print_warning+ and +print_error+
135
+ # class methods.
136
+ #
137
+ # @since 0.3.0
138
+ #
139
+ def Output.handler=(new_handler)
140
+ @@ronin_output = new_handler
141
+ end
142
+ end
143
+ end
144
+ end