ronin 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. data/COPYING.txt +339 -0
  2. data/History.txt +34 -0
  3. data/Manifest.txt +157 -0
  4. data/README.txt +131 -0
  5. data/Rakefile +23 -0
  6. data/TODO.txt +6 -0
  7. data/bin/ronin +12 -0
  8. data/lib/ronin.rb +35 -0
  9. data/lib/ronin/arch.rb +86 -0
  10. data/lib/ronin/author.rb +88 -0
  11. data/lib/ronin/cache.rb +27 -0
  12. data/lib/ronin/cache/config.rb +34 -0
  13. data/lib/ronin/cache/exceptions.rb +25 -0
  14. data/lib/ronin/cache/exceptions/extension_not_found.rb +29 -0
  15. data/lib/ronin/cache/exceptions/overlay_cached.rb +29 -0
  16. data/lib/ronin/cache/exceptions/overlay_not_found.rb +29 -0
  17. data/lib/ronin/cache/extension.rb +706 -0
  18. data/lib/ronin/cache/extension_cache.rb +108 -0
  19. data/lib/ronin/cache/overlay.rb +418 -0
  20. data/lib/ronin/cache/overlay_cache.rb +228 -0
  21. data/lib/ronin/cache/ronin.rb +50 -0
  22. data/lib/ronin/chars.rb +25 -0
  23. data/lib/ronin/chars/char_set.rb +121 -0
  24. data/lib/ronin/chars/chars.rb +180 -0
  25. data/lib/ronin/config.rb +31 -0
  26. data/lib/ronin/console.rb +127 -0
  27. data/lib/ronin/context.rb +233 -0
  28. data/lib/ronin/database.rb +122 -0
  29. data/lib/ronin/environment.rb +39 -0
  30. data/lib/ronin/exceptions/context_not_found.rb +27 -0
  31. data/lib/ronin/exceptions/invalid_database_config.rb +27 -0
  32. data/lib/ronin/exceptions/object_context_not_found.rb +27 -0
  33. data/lib/ronin/exceptions/unknown_context.rb +27 -0
  34. data/lib/ronin/exceptions/unknown_object_context.rb +27 -0
  35. data/lib/ronin/extensions.rb +28 -0
  36. data/lib/ronin/extensions/hash.rb +62 -0
  37. data/lib/ronin/extensions/kernel.rb +34 -0
  38. data/lib/ronin/extensions/meta.rb +24 -0
  39. data/lib/ronin/extensions/meta/object.rb +24 -0
  40. data/lib/ronin/extensions/string.rb +37 -0
  41. data/lib/ronin/extensions/uri.rb +24 -0
  42. data/lib/ronin/extensions/uri/http.rb +78 -0
  43. data/lib/ronin/extensions/uri/query_params.rb +97 -0
  44. data/lib/ronin/formatting.rb +29 -0
  45. data/lib/ronin/formatting/binary.rb +24 -0
  46. data/lib/ronin/formatting/digest.rb +24 -0
  47. data/lib/ronin/formatting/extensions.rb +26 -0
  48. data/lib/ronin/formatting/extensions/binary.rb +25 -0
  49. data/lib/ronin/formatting/extensions/binary/integer.rb +59 -0
  50. data/lib/ronin/formatting/extensions/binary/string.rb +73 -0
  51. data/lib/ronin/formatting/extensions/digest.rb +24 -0
  52. data/lib/ronin/formatting/extensions/digest/string.rb +65 -0
  53. data/lib/ronin/formatting/extensions/html.rb +24 -0
  54. data/lib/ronin/formatting/extensions/html/string.rb +75 -0
  55. data/lib/ronin/formatting/extensions/http.rb +24 -0
  56. data/lib/ronin/formatting/extensions/http/string.rb +69 -0
  57. data/lib/ronin/formatting/extensions/text.rb +24 -0
  58. data/lib/ronin/formatting/extensions/text/string.rb +96 -0
  59. data/lib/ronin/formatting/html.rb +24 -0
  60. data/lib/ronin/formatting/http.rb +24 -0
  61. data/lib/ronin/formatting/text.rb +24 -0
  62. data/lib/ronin/license.rb +87 -0
  63. data/lib/ronin/model.rb +44 -0
  64. data/lib/ronin/models.rb +34 -0
  65. data/lib/ronin/network.rb +31 -0
  66. data/lib/ronin/network/esmtp.rb +24 -0
  67. data/lib/ronin/network/extensions.rb +31 -0
  68. data/lib/ronin/network/extensions/esmtp.rb +24 -0
  69. data/lib/ronin/network/extensions/esmtp/net.rb +68 -0
  70. data/lib/ronin/network/extensions/http.rb +24 -0
  71. data/lib/ronin/network/extensions/http/net.rb +303 -0
  72. data/lib/ronin/network/extensions/imap.rb +24 -0
  73. data/lib/ronin/network/extensions/imap/net.rb +92 -0
  74. data/lib/ronin/network/extensions/pop3.rb +24 -0
  75. data/lib/ronin/network/extensions/pop3/net.rb +65 -0
  76. data/lib/ronin/network/extensions/smtp.rb +24 -0
  77. data/lib/ronin/network/extensions/smtp/net.rb +80 -0
  78. data/lib/ronin/network/extensions/tcp.rb +24 -0
  79. data/lib/ronin/network/extensions/tcp/net.rb +94 -0
  80. data/lib/ronin/network/extensions/telnet.rb +24 -0
  81. data/lib/ronin/network/extensions/telnet/net.rb +132 -0
  82. data/lib/ronin/network/extensions/udp.rb +24 -0
  83. data/lib/ronin/network/extensions/udp/net.rb +99 -0
  84. data/lib/ronin/network/http.rb +128 -0
  85. data/lib/ronin/network/http/exceptions.rb +24 -0
  86. data/lib/ronin/network/http/exceptions/unknown_request.rb +31 -0
  87. data/lib/ronin/network/imap.rb +47 -0
  88. data/lib/ronin/network/pop3.rb +47 -0
  89. data/lib/ronin/network/smtp.rb +26 -0
  90. data/lib/ronin/network/smtp/email.rb +126 -0
  91. data/lib/ronin/network/smtp/smtp.rb +55 -0
  92. data/lib/ronin/network/tcp.rb +24 -0
  93. data/lib/ronin/network/telnet.rb +95 -0
  94. data/lib/ronin/network/udp.rb +24 -0
  95. data/lib/ronin/object_context.rb +257 -0
  96. data/lib/ronin/objects.rb +29 -0
  97. data/lib/ronin/parameters.rb +27 -0
  98. data/lib/ronin/parameters/class_param.rb +45 -0
  99. data/lib/ronin/parameters/exceptions.rb +25 -0
  100. data/lib/ronin/parameters/exceptions/missing_param.rb +29 -0
  101. data/lib/ronin/parameters/exceptions/param_not_found.rb +29 -0
  102. data/lib/ronin/parameters/instance_param.rb +57 -0
  103. data/lib/ronin/parameters/param.rb +45 -0
  104. data/lib/ronin/parameters/parameters.rb +275 -0
  105. data/lib/ronin/path.rb +70 -0
  106. data/lib/ronin/pending_context.rb +42 -0
  107. data/lib/ronin/persistence.rb +32 -0
  108. data/lib/ronin/platform.rb +95 -0
  109. data/lib/ronin/product.rb +56 -0
  110. data/lib/ronin/ronin.rb +49 -0
  111. data/lib/ronin/rpc.rb +27 -0
  112. data/lib/ronin/rpc/call.rb +75 -0
  113. data/lib/ronin/rpc/client.rb +91 -0
  114. data/lib/ronin/rpc/console.rb +79 -0
  115. data/lib/ronin/rpc/exceptions.rb +25 -0
  116. data/lib/ronin/rpc/exceptions/not_implemented.rb +29 -0
  117. data/lib/ronin/rpc/exceptions/response_missing.rb +29 -0
  118. data/lib/ronin/rpc/interactive.rb +55 -0
  119. data/lib/ronin/rpc/interactive_console.rb +58 -0
  120. data/lib/ronin/rpc/interactive_shell.rb +59 -0
  121. data/lib/ronin/rpc/response.rb +57 -0
  122. data/lib/ronin/rpc/service.rb +69 -0
  123. data/lib/ronin/rpc/shell.rb +66 -0
  124. data/lib/ronin/runner.rb +24 -0
  125. data/lib/ronin/runner/program.rb +26 -0
  126. data/lib/ronin/runner/program/command.rb +204 -0
  127. data/lib/ronin/runner/program/commands.rb +33 -0
  128. data/lib/ronin/runner/program/commands/add.rb +73 -0
  129. data/lib/ronin/runner/program/commands/help.rb +52 -0
  130. data/lib/ronin/runner/program/commands/install.rb +65 -0
  131. data/lib/ronin/runner/program/commands/list.rb +81 -0
  132. data/lib/ronin/runner/program/commands/remove.rb +57 -0
  133. data/lib/ronin/runner/program/commands/uninstall.rb +57 -0
  134. data/lib/ronin/runner/program/commands/update.rb +55 -0
  135. data/lib/ronin/runner/program/exceptions.rb +24 -0
  136. data/lib/ronin/runner/program/exceptions/unknown_command.rb +31 -0
  137. data/lib/ronin/runner/program/options.rb +205 -0
  138. data/lib/ronin/runner/program/program.rb +173 -0
  139. data/lib/ronin/runner/program/runner.rb +35 -0
  140. data/lib/ronin/sessions.rb +32 -0
  141. data/lib/ronin/sessions/esmtp.rb +76 -0
  142. data/lib/ronin/sessions/imap.rb +73 -0
  143. data/lib/ronin/sessions/pop3.rb +70 -0
  144. data/lib/ronin/sessions/session.rb +52 -0
  145. data/lib/ronin/sessions/smtp.rb +76 -0
  146. data/lib/ronin/sessions/tcp.rb +111 -0
  147. data/lib/ronin/sessions/telnet.rb +76 -0
  148. data/lib/ronin/sessions/udp.rb +99 -0
  149. data/lib/ronin/sessions/web.rb +83 -0
  150. data/lib/ronin/shell.rb +81 -0
  151. data/lib/ronin/target.rb +40 -0
  152. data/lib/ronin/version.rb +27 -0
  153. data/lib/ronin/web.rb +24 -0
  154. data/lib/ronin/web/web.rb +265 -0
  155. data/spec/spec_helper.rb +9 -0
  156. data/tasks/spec.rb +7 -0
  157. metadata +324 -0
@@ -0,0 +1,69 @@
1
+ #
2
+ #--
3
+ # Ronin - A Ruby platform designed for information security and data
4
+ # exploration tasks.
5
+ #
6
+ # Copyright (c) 2006-2008 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
+ module Ronin
25
+ module RPC
26
+ class Service
27
+
28
+ # Name of the service
29
+ attr_reader :name
30
+
31
+ # The client object
32
+ attr_reader :client
33
+
34
+ #
35
+ # Creates a new Service object with the specified _name_ and _client_.
36
+ #
37
+ def initialize(name,client)
38
+ @name = name
39
+ @client = client
40
+ end
41
+
42
+ #
43
+ # Calls the specified _function_ from the service on the RPC Server
44
+ # with the given _arguments_. Returns the return-value of the
45
+ # RPC function call.
46
+ #
47
+ def call(function,*arguments)
48
+ @client.call("#{@name}.#{function}",*arguments)
49
+ end
50
+
51
+ #
52
+ # Returns the name of the service.
53
+ #
54
+ def to_s
55
+ @name.to_s
56
+ end
57
+
58
+ protected
59
+
60
+ #
61
+ # Relays missing methods to call.
62
+ #
63
+ def method_missing(sym,*args)
64
+ call(sym,*args)
65
+ end
66
+
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,66 @@
1
+ #
2
+ #--
3
+ # Ronin - A Ruby platform designed for information security and data
4
+ # exploration tasks.
5
+ #
6
+ # Copyright (c) 2006-2008 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 'ronin/rpc/service'
25
+ require 'ronin/rpc/interactive_shell'
26
+
27
+ module Ronin
28
+ module RPC
29
+ class Shell < Service
30
+
31
+ #
32
+ # Executes the specified _program_ with the given _arguments_. The
33
+ # output of the program will be returned as a String.
34
+ #
35
+ def exec(program,*arguments)
36
+ call(:exec,program,*arguments)
37
+ end
38
+
39
+ #
40
+ # Executes the specified _program_ with the given _arguments_ and
41
+ # prints the output of the program.
42
+ #
43
+ def system(program,*arguments)
44
+ print(exec(program,*arguments))
45
+ end
46
+
47
+ #
48
+ # Starts an InteractiveShell that allows a user to execute commands
49
+ # and observe their output.
50
+ #
51
+ def interact
52
+ InteractiveShell.start(self)
53
+ end
54
+
55
+ protected
56
+
57
+ #
58
+ # Relays missing methods to exec.
59
+ #
60
+ def method_missing(sym,*args)
61
+ exec(sym,*args)
62
+ end
63
+
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,24 @@
1
+ #
2
+ #--
3
+ # Ronin - A Ruby platform designed for information security and data
4
+ # exploration tasks.
5
+ #
6
+ # Copyright (c) 2006-2008 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 'ronin/runner/program'
@@ -0,0 +1,26 @@
1
+ #
2
+ #--
3
+ # Ronin - A Ruby platform designed for information security and data
4
+ # exploration tasks.
5
+ #
6
+ # Copyright (c) 2006-2008 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 'ronin/runner/program/program'
25
+ require 'ronin/runner/program/commands'
26
+ require 'ronin/runner/program/runner'
@@ -0,0 +1,204 @@
1
+ #
2
+ #--
3
+ # Ronin - A Ruby platform designed for information security and data
4
+ # exploration tasks.
5
+ #
6
+ # Copyright (c) 2006-2008 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 'ronin/runner/program/program'
25
+ require 'ronin/extensions/meta'
26
+
27
+ module Ronin
28
+ module Runner
29
+ module Program
30
+ class Command
31
+
32
+ #
33
+ # Creates a new Command object. If a _block_ is given,
34
+ # it will be passed newly created Command object.
35
+ #
36
+ def initialize(&block)
37
+ @options = nil
38
+
39
+ block.call(self) if block
40
+ end
41
+
42
+ #
43
+ # Returns the name of the command.
44
+ #
45
+ def Command.command_name
46
+ ''
47
+ end
48
+
49
+ #
50
+ # Returns the short names of the command.
51
+ #
52
+ def Command.command_short_names
53
+ []
54
+ end
55
+
56
+ #
57
+ # Returns all the names of the command.
58
+ #
59
+ def self.command_names
60
+ [self.command_name] + self.command_short_names
61
+ end
62
+
63
+ #
64
+ # Creates a new command object and runs it with the
65
+ # given _args_.
66
+ #
67
+ def self.run(*args)
68
+ self.new.run(*args)
69
+ end
70
+
71
+ #
72
+ # Prints the help information for the command.
73
+ #
74
+ def self.help
75
+ self.new.help
76
+ end
77
+
78
+ #
79
+ # Returns the name of the command.
80
+ #
81
+ def command_name
82
+ self.class.command_name
83
+ end
84
+
85
+ #
86
+ # Returns the short names of the command.
87
+ #
88
+ def command_short_names
89
+ self.class.command_short_names
90
+ end
91
+
92
+ #
93
+ # Returns all the names of the command.
94
+ #
95
+ def command_names
96
+ self.class.command_names
97
+ end
98
+
99
+ #
100
+ # Runs the command with the given _args_. If a _block_ is
101
+ # given, it will be called after the specified _args_ have
102
+ # been parsed and the command has run.
103
+ #
104
+ def run(*args,&block)
105
+ arguments(*(options.parse(args)))
106
+
107
+ @options = nil
108
+
109
+ block.call if block
110
+ return self
111
+ end
112
+
113
+ #
114
+ # Prints the help information for the command.
115
+ #
116
+ def help
117
+ options.help
118
+ return self
119
+ end
120
+
121
+ #
122
+ # Returns the String form of the command.
123
+ #
124
+ def to_s
125
+ names.join(', ')
126
+ end
127
+
128
+ protected
129
+
130
+ #
131
+ # Registers the command with the specified _name_ and the given
132
+ # _short_names_.
133
+ #
134
+ def self.command(name,*short_names)
135
+ name = name.to_s
136
+ short_names = short_names.map { |short_name| short_name.to_s }
137
+
138
+ meta_def(:command_name) { name }
139
+ meta_def(:command_short_names) { short_names }
140
+
141
+ # register the command
142
+ Program.commands << self unless Program.commands.include?(self)
143
+
144
+ # register the command by name
145
+ Program.commands_by_name[name] = self
146
+
147
+ # register the command by it's short_names
148
+ short_names.each do |short_name|
149
+ Program.commands_by_name[short_name] = self
150
+ end
151
+
152
+ return self
153
+ end
154
+
155
+ #
156
+ # Defines the options of the command with the specified _usage_ and
157
+ # _block_.
158
+ #
159
+ def self.options(usage=nil,&block)
160
+ class_def(:options) do
161
+ @options ||= Options.command(:ronin,self.command_name,usage,&block)
162
+ end
163
+
164
+ return self
165
+ end
166
+
167
+ #
168
+ # Returns the options of the command.
169
+ #
170
+ def options
171
+ @options ||= Options.command(:ronin,command_name)
172
+ end
173
+
174
+ #
175
+ # See Program.error.
176
+ #
177
+ def error(message)
178
+ Program.error(message)
179
+ end
180
+
181
+ #
182
+ # See Program.success.
183
+ #
184
+ def success(&block)
185
+ Program.success(&block)
186
+ end
187
+
188
+ #
189
+ # See Program.fail.
190
+ #
191
+ def fail(*messages,&block)
192
+ Program.fail(*messages,&block)
193
+ end
194
+
195
+ #
196
+ # Processes the additional arguments specified by _args_.
197
+ #
198
+ def arguments(*args)
199
+ end
200
+
201
+ end
202
+ end
203
+ end
204
+ end
@@ -0,0 +1,33 @@
1
+ #
2
+ #--
3
+ # Ronin - A Ruby platform designed for information security and data
4
+ # exploration tasks.
5
+ #
6
+ # Copyright (c) 2006-2007 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 'ronin/runner/program/commands/add'
25
+ require 'ronin/runner/program/commands/install'
26
+ require 'ronin/runner/program/commands/list'
27
+ require 'ronin/runner/program/commands/update'
28
+ require 'ronin/runner/program/commands/uninstall'
29
+ require 'ronin/runner/program/commands/remove'
30
+ require 'ronin/runner/program/commands/help'
31
+ require 'ronin/extensions'
32
+
33
+ ronin_require 'ronin/runner/program/commands'
@@ -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-2007 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 'ronin/runner/program/command'
25
+ require 'ronin/cache/overlay'
26
+
27
+ module Ronin
28
+ module Runner
29
+ module Program
30
+ class AddCommand < Command
31
+
32
+ command :add
33
+
34
+ options('PATH [options]') do |opts|
35
+ opts.settings.media = nil
36
+ opts.settings.uri = nil
37
+
38
+ opts.options do
39
+ opts.on('-m','--media MEDIA','Spedify the media-type of the repository') do |media|
40
+ opts.settings.media = media
41
+ end
42
+
43
+ opts.on('-U','--uri URI','Specify the source URI of the repository') do |uri|
44
+ opts.settings.uri = uri
45
+ end
46
+ end
47
+
48
+ opts.arguments do
49
+ opts.arg('PATH','Add the repository located at the specified PATH')
50
+ end
51
+
52
+ opts.summary('Add a local repository located at the specified PATH to the repository cache')
53
+
54
+ end
55
+
56
+ def arguments(*args)
57
+ unless args.length==1
58
+ fail('add: only one repository path maybe specified')
59
+ end
60
+
61
+ path = args.first
62
+
63
+ Cache::Overlay.save_cache do
64
+ Cache::Overlay.add(path,options.settings.media,options.settings.uri) do |repo|
65
+ puts "Overlay #{repo} added."
66
+ end
67
+ end
68
+ end
69
+
70
+ end
71
+ end
72
+ end
73
+ end