metasploit-model 0.28.0 → 0.29.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (206) hide show
  1. checksums.yaml +8 -8
  2. data/.travis.yml +3 -1
  3. data/config/locales/en.yml +0 -171
  4. data/lib/metasploit/model.rb +0 -2
  5. data/lib/metasploit/model/spec.rb +0 -130
  6. data/lib/metasploit/model/version.rb +1 -1
  7. data/spec/support/shared/examples/metasploit/model/search/operator/help.rb +4 -6
  8. data/spec/support/shared/examples/metasploit/model/translation.rb +1 -1
  9. data/spec/support/shared/examples/search_association.rb +1 -1
  10. data/spec/support/shared/examples/search_with.rb +4 -2
  11. metadata +3 -349
  12. data/app/models/metasploit/model/module/ancestor/spec/template.rb +0 -125
  13. data/app/models/metasploit/model/module/class/spec/template.rb +0 -92
  14. data/app/models/metasploit/model/module/instance/spec/template.rb +0 -97
  15. data/app/models/metasploit/model/spec/template.rb +0 -277
  16. data/app/validators/derivation_validator.rb +0 -17
  17. data/app/validators/dynamic_length_validator.rb +0 -45
  18. data/lib/metasploit/model/architecture.rb +0 -342
  19. data/lib/metasploit/model/author.rb +0 -54
  20. data/lib/metasploit/model/authority.rb +0 -141
  21. data/lib/metasploit/model/authority/bid.rb +0 -10
  22. data/lib/metasploit/model/authority/cve.rb +0 -10
  23. data/lib/metasploit/model/authority/msb.rb +0 -10
  24. data/lib/metasploit/model/authority/osvdb.rb +0 -10
  25. data/lib/metasploit/model/authority/pmasa.rb +0 -10
  26. data/lib/metasploit/model/authority/secunia.rb +0 -10
  27. data/lib/metasploit/model/authority/us_cert_vu.rb +0 -10
  28. data/lib/metasploit/model/authority/waraxe.rb +0 -31
  29. data/lib/metasploit/model/authority/zdi.rb +0 -10
  30. data/lib/metasploit/model/derivation.rb +0 -109
  31. data/lib/metasploit/model/derivation/full_name.rb +0 -19
  32. data/lib/metasploit/model/email_address.rb +0 -124
  33. data/lib/metasploit/model/module.rb +0 -20
  34. data/lib/metasploit/model/module/action.rb +0 -52
  35. data/lib/metasploit/model/module/ancestor.rb +0 -491
  36. data/lib/metasploit/model/module/ancestor/spec.rb +0 -6
  37. data/lib/metasploit/model/module/architecture.rb +0 -34
  38. data/lib/metasploit/model/module/author.rb +0 -40
  39. data/lib/metasploit/model/module/class.rb +0 -403
  40. data/lib/metasploit/model/module/class/spec.rb +0 -6
  41. data/lib/metasploit/model/module/handler.rb +0 -29
  42. data/lib/metasploit/model/module/instance.rb +0 -622
  43. data/lib/metasploit/model/module/instance/spec.rb +0 -6
  44. data/lib/metasploit/model/module/path.rb +0 -159
  45. data/lib/metasploit/model/module/platform.rb +0 -32
  46. data/lib/metasploit/model/module/rank.rb +0 -85
  47. data/lib/metasploit/model/module/reference.rb +0 -32
  48. data/lib/metasploit/model/module/stance.rb +0 -16
  49. data/lib/metasploit/model/module/target.rb +0 -78
  50. data/lib/metasploit/model/module/target/architecture.rb +0 -34
  51. data/lib/metasploit/model/module/target/platform.rb +0 -34
  52. data/lib/metasploit/model/module/type.rb +0 -38
  53. data/lib/metasploit/model/platform.rb +0 -246
  54. data/lib/metasploit/model/real_pathname.rb +0 -16
  55. data/lib/metasploit/model/reference.rb +0 -104
  56. data/spec/app/models/metasploit/model/module/ancestor/spec/template_spec.rb +0 -174
  57. data/spec/app/models/metasploit/model/module/class/spec/template_spec.rb +0 -222
  58. data/spec/app/models/metasploit/model/module/instance/spec/template_spec.rb +0 -201
  59. data/spec/app/models/metasploit/model/search/operator/deprecated/app_spec.rb +0 -62
  60. data/spec/app/models/metasploit/model/search/operator/deprecated/author_spec.rb +0 -197
  61. data/spec/app/models/metasploit/model/search/operator/deprecated/authority_spec.rb +0 -135
  62. data/spec/app/models/metasploit/model/search/operator/deprecated/platform_spec.rb +0 -124
  63. data/spec/app/models/metasploit/model/search/operator/deprecated/ref_spec.rb +0 -387
  64. data/spec/app/models/metasploit/model/search/operator/deprecated/text_spec.rb +0 -399
  65. data/spec/app/models/metasploit/model/spec/template_spec.rb +0 -23
  66. data/spec/app/validators/derivation_validator_spec.rb +0 -92
  67. data/spec/app/validators/dynamic_length_validator_spec.rb +0 -293
  68. data/spec/dummy/app/models/dummy/architecture.rb +0 -92
  69. data/spec/dummy/app/models/dummy/author.rb +0 -15
  70. data/spec/dummy/app/models/dummy/authority.rb +0 -130
  71. data/spec/dummy/app/models/dummy/email_address.rb +0 -27
  72. data/spec/dummy/app/models/dummy/module/action.rb +0 -25
  73. data/spec/dummy/app/models/dummy/module/ancestor.rb +0 -67
  74. data/spec/dummy/app/models/dummy/module/architecture.rb +0 -19
  75. data/spec/dummy/app/models/dummy/module/author.rb +0 -28
  76. data/spec/dummy/app/models/dummy/module/class.rb +0 -69
  77. data/spec/dummy/app/models/dummy/module/instance.rb +0 -209
  78. data/spec/dummy/app/models/dummy/module/path.rb +0 -64
  79. data/spec/dummy/app/models/dummy/module/platform.rb +0 -19
  80. data/spec/dummy/app/models/dummy/module/rank.rb +0 -44
  81. data/spec/dummy/app/models/dummy/module/reference.rb +0 -19
  82. data/spec/dummy/app/models/dummy/module/target.rb +0 -62
  83. data/spec/dummy/app/models/dummy/module/target/architecture.rb +0 -19
  84. data/spec/dummy/app/models/dummy/module/target/platform.rb +0 -19
  85. data/spec/dummy/app/models/dummy/platform.rb +0 -58
  86. data/spec/dummy/app/models/dummy/reference.rb +0 -31
  87. data/spec/dummy/spec/factories/dummy/architectures.rb +0 -13
  88. data/spec/dummy/spec/factories/dummy/authorities.rb +0 -32
  89. data/spec/dummy/spec/factories/dummy/authors.rb +0 -8
  90. data/spec/dummy/spec/factories/dummy/email_addresses.rb +0 -8
  91. data/spec/dummy/spec/factories/dummy/module/actions.rb +0 -13
  92. data/spec/dummy/spec/factories/dummy/module/ancestors.rb +0 -45
  93. data/spec/dummy/spec/factories/dummy/module/architectures.rb +0 -35
  94. data/spec/dummy/spec/factories/dummy/module/authors.rb +0 -10
  95. data/spec/dummy/spec/factories/dummy/module/classes.rb +0 -40
  96. data/spec/dummy/spec/factories/dummy/module/instances.rb +0 -86
  97. data/spec/dummy/spec/factories/dummy/module/paths.rb +0 -16
  98. data/spec/dummy/spec/factories/dummy/module/platforms.rb +0 -35
  99. data/spec/dummy/spec/factories/dummy/module/ranks.rb +0 -14
  100. data/spec/dummy/spec/factories/dummy/module/references.rb +0 -17
  101. data/spec/dummy/spec/factories/dummy/module/target/architectures.rb +0 -40
  102. data/spec/dummy/spec/factories/dummy/module/target/platforms.rb +0 -41
  103. data/spec/dummy/spec/factories/dummy/module/targets.rb +0 -46
  104. data/spec/dummy/spec/factories/dummy/platforms.rb +0 -3
  105. data/spec/dummy/spec/factories/dummy/references.rb +0 -26
  106. data/spec/factories/metasploit/model/architectures.rb +0 -6
  107. data/spec/factories/metasploit/model/authorities.rb +0 -28
  108. data/spec/factories/metasploit/model/authors.rb +0 -9
  109. data/spec/factories/metasploit/model/email_addresses.rb +0 -14
  110. data/spec/factories/metasploit/model/module/actions.rb +0 -9
  111. data/spec/factories/metasploit/model/module/ancestors.rb +0 -180
  112. data/spec/factories/metasploit/model/module/architectures.rb +0 -15
  113. data/spec/factories/metasploit/model/module/classes.rb +0 -47
  114. data/spec/factories/metasploit/model/module/handlers.rb +0 -3
  115. data/spec/factories/metasploit/model/module/instances.rb +0 -83
  116. data/spec/factories/metasploit/model/module/paths.rb +0 -51
  117. data/spec/factories/metasploit/model/module/platforms.rb +0 -15
  118. data/spec/factories/metasploit/model/module/ranks.rb +0 -9
  119. data/spec/factories/metasploit/model/module/references.rb +0 -11
  120. data/spec/factories/metasploit/model/module/stances.rb +0 -3
  121. data/spec/factories/metasploit/model/module/targets.rb +0 -22
  122. data/spec/factories/metasploit/model/module/types.rb +0 -5
  123. data/spec/factories/metasploit/model/references.rb +0 -88
  124. data/spec/lib/metasploit/model/architecture_spec.rb +0 -52
  125. data/spec/lib/metasploit/model/author_spec.rb +0 -6
  126. data/spec/lib/metasploit/model/authority/bid_spec.rb +0 -17
  127. data/spec/lib/metasploit/model/authority/cve_spec.rb +0 -17
  128. data/spec/lib/metasploit/model/authority/msb_spec.rb +0 -17
  129. data/spec/lib/metasploit/model/authority/osvdb_spec.rb +0 -17
  130. data/spec/lib/metasploit/model/authority/pmasa_spec.rb +0 -17
  131. data/spec/lib/metasploit/model/authority/secunia_spec.rb +0 -17
  132. data/spec/lib/metasploit/model/authority/us_cert_vu_spec.rb +0 -17
  133. data/spec/lib/metasploit/model/authority/waraxe_spec.rb +0 -51
  134. data/spec/lib/metasploit/model/authority/zdi_spec.rb +0 -21
  135. data/spec/lib/metasploit/model/authority_spec.rb +0 -10
  136. data/spec/lib/metasploit/model/derivation/full_name_spec.rb +0 -75
  137. data/spec/lib/metasploit/model/derivation_spec.rb +0 -217
  138. data/spec/lib/metasploit/model/email_address_spec.rb +0 -19
  139. data/spec/lib/metasploit/model/module/action_spec.rb +0 -6
  140. data/spec/lib/metasploit/model/module/ancestor_spec.rb +0 -6
  141. data/spec/lib/metasploit/model/module/architecture_spec.rb +0 -9
  142. data/spec/lib/metasploit/model/module/author_spec.rb +0 -6
  143. data/spec/lib/metasploit/model/module/class_spec.rb +0 -19
  144. data/spec/lib/metasploit/model/module/handler_spec.rb +0 -61
  145. data/spec/lib/metasploit/model/module/instance_spec.rb +0 -183
  146. data/spec/lib/metasploit/model/module/path_spec.rb +0 -6
  147. data/spec/lib/metasploit/model/module/platform_spec.rb +0 -9
  148. data/spec/lib/metasploit/model/module/rank_spec.rb +0 -29
  149. data/spec/lib/metasploit/model/module/reference_spec.rb +0 -9
  150. data/spec/lib/metasploit/model/module/stance_spec.rb +0 -30
  151. data/spec/lib/metasploit/model/module/target/architecture_spec.rb +0 -9
  152. data/spec/lib/metasploit/model/module/target/platform_spec.rb +0 -9
  153. data/spec/lib/metasploit/model/module/target_spec.rb +0 -9
  154. data/spec/lib/metasploit/model/module/type_spec.rb +0 -125
  155. data/spec/lib/metasploit/model/platform_spec.rb +0 -100
  156. data/spec/lib/metasploit/model/reference_spec.rb +0 -21
  157. data/spec/support/shared/contexts/metasploit/model/module/ancestor/contents/metasploit_module.rb +0 -12
  158. data/spec/support/shared/contexts/metasploit/model/module/ancestor/factory/contents.rb +0 -10
  159. data/spec/support/shared/contexts/metasploit/model/module/ancestor/factory/contents/metasploit_module.rb +0 -15
  160. data/spec/support/shared/examples/derives.rb +0 -115
  161. data/spec/support/shared/examples/metasploit/model/architecture.rb +0 -425
  162. data/spec/support/shared/examples/metasploit/model/architecture/seed.rb +0 -25
  163. data/spec/support/shared/examples/metasploit/model/author.rb +0 -27
  164. data/spec/support/shared/examples/metasploit/model/authority.rb +0 -124
  165. data/spec/support/shared/examples/metasploit/model/authority/seed.rb +0 -49
  166. data/spec/support/shared/examples/metasploit/model/email_address.rb +0 -220
  167. data/spec/support/shared/examples/metasploit/model/module/action.rb +0 -26
  168. data/spec/support/shared/examples/metasploit/model/module/ancestor.rb +0 -2004
  169. data/spec/support/shared/examples/metasploit/model/module/ancestor/payload_factory.rb +0 -63
  170. data/spec/support/shared/examples/metasploit/model/module/architecture.rb +0 -36
  171. data/spec/support/shared/examples/metasploit/model/module/author.rb +0 -29
  172. data/spec/support/shared/examples/metasploit/model/module/class.rb +0 -1514
  173. data/spec/support/shared/examples/metasploit/model/module/handler.rb +0 -21
  174. data/spec/support/shared/examples/metasploit/model/module/instance.rb +0 -1384
  175. data/spec/support/shared/examples/metasploit/model/module/instance/class_methods.rb +0 -537
  176. data/spec/support/shared/examples/metasploit/model/module/instance/is_not_stanced_with_module_type.rb +0 -22
  177. data/spec/support/shared/examples/metasploit/model/module/instance/is_stanced_with_module_type.rb +0 -38
  178. data/spec/support/shared/examples/metasploit/model/module/instance/validates/dynamic_length_of.rb +0 -131
  179. data/spec/support/shared/examples/metasploit/model/module/path.rb +0 -493
  180. data/spec/support/shared/examples/metasploit/model/module/platform.rb +0 -36
  181. data/spec/support/shared/examples/metasploit/model/module/rank.rb +0 -92
  182. data/spec/support/shared/examples/metasploit/model/module/reference.rb +0 -16
  183. data/spec/support/shared/examples/metasploit/model/module/target.rb +0 -29
  184. data/spec/support/shared/examples/metasploit/model/module/target/architecture.rb +0 -56
  185. data/spec/support/shared/examples/metasploit/model/module/target/platform.rb +0 -56
  186. data/spec/support/shared/examples/metasploit/model/platform.rb +0 -213
  187. data/spec/support/shared/examples/metasploit/model/real_pathname.rb +0 -29
  188. data/spec/support/shared/examples/metasploit/model/reference.rb +0 -410
  189. data/spec/support/shared/examples/search/query/metasploit/model/search/operator/deprecated/app.rb +0 -44
  190. data/spec/support/shared/examples/search/query/metasploit/model/search/operator/deprecated/authority.rb +0 -72
  191. data/spec/support/templates/metasploit/model/module/ancestors/_attributes.rb.erb +0 -9
  192. data/spec/support/templates/metasploit/model/module/ancestors/_methods.rb.erb +0 -8
  193. data/spec/support/templates/metasploit/model/module/ancestors/_validations.rb.erb +0 -6
  194. data/spec/support/templates/metasploit/model/module/ancestors/base.rb.erb +0 -3
  195. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_auxiliary.rb.erb +0 -1
  196. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_encoder.rb.erb +0 -1
  197. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_exploit.rb.erb +0 -1
  198. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_non_payload.rb.erb +0 -5
  199. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_nop.rb.erb +0 -1
  200. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_payload.rb.erb +0 -4
  201. data/spec/support/templates/metasploit/model/module/ancestors/module_types/_post.rb.erb +0 -1
  202. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_handled.rb.erb +0 -20
  203. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_single.rb.erb +0 -1
  204. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_stage.rb.erb +0 -0
  205. data/spec/support/templates/metasploit/model/module/ancestors/payload_types/_stager.rb.erb +0 -1
  206. data/spec/support/templates/metasploit/model/module/classes/_methods.rb.erb +0 -9
@@ -1,17 +0,0 @@
1
- # Validator for {Metasploit::Model::Derivation::ClassMethods#derives}.
2
- class DerivationValidator < ActiveModel::EachValidator
3
- # Validates that `attribute`'s `value` equals derived_<attribute>'s value. If they are not equal then the error
4
- # message is `'must match its derivation'`.
5
- #
6
- # @param record [#errors, ActiveRecord::Base] ActiveModel or ActiveRecord
7
- # @param attribute [Symbol] name of derived attribute.
8
- # @param value [Object] value of `attribute` in `record`.
9
- # @return [void]
10
- def validate_each(record, attribute, value)
11
- derived_value = record.send("derived_#{attribute}")
12
-
13
- if value != derived_value
14
- record.errors[attribute] << 'must match its derivation'
15
- end
16
- end
17
- end
@@ -1,45 +0,0 @@
1
- # Validates that `value` of `attribute` on `record` is meets the
2
- # `record.dynamic_length_validation_options(attribute)`.
3
- #
4
- # Works similar to `LengthValidator`, but the minimum and maximum lengths are controlled dynamically by the `record` to
5
- # allow the validation to vary based on some other attribute in the record.
6
- class DynamicLengthValidator < ActiveModel::EachValidator
7
- # Validates that value's `#length` meets the minimum and maximum options in
8
- # `record.dynamic_length_validation_options(attribute)`.
9
- #
10
- # @param record [Object, #dynamic_length_validation_options] record that supports dynmaic length options on
11
- # `attribute`.
12
- # @param attribute [Symbol] name of an attribute on `record` with the given `value`.
13
- # @param value [Object, #length] value of `attribute`.
14
- # @return [void]
15
- def validate_each(record, attribute, value)
16
- # dynamic_options are not checked for validity the way options would be for LengthValidator because
17
- # dynamic_length_validation_options can be {} in some cases.
18
- dynamic_options = record.dynamic_length_validation_options(attribute)
19
- value_length = value.length
20
-
21
- ActiveModel::Validations::LengthValidator::CHECKS.each do |key, validity_check|
22
- check_value = dynamic_options[key]
23
-
24
- if check_value
25
- unless value_length.send(validity_check, check_value)
26
- errors_options = dynamic_options.except(*ActiveModel::Validations::LengthValidator::RESERVED_OPTIONS)
27
- errors_options[:count] = check_value
28
-
29
- message = errors_options[:message]
30
- message_key = ActiveModel::Validations::LengthValidator::MESSAGES[key]
31
-
32
- unless message
33
- default_message = dynamic_options[message_key]
34
-
35
- if default_message
36
- errors_options[:message] = default_message
37
- end
38
- end
39
-
40
- record.errors.add(attribute, message_key, errors_options)
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,342 +0,0 @@
1
- # Code shared between `Mdm::Architecture` and `Metasploit::Framework::Architecture`.
2
- module Metasploit::Model::Architecture
3
- extend ActiveModel::Naming
4
- extend ActiveSupport::Concern
5
-
6
- include Metasploit::Model::Translation
7
-
8
- #
9
- # CONSTANTS
10
- #
11
-
12
- # Valid values for {#abbreviation}
13
- ABBREVIATIONS = [
14
- 'armbe',
15
- 'armle',
16
- 'cbea',
17
- 'cbea64',
18
- 'cmd',
19
- 'dalvik',
20
- 'firefox',
21
- 'java',
22
- 'mipsbe',
23
- 'mipsle',
24
- 'nodejs',
25
- 'php',
26
- 'ppc',
27
- 'ppc64',
28
- 'python',
29
- 'ruby',
30
- 'sparc',
31
- 'tty',
32
- 'x86',
33
- 'x86_64'
34
- ]
35
- # Valid values for {#bits}.
36
- BITS = [
37
- 32,
38
- 64
39
- ]
40
- # Valid values for {#endianness}.
41
- ENDIANNESSES = [
42
- 'big',
43
- 'little'
44
- ]
45
- # Valid values for {#family}.
46
- FAMILIES = [
47
- 'arm',
48
- 'cbea',
49
- 'javascript',
50
- 'mips',
51
- 'ppc',
52
- 'sparc',
53
- 'x86'
54
- ]
55
- # Attributes for seeds. Ensures that in-database seeds for `Mdm::Architecture` and in-memory seeds for
56
- # `Metasploit::Framework::Architecture` are the same.
57
- SEED_ATTRIBUTES = [
58
- {
59
- :abbreviation => 'armbe',
60
- :bits => 32,
61
- :endianness => 'big',
62
- :family => 'arm',
63
- :summary => 'Little-endian ARM'
64
- },
65
- {
66
- :abbreviation => 'armle',
67
- :bits => 32,
68
- :endianness => 'little',
69
- :family => 'arm',
70
- :summary => 'Big-endian ARM'
71
- },
72
- {
73
- :abbreviation => 'cbea',
74
- :bits => 32,
75
- :endianness => 'big',
76
- :family => 'cbea',
77
- :summary => '32-bit Cell Broadband Engine Architecture'
78
- },
79
- {
80
- :abbreviation => 'cbea64',
81
- :bits => 64,
82
- :endianness => 'big',
83
- :family => 'cbea',
84
- :summary => '64-bit Cell Broadband Engine Architecture'
85
- },
86
- {
87
- :abbreviation => 'cmd',
88
- :bits => nil,
89
- :endianness => nil,
90
- :family => nil,
91
- :summary => 'Command Injection'
92
- },
93
- {
94
- :abbreviation => 'dalvik',
95
- :bits => nil,
96
- :endianness => nil,
97
- :family => nil,
98
- :summary => 'Dalvik process virtual machine used in Google Android'
99
- },
100
- {
101
- abbreviation: 'firefox',
102
- bits: nil,
103
- endianness: nil,
104
- family: 'javascript',
105
- summary: "Firefox's privileged javascript API"
106
- },
107
- {
108
- :abbreviation => 'java',
109
- :bits => nil,
110
- :endianness => 'big',
111
- :family => nil,
112
- :summary => 'Java'
113
- },
114
- {
115
- :abbreviation => 'mipsbe',
116
- :bits => 32,
117
- :endianness => 'big',
118
- :family => 'mips',
119
- :summary => 'Big-endian MIPS'
120
- },
121
- {
122
- :abbreviation => 'mipsle',
123
- :bits => 32,
124
- :endianness => 'little',
125
- :family => 'mips',
126
- :summary => 'Little-endian MIPS'
127
- },
128
- {
129
- abbreviation: 'nodejs',
130
- bits: nil,
131
- endianness: nil,
132
- family: 'javascript',
133
- summary: 'NodeJS'
134
- },
135
- {
136
- :abbreviation => 'php',
137
- :bits => nil,
138
- :endianness => nil,
139
- :family => nil,
140
- :summary => 'PHP'
141
- },
142
- {
143
- :abbreviation => 'ppc',
144
- :bits => 32,
145
- :endianness => 'big',
146
- :family => 'ppc',
147
- :summary => '32-bit Peformance Optimization With Enhanced RISC - Performance Computing'
148
- },
149
- {
150
- :abbreviation => 'ppc64',
151
- :bits => 64,
152
- :endianness => 'big',
153
- :family => 'ppc',
154
- :summary => '64-bit Performance Optimization With Enhanced RISC - Performance Computing'
155
- },
156
- {
157
- :abbreviation => 'python',
158
- :bits => nil,
159
- :endianness => nil,
160
- :family => nil,
161
- :summary => 'Python'
162
- },
163
- {
164
- :abbreviation => 'ruby',
165
- :bits => nil,
166
- :endianness => nil,
167
- :family => nil,
168
- :summary => 'Ruby'
169
- },
170
- {
171
- :abbreviation => 'sparc',
172
- :bits => nil,
173
- :endianness => nil,
174
- :family => 'sparc',
175
- :summary => 'Scalable Processor ARChitecture'
176
- },
177
- {
178
- :abbreviation => 'tty',
179
- :bits => nil,
180
- :endianness => nil,
181
- :family => nil,
182
- :summary => '*nix terminal'
183
- },
184
- {
185
- :abbreviation => 'x86',
186
- :bits => 32,
187
- :endianness => 'little',
188
- :family => 'x86',
189
- :summary => '32-bit x86'
190
- },
191
- {
192
- :abbreviation => 'x86_64',
193
- :bits => 64,
194
- :endianness => 'little',
195
- :family => 'x86',
196
- :summary => '64-bit x86'
197
- }
198
- ]
199
-
200
- included do
201
- include ActiveModel::Validations
202
- include Metasploit::Model::Search
203
-
204
- #
205
- # Search Attributes
206
- #
207
-
208
- search_attribute :abbreviation,
209
- type: {
210
- set: :string
211
- }
212
- search_attribute :bits,
213
- type: {
214
- set: :integer
215
- }
216
- search_attribute :endianness,
217
- type: {
218
- set: :string
219
- }
220
- search_attribute :family,
221
- type: {
222
- set: :string
223
- }
224
-
225
- #
226
- # Validations
227
- #
228
-
229
- validates :abbreviation,
230
- :inclusion => {
231
- :in => ABBREVIATIONS
232
- }
233
- validates :bits,
234
- :inclusion => {
235
- :allow_nil => true,
236
- :in => BITS
237
- }
238
- validates :endianness,
239
- :inclusion => {
240
- :allow_nil => true,
241
- :in => ENDIANNESSES
242
- }
243
- validates :family,
244
- :inclusion => {
245
- :allow_nil => true,
246
- :in => FAMILIES
247
- }
248
- validates :summary,
249
- :presence => true
250
- end
251
-
252
- # Adds <attribute>_set methods to class.
253
- module ClassMethods
254
- # Set of valid values to search for `attribute`. Does not include `nil` as search syntax cannot differentiate
255
- # '' and nil when parsing.
256
- #
257
- # @param attribute [Symbol] attribute name.
258
- # @return [Set]
259
- def self.set(attribute)
260
- SEED_ATTRIBUTES.each_with_object(Set.new) { |attributes, set|
261
- value = attributes.fetch(attribute)
262
-
263
- unless value.nil?
264
- set.add value
265
- end
266
- }
267
- end
268
-
269
- # @!method abbreviation_set
270
- # Set of valid {Metasploit::Model::Architecture#abbreviation} for search.
271
- #
272
- # @return [Set<String>]
273
- #
274
- # @!method bits_set
275
- # Set of valid {Metasploit::Model::Architecture#bits} for search.
276
- #
277
- # @return [Set<Integer>]
278
- #
279
- # @!method endianness_set
280
- # Set of valid {Metasploit::Model::Architecture#endianness} for search.
281
- #
282
- # @return [Set<String>]
283
- #
284
- # @!method family_set
285
- # Set of valid {Metasploit::Model::Architecture#family} for search.
286
- #
287
- # @return [Set<String>]
288
- [:abbreviation, :bits, :endianness, :family].each do |attribute|
289
- # calculate external to method so it is only calculated once
290
- set = self.set(attribute)
291
-
292
- define_method("#{attribute}_set") do
293
- set
294
- end
295
- end
296
- end
297
-
298
- #
299
- # Associations
300
- #
301
-
302
- # @!attribute [r] module_instances
303
- # {Metasploit::Model::Module::Instance Modules} that have this {Metasploit::Model::Module::Architecture} as a
304
- # {Metasploit::Model::Module::Instance#architectures support architecture}.
305
- #
306
- # @return [Array<Metasploit::Model::Module::Instance>]
307
-
308
- #
309
- # Attributes
310
- #
311
-
312
- # @!attribute [rw] abbreviation
313
- # Abbreviation used for the architecture. Will match ARCH constants in metasploit-framework.
314
- #
315
- # @return [String]
316
-
317
- # @!attribute [rw] bits
318
- # Number of bits supported by this architecture.
319
- #
320
- # @return [32] if 32-bit
321
- # @return [64] if 64-bit
322
- # @return [nil] if bits aren't applicable, such as for non-CPU architectures like ruby, etc.
323
-
324
- # @!attribute [rw] endianness
325
- # The endianness of the architecture.
326
- #
327
- # @return ['big'] if big endian
328
- # @return ['little'] if little endian
329
- # @return [nil] if endianness is not applicable, such as for software architectures like tty.
330
-
331
- # @!attribute [rw] family
332
- # The CPU architecture family.
333
- #
334
- # @return [String] if a CPU architecture.
335
- # @return [nil] if not a CPU architecture.
336
-
337
- # @!attribute [rw] summary
338
- # Sentence length summary of architecture. Usually an expansion of the abbreviation or initialism in the
339
- # {#abbreviation} and the {#bits} and {#endianness} in prose.
340
- #
341
- # @return [String]
342
- end
@@ -1,54 +0,0 @@
1
- # Code shared between `Mdm::Author` and `Metasploit::Framework::Author`.
2
- module Metasploit::Model::Author
3
- extend ActiveModel::Naming
4
- extend ActiveSupport::Concern
5
-
6
- include Metasploit::Model::Translation
7
-
8
- included do
9
- include ActiveModel::MassAssignmentSecurity
10
- include ActiveModel::Validations
11
- include Metasploit::Model::Search
12
-
13
- #
14
- # Mass Assignment Security
15
- #
16
-
17
- attr_accessible :name
18
-
19
- #
20
- # Search Attributes
21
- #
22
-
23
- search_attribute :name, :type => :string
24
-
25
- #
26
- # Validations
27
- #
28
-
29
- validates :name, :presence => true
30
- end
31
-
32
- #
33
- # Associations
34
- #
35
-
36
- # @!attribute [r] email_addresses
37
- # Email addresses used by this author across all {#module_instances}.
38
- #
39
- # @return [Array<Metasploit::Model::EmailAddress>]
40
-
41
- # @!attribute [r] module_instances
42
- # Modules written by this author.
43
- #
44
- # @return [Array<Metasploit::Model::Module::Instance>]
45
-
46
- #
47
- # Attributes
48
- #
49
-
50
- # @!attribute [rw] name
51
- # Full name (First + Last name) or handle of author.
52
- #
53
- # @return [String]
54
- end