Module: Nexpose::Alert
- Extended by:
- TypedAccessor
- Includes:
- JsonSerializer
- Included in:
- SMTPAlert, SNMPAlert, SyslogAlert
- Defined in:
- lib/nexpose/alert.rb
Overview
Alert base behavior. The supported three alert types should have these properties and behaviors
Instance Attribute Summary collapse
-
#alert_type ⇒ Object
Alert type and its configuration.
-
#enabled ⇒ Object
Whether or not this alert is currently active.
-
#id ⇒ Object
ID for this alert.
-
#max_alerts ⇒ Object
Send at most this many alerts per scan.
-
#name ⇒ Object
Name for this alert.
-
#server ⇒ Object
Server target the alerts.
-
#server_port ⇒ Object
Server port.
Class Method Summary collapse
- .json_initializer(hash) ⇒ Object
-
.list_alerts(nsc, site_id) ⇒ Object
load a list of alerts for a given site.
-
.load(nsc, site_id, alert_id) ⇒ Object
load a particular site alert.
-
.load_alerts(alerts) ⇒ Object
load alerts from an array of hashes.
Instance Method Summary collapse
-
#delete(nsc, site_id) ⇒ Object
delete an alert from the given site.
-
#save(nsc, site_id) ⇒ Object
save an alert for a given site.
- #to_h ⇒ Object
- #to_json ⇒ Object
- #validate ⇒ Object
Methods included from TypedAccessor
Methods included from JsonSerializer
#deserialize, #serialize, #to_hash
Instance Attribute Details
#alert_type ⇒ Object
Alert type and its configuration. One of SMTPAlert, SyslogAlert, SNMPAlert
66 67 68 |
# File 'lib/nexpose/alert.rb', line 66 def alert_type @alert_type end |
#enabled ⇒ Object
Whether or not this alert is currently active.
62 63 64 |
# File 'lib/nexpose/alert.rb', line 62 def enabled @enabled end |
#id ⇒ Object
ID for this alert.
58 59 60 |
# File 'lib/nexpose/alert.rb', line 58 def id @id end |
#max_alerts ⇒ Object
Send at most this many alerts per scan.
64 65 66 |
# File 'lib/nexpose/alert.rb', line 64 def max_alerts @max_alerts end |
#name ⇒ Object
Name for this alert.
60 61 62 |
# File 'lib/nexpose/alert.rb', line 60 def name @name end |
#server ⇒ Object
Server target the alerts
68 69 70 |
# File 'lib/nexpose/alert.rb', line 68 def server @server end |
#server_port ⇒ Object
Server port
70 71 72 |
# File 'lib/nexpose/alert.rb', line 70 def server_port @server_port end |
Class Method Details
.json_initializer(hash) ⇒ Object
101 102 103 |
# File 'lib/nexpose/alert.rb', line 101 def self.json_initializer(hash) create(hash) end |
.list_alerts(nsc, site_id) ⇒ Object
load a list of alerts for a given site
94 95 96 97 98 99 |
# File 'lib/nexpose/alert.rb', line 94 def self.list_alerts(nsc, site_id) uri = "/api/2.1/site_configurations/#{site_id}/alerts" resp = AJAX.get(nsc, uri, AJAX::CONTENT_TYPE::JSON) data = JSON.parse(resp, symbolize_names: true) load_alerts(data) unless data.nil? end |
.load(nsc, site_id, alert_id) ⇒ Object
load a particular site alert
78 79 80 81 82 83 84 85 86 |
# File 'lib/nexpose/alert.rb', line 78 def self.load(nsc, site_id, alert_id) uri = "/api/2.1/site_configurations/#{site_id}/alerts/#{alert_id}" resp = AJAX.get(nsc, uri, AJAX::CONTENT_TYPE::JSON) unless resp.to_s == '' data = JSON.parse(resp, symbolize_names: true) json_initializer(data).deserialize(data) end end |
.load_alerts(alerts) ⇒ Object
load alerts from an array of hashes
89 90 91 |
# File 'lib/nexpose/alert.rb', line 89 def self.load_alerts(alerts) alerts.map { |hash| json_initializer(hash).deserialize(hash) } end |
Instance Method Details
#delete(nsc, site_id) ⇒ Object
delete an alert from the given site
114 115 116 117 |
# File 'lib/nexpose/alert.rb', line 114 def delete(nsc, site_id) uri = "/api/2.1/site_configurations/#{site_id}/alerts/#{id}" AJAX.delete(nsc, uri, AJAX::CONTENT_TYPE::JSON) end |
#save(nsc, site_id) ⇒ Object
save an alert for a given site
120 121 122 123 124 125 |
# File 'lib/nexpose/alert.rb', line 120 def save(nsc, site_id) validate uri = "/api/2.1/site_configurations/#{site_id}/alerts" id = AJAX.put(nsc, uri, self.to_json, AJAX::CONTENT_TYPE::JSON) @id = id.to_i end |
#to_h ⇒ Object
105 106 107 |
# File 'lib/nexpose/alert.rb', line 105 def to_h to_hash(Hash.new) end |
#to_json ⇒ Object
109 110 111 |
# File 'lib/nexpose/alert.rb', line 109 def to_json serialize end |
#validate ⇒ Object
127 128 129 130 131 |
# File 'lib/nexpose/alert.rb', line 127 def validate raise ArgumentError.new('Name is a required attribute.') unless @name raise ArgumentError.new('Scan filter is a required attribute.') unless @scan_filter raise ArgumentError.new('Vuln filter is a required attribute.') unless @vuln_filter end |