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
Luke Imhoff 2014-06-02 12:32:54 -05:00
parent 84f5a0d499
commit 1055efbeaa
No known key found for this signature in database
GPG Key ID: 5B1FB01FB33356F8
1 changed files with 23 additions and 3 deletions

View File

@ -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