Class: Nexpose::ReportConfig
- Inherits:
-
AdhocReportConfig
- Object
- AdhocReportConfig
- Nexpose::ReportConfig
- Includes:
- Sanitize
- Defined in:
- lib/nexpose/report.rb
Overview
Definition object for a report configuration.
Instance Attribute Summary collapse
-
#db_export ⇒ Object
Database export configuration.
-
#delivery ⇒ Object
Report delivery configuration.
-
#description ⇒ Object
Description associated with this report.
-
#frequency ⇒ Object
Configuration of when a report is generated.
-
#id ⇒ Object
The ID of the report definition (config).
-
#name ⇒ Object
The unique name assigned to the report definition.
-
#users ⇒ Object
Array of user IDs which have access to resulting reports.
Attributes inherited from AdhocReportConfig
#baseline, #filters, #format, #language, #owner, #template_id, #time_zone
Class Method Summary collapse
-
.build(connection, site_id, site_name, type, format, generate_now = false) ⇒ Object
Build and save a report configuration against the specified site using the supplied type and format.
-
.load(connection, report_config_id) ⇒ Object
Retrieve the configuration for an existing report definition.
- .parse(xml) ⇒ Object
Instance Method Summary collapse
-
#delete(connection) ⇒ Object
Delete this report definition from the Security Console.
-
#generate(connection, wait = false) ⇒ Object
Generate a new report using this report definition.
-
#initialize(name, template_id, format, id = -1,, owner = nil, time_zone = nil) ⇒ ReportConfig
constructor
Construct a basic ReportConfig object.
-
#save(connection, generate_now = false) ⇒ Object
Save the configuration of this report definition.
- #to_xml ⇒ Object
Methods included from Sanitize
Methods inherited from AdhocReportConfig
#add_common_vuln_status_filters, #add_filter
Constructor Details
#initialize(name, template_id, format, id = -1,, owner = nil, time_zone = nil) ⇒ ReportConfig
Construct a basic ReportConfig object.
301 302 303 304 305 306 307 308 309 310 |
# File 'lib/nexpose/report.rb', line 301 def initialize(name, template_id, format, id = -1, owner = nil, time_zone = nil) @name = name @template_id = template_id @format = format @id = id @owner = owner @time_zone = time_zone @filters = [] @users = [] end |
Instance Attribute Details
#db_export ⇒ Object
Database export configuration.
298 299 300 |
# File 'lib/nexpose/report.rb', line 298 def db_export @db_export end |
#delivery ⇒ Object
Report delivery configuration.
296 297 298 |
# File 'lib/nexpose/report.rb', line 296 def delivery @delivery end |
#description ⇒ Object
Description associated with this report.
290 291 292 |
# File 'lib/nexpose/report.rb', line 290 def description @description end |
#frequency ⇒ Object
Configuration of when a report is generated.
294 295 296 |
# File 'lib/nexpose/report.rb', line 294 def frequency @frequency end |
#id ⇒ Object
The ID of the report definition (config). Use -1 to create a new definition.
285 286 287 |
# File 'lib/nexpose/report.rb', line 285 def id @id end |
#name ⇒ Object
The unique name assigned to the report definition.
287 288 289 |
# File 'lib/nexpose/report.rb', line 287 def name @name end |
#users ⇒ Object
Array of user IDs which have access to resulting reports.
292 293 294 |
# File 'lib/nexpose/report.rb', line 292 def users @users end |
Class Method Details
.build(connection, site_id, site_name, type, format, generate_now = false) ⇒ Object
Build and save a report configuration against the specified site using the supplied type and format.
Returns the new configuration.
324 325 326 327 328 329 330 331 |
# File 'lib/nexpose/report.rb', line 324 def self.build(connection, site_id, site_name, type, format, generate_now = false) name = %(#{site_name} #{type} report in #{format}) config = ReportConfig.new(name, type, format) config.frequency = Frequency.new(true, false) unless generate_now config.filters << Filter.new('site', site_id) config.save(connection, generate_now) config end |
.load(connection, report_config_id) ⇒ Object
Retrieve the configuration for an existing report definition.
313 314 315 316 |
# File 'lib/nexpose/report.rb', line 313 def self.load(connection, report_config_id) xml = %(<ReportConfigRequest session-id='#{connection.session_id}' reportcfg-id='#{report_config_id}'/>) ReportConfig.parse(connection.execute(xml)) end |
.parse(xml) ⇒ Object
382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 |
# File 'lib/nexpose/report.rb', line 382 def self.parse(xml) xml.res.elements.each('//ReportConfig') do |cfg| config = ReportConfig.new(cfg.attributes['name'], cfg.attributes['template-id'], cfg.attributes['format'], cfg.attributes['id'].to_i, cfg.attributes['owner'].to_i, cfg.attributes['timezone']) cfg.elements.each('//description') do |desc| config.description = desc.text end config.filters = Filter.parse(xml) cfg.elements.each('//user') do |user| config.users << user.attributes['id'].to_i end cfg.elements.each('//Baseline') do |baseline| config.baseline = baseline.attributes['compareTo'] end config.frequency = Frequency.parse(cfg) config.delivery = Delivery.parse(cfg) config.db_export = DBExport.parse(cfg) return config end nil end |
Instance Method Details
#delete(connection) ⇒ Object
Delete this report definition from the Security Console. Deletion will also remove all reports previously generated from the configuration.
352 353 354 |
# File 'lib/nexpose/report.rb', line 352 def delete(connection) connection.delete_report_config(@id) end |
#generate(connection, wait = false) ⇒ Object
Generate a new report using this report definition.
345 346 347 |
# File 'lib/nexpose/report.rb', line 345 def generate(connection, wait = false) connection.generate_report(@id, wait) end |
#save(connection, generate_now = false) ⇒ Object
Save the configuration of this report definition.
334 335 336 337 338 339 340 341 342 |
# File 'lib/nexpose/report.rb', line 334 def save(connection, generate_now = false) xml = %(<ReportSaveRequest session-id="#{connection.session_id}" generate-now="#{generate_now ? 1 : 0}">) xml << to_xml xml << '</ReportSaveRequest>' response = connection.execute(xml) if response.success @id = response.attributes['reportcfg-id'].to_i end end |
#to_xml ⇒ Object
358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 |
# File 'lib/nexpose/report.rb', line 358 def to_xml xml = %(<ReportConfig format="#{@format}" id="#{@id}" name="#{replace_entities(@name)}" template-id="#{@template_id}") xml << %( owner="#{@owner}") if @owner xml << %( timezone="#{@time_zone}") if @time_zone xml << %( language="#{@language}") if @language xml << '>' xml << %(<description>#{@description}</description>) if @description xml << '<Filters>' @filters.each { |filter| xml << filter.to_xml } xml << '</Filters>' xml << '<Users>' @users.each { |user| xml << %(<user id="#{user}"/>) } xml << '</Users>' xml << %(<Baseline compareTo="#{@baseline}"/>) if @baseline xml << @frequency.to_xml if @frequency xml << @delivery.to_xml if @delivery xml << @db_export.to_xml if @db_export xml << '</ReportConfig>' end |