Class: Arachni::RPC::Server::Plugin::Manager
- Inherits:
-
Plugin::Manager
- Object
- Hash
- Component::Manager
- Plugin::Manager
- Arachni::RPC::Server::Plugin::Manager
- Defined in:
- lib/arachni/rpc/server/plugin/manager.rb
Overview
We need to extend the original Manager and redeclare its inherited methods which are required over RPC.
Constant Summary
Constants inherited from Plugin::Manager
Plugin::Manager::DEFAULT, Plugin::Manager::NAMESPACE
Constants inherited from Component::Manager
Component::Manager::EXCLUDE, Component::Manager::WILDCARD
Instance Attribute Summary
Attributes inherited from Component::Manager
Instance Method Summary collapse
- #load(plugins) ⇒ Object
-
#merge_results(results) ⇒ Object
Merges the plug-in results of self with the provided results.
Methods inherited from Plugin::Manager
#block, #busy?, #create, #default, #get, #initialize, #job_names, #jobs, #kill, #load_default, #mutex, mutex, #register_results, reset, #reset, results, #results, results=, #results=, #run, #sane_env?
Methods included from Utilities
#available_port, #cookie_encode, #cookies_from_document, #cookies_from_file, #cookies_from_response, #exception_jail, #exclude_path?, #extract_domain, #follow_protocol?, #form_decode, #form_encode, #form_parse_request_body, #forms_from_document, #forms_from_response, #generate_token, #get_path, #html_decode, #html_encode, #include_path?, #links_from_document, #links_from_response, #normalize_url, #page_from_response, #page_from_url, #parse_query, #parse_set_cookie, #parse_url_vars, #path_in_domain?, #path_too_deep?, #port_available?, #rand_port, #redundant_path?, #remove_constants, #seed, #skip_page?, #skip_path?, #skip_resource?, #to_absolute, #uri_decode, #uri_encode, #uri_parse, #uri_parser, #url_sanitize
Methods inherited from Component::Manager
#[], #available, #clear, #delete, #include?, #initialize, #load_all, #load_by_tags, #loaded, #name_to_path, #parse, #path_to_name, #paths, #prep_opts
Methods included from UI::Output
#debug?, #debug_off, #debug_on, #disable_only_positives, #error_logfile, #flush_buffer, #log_error, #mute, #muted?, old_reset_output_options, #only_positives, #only_positives?, #print_bad, #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?, reset_output_options, #set_buffer_cap, #set_error_logfile, #uncap_buffer, #unmute, #verbose, #verbose?
Methods inherited from Hash
#downcase, #find_symbol_keys_recursively, #recode, #stringify_keys, #symbolize_keys
Constructor Details
This class inherits a constructor from Arachni::Plugin::Manager
Instance Method Details
#load(plugins) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/arachni/rpc/server/plugin/manager.rb', line 37 def load( plugins ) if plugins.is_a?( Array ) h = {} plugins.each { |p| h[p] = @framework.opts.plugins[p] || {} } plugins = h end plugins.each do |plugin, opts| prep_opts( plugin, self[plugin], opts ) end @framework.opts.plugins.merge!( plugins ) super( plugins.keys ) end |
#merge_results(results) ⇒ Object
Merges the plug-in results of self with the provided results.
It uses each plugin’s merge() class method to do it.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/arachni/rpc/server/plugin/manager.rb', line 57 def merge_results( results ) info = {} formatted = {} results << self.results results.each do |plugins| plugins.each do |name, res| next if !res formatted[name] ||= [] formatted[name] << res[:results] info[name] = res.reject{ |k, v| k == :results } if !info[name] end end merged = {} formatted.each do |plugin, c_results| if !self[plugin].distributable? res = c_results[0] else res = self[plugin].merge( c_results ) end merged[plugin] = info[plugin].merge( :results => res ) end self.results = merged end |