ronin 1.0.0.rc3 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.yardopts +0 -1
- data/ChangeLog.md +4 -4
- data/README.md +5 -5
- data/gemspec.yml +13 -14
- data/lib/ronin/cached_file.rb +3 -5
- data/lib/ronin/database/migrations/create_addresses_table.rb +1 -1
- data/lib/ronin/database/migrations/create_url_query_params_table.rb +1 -1
- data/lib/ronin/host_name.rb +5 -0
- data/lib/ronin/installation.rb +33 -43
- data/lib/ronin/mac_address.rb +5 -0
- data/lib/ronin/model/cacheable/cacheable.rb +4 -10
- data/lib/ronin/ui/cli/cli.rb +6 -10
- data/lib/ronin/ui/cli/commands/help.rb +1 -2
- data/lib/ronin/url_query_param.rb +4 -0
- data/lib/ronin/version.rb +1 -1
- data/spec/cached_file_spec.rb +11 -0
- data/spec/helpers/repos/test1/cache/cacheable_model/one.rb +1 -1
- data/spec/helpers/repos/test2/cache/cacheable_model/exceptions.rb +1 -1
- data/spec/helpers/repos/test2/cache/cacheable_model/load_errors.rb +1 -1
- data/spec/helpers/repos/test2/cache/cacheable_model/name_errors.rb +7 -0
- data/spec/helpers/repos/test2/cache/cacheable_model/no_method_errors.rb +1 -1
- data/spec/helpers/repos/test2/cache/cacheable_model/syntax_errors.rb +1 -1
- data/spec/helpers/repos/test2/cache/cacheable_model/two.rb +1 -1
- data/spec/helpers/repos/test2/cache/cacheable_model/validation_errors.rb +1 -1
- data/spec/installation_spec.rb +34 -7
- data/spec/model/models/cacheable_model.rb +0 -2
- data/spec/repository_spec.rb +1 -1
- metadata +62 -69
data/.yardopts
CHANGED
data/ChangeLog.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
### 1.0.0 / 2011-03-
|
1
|
+
### 1.0.0 / 2011-03-25
|
2
2
|
|
3
3
|
* Upgraded to the GPL-3 license.
|
4
4
|
* Require Ruby >= 1.8.7.
|
@@ -12,12 +12,12 @@
|
|
12
12
|
* Require dm-serializer ~> 1.1.0.
|
13
13
|
* Require dm-aggregates ~> 1.1.0.
|
14
14
|
* Require dm-timestamps ~> 1.1.0.
|
15
|
-
* Require dm-is-predefined ~> 0.3.1.
|
15
|
+
* Require dm-is-predefined ~> 0.3, >= 0.3.1.
|
16
16
|
* Require uri-query_params ~> 0.5, >= 0.5.2.
|
17
17
|
* Require open_namespace ~> 0.3.
|
18
18
|
* Require parameters ~> 0.2, >= 0.2.3.
|
19
19
|
* Require data_paths ~> 0.2, >= 0.2.1.
|
20
|
-
* Require
|
20
|
+
* Require object_loader ~> 1.0.
|
21
21
|
* Require env ~> 0.1, >= 0.1.2.
|
22
22
|
* Require pullr ~> 0.1, >= 0.1.2.
|
23
23
|
* Require hexdump ~> 0.1.
|
@@ -27,7 +27,7 @@
|
|
27
27
|
* Require ripl-short_errors ~> 0.1.
|
28
28
|
* Require ripl-color_result ~> 0.2.
|
29
29
|
* Require thor ~> 0.14.3.
|
30
|
-
* Require ronin-support ~> 0.1.
|
30
|
+
* Require ronin-support ~> 0.1.
|
31
31
|
* Added `ronin/bootstrap` which only loads configuration and the Database.
|
32
32
|
* Added {Ronin::Database::Migrations}.
|
33
33
|
* Added {Ronin::Model::HasUniqueName}.
|
data/README.md
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
* [Website](http://ronin-ruby.github.com)
|
4
4
|
* [Source](http://github.com/ronin-ruby/ronin)
|
5
5
|
* [Issues](http://github.com/ronin-ruby/ronin/issues)
|
6
|
-
* [Documentation](http://rubydoc.info/
|
6
|
+
* [Documentation](http://rubydoc.info/gems/ronin/frames)
|
7
7
|
* [Mailing List](http://groups.google.com/group/ronin-ruby)
|
8
8
|
* irc.freenode.net #ronin
|
9
9
|
|
@@ -148,7 +148,7 @@ Remove a Database:
|
|
148
148
|
* [dm-timestamps](http://github.com/datamapper/dm-timestamps#readme)
|
149
149
|
~> 1.1.0
|
150
150
|
* [dm-is-predefined](http://github.com/postmodern/dm-is-predefined#readme)
|
151
|
-
~> 0.3.1
|
151
|
+
~> 0.3, >= 0.3.1
|
152
152
|
* [uri-query_params](http://github.com/postmodern/uri-query_params#readme)
|
153
153
|
~> 0.5, >= 0.5.2
|
154
154
|
* [open_namespace](http://github.com/postmodern/open_namespace#readme)
|
@@ -157,8 +157,8 @@ Remove a Database:
|
|
157
157
|
~> 0.2, >= 0.2.3
|
158
158
|
* [data_paths](http://github.com/postmodern/data_paths#readme)
|
159
159
|
~> 0.2, >= 0.2.1
|
160
|
-
* [
|
161
|
-
~> 0
|
160
|
+
* [object_loader](http://github.com/postmodern/object_loader#readme)
|
161
|
+
~> 1.0
|
162
162
|
* [env](http://github.com/postmodern/env#readme)
|
163
163
|
~> 0.1, >= 0.1.2
|
164
164
|
* [pullr](http://github.com/postmodern/pullr#readme)
|
@@ -168,7 +168,7 @@ Remove a Database:
|
|
168
168
|
* [thor](http://github.com/wycats/thor#readme)
|
169
169
|
~> 0.14.3
|
170
170
|
* [ronin-support](http://github.com/ronin-ruby/ronin-support#readme)
|
171
|
-
~> 0.1
|
171
|
+
~> 0.1
|
172
172
|
|
173
173
|
## Install
|
174
174
|
|
data/gemspec.yml
CHANGED
@@ -36,25 +36,25 @@ required_ruby_version: ">= 1.8.7"
|
|
36
36
|
|
37
37
|
dependencies:
|
38
38
|
# DataMapper adapters
|
39
|
-
dm-do-adapter: ~> 1.1.0
|
40
|
-
dm-sqlite-adapter: ~> 1.1.0
|
39
|
+
dm-do-adapter: ~> 1.1.0
|
40
|
+
dm-sqlite-adapter: ~> 1.1.0
|
41
41
|
# DataMapper dependencies
|
42
|
-
dm-core: ~> 1.1.0
|
43
|
-
dm-types: ~> 1.1.0
|
44
|
-
dm-constraints: ~> 1.1.0
|
45
|
-
dm-migrations: ~> 1.1.0
|
46
|
-
dm-validations: ~> 1.1.0
|
47
|
-
dm-serializer: ~> 1.1.0
|
48
|
-
dm-aggregates: ~> 1.1.0
|
49
|
-
dm-timestamps: ~> 1.1.0
|
42
|
+
dm-core: ~> 1.1.0
|
43
|
+
dm-types: ~> 1.1.0
|
44
|
+
dm-constraints: ~> 1.1.0
|
45
|
+
dm-migrations: ~> 1.1.0
|
46
|
+
dm-validations: ~> 1.1.0
|
47
|
+
dm-serializer: ~> 1.1.0
|
48
|
+
dm-aggregates: ~> 1.1.0
|
49
|
+
dm-timestamps: ~> 1.1.0
|
50
50
|
# DataMapper plugins
|
51
|
-
dm-is-predefined: ~> 0.3.1
|
51
|
+
dm-is-predefined: ~> 0.3, >= 0.3.1
|
52
52
|
# Library dependencies
|
53
53
|
uri-query_params: ~> 0.5, >= 0.5.2
|
54
54
|
open_namespace: ~> 0.3
|
55
55
|
parameters: ~> 0.2, >= 0.2.3
|
56
56
|
data_paths: ~> 0.2, >= 0.2.1
|
57
|
-
|
57
|
+
object_loader: ~> 1.0
|
58
58
|
env: ~> 0.1, >= 0.1.2
|
59
59
|
pullr: ~> 0.1, >= 0.1.2
|
60
60
|
hexdump: ~> 0.1
|
@@ -65,12 +65,11 @@ dependencies:
|
|
65
65
|
ripl-color_result: ~> 0.3
|
66
66
|
thor: ~> 0.14.3
|
67
67
|
# Ronin dependencies:
|
68
|
-
ronin-support: ~> 0.1
|
68
|
+
ronin-support: ~> 0.1
|
69
69
|
|
70
70
|
development_dependencies:
|
71
71
|
bundler: ~> 1.0.10
|
72
72
|
yard: ~> 0.6.4
|
73
|
-
yard-contextify: ~> 0.1.0
|
74
73
|
yard-parameters: ~> 0.1.0
|
75
74
|
yard-dm: ~> 0.1.1
|
76
75
|
yard-dm-is-predefined: ~> 0.2.0
|
data/lib/ronin/cached_file.rb
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
require 'ronin/support/inflector'
|
21
21
|
require 'ronin/model'
|
22
22
|
|
23
|
-
require '
|
23
|
+
require 'object_loader'
|
24
24
|
|
25
25
|
module Ronin
|
26
26
|
autoload :Repository, 'ronin/repository'
|
@@ -119,15 +119,13 @@ module Ronin
|
|
119
119
|
def fresh_object
|
120
120
|
begin
|
121
121
|
# load the first found context
|
122
|
-
blocks =
|
122
|
+
blocks = ObjectLoader.load_blocks(self.path)
|
123
123
|
rescue Exception => e
|
124
124
|
@cache_exception = e
|
125
125
|
return nil
|
126
126
|
end
|
127
127
|
|
128
|
-
blocks.each do |
|
129
|
-
model = Contextify.contexts[name]
|
130
|
-
|
128
|
+
blocks.each do |model,block|
|
131
129
|
if model < Cacheable
|
132
130
|
# create the fresh object
|
133
131
|
object = model.new()
|
@@ -32,7 +32,7 @@ module Ronin
|
|
32
32
|
column :id, Integer, :serial => true
|
33
33
|
column :type, String, :not_null => true
|
34
34
|
column :version, Integer
|
35
|
-
column :address, String, :not_null => true
|
35
|
+
column :address, String, :length => 256, :not_null => true
|
36
36
|
column :organization_id, Integer
|
37
37
|
column :created_at, Time, :not_null => true
|
38
38
|
end
|
@@ -26,7 +26,7 @@ module Ronin
|
|
26
26
|
up do
|
27
27
|
create_table :ronin_url_query_params do
|
28
28
|
column :id, Integer, :serial => true
|
29
|
-
column :name, String, :not_null => true
|
29
|
+
column :name, String, :length => 256, :not_null => true
|
30
30
|
column :value, Text
|
31
31
|
column :url_id, Integer, :not_null => true
|
32
32
|
end
|
data/lib/ronin/host_name.rb
CHANGED
@@ -32,6 +32,11 @@ module Ronin
|
|
32
32
|
#
|
33
33
|
class HostName < Address
|
34
34
|
|
35
|
+
# The address of the host name
|
36
|
+
property :address, String, :length => 256,
|
37
|
+
:required => true,
|
38
|
+
:unique => true
|
39
|
+
|
35
40
|
# The IP Address associations
|
36
41
|
has 0..n, :host_name_ip_addresses, :model => 'HostNameIPAddress'
|
37
42
|
|
data/lib/ronin/installation.rb
CHANGED
@@ -17,16 +17,14 @@
|
|
17
17
|
# along with Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
18
|
#
|
19
19
|
|
20
|
-
require 'enumerator'
|
21
|
-
|
22
20
|
module Ronin
|
23
21
|
#
|
24
22
|
# The {Installation} module provides methods which help reflect on the
|
25
23
|
# installation of Ronin on the system.
|
26
24
|
#
|
27
25
|
module Installation
|
26
|
+
# The loaded gemspecs of all installed ronin libraries
|
28
27
|
@gems = {}
|
29
|
-
@paths = {}
|
30
28
|
|
31
29
|
#
|
32
30
|
# Finds the installed Ronin libraries via RubyGems.
|
@@ -37,7 +35,7 @@ module Ronin
|
|
37
35
|
# @since 1.0.0
|
38
36
|
#
|
39
37
|
def Installation.gems
|
40
|
-
|
38
|
+
load_gemspecs! if @gems.empty?
|
41
39
|
return @gems
|
42
40
|
end
|
43
41
|
|
@@ -50,20 +48,7 @@ module Ronin
|
|
50
48
|
# @since 1.0.0
|
51
49
|
#
|
52
50
|
def Installation.libraries
|
53
|
-
|
54
|
-
end
|
55
|
-
|
56
|
-
#
|
57
|
-
# The installation paths of installed Ronin libraries.
|
58
|
-
#
|
59
|
-
# @return [Hash{String => String}]
|
60
|
-
# The paths to the installed Ronin libraries.
|
61
|
-
#
|
62
|
-
# @since 1.0.0
|
63
|
-
#
|
64
|
-
def Installation.paths
|
65
|
-
Installation.load_gemspecs! if @paths.empty?
|
66
|
-
return @paths
|
51
|
+
gems.keys
|
67
52
|
end
|
68
53
|
|
69
54
|
#
|
@@ -84,17 +69,16 @@ module Ronin
|
|
84
69
|
#
|
85
70
|
# @since 1.0.0
|
86
71
|
#
|
87
|
-
def Installation.each_file(
|
88
|
-
return enum_for(:each_file,
|
89
|
-
|
90
|
-
directory = File.join(directory,'')
|
72
|
+
def Installation.each_file(pattern)
|
73
|
+
return enum_for(:each_file,pattern) unless block_given?
|
91
74
|
|
92
75
|
# query the installed gems
|
93
|
-
|
94
|
-
gem.
|
95
|
-
|
96
|
-
|
97
|
-
|
76
|
+
gems.each_value do |gem|
|
77
|
+
gem_root = gem.full_gem_path
|
78
|
+
slice_index = gem_root.length + 1
|
79
|
+
|
80
|
+
Dir.glob(File.join(gem_root,pattern)) do |path|
|
81
|
+
yield path[slice_index..-1]
|
98
82
|
end
|
99
83
|
end
|
100
84
|
|
@@ -102,25 +86,36 @@ module Ronin
|
|
102
86
|
end
|
103
87
|
|
104
88
|
#
|
105
|
-
#
|
89
|
+
# Enumerates over every file in a directory.
|
106
90
|
#
|
107
91
|
# @param [String] directory
|
108
|
-
#
|
92
|
+
# The directory to search within.
|
93
|
+
#
|
94
|
+
# @param [String, Symbol] ext
|
95
|
+
# The optional file extension to search for.
|
96
|
+
#
|
97
|
+
# @yield [name]
|
98
|
+
# The given block will be passed each matching file-name.
|
109
99
|
#
|
110
|
-
# @
|
111
|
-
#
|
100
|
+
# @yieldparam [String] name
|
101
|
+
# The basename of the matching path within the directory.
|
102
|
+
#
|
103
|
+
# @return [Enumerator]
|
104
|
+
# If no block is given, an Enumerator will be returned.
|
112
105
|
#
|
113
106
|
# @since 1.0.0
|
114
107
|
#
|
115
|
-
def Installation.
|
116
|
-
|
117
|
-
result = false
|
108
|
+
def Installation.each_file_in(directory,ext=nil)
|
109
|
+
return enum_for(:each_file_in,directory,ext) unless block_given?
|
118
110
|
|
119
|
-
|
120
|
-
|
121
|
-
|
111
|
+
pattern = File.join(directory,'**','*')
|
112
|
+
pattern << ".#{ext}" if ext
|
113
|
+
|
114
|
+
slice_index = directory.length + 1
|
122
115
|
|
123
|
-
|
116
|
+
each_file(pattern) do |path|
|
117
|
+
yield path[slice_index..-1]
|
118
|
+
end
|
124
119
|
end
|
125
120
|
|
126
121
|
protected
|
@@ -138,13 +133,10 @@ module Ronin
|
|
138
133
|
|
139
134
|
if ronin_gem
|
140
135
|
@gems['ronin'] = ronin_gem
|
141
|
-
@paths['ronin'] = ronin_gem.full_gem_path
|
142
136
|
|
143
137
|
ronin_gem.dependent_gems.each do |gems|
|
144
138
|
gem = gems.first
|
145
|
-
|
146
139
|
@gems[gem.name] = gem
|
147
|
-
@paths[gem.name] = gem.full_gem_path
|
148
140
|
end
|
149
141
|
else
|
150
142
|
# if we cannot find an installed ronin gem, search the $LOAD_PATH
|
@@ -155,9 +147,7 @@ module Ronin
|
|
155
147
|
|
156
148
|
if gemspec_path
|
157
149
|
gem = Gem::SourceIndex.load_specification(gemspec_path)
|
158
|
-
|
159
150
|
@gems[gem.name] = gem
|
160
|
-
@paths[gem.name] = root_dir
|
161
151
|
end
|
162
152
|
end
|
163
153
|
end
|
data/lib/ronin/mac_address.rb
CHANGED
@@ -29,6 +29,11 @@ module Ronin
|
|
29
29
|
#
|
30
30
|
class MACAddress < Address
|
31
31
|
|
32
|
+
# The MAC address
|
33
|
+
property :address, String, :length => 17..17,
|
34
|
+
:required => true,
|
35
|
+
:unique => true
|
36
|
+
|
32
37
|
# The IP Addresses the MAC Address hosts
|
33
38
|
has 0..n, :ip_address_mac_addresses, :model => 'IPAddressMACAddress'
|
34
39
|
|
@@ -21,7 +21,7 @@ require 'ronin/model/cacheable/class_methods'
|
|
21
21
|
require 'ronin/model/model'
|
22
22
|
require 'ronin/cached_file'
|
23
23
|
|
24
|
-
require '
|
24
|
+
require 'object_loader'
|
25
25
|
require 'set'
|
26
26
|
|
27
27
|
module Ronin
|
@@ -38,18 +38,12 @@ module Ronin
|
|
38
38
|
#
|
39
39
|
# # Making a Model cacheable
|
40
40
|
#
|
41
|
-
# In order to make a Model cacheable, one must include the {Cacheable}
|
42
|
-
# module and contextifying the model. Contextifying a model involves
|
43
|
-
# calling the `contextify` method, which defines a top-level method
|
44
|
-
# used for loading model instances from files.
|
41
|
+
# In order to make a Model cacheable, one must include the {Cacheable}.
|
45
42
|
#
|
46
43
|
# class MyModel
|
47
44
|
#
|
48
45
|
# include Ronin::Model::Cacheable
|
49
46
|
#
|
50
|
-
# # Defines the my_model method for loading instances from files
|
51
|
-
# contextify :my_model
|
52
|
-
#
|
53
47
|
# # Primary key of the model
|
54
48
|
# property :id, Serial
|
55
49
|
#
|
@@ -104,7 +98,7 @@ module Ronin
|
|
104
98
|
@models = Set[]
|
105
99
|
|
106
100
|
def self.included(base)
|
107
|
-
base.send :include,
|
101
|
+
base.send :include, ObjectLoader, Model
|
108
102
|
base.send :extend, ClassMethods
|
109
103
|
|
110
104
|
base.module_eval do
|
@@ -151,7 +145,7 @@ module Ronin
|
|
151
145
|
#
|
152
146
|
def Cacheable.load_from(path)
|
153
147
|
path = File.expand_path(path)
|
154
|
-
obj =
|
148
|
+
obj = ObjectLoader.load_objects(path).find do |obj|
|
155
149
|
obj.class < Cacheable
|
156
150
|
end
|
157
151
|
|
data/lib/ronin/ui/cli/cli.rb
CHANGED
@@ -21,6 +21,8 @@ require 'ronin/ui/cli/exceptions/unknown_command'
|
|
21
21
|
require 'ronin/ui/cli/commands'
|
22
22
|
require 'ronin/installation'
|
23
23
|
|
24
|
+
require 'set'
|
25
|
+
|
24
26
|
module Ronin
|
25
27
|
module UI
|
26
28
|
#
|
@@ -32,7 +34,8 @@ module Ronin
|
|
32
34
|
# Name of the default to run
|
33
35
|
DEFAULT_COMMAND = 'console'
|
34
36
|
|
35
|
-
|
37
|
+
# The loaded command names
|
38
|
+
@commands = SortedSet[]
|
36
39
|
|
37
40
|
#
|
38
41
|
# All command-line names of Commands available to the {CLI}.
|
@@ -46,18 +49,15 @@ module Ronin
|
|
46
49
|
if @commands.empty?
|
47
50
|
commands_dir = File.join('lib',Commands.namespace_root)
|
48
51
|
|
49
|
-
Installation.
|
52
|
+
Installation.each_file_in(commands_dir,:rb) do |path|
|
50
53
|
# remove the .rb file extension
|
51
54
|
name = path.chomp('.rb')
|
52
55
|
|
53
56
|
# replace any file separators with a ':', to mimic the
|
54
57
|
# naming convention of Rake/Thor.
|
55
58
|
name.tr!(File::SEPARATOR,':')
|
56
|
-
|
57
|
-
# replace all '_' and '-' characters with a single '_' character
|
58
|
-
name.gsub!(/[_-]+/,'_')
|
59
59
|
|
60
|
-
@commands
|
60
|
+
@commands << name
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
@@ -91,10 +91,6 @@ module Ronin
|
|
91
91
|
def CLI.command(name)
|
92
92
|
name = name.to_s
|
93
93
|
|
94
|
-
# eventually someone is going to use a space or - which is going
|
95
|
-
# mess things up we will take care of this ahead of time here
|
96
|
-
name = name.gsub(/[\s_-]+/, '_')
|
97
|
-
|
98
94
|
unless (command = Commands.require_const(name))
|
99
95
|
raise(UnknownCommand,"unable to load the command #{name.dump}",caller)
|
100
96
|
end
|
data/lib/ronin/version.rb
CHANGED
data/spec/cached_file_spec.rb
CHANGED
@@ -98,6 +98,12 @@ describe CachedFile do
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
|
+
let(:name_error) do
|
102
|
+
test2.cached_files.find do |cached_file|
|
103
|
+
cached_file.path.basename == Pathname.new('name_errors.rb')
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
101
107
|
let(:no_method_error) do
|
102
108
|
test2.cached_files.find do |cached_file|
|
103
109
|
cached_file.path.basename == Pathname.new('no_method_errors.rb')
|
@@ -136,6 +142,11 @@ describe CachedFile do
|
|
136
142
|
load_error.cache_exception.class.should == LoadError
|
137
143
|
end
|
138
144
|
|
145
|
+
it "should store NameError exceptions" do
|
146
|
+
name_error.cache_exception.should_not be_nil
|
147
|
+
name_error.cache_exception.class.should == NameError
|
148
|
+
end
|
149
|
+
|
139
150
|
it "should store NoMethodError exceptions" do
|
140
151
|
no_method_error.cache_exception.should_not be_nil
|
141
152
|
no_method_error.cache_exception.class.should == NoMethodError
|
data/spec/installation_spec.rb
CHANGED
@@ -6,16 +6,43 @@ describe Installation do
|
|
6
6
|
subject.gems['ronin'].should_not be_nil
|
7
7
|
end
|
8
8
|
|
9
|
-
it "should find the installation path of the 'ronin' library" do
|
10
|
-
subject.paths['ronin'].should_not be_nil
|
11
|
-
end
|
12
|
-
|
13
9
|
it "should provide the names of the installed Ronin libraries" do
|
14
10
|
subject.libraries.should include('ronin')
|
15
11
|
end
|
16
12
|
|
17
13
|
describe "each_file" do
|
18
14
|
let(:directory) { 'lib/ronin/ui/cli/commands' }
|
15
|
+
let(:pattern) { File.join(directory,'*.rb') }
|
16
|
+
let(:expected) {
|
17
|
+
%w[
|
18
|
+
campaigns.rb
|
19
|
+
console.rb
|
20
|
+
creds.rb
|
21
|
+
database.rb
|
22
|
+
emails.rb
|
23
|
+
exec.rb
|
24
|
+
help.rb
|
25
|
+
hosts.rb
|
26
|
+
ips.rb
|
27
|
+
repos.rb
|
28
|
+
urls.rb
|
29
|
+
].map { |name| File.join(directory,name) }
|
30
|
+
}
|
31
|
+
|
32
|
+
it "should enumerate over the files which match a glob pattern" do
|
33
|
+
subject.each_file(pattern).to_a.should =~ expected
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should return an Enumerator when no block is given" do
|
37
|
+
subject.each_file(pattern).all? { |file|
|
38
|
+
expected.include?(file)
|
39
|
+
}.should == true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "each_file_in" do
|
44
|
+
let(:directory) { 'lib/ronin/ui/cli/commands' }
|
45
|
+
let(:ext) { :rb }
|
19
46
|
let(:expected) {
|
20
47
|
%w[
|
21
48
|
campaigns.rb
|
@@ -32,12 +59,12 @@ describe Installation do
|
|
32
59
|
]
|
33
60
|
}
|
34
61
|
|
35
|
-
it "should enumerate over the files
|
36
|
-
subject.
|
62
|
+
it "should enumerate over the files which match a glob pattern" do
|
63
|
+
subject.each_file_in(directory,ext).to_a.should =~ expected
|
37
64
|
end
|
38
65
|
|
39
66
|
it "should return an Enumerator when no block is given" do
|
40
|
-
subject.
|
67
|
+
subject.each_file_in(directory,ext).all? { |file|
|
41
68
|
expected.include?(file)
|
42
69
|
}.should == true
|
43
70
|
end
|
data/spec/repository_spec.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ronin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 1.0.0
|
4
|
+
prerelease:
|
5
|
+
version: 1.0.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Postmodern
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-03-
|
13
|
+
date: 2011-03-25 00:00:00 -04:00
|
14
14
|
default_executable: ronin
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 1.1.0
|
23
|
+
version: 1.1.0
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
26
|
version_requirements: *id001
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.1.0
|
34
|
+
version: 1.1.0
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: *id002
|
@@ -42,7 +42,7 @@ dependencies:
|
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.1.0
|
45
|
+
version: 1.1.0
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
48
|
version_requirements: *id003
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
requirements:
|
54
54
|
- - ~>
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version: 1.1.0
|
56
|
+
version: 1.1.0
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
59
|
version_requirements: *id004
|
@@ -64,7 +64,7 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - ~>
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: 1.1.0
|
67
|
+
version: 1.1.0
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: *id005
|
@@ -75,7 +75,7 @@ dependencies:
|
|
75
75
|
requirements:
|
76
76
|
- - ~>
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 1.1.0
|
78
|
+
version: 1.1.0
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: *id006
|
@@ -86,7 +86,7 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.1.0
|
89
|
+
version: 1.1.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: *id007
|
@@ -97,7 +97,7 @@ dependencies:
|
|
97
97
|
requirements:
|
98
98
|
- - ~>
|
99
99
|
- !ruby/object:Gem::Version
|
100
|
-
version: 1.1.0
|
100
|
+
version: 1.1.0
|
101
101
|
type: :runtime
|
102
102
|
prerelease: false
|
103
103
|
version_requirements: *id008
|
@@ -108,7 +108,7 @@ dependencies:
|
|
108
108
|
requirements:
|
109
109
|
- - ~>
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: 1.1.0
|
111
|
+
version: 1.1.0
|
112
112
|
type: :runtime
|
113
113
|
prerelease: false
|
114
114
|
version_requirements: *id009
|
@@ -119,7 +119,7 @@ dependencies:
|
|
119
119
|
requirements:
|
120
120
|
- - ~>
|
121
121
|
- !ruby/object:Gem::Version
|
122
|
-
version: 1.1.0
|
122
|
+
version: 1.1.0
|
123
123
|
type: :runtime
|
124
124
|
prerelease: false
|
125
125
|
version_requirements: *id010
|
@@ -128,9 +128,12 @@ dependencies:
|
|
128
128
|
requirement: &id011 !ruby/object:Gem::Requirement
|
129
129
|
none: false
|
130
130
|
requirements:
|
131
|
-
- -
|
131
|
+
- - ">="
|
132
132
|
- !ruby/object:Gem::Version
|
133
133
|
version: 0.3.1
|
134
|
+
- - ~>
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: "0.3"
|
134
137
|
type: :runtime
|
135
138
|
prerelease: false
|
136
139
|
version_requirements: *id011
|
@@ -188,13 +191,13 @@ dependencies:
|
|
188
191
|
prerelease: false
|
189
192
|
version_requirements: *id015
|
190
193
|
- !ruby/object:Gem::Dependency
|
191
|
-
name:
|
194
|
+
name: object_loader
|
192
195
|
requirement: &id016 !ruby/object:Gem::Requirement
|
193
196
|
none: false
|
194
197
|
requirements:
|
195
198
|
- - ~>
|
196
199
|
- !ruby/object:Gem::Version
|
197
|
-
version: "0
|
200
|
+
version: "1.0"
|
198
201
|
type: :runtime
|
199
202
|
prerelease: false
|
200
203
|
version_requirements: *id016
|
@@ -310,7 +313,7 @@ dependencies:
|
|
310
313
|
requirements:
|
311
314
|
- - ~>
|
312
315
|
- !ruby/object:Gem::Version
|
313
|
-
version: 0.1
|
316
|
+
version: "0.1"
|
314
317
|
type: :runtime
|
315
318
|
prerelease: false
|
316
319
|
version_requirements: *id026
|
@@ -337,7 +340,7 @@ dependencies:
|
|
337
340
|
prerelease: false
|
338
341
|
version_requirements: *id028
|
339
342
|
- !ruby/object:Gem::Dependency
|
340
|
-
name: yard-
|
343
|
+
name: yard-parameters
|
341
344
|
requirement: &id029 !ruby/object:Gem::Requirement
|
342
345
|
none: false
|
343
346
|
requirements:
|
@@ -347,20 +350,9 @@ dependencies:
|
|
347
350
|
type: :development
|
348
351
|
prerelease: false
|
349
352
|
version_requirements: *id029
|
350
|
-
- !ruby/object:Gem::Dependency
|
351
|
-
name: yard-parameters
|
352
|
-
requirement: &id030 !ruby/object:Gem::Requirement
|
353
|
-
none: false
|
354
|
-
requirements:
|
355
|
-
- - ~>
|
356
|
-
- !ruby/object:Gem::Version
|
357
|
-
version: 0.1.0
|
358
|
-
type: :development
|
359
|
-
prerelease: false
|
360
|
-
version_requirements: *id030
|
361
353
|
- !ruby/object:Gem::Dependency
|
362
354
|
name: yard-dm
|
363
|
-
requirement: &
|
355
|
+
requirement: &id030 !ruby/object:Gem::Requirement
|
364
356
|
none: false
|
365
357
|
requirements:
|
366
358
|
- - ~>
|
@@ -368,10 +360,10 @@ dependencies:
|
|
368
360
|
version: 0.1.1
|
369
361
|
type: :development
|
370
362
|
prerelease: false
|
371
|
-
version_requirements: *
|
363
|
+
version_requirements: *id030
|
372
364
|
- !ruby/object:Gem::Dependency
|
373
365
|
name: yard-dm-is-predefined
|
374
|
-
requirement: &
|
366
|
+
requirement: &id031 !ruby/object:Gem::Requirement
|
375
367
|
none: false
|
376
368
|
requirements:
|
377
369
|
- - ~>
|
@@ -379,23 +371,23 @@ dependencies:
|
|
379
371
|
version: 0.2.0
|
380
372
|
type: :development
|
381
373
|
prerelease: false
|
382
|
-
version_requirements: *
|
374
|
+
version_requirements: *id031
|
383
375
|
description: Ronin is a Ruby platform for exploit development and security research. Ronin allows for the rapid development and distribution of code, exploits or payloads over many common Source-Code-Management (SCM) systems.
|
384
376
|
email:
|
385
377
|
- postmodern.mod3@gmail.com
|
386
378
|
executables:
|
387
|
-
- ronin-repos
|
388
|
-
- ronin-emails
|
389
|
-
- ronin-ips
|
390
|
-
- ronin-help
|
391
|
-
- ronin-urls
|
392
379
|
- ronin-hosts
|
393
|
-
- ronin-
|
394
|
-
- ronin-
|
395
|
-
- ronin-campaigns
|
396
|
-
- ronin-creds
|
380
|
+
- ronin-help
|
381
|
+
- ronin-emails
|
397
382
|
- ronin
|
398
383
|
- ronin-console
|
384
|
+
- ronin-campaigns
|
385
|
+
- ronin-exec
|
386
|
+
- ronin-repos
|
387
|
+
- ronin-creds
|
388
|
+
- ronin-ips
|
389
|
+
- ronin-database
|
390
|
+
- ronin-urls
|
399
391
|
extensions: []
|
400
392
|
|
401
393
|
extra_rdoc_files:
|
@@ -613,6 +605,7 @@ files:
|
|
613
605
|
- spec/helpers/repos/test1/ronin.yml
|
614
606
|
- spec/helpers/repos/test2/cache/cacheable_model/exceptions.rb
|
615
607
|
- spec/helpers/repos/test2/cache/cacheable_model/load_errors.rb
|
608
|
+
- spec/helpers/repos/test2/cache/cacheable_model/name_errors.rb
|
616
609
|
- spec/helpers/repos/test2/cache/cacheable_model/no_method_errors.rb
|
617
610
|
- spec/helpers/repos/test2/cache/cacheable_model/syntax_errors.rb
|
618
611
|
- spec/helpers/repos/test2/cache/cacheable_model/two.rb
|
@@ -707,39 +700,39 @@ signing_key:
|
|
707
700
|
specification_version: 3
|
708
701
|
summary: A Ruby platform for exploit development and security research.
|
709
702
|
test_files:
|
710
|
-
- spec/mac_address_spec.rb
|
711
|
-
- spec/database_spec.rb
|
712
|
-
- spec/author_spec.rb
|
713
|
-
- spec/vendor_spec.rb
|
714
|
-
- spec/url_spec.rb
|
715
703
|
- spec/port_spec.rb
|
716
|
-
- spec/
|
717
|
-
- spec/model/has_license_spec.rb
|
718
|
-
- spec/model/has_description_spec.rb
|
719
|
-
- spec/model/has_title_spec.rb
|
720
|
-
- spec/model/model_spec.rb
|
721
|
-
- spec/model/has_authors_spec.rb
|
722
|
-
- spec/model/has_name_spec.rb
|
723
|
-
- spec/model/cacheable_spec.rb
|
724
|
-
- spec/license_spec.rb
|
725
|
-
- spec/campaign_spec.rb
|
726
|
-
- spec/password_spec.rb
|
727
|
-
- spec/arch_spec.rb
|
728
|
-
- spec/repository_spec.rb
|
729
|
-
- spec/url_scheme_spec.rb
|
730
|
-
- spec/software_spec.rb
|
731
|
-
- spec/url_query_param_spec.rb
|
732
|
-
- spec/cached_file_spec.rb
|
704
|
+
- spec/credential_spec.rb
|
733
705
|
- spec/ui/cli/command_spec.rb
|
734
706
|
- spec/ui/output_spec.rb
|
735
|
-
- spec/
|
707
|
+
- spec/installation_spec.rb
|
708
|
+
- spec/vendor_spec.rb
|
709
|
+
- spec/campaign_spec.rb
|
710
|
+
- spec/engine/engine_spec.rb
|
736
711
|
- spec/engine/buildable_spec.rb
|
737
712
|
- spec/engine/verifiable_spec.rb
|
738
|
-
- spec/engine/engine_spec.rb
|
739
713
|
- spec/engine/deployable_spec.rb
|
714
|
+
- spec/arch_spec.rb
|
740
715
|
- spec/os_spec.rb
|
716
|
+
- spec/database_spec.rb
|
717
|
+
- spec/password_spec.rb
|
718
|
+
- spec/model/cacheable_spec.rb
|
719
|
+
- spec/model/has_version_spec.rb
|
720
|
+
- spec/model/has_authors_spec.rb
|
721
|
+
- spec/model/model_spec.rb
|
722
|
+
- spec/model/has_title_spec.rb
|
723
|
+
- spec/model/has_name_spec.rb
|
724
|
+
- spec/model/has_description_spec.rb
|
725
|
+
- spec/model/has_license_spec.rb
|
726
|
+
- spec/license_spec.rb
|
727
|
+
- spec/author_spec.rb
|
741
728
|
- spec/service_spec.rb
|
742
|
-
- spec/
|
743
|
-
- spec/host_name_spec.rb
|
729
|
+
- spec/software_spec.rb
|
744
730
|
- spec/email_address_spec.rb
|
745
|
-
- spec/
|
731
|
+
- spec/mac_address_spec.rb
|
732
|
+
- spec/url_query_param_spec.rb
|
733
|
+
- spec/url_scheme_spec.rb
|
734
|
+
- spec/url_spec.rb
|
735
|
+
- spec/repository_spec.rb
|
736
|
+
- spec/cached_file_spec.rb
|
737
|
+
- spec/host_name_spec.rb
|
738
|
+
- spec/ronin_spec.rb
|