metasploit_data_models 0.24.4 → 0.24.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +3 -3
  3. data/.travis.yml +3 -6
  4. data/CONTRIBUTING.md +52 -10
  5. data/Gemfile +8 -1
  6. data/Rakefile +0 -23
  7. data/app/models/mdm/api_key.rb +1 -41
  8. data/app/models/mdm/client.rb +1 -41
  9. data/app/models/mdm/cred.rb +19 -107
  10. data/app/models/mdm/event.rb +1 -48
  11. data/app/models/mdm/exploit_attempt.rb +16 -65
  12. data/app/models/mdm/exploited_host.rb +1 -28
  13. data/app/models/mdm/host_detail.rb +1 -45
  14. data/app/models/mdm/host_tag.rb +8 -6
  15. data/app/models/mdm/listener.rb +1 -53
  16. data/app/models/mdm/macro.rb +0 -42
  17. data/app/models/mdm/mod_ref.rb +0 -21
  18. data/app/models/mdm/module/action.rb +0 -15
  19. data/app/models/mdm/module/arch.rb +0 -10
  20. data/app/models/mdm/module/author.rb +0 -16
  21. data/app/models/mdm/module/mixin.rb +0 -13
  22. data/app/models/mdm/module/platform.rb +0 -11
  23. data/app/models/mdm/module/target.rb +0 -18
  24. data/app/models/mdm/nexpose_console.rb +4 -82
  25. data/app/models/mdm/profile.rb +0 -36
  26. data/app/models/mdm/route.rb +5 -17
  27. data/app/models/mdm/session_event.rb +1 -33
  28. data/app/models/mdm/tag.rb +10 -49
  29. data/app/models/mdm/task.rb +45 -94
  30. data/app/models/mdm/task_cred.rb +0 -29
  31. data/app/models/mdm/task_host.rb +0 -25
  32. data/app/models/mdm/task_service.rb +0 -25
  33. data/app/models/mdm/task_session.rb +0 -25
  34. data/app/models/mdm/user.rb +6 -188
  35. data/app/models/mdm/vuln_attempt.rb +12 -37
  36. data/app/models/mdm/vuln_detail.rb +5 -139
  37. data/app/models/mdm/vuln_ref.rb +1 -4
  38. data/app/models/mdm/web_form.rb +1 -35
  39. data/app/models/mdm/web_page.rb +1 -70
  40. data/app/models/mdm/web_site.rb +1 -51
  41. data/app/models/mdm/wmap_request.rb +0 -85
  42. data/app/models/mdm/wmap_target.rb +0 -40
  43. data/app/models/mdm/workspace.rb +14 -152
  44. data/app/models/metasploit_data_models/automatic_exploitation.rb +16 -0
  45. data/app/models/metasploit_data_models/automatic_exploitation/match.rb +24 -19
  46. data/app/models/metasploit_data_models/automatic_exploitation/match_result.rb +5 -33
  47. data/app/models/metasploit_data_models/automatic_exploitation/match_set.rb +4 -22
  48. data/app/models/metasploit_data_models/automatic_exploitation/run.rb +3 -13
  49. data/app/models/metasploit_data_models/ip_address/v4/segmented.rb +1 -1
  50. data/app/models/metasploit_data_models/module_run.rb +1 -1
  51. data/app/models/metasploit_data_models/search/visitor/where.rb +1 -1
  52. data/app/validators/ip_format_validator.rb +0 -4
  53. data/app/validators/parameters_validator.rb +0 -12
  54. data/app/validators/password_is_strong_validator.rb +1 -10
  55. data/lib/mdm/host/operating_system_normalization.rb +10 -7
  56. data/lib/metasploit_data_models.rb +0 -4
  57. data/lib/metasploit_data_models/engine.rb +0 -2
  58. data/lib/metasploit_data_models/serialized_prefs.rb +0 -6
  59. data/lib/metasploit_data_models/version.rb +10 -24
  60. data/lib/tasks/yard.rake +33 -0
  61. data/metasploit_data_models.gemspec +2 -9
  62. data/spec/app/models/mdm/api_key_spec.rb +3 -1
  63. data/spec/app/models/mdm/client_spec.rb +11 -9
  64. data/spec/app/models/mdm/cred_spec.rb +54 -42
  65. data/spec/app/models/mdm/event_spec.rb +23 -21
  66. data/spec/app/models/mdm/exploit_attempt_spec.rb +21 -19
  67. data/spec/app/models/mdm/exploited_host_spec.rb +13 -11
  68. data/spec/app/models/mdm/host_detail_spec.rb +17 -15
  69. data/spec/app/models/mdm/host_spec.rb +260 -261
  70. data/spec/app/models/mdm/host_tag_spec.rb +8 -6
  71. data/spec/app/models/mdm/listener_spec.rb +32 -30
  72. data/spec/app/models/mdm/loot_spec.rb +23 -21
  73. data/spec/app/models/mdm/macro_spec.rb +3 -1
  74. data/spec/app/models/mdm/mod_ref_spec.rb +3 -1
  75. data/spec/app/models/mdm/module/action_spec.rb +12 -10
  76. data/spec/app/models/mdm/module/arch_spec.rb +12 -10
  77. data/spec/app/models/mdm/module/author_spec.rb +17 -22
  78. data/spec/app/models/mdm/module/detail_spec.rb +75 -184
  79. data/spec/app/models/mdm/module/mixin_spec.rb +12 -10
  80. data/spec/app/models/mdm/module/platform_spec.rb +12 -10
  81. data/spec/app/models/mdm/module/ref_spec.rb +12 -10
  82. data/spec/app/models/mdm/module/target_spec.rb +15 -13
  83. data/spec/app/models/mdm/nexpose_console_spec.rb +37 -35
  84. data/spec/app/models/mdm/note_spec.rb +25 -23
  85. data/spec/app/models/mdm/profile_spec.rb +3 -1
  86. data/spec/app/models/mdm/ref_spec.rb +12 -10
  87. data/spec/app/models/mdm/route_spec.rb +8 -6
  88. data/spec/app/models/mdm/service_spec.rb +40 -38
  89. data/spec/app/models/mdm/session_event_spec.rb +12 -10
  90. data/spec/app/models/mdm/session_spec.rb +15 -13
  91. data/spec/app/models/mdm/tag_spec.rb +29 -29
  92. data/spec/app/models/mdm/task_cred_spec.rb +11 -9
  93. data/spec/app/models/mdm/task_host_spec.rb +11 -9
  94. data/spec/app/models/mdm/task_service_spec.rb +11 -9
  95. data/spec/app/models/mdm/task_session_spec.rb +9 -7
  96. data/spec/app/models/mdm/task_spec.rb +29 -27
  97. data/spec/app/models/mdm/user_spec.rb +19 -17
  98. data/spec/app/models/mdm/vuln_attempt_spec.rb +16 -14
  99. data/spec/app/models/mdm/vuln_detail_spec.rb +28 -26
  100. data/spec/app/models/mdm/vuln_ref_spec.rb +10 -8
  101. data/spec/app/models/mdm/vuln_spec.rb +26 -24
  102. data/spec/app/models/mdm/web_form_spec.rb +13 -11
  103. data/spec/app/models/mdm/web_page_spec.rb +21 -19
  104. data/spec/app/models/mdm/web_site_spec.rb +23 -21
  105. data/spec/app/models/mdm/web_vuln_spec.rb +65 -63
  106. data/spec/app/models/mdm/wmap_request_spec.rb +3 -1
  107. data/spec/app/models/mdm/wmap_target_spec.rb +3 -1
  108. data/spec/app/models/mdm/workspace_spec.rb +100 -97
  109. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_result_spec.rb +5 -3
  110. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_set_spec.rb +15 -13
  111. data/spec/app/models/metasploit_data_models/automatic_exploitation/match_spec.rb +3 -1
  112. data/spec/app/models/metasploit_data_models/automatic_exploitation/run_spec.rb +3 -1
  113. data/spec/app/models/metasploit_data_models/ip_address/v4/cidr_spec.rb +12 -10
  114. data/spec/app/models/metasploit_data_models/ip_address/v4/nmap_spec.rb +6 -4
  115. data/spec/app/models/metasploit_data_models/ip_address/v4/range_spec.rb +23 -21
  116. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/list_spec.rb +11 -9
  117. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/nmap/range_spec.rb +23 -21
  118. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/segmented_spec.rb +6 -4
  119. data/spec/app/models/metasploit_data_models/ip_address/v4/segment/single_spec.rb +15 -22
  120. data/spec/app/models/metasploit_data_models/ip_address/v4/single_spec.rb +6 -4
  121. data/spec/app/models/metasploit_data_models/module_run_spec.rb +3 -1
  122. data/spec/app/models/metasploit_data_models/search/operation/ip_address_spec.rb +20 -18
  123. data/spec/app/models/metasploit_data_models/search/operation/port/number_spec.rb +8 -6
  124. data/spec/app/models/metasploit_data_models/search/operation/port/range_spec.rb +10 -8
  125. data/spec/app/models/metasploit_data_models/search/operation/range_spec.rb +10 -8
  126. data/spec/app/models/metasploit_data_models/search/operator/ip_address_spec.rb +4 -2
  127. data/spec/app/models/metasploit_data_models/search/operator/multitext_spec.rb +10 -8
  128. data/spec/app/models/metasploit_data_models/search/operator/port/list_spec.rb +8 -6
  129. data/spec/app/models/metasploit_data_models/search/visitor/attribute_spec.rb +11 -9
  130. data/spec/app/models/metasploit_data_models/search/visitor/includes_spec.rb +7 -5
  131. data/spec/app/models/metasploit_data_models/search/visitor/joins_spec.rb +19 -17
  132. data/spec/app/models/metasploit_data_models/search/visitor/method_spec.rb +7 -5
  133. data/spec/app/models/metasploit_data_models/search/visitor/relation_spec.rb +23 -61
  134. data/spec/app/models/metasploit_data_models/search/visitor/where_spec.rb +10 -8
  135. data/spec/app/validators/parameters_validator_spec.rb +29 -29
  136. data/spec/app/validators/password_is_strong_validator_spec.rb +46 -54
  137. data/spec/dummy/db/structure.sql +3403 -0
  138. data/spec/factories/mdm/module/details.rb +1 -1
  139. data/spec/lib/base64_serializer_spec.rb +19 -19
  140. data/spec/lib/metasploit_data_models/ip_address/cidr_spec.rb +12 -18
  141. data/spec/lib/metasploit_data_models/ip_address/range_spec.rb +6 -4
  142. data/spec/lib/metasploit_data_models/match/child_spec.rb +4 -2
  143. data/spec/lib/metasploit_data_models/match/parent_spec.rb +6 -4
  144. data/spec/lib/metasploit_data_models/version_spec.rb +141 -3
  145. data/spec/spec_helper.rb +12 -86
  146. data/spec/support/shared/examples/mdm/module/detail/does_not_support_stance_with_mtype.rb +2 -2
  147. data/spec/support/shared/examples/mdm/module/detail/supports_stance_with_mtype.rb +4 -4
  148. data/spec/support/shared/examples/metasploit_data_models/search/operation/ipaddress/match.rb +2 -2
  149. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_children.rb +5 -5
  150. data/spec/support/shared/examples/metasploit_data_models/search/visitor/includes/visit/with_metasploit_model_search_operation_base.rb +5 -5
  151. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_equality.rb +3 -3
  152. data/spec/support/shared/examples/metasploit_data_models/search/visitor/where/visit/with_metasploit_model_search_group_base.rb +6 -7
  153. metadata +9 -67
  154. data/CHANGELOG.md +0 -6
  155. data/RELEASING.md +0 -88
  156. data/UPGRADING.md +0 -1
  157. data/lib/metasploit_data_models/automatic_exploitation.rb +0 -25
  158. data/spec/lib/metasploit_data_models_spec.rb +0 -4
@@ -1,60 +1,16 @@
1
- # Records framework events to the database.
2
1
  class Mdm::Event < ActiveRecord::Base
3
2
  #
4
- # Associations
3
+ # Relations
5
4
  #
6
5
 
7
- # Host on which this event occurred.
8
- #
9
- # @return [Mdm::Host]
10
- # @return [nil] if event did not occur on a host.
11
6
  belongs_to :host,
12
7
  class_name: 'Mdm::Host',
13
8
  inverse_of: :events
14
9
 
15
- # {Mdm::Workspace} in which this event occured. If {#host} is present, then this will match
16
- # {Mdm::Host#workspace `host.workspace`}.
17
10
  belongs_to :workspace,
18
11
  class_name: 'Mdm::Workspace',
19
12
  inverse_of: :events
20
13
 
21
- #
22
- # Attributes
23
- #
24
-
25
- # @!attribute created_at
26
- # When this event was created.
27
- #
28
- # @return [DateTime]
29
-
30
- # @!attribute critical
31
- # Indicates if the event is critical.
32
- #
33
- # @return [false] event is not critical.
34
- # @return [true] event is critical.
35
-
36
- # @!attribute name
37
- # Name of the event, such as 'module_run'.
38
- #
39
- # @return [String]
40
-
41
- # @!attribute seen
42
- # Whether a user has seen these events.
43
- #
44
- # @return [false] if the event has not been seen.
45
- # @return [true] if any user has seen the event.
46
-
47
- # @!attribute updated_at
48
- # The last time this event was updated.
49
- #
50
- # @return [DateTime]
51
-
52
- # @!attribute username
53
- # Name of user that triggered the event. Not necessarily a {Mdm::User#username}, as {#username} may be set to
54
- # the username of the user inferred from `ENV` when using metasploit-framework.
55
- #
56
- # @return [String]
57
-
58
14
  #
59
15
  # Scopes
60
16
  #
@@ -66,9 +22,6 @@ class Mdm::Event < ActiveRecord::Base
66
22
  # Serializations
67
23
  #
68
24
 
69
- # {#name}-specific information about this event.
70
- #
71
- # @return [Hash]
72
25
  serialize :info, MetasploitDataModels::Base64Serializer.new
73
26
 
74
27
  #
@@ -1,99 +1,50 @@
1
- # An attempt to exploit {#host}.
2
1
  class Mdm::ExploitAttempt < ActiveRecord::Base
3
2
  #
4
3
  # Associations
5
4
  #
6
5
 
7
- # Host that was attempted to be exploited.
6
+ # @!attribute host
7
+ # Host that was attempted to be exploited.
8
8
  #
9
- # @return [Mdm::Host]
9
+ # @return [Mdm::Host]
10
10
  belongs_to :host,
11
11
  class_name: 'Mdm::Host',
12
12
  counter_cache: :exploit_attempt_count,
13
13
  inverse_of: :exploit_attempts
14
14
 
15
- # Loot gathers from the successful exploit.
15
+ # @!attribute loot
16
+ # Loot gathers from the successful exploit.
16
17
  #
17
- # @return [Mdm::Loot, nil]
18
+ # @return [Mdm::Loot, nil]
18
19
  belongs_to :loot,
19
20
  class_name: 'Mdm::Loot',
20
21
  inverse_of: :exploit_attempt
21
22
 
22
- # The service being exploited on {#host}.
23
+ # @!attribute service
24
+ # The service being exploited on {#host}.
23
25
  #
24
- # @return [Mdm::Service, nil]
26
+ # @return [Mdm::Service, nil]
25
27
  belongs_to :service,
26
28
  class_name: 'Mdm::Service',
27
29
  inverse_of: :exploit_attempts
28
30
 
29
- # The session that was established when this attempt was successful.
31
+ # @!attribute session
32
+ # The session that was established when this attempt was successful.
30
33
  #
31
- # @return [Mdm::Session]
32
- # @return [nil] if session was not established.
34
+ # @return [Mdm::Session]
35
+ # @return [nil] if session was not established.
33
36
  belongs_to :session,
34
37
  class_name: 'Mdm::Session',
35
38
  inverse_of: :exploit_attempt
36
39
 
37
- # The vulnerability that was attempted to be exploited.
40
+ # @!attribute vuln
41
+ # The vulnerability that was attempted to be exploited.
38
42
  #
39
- # @return [Mdm::Vuln, nil]
43
+ # @return [Mdm::Vuln, nil]
40
44
  belongs_to :vuln,
41
45
  class_name: 'Mdm::Vuln',
42
46
  inverse_of: :exploit_attempts
43
47
 
44
- #
45
- # Attributes
46
- #
47
-
48
- # @!attribute attempted_at
49
- # When the attempt was made.
50
- #
51
- # @return [DateTime]
52
-
53
- # @!attribute exploited
54
- # Whether the attempt was successful.
55
- #
56
- # @return [true] attempt was successful.
57
- # @return [false] attempt was not successful.
58
-
59
- # @!attribute fail_detail
60
- # A more verbose reason (compared to {#fail_reason} for the failure.
61
- #
62
- # @return [String, nil]
63
-
64
- # @!attribute fail_reason
65
- # Summary of why the attempt failed if {#exploited} is `false`. For more details see {#fail_detail}.
66
- #
67
- # @return [String, nil]
68
-
69
- # @!attribute host_id
70
- # Foreign key to look up {#host}.
71
- #
72
- # @return [Integer]
73
-
74
- # @!attribute module
75
- # The full name of the exploit module that made the attempt.
76
- #
77
- # @return [String]
78
- # @todo Remove deprecated Mdm::Exploit#module (MSP-9281)
79
-
80
- # @!attribute port
81
- # The port on {#host} which the exploit was attempted.
82
- #
83
- # @return [Integer]
84
- # @todo Mdm::ExploitAttempt#port and Mdm::ExploitAttempt#proto are obsolete and should be removed (MSP-9284)
85
-
86
- # @!attribute proto
87
- # The protocol name used on {#port}.
88
- #
89
- # @return [String]
90
- # @todo Mdm::ExploitAttempt#port and Mdm::ExploitAttempt#proto are obsolete and should be removed (MSP-9284)
91
-
92
- # @!attribute username
93
- # Name of user that made the attempt. May be an {Mdm::User#name} or a system username.
94
- #
95
- # @return [String]
96
-
97
48
  #
98
49
  # Validations
99
50
  #
@@ -1,42 +1,15 @@
1
- # @deprecated use {Mdm::ExploitAttempt} instead.
2
- #
3
- # When a {#host} or {#service} on a {#host} is exploited.
4
1
  class Mdm::ExploitedHost < ActiveRecord::Base
5
2
  #
6
- # Associations
3
+ # Relations
7
4
  #
8
5
 
9
- # The host that was exploited.
10
6
  belongs_to :host,
11
7
  class_name: 'Mdm::Host',
12
8
  inverse_of: :exploited_hosts
13
9
 
14
- # The service on {#host} that was exploited.
15
10
  belongs_to :service,
16
11
  class_name: 'Mdm::Service',
17
12
  inverse_of: :exploited_hosts
18
13
 
19
- #
20
- # Attributes
21
- #
22
-
23
- # @!attribute name
24
- # Name of exploit.
25
- #
26
- # @return [String]
27
-
28
- # @!attribute payload
29
- # {Mdm::Module::Class#full_name Full name of the payload module} used to exploit the {#host} or {#service} on
30
- # {#host}.
31
- #
32
- # @return [String]
33
-
34
- # @!attribute session_uuid
35
- # UUID of local session.
36
- #
37
- # @return [String]
38
- # @deprecated Sessions no longer have UUIDs. They have {Mdm::Session#local_id} that reflects the in-memory
39
- # Msf::Session ID and an in-database {Mdm::Session#id}.
40
-
41
14
  Metasploit::Concern.run(self)
42
15
  end
@@ -1,57 +1,13 @@
1
- # Details supplied by Nexpose about a {Mdm::Host host}.
2
1
  class Mdm::HostDetail < ActiveRecord::Base
3
2
  #
4
- # Associations
3
+ # Relations
5
4
  #
6
5
 
7
- # Host that this detail is about.
8
6
  belongs_to :host,
9
7
  class_name: 'Mdm::Host',
10
8
  counter_cache: :host_detail_count,
11
9
  inverse_of: :host_details
12
10
 
13
- #
14
- # Attributes
15
- #
16
-
17
- # @!attribute host_id
18
- # The foreign key used to look up {#host}.
19
- #
20
- # @return [Integer]
21
-
22
- # @!attribute nx_console_id
23
- # The ID of the Nexpose console.
24
- #
25
- # @return [Integer]
26
-
27
- # @!attribute nx_device_id
28
- # The ID of the Device in Nexpose.
29
- #
30
- # @return [Integer]
31
-
32
- # @!attribute nx_risk_score
33
- # Risk score assigned by Nexpose. Useful to ordering hosts to determine which host to target first in metasploit.
34
- #
35
- # @return [Float]
36
-
37
- # @!attribute nx_scan_template
38
- # The template used by Nexpose to perform the scan on the {#nx_site_name site} on {#host}.
39
- #
40
- # @return [String]
41
-
42
- # @!attribute nx_site_importance
43
- # The importance of scanning the {#nx_site_name site} running on {#host} according to Nexpose.
44
- #
45
- # @return [String]
46
-
47
- # @!attribute nx_site_name
48
- # Name of site running on {#host} according to Nexpose.
49
- #
50
- # @return [String]
51
-
52
- # @!attribute src
53
- # @return [String]
54
-
55
11
  #
56
12
  # Validations
57
13
  #
@@ -1,4 +1,3 @@
1
- # Join model between {Mdm::Host} and {Mdm::Tag}.
2
1
  class Mdm::HostTag < ActiveRecord::Base
3
2
  self.table_name = "hosts_tags"
4
3
 
@@ -6,16 +5,20 @@ class Mdm::HostTag < ActiveRecord::Base
6
5
  # Associations
7
6
  #
8
7
 
9
- # Host with {#tag}.
8
+ # @!attribute host
9
+ # Host with {#tag}.
10
10
  #
11
- # @todo MSP-2723
11
+ # @todo MSP-2723
12
+ # @return [Mdm::Host]
12
13
  belongs_to :host,
13
14
  class_name: 'Mdm::Host',
14
15
  inverse_of: :hosts_tags
15
16
 
16
- # Tag on {#host}.
17
+ # @!attribute tag
18
+ # Tag on {#host}.
17
19
  #
18
- # @todo MSP-2723
20
+ # @todo MSP-2723
21
+ # @return [Mdm::Tag]
19
22
  belongs_to :tag,
20
23
  class_name: 'Mdm::Tag',
21
24
  inverse_of: :hosts_tags
@@ -41,7 +44,6 @@ class Mdm::HostTag < ActiveRecord::Base
41
44
  tag.destroy_if_orphaned
42
45
  end
43
46
 
44
- # switch back to public for load hooks
45
47
  public
46
48
 
47
49
  Metasploit::Concern.run(self)
@@ -1,72 +1,20 @@
1
- # A listener spawned by a {#task} that is waiting for connection on {#address}:{#port}.
2
1
  class Mdm::Listener < ActiveRecord::Base
3
2
  #
4
- # Associations
3
+ # Relations
5
4
  #
6
5
 
7
- # Task that spawned this listener.
8
6
  belongs_to :task,
9
7
  class_name: 'Mdm::Task',
10
8
  inverse_of: :listeners
11
9
 
12
- # Workspace which controls this listener.
13
10
  belongs_to :workspace,
14
11
  class_name: 'Mdm::Workspace',
15
12
  inverse_of: :listeners
16
13
 
17
- #
18
- # Attributes
19
- #
20
-
21
- # @!attribute address
22
- # The IP address to which the listener is bound.
23
- #
24
- # @return [String]
25
-
26
- # @!attribute created_at
27
- # When this listener was created. Not necessarily when it started listening.
28
- #
29
- # @return [DateTime]
30
-
31
- # @!attribute enabled
32
- # Whether listener is listening on {#address}:{#port}.
33
- #
34
- # @return [true] listener is listening.
35
- # @return [false] listener is not listening.
36
-
37
- # @!attribute macro
38
- # {Mdm::Macro#name Name of macro} run when a connect is made to the listener.
39
- #
40
- # @return [String]
41
-
42
- # @!attribute owner
43
- # The name of the user that setup this listener.
44
- #
45
- # @return [String]
46
- # @see Mdm::User#username
47
-
48
- # @!attribute payload
49
- # Reference name of the payload module that is sent when a connection is made to the listener.
50
- #
51
- # @return [String]
52
-
53
- # @!attribute port
54
- # Port on {#address} that listener is listening.
55
- #
56
- # @return [Integer]
57
-
58
- # @!attribute updated_at
59
- # The last time this listener was updated.
60
- #
61
- # @return [DateTime]
62
-
63
14
  #
64
15
  # Serializations
65
16
  #
66
17
 
67
- # Options used to spawn this listener.
68
- #
69
- # @return [Hash]
70
18
  serialize :options, MetasploitDataModels::Base64Serializer.new
71
19
 
72
20
  #
@@ -1,54 +1,12 @@
1
- # Macro of {#actions} to run at once.
2
1
  class Mdm::Macro < ActiveRecord::Base
3
2
  extend MetasploitDataModels::SerializedPrefs
4
3
 
5
- #
6
- # Attributes
7
- #
8
-
9
- # @!attribute created_at
10
- # When this macro was created.
11
- #
12
- # @return [DateTime]
13
-
14
- # @!attribute description
15
- # Long description of what the macro does.
16
- #
17
- # @return [String]
18
-
19
- # @!attribute name
20
- # The name of this macro.
21
- #
22
- # @return [String]
23
-
24
- # @!attribute owner
25
- # {Mdm::User#username Name of user} that owns this macro.
26
- #
27
- # @return [String]
28
-
29
- # @!attribute updated_at
30
- # When this macro was last updated.
31
- #
32
- # @return [DateTime]
33
-
34
4
  #
35
5
  # Serialization
36
6
  #
37
7
 
38
- # Actions run by this macro.
39
- #
40
- # @return [Array<Hash{Symbol=>Object}>] Array of action hashes. Each action hash is have key :module with value
41
- # of an {Mdm::Module::Detail#fullname} and and key :options with value of options used to the run the module.
42
8
  serialize :actions, MetasploitDataModels::Base64Serializer.new
43
-
44
- # Preference for this macro, shared across all actions.
45
- #
46
- # @return [Hash]
47
9
  serialize :prefs, MetasploitDataModels::Base64Serializer.new
48
-
49
- # The maximum number of seconds that this macro is allowed to run.
50
- #
51
- # @return [Integer]
52
10
  serialized_prefs_attr_accessor :max_time
53
11
 
54
12
  #