Module: Arachni::Framework::Parts::Report
- Included in:
- Arachni::Framework
- Defined in:
- lib/arachni/framework/parts/report.rb
Overview
Provides a Report::Manager and related helpers.
Instance Attribute Summary collapse
Instance Method Summary collapse
- #initialize ⇒ Object
-
#list_reporters(patterns = nil) ⇒ Array<Hash>
Information about all available Reporters.
-
#report ⇒ Report
Scan results.
-
#report_as(name, external_report = report) ⇒ String
Runs a reporter component and returns the contents of the generated report.
Instance Attribute Details
#reporters ⇒ Arachni::Reporter::Manager (readonly)
19 20 21 |
# File 'lib/arachni/framework/parts/report.rb', line 19 def reporters @reporters end |
Instance Method Details
#initialize ⇒ Object
21 22 23 24 25 26 27 28 29 30 |
# File 'lib/arachni/framework/parts/report.rb', line 21 def initialize super # Deep clone the redundancy rules to preserve their original counters # for the reports. @original_redundant_path_patterns = .scope.redundant_path_patterns.deep_clone @reporters = Arachni::Reporter::Manager.new end |
#list_reporters(patterns = nil) ⇒ Array<Hash>
Returns Information about all available Reporters.
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/arachni/framework/parts/report.rb', line 95 def list_reporters( patterns = nil ) loaded = @reporters.loaded begin @reporters.clear @reporters.available.map do |report| path = @reporters.name_to_path( report ) next if patterns && !@reporters.matches_globs?( path, patterns ) @reporters[report].info.merge( options: @reporters[report].info[:options] || [], shortname: report, path: path, author: [@reporters[report].info[:author]]. flatten.map { |a| a.strip } ) end.compact ensure @reporters.clear @reporters.load loaded end end |
#report ⇒ Report
Returns Scan results.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/arachni/framework/parts/report.rb', line 34 def report opts = .to_hash.deep_clone # restore the original redundancy rules and their counters opts[:scope][:redundant_path_patterns] = @original_redundant_path_patterns Arachni::Report.new( options: , sitemap: sitemap, issues: Arachni::Data.issues.sort, plugins: @plugins.results, start_datetime: @start_datetime, finish_datetime: @finish_datetime ) end |
#report_as(name, external_report = report) ⇒ String
Runs a reporter component and returns the contents of the generated report.
Only accepts reporters which support an outfile
option.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/arachni/framework/parts/report.rb', line 68 def report_as( name, external_report = report ) if !@reporters.available.include?( name.to_s ) fail Component::Error::NotFound, "Reporter '#{name}' could not be found." end loaded = @reporters.loaded begin @reporters.clear if !@reporters[name].has_outfile? fail Component::Options::Error::Invalid, "Reporter '#{name}' cannot format the audit results as a String." end outfile = "#{Options.paths.tmpdir}/#{generate_token}" @reporters.run( name, external_report, outfile: outfile ) IO.binread( outfile ) ensure File.delete( outfile ) if outfile && File.exists?( outfile ) @reporters.clear @reporters.load loaded end end |