ronin 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +23 -0
- data/README.md +19 -13
- data/Rakefile +2 -1
- data/gemspec.yml +18 -17
- data/lib/bond/completions/ronin.rb +147 -0
- data/lib/ronin/auto_load.rb +30 -28
- data/lib/ronin/database/migrations/1.0.0.rb +1 -0
- data/lib/ronin/model/has_authors.rb +92 -2
- data/lib/ronin/model/has_description.rb +54 -2
- data/lib/ronin/model/has_license.rb +101 -2
- data/lib/ronin/model/has_name.rb +72 -2
- data/lib/ronin/model/has_title.rb +52 -2
- data/lib/ronin/model/has_unique_name.rb +93 -2
- data/lib/ronin/model/has_version.rb +58 -2
- data/lib/ronin/model/model.rb +91 -52
- data/lib/ronin/os.rb +30 -15
- data/lib/ronin/repository.rb +1 -1
- data/lib/ronin/ronin.rb +0 -15
- data/lib/ronin/script/script.rb +257 -2
- data/lib/ronin/ui/console.rb +2 -199
- data/lib/ronin/ui/console/commands.rb +164 -0
- data/lib/ronin/ui/console/console.rb +215 -0
- data/lib/ronin/ui/console/context.rb +95 -0
- data/lib/ronin/version.rb +1 -1
- data/spec/os_spec.rb +18 -13
- metadata +206 -239
- data/lib/ronin/class_methods.rb +0 -49
- data/lib/ronin/model/class_methods.rb +0 -58
- data/lib/ronin/model/has_authors/class_methods.rb +0 -60
- data/lib/ronin/model/has_authors/has_authors.rb +0 -70
- data/lib/ronin/model/has_description/class_methods.rb +0 -49
- data/lib/ronin/model/has_description/has_description.rb +0 -49
- data/lib/ronin/model/has_license/class_methods.rb +0 -68
- data/lib/ronin/model/has_license/has_license.rb +0 -71
- data/lib/ronin/model/has_name/class_methods.rb +0 -48
- data/lib/ronin/model/has_name/has_name.rb +0 -62
- data/lib/ronin/model/has_title/class_methods.rb +0 -48
- data/lib/ronin/model/has_title/has_title.rb +0 -48
- data/lib/ronin/model/has_unique_name/class_methods.rb +0 -51
- data/lib/ronin/model/has_unique_name/has_unique_name.rb +0 -78
- data/lib/ronin/model/has_version/class_methods.rb +0 -54
- data/lib/ronin/model/has_version/has_version.rb +0 -48
- data/lib/ronin/script/class_methods.rb +0 -84
- data/lib/ronin/script/instance_methods.rb +0 -217
@@ -1,48 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
|
-
#
|
4
|
-
# This file is part of Ronin.
|
5
|
-
#
|
6
|
-
# Ronin 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 3 of the License, or
|
9
|
-
# (at your option) any later version.
|
10
|
-
#
|
11
|
-
# Ronin 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 Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
#
|
19
|
-
|
20
|
-
module Ronin
|
21
|
-
module Model
|
22
|
-
module HasName
|
23
|
-
#
|
24
|
-
# Class methods that are added when {HasName} is included into a
|
25
|
-
# model.
|
26
|
-
#
|
27
|
-
module ClassMethods
|
28
|
-
#
|
29
|
-
# Finds models with names containing a given fragment of text.
|
30
|
-
#
|
31
|
-
# @param [String] fragment
|
32
|
-
# The fragment of text to search for within the names of models.
|
33
|
-
#
|
34
|
-
# @return [Array<Model>]
|
35
|
-
# The found models.
|
36
|
-
#
|
37
|
-
# @example
|
38
|
-
# Exploit.named 'ProFTP'
|
39
|
-
#
|
40
|
-
# @api public
|
41
|
-
#
|
42
|
-
def named(fragment)
|
43
|
-
all(:name.like => "%#{fragment}%")
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
|
-
#
|
4
|
-
# This file is part of Ronin.
|
5
|
-
#
|
6
|
-
# Ronin 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 3 of the License, or
|
9
|
-
# (at your option) any later version.
|
10
|
-
#
|
11
|
-
# Ronin 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 Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
#
|
19
|
-
|
20
|
-
require 'ronin/model/has_name/class_methods'
|
21
|
-
require 'ronin/model/model'
|
22
|
-
|
23
|
-
module Ronin
|
24
|
-
module Model
|
25
|
-
#
|
26
|
-
# Adds a `name` property to a model.
|
27
|
-
#
|
28
|
-
module HasName
|
29
|
-
#
|
30
|
-
# Adds the `name` property and {ClassMethods} to the model.
|
31
|
-
#
|
32
|
-
# @param [Class] base
|
33
|
-
# The model.
|
34
|
-
#
|
35
|
-
# @api semipublic
|
36
|
-
#
|
37
|
-
def self.included(base)
|
38
|
-
base.send :include, Model
|
39
|
-
base.send :extend, ClassMethods
|
40
|
-
|
41
|
-
base.module_eval do
|
42
|
-
# The name of the model
|
43
|
-
property :name, String, :required => true, :index => true
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
#
|
48
|
-
# Converts the named resource into a String.
|
49
|
-
#
|
50
|
-
# @return [String]
|
51
|
-
# The name of the resource.
|
52
|
-
#
|
53
|
-
# @since 1.0.0
|
54
|
-
#
|
55
|
-
# @api public
|
56
|
-
#
|
57
|
-
def to_s
|
58
|
-
self.name.to_s
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
|
-
#
|
4
|
-
# This file is part of Ronin.
|
5
|
-
#
|
6
|
-
# Ronin 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 3 of the License, or
|
9
|
-
# (at your option) any later version.
|
10
|
-
#
|
11
|
-
# Ronin 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 Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
#
|
19
|
-
|
20
|
-
module Ronin
|
21
|
-
module Model
|
22
|
-
module HasTitle
|
23
|
-
#
|
24
|
-
# Class methods that are added when {HasTitle} are included into a
|
25
|
-
# model.
|
26
|
-
#
|
27
|
-
module ClassMethods
|
28
|
-
#
|
29
|
-
# Finds models with titles containing a given fragment of text.
|
30
|
-
#
|
31
|
-
# @param [String] fragment
|
32
|
-
# The fragment of text to match titles with.
|
33
|
-
#
|
34
|
-
# @return [Array<Model>]
|
35
|
-
# The found models.
|
36
|
-
#
|
37
|
-
# @example
|
38
|
-
# Vuln.titled 'bypass'
|
39
|
-
#
|
40
|
-
# @api public
|
41
|
-
#
|
42
|
-
def titled(fragment)
|
43
|
-
all(:title.like => "%#{fragment}%")
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
|
-
#
|
4
|
-
# This file is part of Ronin.
|
5
|
-
#
|
6
|
-
# Ronin 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 3 of the License, or
|
9
|
-
# (at your option) any later version.
|
10
|
-
#
|
11
|
-
# Ronin 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 Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
#
|
19
|
-
|
20
|
-
require 'ronin/model/has_title/class_methods'
|
21
|
-
require 'ronin/model/model'
|
22
|
-
|
23
|
-
module Ronin
|
24
|
-
module Model
|
25
|
-
#
|
26
|
-
# Adds a `title` property to a model.
|
27
|
-
#
|
28
|
-
module HasTitle
|
29
|
-
#
|
30
|
-
# Adds the `title` property and {ClassMethods} to the model.
|
31
|
-
#
|
32
|
-
# @param [Class] base
|
33
|
-
# The model.
|
34
|
-
#
|
35
|
-
# @api semipublic
|
36
|
-
#
|
37
|
-
def self.included(base)
|
38
|
-
base.send :include, Model
|
39
|
-
base.send :extend, ClassMethods
|
40
|
-
|
41
|
-
base.module_eval do
|
42
|
-
# The title of the model
|
43
|
-
property :title, String
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
|
-
#
|
4
|
-
# This file is part of Ronin.
|
5
|
-
#
|
6
|
-
# Ronin 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 3 of the License, or
|
9
|
-
# (at your option) any later version.
|
10
|
-
#
|
11
|
-
# Ronin 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 Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
#
|
19
|
-
|
20
|
-
module Ronin
|
21
|
-
module Model
|
22
|
-
module HasUniqueName
|
23
|
-
#
|
24
|
-
# Class methods that will be added when {HasUniqueName} is included.
|
25
|
-
#
|
26
|
-
module ClassMethods
|
27
|
-
#
|
28
|
-
# Searches for models with the unique name.
|
29
|
-
#
|
30
|
-
# @param [String, Symbol, Integer] key
|
31
|
-
# The unique name or index to search for.
|
32
|
-
#
|
33
|
-
# @return [Model, nil]
|
34
|
-
# The matching model.
|
35
|
-
#
|
36
|
-
# @since 1.0.0
|
37
|
-
#
|
38
|
-
# @api public
|
39
|
-
#
|
40
|
-
def [](key)
|
41
|
-
case key
|
42
|
-
when String, Symbol
|
43
|
-
first(:name => key.to_s)
|
44
|
-
else
|
45
|
-
super(key)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
|
-
#
|
4
|
-
# This file is part of Ronin.
|
5
|
-
#
|
6
|
-
# Ronin 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 3 of the License, or
|
9
|
-
# (at your option) any later version.
|
10
|
-
#
|
11
|
-
# Ronin 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 Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
#
|
19
|
-
|
20
|
-
require 'ronin/model/has_unique_name/class_methods'
|
21
|
-
require 'ronin/model/has_name/class_methods'
|
22
|
-
|
23
|
-
module Ronin
|
24
|
-
module Model
|
25
|
-
#
|
26
|
-
# Adds a unique `name` property to a model.
|
27
|
-
#
|
28
|
-
module HasUniqueName
|
29
|
-
#
|
30
|
-
# Adds the unique `name` property and {HasName::ClassMethods} to the
|
31
|
-
# model.
|
32
|
-
#
|
33
|
-
# @param [Class] base
|
34
|
-
# The model.
|
35
|
-
#
|
36
|
-
# @api semipublic
|
37
|
-
#
|
38
|
-
def self.included(base)
|
39
|
-
base.send :include, Model
|
40
|
-
base.send :extend, HasName::ClassMethods,
|
41
|
-
HasUniqueName::ClassMethods
|
42
|
-
|
43
|
-
base.module_eval do
|
44
|
-
# The name of the model
|
45
|
-
property :name, String, :required => true, :unique => true
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
#
|
50
|
-
# Converts the named resource into a String.
|
51
|
-
#
|
52
|
-
# @return [String]
|
53
|
-
# The name of the resource.
|
54
|
-
#
|
55
|
-
# @since 1.0.0
|
56
|
-
#
|
57
|
-
# @api public
|
58
|
-
#
|
59
|
-
def to_s
|
60
|
-
self.name.to_s
|
61
|
-
end
|
62
|
-
|
63
|
-
#
|
64
|
-
# Inspects the resource with the unique name.
|
65
|
-
#
|
66
|
-
# @return [String]
|
67
|
-
# The inspected resource.
|
68
|
-
#
|
69
|
-
# @since 1.0.0
|
70
|
-
#
|
71
|
-
# @api public
|
72
|
-
#
|
73
|
-
def inspect
|
74
|
-
"#<#{self.class}: #{self.name}>"
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
|
-
#
|
4
|
-
# This file is part of Ronin.
|
5
|
-
#
|
6
|
-
# Ronin 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 3 of the License, or
|
9
|
-
# (at your option) any later version.
|
10
|
-
#
|
11
|
-
# Ronin 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 Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
#
|
19
|
-
|
20
|
-
module Ronin
|
21
|
-
module Model
|
22
|
-
module HasVersion
|
23
|
-
#
|
24
|
-
# Class methods that are added when {HasVersion} is included into a
|
25
|
-
# model.
|
26
|
-
#
|
27
|
-
module ClassMethods
|
28
|
-
#
|
29
|
-
# Finds all models with a specific version.
|
30
|
-
#
|
31
|
-
# @param [String] version
|
32
|
-
# The specific version to search for.
|
33
|
-
#
|
34
|
-
# @return [Array]
|
35
|
-
# The models with the specific version.
|
36
|
-
#
|
37
|
-
# @api public
|
38
|
-
#
|
39
|
-
def revision(version)
|
40
|
-
all(:version => version.to_s)
|
41
|
-
end
|
42
|
-
|
43
|
-
#
|
44
|
-
# Finds latest version of the model.
|
45
|
-
#
|
46
|
-
# @api public
|
47
|
-
#
|
48
|
-
def latest
|
49
|
-
first(:order => [:version.desc])
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Copyright (c) 2006-2011 Hal Brodigan (postmodern.mod3 at gmail.com)
|
3
|
-
#
|
4
|
-
# This file is part of Ronin.
|
5
|
-
#
|
6
|
-
# Ronin 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 3 of the License, or
|
9
|
-
# (at your option) any later version.
|
10
|
-
#
|
11
|
-
# Ronin 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 Ronin. If not, see <http://www.gnu.org/licenses/>.
|
18
|
-
#
|
19
|
-
|
20
|
-
require 'ronin/model/has_version/class_methods'
|
21
|
-
require 'ronin/model/model'
|
22
|
-
|
23
|
-
module Ronin
|
24
|
-
module Model
|
25
|
-
#
|
26
|
-
# Adds a `version` property to a model.
|
27
|
-
#
|
28
|
-
module HasVersion
|
29
|
-
#
|
30
|
-
# Adds the `version` property and {ClassMethods} to the model.
|
31
|
-
#
|
32
|
-
# @param [Class] base
|
33
|
-
# The model.
|
34
|
-
#
|
35
|
-
# @api semipublic
|
36
|
-
#
|
37
|
-
def self.included(base)
|
38
|
-
base.send :include, Model
|
39
|
-
base.send :extend, ClassMethods
|
40
|
-
|
41
|
-
base.module_eval do
|
42
|
-
# The version of the model
|
43
|
-
property :version, String, :default => '0.1', :index => true
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|