parent
c22178752e
commit
4ba571346e
|
@ -1,5 +1,6 @@
|
||||||
# -*- coding: binary -*-
|
# -*- coding: binary -*-
|
||||||
require 'msf/base/simple'
|
require 'msf/base/simple'
|
||||||
|
require 'msf/base/simple/framework/module_paths'
|
||||||
|
|
||||||
module Msf
|
module Msf
|
||||||
module Simple
|
module Simple
|
||||||
|
@ -12,6 +13,7 @@ module Simple
|
||||||
#
|
#
|
||||||
###
|
###
|
||||||
module Framework
|
module Framework
|
||||||
|
include Msf::Simple::Framework::ModulePaths
|
||||||
|
|
||||||
###
|
###
|
||||||
#
|
#
|
||||||
|
@ -155,33 +157,6 @@ module Framework
|
||||||
self.datastore.to_file(Msf::Config.config_file, 'framework/core')
|
self.datastore.to_file(Msf::Config.config_file, 'framework/core')
|
||||||
end
|
end
|
||||||
|
|
||||||
#
|
|
||||||
# Initialize the module paths
|
|
||||||
#
|
|
||||||
def init_module_paths
|
|
||||||
|
|
||||||
# Ensure the module cache is accurate
|
|
||||||
self.modules.refresh_cache_from_database
|
|
||||||
|
|
||||||
# Initialize the default module search paths
|
|
||||||
if (Msf::Config.module_directory)
|
|
||||||
self.modules.add_module_path(Msf::Config.module_directory)
|
|
||||||
end
|
|
||||||
|
|
||||||
# Initialize the user module search path
|
|
||||||
if (Msf::Config.user_module_directory)
|
|
||||||
self.modules.add_module_path(Msf::Config.user_module_directory)
|
|
||||||
end
|
|
||||||
|
|
||||||
# If additional module paths have been defined globally, then load them.
|
|
||||||
# They should be separated by semi-colons.
|
|
||||||
if self.datastore['MsfModulePaths']
|
|
||||||
self.datastore['MsfModulePaths'].split(";").each { |path|
|
|
||||||
self.modules.add_module_path(path)
|
|
||||||
}
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Statistics.
|
# Statistics.
|
||||||
#
|
#
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
module Msf
|
||||||
|
module Simple
|
||||||
|
module Framework
|
||||||
|
module ModulePaths
|
||||||
|
# Initialize the module paths
|
||||||
|
#
|
||||||
|
# @return [void]
|
||||||
|
def init_module_paths
|
||||||
|
# Ensure the module cache is accurate
|
||||||
|
self.modules.refresh_cache_from_database
|
||||||
|
|
||||||
|
# Initialize the default module search paths
|
||||||
|
if (Msf::Config.module_directory)
|
||||||
|
self.modules.add_module_path(Msf::Config.module_directory)
|
||||||
|
end
|
||||||
|
|
||||||
|
# Initialize the user module search path
|
||||||
|
if (Msf::Config.user_module_directory)
|
||||||
|
self.modules.add_module_path(Msf::Config.user_module_directory)
|
||||||
|
end
|
||||||
|
|
||||||
|
# If additional module paths have been defined globally, then load them.
|
||||||
|
# They should be separated by semi-colons.
|
||||||
|
if self.datastore['MsfModulePaths']
|
||||||
|
self.datastore['MsfModulePaths'].split(";").each { |path|
|
||||||
|
self.modules.add_module_path(path)
|
||||||
|
}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,11 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Msf::Simple::Framework do
|
||||||
|
include_context 'Msf::Simple::Framework'
|
||||||
|
|
||||||
|
subject do
|
||||||
|
framework
|
||||||
|
end
|
||||||
|
|
||||||
|
it_should_behave_like 'Msf::Simple::Framework::ModulePaths'
|
||||||
|
end
|
|
@ -0,0 +1,93 @@
|
||||||
|
shared_examples_for 'Msf::Simple::Framework::ModulePaths' do
|
||||||
|
it { should be_a Msf::Simple::Framework::ModulePaths }
|
||||||
|
|
||||||
|
context '#init_module_paths' do
|
||||||
|
def init_module_paths
|
||||||
|
framework.init_module_paths
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:module_directory) do
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:user_module_directory) do
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
# create the framework first so that it's initialization's call
|
||||||
|
# to init_module_paths doesn't get captured.
|
||||||
|
framework
|
||||||
|
|
||||||
|
Msf::Config.stub(:module_directory => module_directory)
|
||||||
|
Msf::Config.stub(:user_module_directory => user_module_directory)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should refresh module cache from database' do
|
||||||
|
framework.modules.should_receive(:refresh_cache_from_database)
|
||||||
|
|
||||||
|
init_module_paths
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'Msf::Config' do
|
||||||
|
context 'module_directory' do
|
||||||
|
context 'without nil' do
|
||||||
|
let(:module_directory) do
|
||||||
|
'modules'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should add Msf::Config.module_directory to module paths' do
|
||||||
|
framework.modules.should_receive(:add_module_path).with(
|
||||||
|
module_directory
|
||||||
|
)
|
||||||
|
|
||||||
|
init_module_paths
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'user_module_directory' do
|
||||||
|
context 'without nil' do
|
||||||
|
let(:user_module_directory) do
|
||||||
|
'user/modules'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should add Msf::Config.user_module_directory to module paths' do
|
||||||
|
framework.modules.should_receive(:add_module_path).with(
|
||||||
|
user_module_directory
|
||||||
|
)
|
||||||
|
|
||||||
|
init_module_paths
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'datastore' do
|
||||||
|
context 'MsfModulePaths' do
|
||||||
|
let(:module_paths) do
|
||||||
|
module_paths = []
|
||||||
|
|
||||||
|
1.upto(2) do |i|
|
||||||
|
module_paths << "msf/#{i}/modules"
|
||||||
|
end
|
||||||
|
|
||||||
|
module_paths
|
||||||
|
end
|
||||||
|
|
||||||
|
before(:each) do
|
||||||
|
msf_module_paths = module_paths.join(';')
|
||||||
|
framework.datastore['MsfModulePaths'] = msf_module_paths
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'should add each module path' do
|
||||||
|
module_paths.each do |module_path|
|
||||||
|
framework.modules.should_receive(:add_module_path).with(module_path)
|
||||||
|
end
|
||||||
|
|
||||||
|
init_module_paths
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue