Add module paths from paths['modules'] from Rails app and engines
MSP-9653 Allow rails engines (and other applications, like Metasploit::Pro::Engine::Application) to define their own module paths using the paths['modules'] entry for Rails Applications/Engines.bug/bundler_fix
parent
84f5a0d499
commit
1055efbeaa
|
@ -9,9 +9,10 @@ module Msf
|
||||||
# Ensure the module cache is accurate
|
# Ensure the module cache is accurate
|
||||||
self.modules.refresh_cache_from_database
|
self.modules.refresh_cache_from_database
|
||||||
|
|
||||||
# Initialize the default module search paths
|
add_engine_module_paths(Rails.application, opts)
|
||||||
if (Msf::Config.module_directory)
|
|
||||||
self.modules.add_module_path(Msf::Config.module_directory, opts)
|
Rails.application.railties.engines.each do |engine|
|
||||||
|
add_engine_module_paths(engine, opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Initialize the user module search path
|
# Initialize the user module search path
|
||||||
|
@ -27,6 +28,25 @@ module Msf
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
# Add directories `engine.paths['modules']` from `engine`.
|
||||||
|
#
|
||||||
|
# @param engine [Rails::Engine] a rails engine or application
|
||||||
|
# @param options [Hash] options for {Msf::ModuleManager::ModulePaths#add_module_paths}
|
||||||
|
# @return [void]
|
||||||
|
def add_engine_module_paths(engine, options={})
|
||||||
|
modules_paths = engine.paths['modules']
|
||||||
|
|
||||||
|
if modules_paths
|
||||||
|
modules_directories = modules_paths.existent_directories
|
||||||
|
|
||||||
|
modules_directories.each do |modules_directory|
|
||||||
|
modules.add_module_path(modules_directory, options)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue