ronin 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. data/ChangeLog.md +23 -0
  2. data/README.md +19 -13
  3. data/Rakefile +2 -1
  4. data/gemspec.yml +18 -17
  5. data/lib/bond/completions/ronin.rb +147 -0
  6. data/lib/ronin/auto_load.rb +30 -28
  7. data/lib/ronin/database/migrations/1.0.0.rb +1 -0
  8. data/lib/ronin/model/has_authors.rb +92 -2
  9. data/lib/ronin/model/has_description.rb +54 -2
  10. data/lib/ronin/model/has_license.rb +101 -2
  11. data/lib/ronin/model/has_name.rb +72 -2
  12. data/lib/ronin/model/has_title.rb +52 -2
  13. data/lib/ronin/model/has_unique_name.rb +93 -2
  14. data/lib/ronin/model/has_version.rb +58 -2
  15. data/lib/ronin/model/model.rb +91 -52
  16. data/lib/ronin/os.rb +30 -15
  17. data/lib/ronin/repository.rb +1 -1
  18. data/lib/ronin/ronin.rb +0 -15
  19. data/lib/ronin/script/script.rb +257 -2
  20. data/lib/ronin/ui/console.rb +2 -199
  21. data/lib/ronin/ui/console/commands.rb +164 -0
  22. data/lib/ronin/ui/console/console.rb +215 -0
  23. data/lib/ronin/ui/console/context.rb +95 -0
  24. data/lib/ronin/version.rb +1 -1
  25. data/spec/os_spec.rb +18 -13
  26. metadata +206 -239
  27. data/lib/ronin/class_methods.rb +0 -49
  28. data/lib/ronin/model/class_methods.rb +0 -58
  29. data/lib/ronin/model/has_authors/class_methods.rb +0 -60
  30. data/lib/ronin/model/has_authors/has_authors.rb +0 -70
  31. data/lib/ronin/model/has_description/class_methods.rb +0 -49
  32. data/lib/ronin/model/has_description/has_description.rb +0 -49
  33. data/lib/ronin/model/has_license/class_methods.rb +0 -68
  34. data/lib/ronin/model/has_license/has_license.rb +0 -71
  35. data/lib/ronin/model/has_name/class_methods.rb +0 -48
  36. data/lib/ronin/model/has_name/has_name.rb +0 -62
  37. data/lib/ronin/model/has_title/class_methods.rb +0 -48
  38. data/lib/ronin/model/has_title/has_title.rb +0 -48
  39. data/lib/ronin/model/has_unique_name/class_methods.rb +0 -51
  40. data/lib/ronin/model/has_unique_name/has_unique_name.rb +0 -78
  41. data/lib/ronin/model/has_version/class_methods.rb +0 -54
  42. data/lib/ronin/model/has_version/has_version.rb +0 -48
  43. data/lib/ronin/script/class_methods.rb +0 -84
  44. data/lib/ronin/script/instance_methods.rb +0 -217
@@ -1,49 +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
- #
22
- # Class methods that are included when {Ronin} is included.
23
- #
24
- module ClassMethods
25
- #
26
- # Catches missing constants and searches the {Ronin} namespace.
27
- #
28
- # @param [Symbol] name
29
- # The constant name.
30
- #
31
- # @return [Object]
32
- # The found constant.
33
- #
34
- # @raise [NameError]
35
- # The constant could not be found within {Ronin}.
36
- #
37
- # @since 1.0.0
38
- #
39
- # @api semipublic
40
- #
41
- def const_missing(name)
42
- begin
43
- Ronin.send(:const_missing,name)
44
- rescue NameError
45
- super(name)
46
- end
47
- end
48
- end
49
- end
@@ -1,58 +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/support/inflector'
21
-
22
- module Ronin
23
- module Model
24
- #
25
- # Class methods that are added when {Model} is included into a class.
26
- #
27
- module ClassMethods
28
- #
29
- # The default name to use when defining relationships with the
30
- # model.
31
- #
32
- # @return [Symbol]
33
- # The name to use in relationships.
34
- #
35
- # @since 1.0.0
36
- #
37
- # @api semipublic
38
- #
39
- def relationship_name
40
- name = Support::Inflector.underscore(self.name.split('::').last)
41
-
42
- return Support::Inflector.pluralize(name).to_sym
43
- end
44
-
45
- #
46
- # Loads and initialize the resources.
47
- #
48
- # @api private
49
- #
50
- def load(records,query)
51
- resources = super(records,query)
52
- resources.each { |resource| resource.send :initialize }
53
-
54
- return resources
55
- end
56
- end
57
- end
58
- end
@@ -1,60 +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 HasAuthors
23
- #
24
- # Class methods that are added when {HasAuthors} is included into a
25
- # model.
26
- #
27
- module ClassMethods
28
- #
29
- # Finds all resources associated with a given author.
30
- #
31
- # @param [String] name
32
- # The name of the author.
33
- #
34
- # @return [Array<Model>]
35
- # The resources written by the author.
36
- #
37
- # @api public
38
- #
39
- def written_by(name)
40
- all('authors.name.like' => "%#{name}%")
41
- end
42
-
43
- #
44
- # Finds all resources associated with a given organization.
45
- #
46
- # @param [String] name
47
- # The name of the organization.
48
- #
49
- # @return [Array<Model>]
50
- # The resources associated with the organization.
51
- #
52
- # @api public
53
- #
54
- def written_for(name)
55
- all('authors.organization.like' => "%#{name}%")
56
- end
57
- end
58
- end
59
- end
60
- end
@@ -1,70 +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_authors/class_methods'
21
- require 'ronin/model/model'
22
- require 'ronin/author'
23
-
24
- module Ronin
25
- module Model
26
- #
27
- # Adds an `authors` relationship between a model and the {Author} model.
28
- #
29
- module HasAuthors
30
- #
31
- # Adds the `authors` relationship and {ClassMethods} to the 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, ClassMethods
41
-
42
- base.module_eval do
43
- # The authors associated with the model.
44
- has 0..n, :authors, Ronin::Author, :through => DataMapper::Resource
45
-
46
- Ronin::Author.has 0..n, self.relationship_name,
47
- :through => DataMapper::Resource,
48
- :model => self
49
- end
50
- end
51
-
52
- #
53
- # Adds a new author to the resource.
54
- #
55
- # @param [Hash] attributes
56
- # Additional attributes to create the new author.
57
- #
58
- # @example
59
- # author :name => 'Anonymous',
60
- # :email => 'anon@example.com',
61
- # :organization => 'Anonymous LLC'
62
- #
63
- # @api public
64
- #
65
- def author(attributes)
66
- self.authors.new(attributes)
67
- end
68
- end
69
- end
70
- end
@@ -1,49 +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 HasDescription
23
- #
24
- # Class methods that are added when {HasDescription} is included into
25
- # a model.
26
- #
27
- module ClassMethods
28
- #
29
- # Finds models with descriptions containing a given fragment of
30
- # text.
31
- #
32
- # @param [String] fragment
33
- # The fragment of text to match descriptions with.
34
- #
35
- # @return [Array<Model>]
36
- # The found models.
37
- #
38
- # @example
39
- # Exploit.describing 'bypass'
40
- #
41
- # @api public
42
- #
43
- def describing(fragment)
44
- all(:description.like => "%#{fragment}%")
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,49 +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_description/class_methods'
21
- require 'ronin/model/types/description'
22
- require 'ronin/model/model'
23
-
24
- module Ronin
25
- module Model
26
- #
27
- # Adds a `description` property to a model.
28
- #
29
- module HasDescription
30
- #
31
- # Adds the `description` property and {ClassMethods} to the 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, ClassMethods
41
-
42
- base.module_eval do
43
- # The description of the model
44
- property :description, Model::Types::Description
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,68 +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 HasLicense
23
- #
24
- # Class methods that are added when {HasLicense} is included into a
25
- # model.
26
- #
27
- module ClassMethods
28
- #
29
- # Finds all models associated with a given license.
30
- #
31
- # @param [License, Symbol, String] license
32
- # The license which models are associated with.
33
- #
34
- # @return [Array<Model>]
35
- # The models associated with a given license.
36
- #
37
- # @example Query using a predefined {License} resource.
38
- # LicensedModel.licensed_under(License.mit)
39
- # # => [#<Ronin::LicensedModel: ...>, ...]
40
- #
41
- # @example Query using the name of a predefined {License}.
42
- # LicensedModel.licensed_under(:cc_by_nc)
43
- # # => [#<Ronin::LicensedModel: ...>, ...]
44
- #
45
- # @example Query using the name of a {License}.
46
- # LicensedModel.licensed_under('GPL-2')
47
- # # => [#<Ronin::LicensedModel: ...>, ...]
48
- #
49
- # @since 1.0.0
50
- #
51
- # @api public
52
- #
53
- def licensed_under(license)
54
- query = case license
55
- when License
56
- {:license => license}
57
- when Symbol
58
- {:license => License.predefined_resource(license)}
59
- else
60
- {'license.name' => license.to_s}
61
- end
62
-
63
- all(query)
64
- end
65
- end
66
- end
67
- end
68
- end
@@ -1,71 +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_license/class_methods'
21
- require 'ronin/model/model'
22
- require 'ronin/license'
23
-
24
- module Ronin
25
- module Model
26
- #
27
- # Adds a `license` relationship between a model and the {License} model.
28
- #
29
- module HasLicense
30
- #
31
- # Adds the `license` relationship and {ClassMethods} to the 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, ClassMethods
41
-
42
- base.module_eval do
43
- # The license
44
- belongs_to :license, Ronin::License, :required => false
45
-
46
- Ronin::License.has 0..n, self.relationship_name, :model => self
47
- end
48
- end
49
-
50
- #
51
- # Sets the license of the model.
52
- #
53
- # @param [Symbol, String] name
54
- # The name of the license to use.
55
- #
56
- # @return [License]
57
- # The new license of the model.
58
- #
59
- # @example
60
- # license! :mit
61
- #
62
- # @since 1.0.0
63
- #
64
- # @api public
65
- #
66
- def license!(name)
67
- self.license = Ronin::License.predefined_resource(name)
68
- end
69
- end
70
- end
71
- end