Module: Msf::ModuleManager::ModulePaths
- Extended by:
- ActiveSupport::Concern
- Included in:
- Msf::ModuleManager
- Defined in:
- lib/msf/core/module_manager/module_paths.rb
Overview
Deals with module paths in the Msf::ModuleManager
Instance Attribute Summary collapse
-
#module_paths ⇒ Object
protected
:nodoc:.
Instance Method Summary collapse
-
#add_module_path(path, opts = {}, recalculate: true) ⇒ Hash{String => Integer}
Adds a path to be searched for new modules.
-
#remove_module_path(path) ⇒ Object
Removes a path from which to search for modules.
Instance Attribute Details
#module_paths ⇒ Object (protected)
:nodoc:
63 64 65 |
# File 'lib/msf/core/module_manager/module_paths.rb', line 63 def module_paths @module_paths end |
Instance Method Details
#add_module_path(path, opts = {}, recalculate: true) ⇒ Hash{String => Integer}
Adds a path to be searched for new modules.
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/msf/core/module_manager/module_paths.rb', line 19 def add_module_path(path, opts={}, recalculate: true) nested_paths = [] # remove trailing file separator path_without_trailing_file_separator = path.sub(/#{File::SEPARATOR}$/, '') # Make the path completely canonical pathname = Pathname.new(path_without_trailing_file_separator). # Make sure the path is a valid directory unless pathname.directory? raise ArgumentError, "The path supplied is not a valid directory.", caller end nested_paths << pathname.to_s # Update the module paths appropriately self.module_paths = (module_paths + nested_paths).flatten.uniq # Load all of the modules from the nested paths count_by_type = {} nested_paths.each { |path| path_count_by_type = load_modules(path, opts.merge({:force => false, recalculate: recalculate})) # merge hashes path_count_by_type.each do |type, path_count| accumulated_count = count_by_type.fetch(type, 0) count_by_type[type] = accumulated_count + path_count end } return count_by_type end |
#remove_module_path(path) ⇒ Object
Removes a path from which to search for modules.
56 57 58 59 |
# File 'lib/msf/core/module_manager/module_paths.rb', line 56 def remove_module_path(path) module_paths.delete(path) module_paths.delete(::File.(path)) end |