Class: Arachni::Report::Manager

Inherits:
ComponentManager show all
Defined in:
lib/report/manager.rb

Overview

Arachni::Report::Manager class

Holds and manages the registry of the reports.

@author: Tasos “Zapotek” Laskos

<[email protected]>
<[email protected]> <br/>

@version: 0.1

Constant Summary collapse

EXTENSION =

the extension of the Arachni Framework Report files

'.afr'

Constants inherited from ComponentManager

ComponentManager::EXCLUDE, ComponentManager::WILDCARD

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ComponentManager

#[], #available, #load, #name_to_path, #parse, #path_to_name, #prep_opts, #wilcard_to_names

Methods included from UI::Output

#buffer, #debug!, #debug?, #flush_buffer, #mute!, #muted?, #only_positives!, #only_positives?, #print_debug, #print_debug_backtrace, #print_debug_pp, #print_error, #print_error_backtrace, #print_info, #print_line, #print_ok, #print_status, #print_verbose, #reroute_to_file, #reroute_to_file?, #unmute!, #verbose!, #verbose?

Constructor Details

#initialize(opts) ⇒ Manager

Returns a new instance of Manager.



46
47
48
49
# File 'lib/report/manager.rb', line 46

def initialize( opts )
    super( opts.dir['reports'], Arachni::Reports )
    @opts = opts
end

Class Method Details

.resetObject



81
82
83
# File 'lib/report/manager.rb', line 81

def self.reset
    Arachni::Reports.reset
end

Instance Method Details

#extensionObject



85
86
87
# File 'lib/report/manager.rb', line 85

def extension
    return EXTENSION
end

#pathsObject



75
76
77
78
# File 'lib/report/manager.rb', line 75

def paths
    cpaths = paths = Dir.glob( File.join( "#{@lib}", "*.rb" ) )
    return paths.reject { |path| helper?( path ) }
end

#run(audit_store, run_afr = true) ⇒ Object

Takes care of report execution

Parameters:

See Also:



58
59
60
61
62
63
64
65
66
# File 'lib/report/manager.rb', line 58

def run( audit_store, run_afr = true )
    self.each {
        |name, report|
        run_one( name, audit_store.deep_clone )
    }

    # run the default report
    run_one( 'afr', audit_store.deep_clone ) if run_afr
end

#run_one(name, audit_store) ⇒ Object



68
69
70
71
72
73
# File 'lib/report/manager.rb', line 68

def run_one( name, audit_store )
    report = self.[](name).new( audit_store.deep_clone,
        prep_opts( name, self.[](name), @opts.reports[name] ) )

    report.run( )
end