ronin 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. data/History.txt +58 -25
  2. data/Manifest.txt +15 -16
  3. data/README.txt +16 -11
  4. data/Rakefile +9 -7
  5. data/TODO.txt +6 -1
  6. data/lib/ronin.rb +1 -1
  7. data/lib/ronin/arch.rb +7 -15
  8. data/lib/ronin/author.rb +1 -1
  9. data/lib/ronin/cache.rb +1 -1
  10. data/lib/ronin/cache/cache.rb +1 -1
  11. data/lib/ronin/cache/config.rb +1 -1
  12. data/lib/ronin/cache/exceptions.rb +1 -1
  13. data/lib/ronin/cache/exceptions/extension_not_found.rb +1 -1
  14. data/lib/ronin/cache/exceptions/overlay_cached.rb +1 -1
  15. data/lib/ronin/cache/exceptions/overlay_not_found.rb +1 -1
  16. data/lib/ronin/cache/extension.rb +15 -190
  17. data/lib/ronin/cache/extension_cache.rb +2 -2
  18. data/lib/ronin/cache/maintainer.rb +1 -1
  19. data/lib/ronin/cache/overlay.rb +8 -7
  20. data/lib/ronin/cache/overlay_cache.rb +1 -1
  21. data/lib/ronin/cache/ronin.rb +1 -1
  22. data/lib/ronin/chars.rb +1 -1
  23. data/lib/ronin/chars/char_set.rb +1 -1
  24. data/lib/ronin/chars/chars.rb +1 -1
  25. data/lib/ronin/code/emittable.rb +1 -1
  26. data/lib/ronin/code/reference.rb +1 -1
  27. data/lib/ronin/code/symbol_table.rb +1 -1
  28. data/lib/ronin/code/token.rb +1 -1
  29. data/lib/ronin/config.rb +16 -9
  30. data/lib/ronin/database.rb +2 -113
  31. data/lib/ronin/database/database.rb +124 -0
  32. data/lib/ronin/{exceptions/unknown_context.rb → database/exceptions.rb} +2 -5
  33. data/lib/ronin/{exceptions/context_not_found.rb → database/exceptions/invalid_config.rb} +4 -2
  34. data/lib/ronin/extensions.rb +1 -1
  35. data/lib/ronin/extensions/hash.rb +1 -1
  36. data/lib/ronin/extensions/meta.rb +1 -1
  37. data/lib/ronin/extensions/string.rb +1 -1
  38. data/lib/ronin/extensions/uri.rb +1 -1
  39. data/lib/ronin/extensions/uri/http.rb +1 -1
  40. data/lib/ronin/extensions/uri/query_params.rb +1 -1
  41. data/lib/ronin/formatting.rb +1 -1
  42. data/lib/ronin/formatting/binary.rb +1 -1
  43. data/lib/ronin/formatting/digest.rb +1 -1
  44. data/lib/ronin/formatting/extensions.rb +1 -1
  45. data/lib/ronin/formatting/extensions/binary.rb +1 -1
  46. data/lib/ronin/formatting/extensions/binary/integer.rb +1 -1
  47. data/lib/ronin/formatting/extensions/binary/string.rb +1 -1
  48. data/lib/ronin/formatting/extensions/digest.rb +1 -1
  49. data/lib/ronin/formatting/extensions/digest/string.rb +1 -1
  50. data/lib/ronin/formatting/extensions/html.rb +1 -1
  51. data/lib/ronin/formatting/extensions/html/string.rb +1 -1
  52. data/lib/ronin/formatting/extensions/http.rb +1 -1
  53. data/lib/ronin/formatting/extensions/http/string.rb +1 -1
  54. data/lib/ronin/formatting/extensions/text.rb +1 -1
  55. data/lib/ronin/formatting/extensions/text/string.rb +1 -1
  56. data/lib/ronin/formatting/html.rb +1 -1
  57. data/lib/ronin/formatting/http.rb +1 -1
  58. data/lib/ronin/formatting/text.rb +1 -1
  59. data/lib/ronin/{pending_context.rb → has_license.rb} +21 -22
  60. data/lib/ronin/hexdump.rb +1 -1
  61. data/lib/ronin/hexdump/extensions.rb +1 -1
  62. data/lib/ronin/hexdump/extensions/file.rb +1 -1
  63. data/lib/ronin/hexdump/extensions/kernel.rb +1 -1
  64. data/lib/ronin/hexdump/hexdump.rb +1 -1
  65. data/lib/ronin/license.rb +10 -15
  66. data/lib/ronin/model.rb +14 -12
  67. data/lib/ronin/models.rb +2 -2
  68. data/lib/ronin/network.rb +1 -1
  69. data/lib/ronin/network/esmtp.rb +1 -1
  70. data/lib/ronin/network/extensions.rb +1 -1
  71. data/lib/ronin/network/extensions/esmtp.rb +1 -1
  72. data/lib/ronin/network/extensions/esmtp/net.rb +1 -1
  73. data/lib/ronin/network/extensions/http.rb +1 -1
  74. data/lib/ronin/network/extensions/http/net.rb +1 -1
  75. data/lib/ronin/network/extensions/imap.rb +1 -1
  76. data/lib/ronin/network/extensions/imap/net.rb +1 -1
  77. data/lib/ronin/network/extensions/pop3.rb +1 -1
  78. data/lib/ronin/network/extensions/pop3/net.rb +1 -1
  79. data/lib/ronin/network/extensions/smtp.rb +1 -1
  80. data/lib/ronin/network/extensions/smtp/net.rb +1 -1
  81. data/lib/ronin/network/extensions/tcp.rb +1 -1
  82. data/lib/ronin/network/extensions/tcp/net.rb +17 -1
  83. data/lib/ronin/network/extensions/telnet.rb +1 -1
  84. data/lib/ronin/network/extensions/telnet/net.rb +1 -1
  85. data/lib/ronin/network/extensions/udp.rb +1 -1
  86. data/lib/ronin/network/extensions/udp/net.rb +1 -1
  87. data/lib/ronin/network/http.rb +1 -1
  88. data/lib/ronin/network/http/exceptions.rb +1 -1
  89. data/lib/ronin/network/http/exceptions/unknown_request.rb +1 -1
  90. data/lib/ronin/network/imap.rb +1 -1
  91. data/lib/ronin/network/pop3.rb +1 -1
  92. data/lib/ronin/network/smtp.rb +1 -1
  93. data/lib/ronin/network/smtp/email.rb +1 -1
  94. data/lib/ronin/network/smtp/smtp.rb +1 -1
  95. data/lib/ronin/network/tcp.rb +1 -1
  96. data/lib/ronin/network/telnet.rb +1 -1
  97. data/lib/ronin/network/udp.rb +1 -1
  98. data/lib/ronin/objectify.rb +24 -0
  99. data/lib/ronin/{exceptions/invalid_database_config.rb → objectify/exceptions.rb} +3 -5
  100. data/lib/ronin/{exceptions → objectify/exceptions}/object_context_not_found.rb +1 -1
  101. data/lib/ronin/{exceptions → objectify/exceptions}/unknown_object_context.rb +1 -1
  102. data/lib/ronin/{object_context.rb → objectify/objectify.rb} +54 -45
  103. data/lib/ronin/path.rb +1 -1
  104. data/lib/ronin/platform.rb +3 -1
  105. data/lib/ronin/product.rb +2 -1
  106. data/lib/ronin/ronin.rb +10 -10
  107. data/lib/ronin/rpc.rb +1 -1
  108. data/lib/ronin/rpc/call.rb +1 -1
  109. data/lib/ronin/rpc/client.rb +1 -1
  110. data/lib/ronin/rpc/console.rb +1 -1
  111. data/lib/ronin/rpc/exceptions.rb +1 -1
  112. data/lib/ronin/rpc/exceptions/not_implemented.rb +1 -1
  113. data/lib/ronin/rpc/exceptions/response_missing.rb +1 -1
  114. data/lib/ronin/rpc/response.rb +1 -1
  115. data/lib/ronin/rpc/service.rb +1 -1
  116. data/lib/ronin/rpc/shell.rb +1 -1
  117. data/lib/ronin/sessions.rb +1 -1
  118. data/lib/ronin/sessions/esmtp.rb +6 -8
  119. data/lib/ronin/sessions/http.rb +1 -1
  120. data/lib/ronin/sessions/imap.rb +6 -8
  121. data/lib/ronin/sessions/pop3.rb +6 -8
  122. data/lib/ronin/sessions/session.rb +1 -1
  123. data/lib/ronin/sessions/smtp.rb +6 -8
  124. data/lib/ronin/sessions/tcp.rb +48 -36
  125. data/lib/ronin/sessions/telnet.rb +7 -10
  126. data/lib/ronin/sessions/udp.rb +28 -29
  127. data/lib/ronin/sessions/web.rb +5 -7
  128. data/lib/ronin/target.rb +1 -0
  129. data/lib/ronin/translators/translator.rb +1 -1
  130. data/lib/ronin/ui/command_line.rb +1 -1
  131. data/lib/ronin/ui/command_line/command.rb +1 -1
  132. data/lib/ronin/ui/command_line/command_line.rb +7 -2
  133. data/lib/ronin/ui/command_line/commands.rb +2 -2
  134. data/lib/ronin/ui/command_line/commands/add.rb +8 -8
  135. data/lib/ronin/ui/command_line/commands/default.rb +1 -1
  136. data/lib/ronin/ui/command_line/commands/extension.rb +13 -26
  137. data/lib/ronin/ui/command_line/commands/help.rb +1 -1
  138. data/lib/ronin/ui/command_line/commands/install.rb +7 -7
  139. data/lib/ronin/ui/command_line/commands/list.rb +13 -7
  140. data/lib/ronin/ui/command_line/commands/overlay.rb +1 -1
  141. data/lib/ronin/ui/command_line/commands/remove.rb +4 -4
  142. data/lib/ronin/ui/command_line/commands/uninstall.rb +4 -4
  143. data/lib/ronin/ui/command_line/commands/update.rb +3 -3
  144. data/lib/ronin/ui/command_line/exceptions.rb +1 -1
  145. data/lib/ronin/ui/command_line/exceptions/unknown_command.rb +1 -1
  146. data/lib/ronin/ui/command_line/options.rb +1 -1
  147. data/lib/ronin/ui/command_line/param_parser.rb +73 -0
  148. data/lib/ronin/ui/console.rb +1 -1
  149. data/lib/ronin/ui/shell.rb +1 -1
  150. data/lib/ronin/version.rb +2 -2
  151. data/lib/ronin/web.rb +1 -1
  152. data/lib/ronin/web/web.rb +1 -1
  153. data/spec/chars/char_set_spec.rb +116 -118
  154. data/spec/chars/chars_spec.rb +54 -63
  155. data/spec/formatting/{binary_spec.rb → binary/integer_spec.rb} +0 -19
  156. data/spec/formatting/binary/string_spec.rb +32 -0
  157. data/spec/{object_context/object_context_spec.rb → objectify/objectify_spec.rb} +5 -3
  158. data/spec/path_spec.rb +21 -23
  159. data/spec/translators/translator_spec.rb +38 -40
  160. data/spec/ui/command_line/param_parser_spec.rb +58 -0
  161. data/static/extension.rb +9 -0
  162. metadata +43 -24
  163. data/lib/ronin/context.rb +0 -236
  164. data/spec/context/context_spec.rb +0 -84
  165. data/spec/context/helpers/book_context.rb +0 -15
  166. data/spec/context/helpers/book_review_context.rb +0 -21
  167. data/spec/context/helpers/contexts/neuromancer_review.rb +0 -15
  168. data/spec/context/helpers/contexts/snow_crash.rb +0 -8
  169. data/static/extension.rb.erb +0 -16
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2008 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -101,7 +101,12 @@ module Ronin
101
101
  argv = argv[1..-1]
102
102
 
103
103
  if CommandLine.has_command?(cmd)
104
- CommandLine.commands_by_name[cmd].run(*argv)
104
+ begin
105
+ CommandLine.commands_by_name[cmd].run(*argv)
106
+ rescue => excp
107
+ STDERR.puts excp
108
+ exit -1
109
+ end
105
110
  else
106
111
  CommandLine.fail("unknown command #{cmd.dump}")
107
112
  end
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -33,4 +33,4 @@ require 'ronin/ui/command_line/commands/help'
33
33
 
34
34
  require 'reverse_require'
35
35
 
36
- require_all 'ronin/ui/command_line/commands'
36
+ require_for 'ronin', 'ronin/ui/command_line/commands'
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -35,11 +35,11 @@ module Ronin
35
35
  opts.usage = 'PATH [options]'
36
36
 
37
37
  opts.options do
38
- opts.on('-m','--media MEDIA','Spedify the media-type of the repository') do |media|
38
+ opts.on('-m','--media MEDIA','Spedify the media-type of the overlay') do |media|
39
39
  @media = media
40
40
  end
41
41
 
42
- opts.on('-U','--uri URI','Specify the source URI of the repository') do |uri|
42
+ opts.on('-U','--uri URI','Specify the source URI of the overlay') do |uri|
43
43
  @uri = uri
44
44
  end
45
45
 
@@ -49,22 +49,22 @@ module Ronin
49
49
  end
50
50
 
51
51
  opts.arguments(
52
- 'PATH' => 'Add the repository located at the specified PATH'
52
+ 'PATH' => 'Add the overlay located at the specified PATH'
53
53
  )
54
54
 
55
- opts.summary('Add a local repository located at the specified PATH to the repository cache')
55
+ opts.summary('Add a local overlay located at the specified PATH to the Overlay cache')
56
56
  end
57
57
 
58
58
  def arguments(*args)
59
59
  unless args.length == 1
60
- fail('only one repository path maybe specified')
60
+ fail('only one overlay path maybe specified')
61
61
  end
62
62
 
63
63
  path = args.first
64
64
 
65
65
  Cache::Overlay.save_cache do
66
- Cache::Overlay.add(path,@media,@uri) do |repo|
67
- puts "Overlay #{repo} added."
66
+ Cache::Overlay.add(path,@media,@uri) do |overlay|
67
+ puts "Overlay #{overlay.name.dump} added."
68
68
  end
69
69
  end
70
70
  end
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -42,13 +42,7 @@ module Ronin
42
42
  end
43
43
 
44
44
  def define_options(opts)
45
- opts.usage = '[options] PATH'
46
-
47
- opts.options do
48
- opts.on('-u','--uses NAME','Name of an other extension to use') do |name|
49
- @uses << name
50
- end
51
- end
45
+ opts.usage = 'PATH [...]'
52
46
 
53
47
  opts.arguments(
54
48
  'PATH' => 'The PATH of the Extension to be created'
@@ -58,24 +52,17 @@ module Ronin
58
52
  end
59
53
 
60
54
  def arguments(*args)
61
- unless args.length == 1
62
- fail('only one Extension path maybe specified')
63
- end
64
-
65
- path = File.expand_path(args.first)
66
- extension_path = File.join(path,Cache::Extension::EXTENSION_FILE)
67
- lib_dir = File.join(path,Cache::Extension::LIB_DIR)
68
-
69
- FileUtils.mkdir_p(path)
70
- FileUtils.mkdir_p(lib_dir)
71
- FileUtils.touch(File.join(lib_dir,File.basename(path) + '.rb'))
72
- FileUtils.mkdir_p(File.join(lib_dir,File.basename(path)))
73
-
74
- File.open(extension_path,'w') do |file|
75
- template_path = File.join(Config::STATIC_DIR,'extension.rb.erb')
76
- template = ERB.new(File.read(template_path))
77
-
78
- file.write(template.result(binding))
55
+ args.each do |path|
56
+ path = File.expand_path(path)
57
+ extension_path = File.join(path,Cache::Extension::EXTENSION_FILE)
58
+ lib_dir = File.join(path,Cache::Extension::LIB_DIR)
59
+ template_path = File.join(Config::STATIC_DIR,'extension.rb')
60
+
61
+ FileUtils.mkdir_p(path)
62
+ FileUtils.mkdir_p(lib_dir)
63
+ FileUtils.touch(File.join(lib_dir,File.basename(path) + '.rb'))
64
+ FileUtils.mkdir_p(File.join(lib_dir,File.basename(path)))
65
+ FileUtils.cp(template_path,extension_path)
79
66
  end
80
67
  end
81
68
 
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -35,28 +35,28 @@ module Ronin
35
35
  opts.usage = 'URI [options]'
36
36
 
37
37
  opts.options do
38
- opts.on('-m','--media [MEDIA]','Spedify the media-type of the repository') do |media|
38
+ opts.on('-m','--media [MEDIA]','Spedify the media-type of the overlay') do |media|
39
39
  @media = media
40
40
  end
41
41
  end
42
42
 
43
43
  opts.arguments(
44
- 'URI' => 'The URI of the repository to install'
44
+ 'URI' => 'The URI of the overlay to install'
45
45
  )
46
46
 
47
- opts.summary('Installs the repository located at the specified URI')
47
+ opts.summary('Installs the overlay located at the specified URI')
48
48
  end
49
49
 
50
50
  def arguments(args)
51
51
  unless args.length == 1
52
- fail('only one repository URI maybe specified')
52
+ fail('only one overlay URI maybe specified')
53
53
  end
54
54
 
55
55
  uri = args.first
56
56
 
57
57
  Cache::Overlay.save_cache do
58
- Cache::Overlay.install(:uri => uri, :media => @media) do |repo|
59
- puts "Overlay #{repo} has been installed."
58
+ Cache::Overlay.install(:uri => uri, :media => @media) do |overlay|
59
+ puts "Overlay #{overlay.name.dump} has been installed."
60
60
  end
61
61
  end
62
62
  end
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -44,13 +44,13 @@ module Ronin
44
44
  'NAME' => 'Overlay to display'
45
45
  )
46
46
 
47
- opts.summary('Display all or the specified repositories within the repository cache')
47
+ opts.summary('Display all or the specified repositories within the Overlay cache')
48
48
  end
49
49
 
50
50
  def arguments(*args)
51
51
  if args.empty?
52
52
  # list all repositories by name
53
- Cache::Overlay.each { |repo| puts " #{repo}" }
53
+ Cache::Overlay.each { |overlay| puts " #{overlay}" }
54
54
  return
55
55
  end
56
56
 
@@ -77,12 +77,18 @@ module Ronin
77
77
  puts " Website: #{overlay.website}"
78
78
  end
79
79
 
80
- if overlay.description
81
- puts " Description:\n\n #{overlay.description}"
80
+ unless overlay.extensions.empty?
81
+ puts " Extensions:\n\n"
82
+ overlay.each_extension { |ext| puts " #{ext}" }
82
83
  end
83
84
 
84
- puts " Extensions:\n\n"
85
- overlay.each_extension { |ext| puts " #{ext.name}" }
85
+ if overlay.description
86
+ puts " Description:\n\n #{overlay.description}\n\n"
87
+ else
88
+ puts "\n"
89
+ end
90
+ else
91
+ puts "\n"
86
92
  end
87
93
  end
88
94
  end
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -41,7 +41,7 @@ module Ronin
41
41
  end
42
42
 
43
43
  opts.arguments(
44
- 'NAME' => 'The repository to remove'
44
+ 'NAME' => 'The overlay to remove'
45
45
  )
46
46
 
47
47
  opts.summary('Remove the specified repositories')
@@ -50,8 +50,8 @@ module Ronin
50
50
  def arguments(*args)
51
51
  args.each do |name|
52
52
  Cache::Overlay.save_cache do
53
- Cache::Overlay.remove(name) do |repo|
54
- puts "Removing #{repo}..."
53
+ Cache::Overlay.remove(name) do |overlay|
54
+ puts "Removing #{overlay.name.dump} ..."
55
55
  end
56
56
  end
57
57
  end
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -41,7 +41,7 @@ module Ronin
41
41
  end
42
42
 
43
43
  opts.arguments(
44
- 'NAME' => 'The repository to uninstall'
44
+ 'NAME' => 'The overlay to uninstall'
45
45
  )
46
46
 
47
47
  opts.summary('Uninstall the specified repositories')
@@ -50,8 +50,8 @@ module Ronin
50
50
  def arguments(*args)
51
51
  args.each do |name|
52
52
  Cache::Overlay.save_cache do
53
- Cache::Overlay.uninstall(name) do |repo|
54
- puts "Uninstalling #{repo}..."
53
+ Cache::Overlay.uninstall(name) do |overlay|
54
+ puts "Uninstalling #{overlay.name.dump} ..."
55
55
  end
56
56
  end
57
57
  end
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2007 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -41,7 +41,7 @@ module Ronin
41
41
  end
42
42
 
43
43
  opts.arguments(
44
- 'NAME' => 'The repository to update'
44
+ 'NAME' => 'The overlay to update'
45
45
  )
46
46
 
47
47
  opts.summary('Updates all or the specified repositories')
@@ -49,7 +49,7 @@ module Ronin
49
49
 
50
50
  def arguments(*args)
51
51
  if args.empty?
52
- Cache::Overlay.each { |repo| repo.update }
52
+ Cache::Overlay.each { |overlay| overlay.update }
53
53
  else
54
54
  args.each { |name| Cache::Overlay.update(name) }
55
55
  end
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2008 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2008 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -3,7 +3,7 @@
3
3
  # Ronin - A Ruby platform designed for information security and data
4
4
  # exploration tasks.
5
5
  #
6
- # Copyright (c) 2006-2008 Hal Brodigan (postmodern.mod3 at gmail.com)
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
7
  #
8
8
  # This program is free software; you can redistribute it and/or modify
9
9
  # it under the terms of the GNU General Public License as published by
@@ -0,0 +1,73 @@
1
+ #
2
+ #--
3
+ # Ronin - A Ruby platform designed for information security and data
4
+ # exploration tasks.
5
+ #
6
+ # Copyright (c) 2006-2009 Hal Brodigan (postmodern.mod3 at gmail.com)
7
+ #
8
+ # This program is free software; you can redistribute it and/or modify
9
+ # it under the terms of the GNU General Public License as published by
10
+ # the Free Software Foundation; either version 2 of the License, or
11
+ # (at your option) any later version.
12
+ #
13
+ # This program is distributed in the hope that it will be useful,
14
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
+ # GNU General Public License for more details.
17
+ #
18
+ # You should have received a copy of the GNU General Public License
19
+ # along with this program; if not, write to the Free Software
20
+ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
21
+ #++
22
+ #
23
+
24
+ require 'uri'
25
+
26
+ module Ronin
27
+ module UI
28
+ module CommandLine
29
+ module ParamParser
30
+ # Hash of format patterns and their parsers
31
+ FORMATS = {
32
+ /^[0-9]+$/ => lambda { |value| value.to_i },
33
+ /^0x[0-9a-fA-F]+$/ => lambda { |value| value.hex },
34
+ /^[a-zA-Z][a-zA-Z0-9]*:\/\// => lambda { |value| URI(value) },
35
+ 'true' => lambda { |value| true },
36
+ 'false' => lambda { |value| false }
37
+ }
38
+
39
+ # The params Hash
40
+ attr_reader :params
41
+
42
+ #
43
+ # Creates an empty +params+ Hash.
44
+ #
45
+ def initialize
46
+ @params = {}
47
+ end
48
+
49
+ #
50
+ # Parses the specified _name_and_value_ string of the form
51
+ # "name=value" and extracts both the _name_ and the _value_, saving
52
+ # both the _name_ and _value_ within the +params+ Hash. If the
53
+ # extracted _value_ matches one of the patterns within +FORMATS+,
54
+ # then the associated parser will first parse the _value_.
55
+ #
56
+ def parse_param(name_and_value)
57
+ name, value = name_and_value.split('=',2)
58
+
59
+ if value
60
+ FORMATS.each do |pattern,parser|
61
+ if value.match(pattern)
62
+ value = parser.call(value)
63
+ break
64
+ end
65
+ end
66
+ end
67
+
68
+ @params[name.to_sym] = value
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end