Abstracted extension and module loading. Also checking print_debug for console extension loading. (Fixes issue 324)
git-svn-id: https://beef.googlecode.com/svn/trunk@936 b87d56ec-f9c0-11de-8c8a-61c5e9addfc9
This commit is contained in:
10
beef
10
beef
@@ -5,11 +5,17 @@ $root_dir = File.expand_path('..', __FILE__)
|
||||
|
||||
require 'core/loader'
|
||||
|
||||
# load config
|
||||
config = BeEF::Core::Configuration.instance
|
||||
|
||||
# Loads extensions
|
||||
BeEF::Extensions.load
|
||||
|
||||
#prints welcome message
|
||||
BeEF::Extension::Console::Banners.print_welcome_msg
|
||||
|
||||
# load config
|
||||
config = BeEF::Core::Configuration.instance
|
||||
# Loads modules
|
||||
BeEF::Modules.load
|
||||
|
||||
# disable reverse dns
|
||||
Socket.do_not_reverse_lookup = true
|
||||
|
||||
@@ -16,5 +16,16 @@ module Extension
|
||||
return (self.is_enabled(ext) and BeEF::Core::Configuration.instance.get('beef.extension.'+ext.to_s+'.loaded') == true)
|
||||
end
|
||||
|
||||
# Loads extension
|
||||
def self.load(ext)
|
||||
if File.exists?('extensions/'+ext+'/extension.rb')
|
||||
require 'extensions/'+ext+'/extension.rb'
|
||||
print_debug "Loaded extension: '#{ext}'"
|
||||
BeEF::Core::Configuration.instance.set('beef.extension.'+ext+'.loaded', true)
|
||||
return true
|
||||
end
|
||||
print_error "Unable to load extension '#{ext}'"
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,6 +1,23 @@
|
||||
module BeEF
|
||||
module Extensions
|
||||
|
||||
# Return configuration hashes of all extensions that are enabled
|
||||
def self.get_enabled
|
||||
return BeEF::Core::Configuration.instance.get('beef.extension').select { |k,v| v['enable'] == true }
|
||||
end
|
||||
|
||||
# Return configuration hashes of all extensions that are loaded
|
||||
def self.get_loaded
|
||||
return BeEF::Core::Configuration.instance.get('beef.extension').select {|k,v| v['loaded'] == true }
|
||||
end
|
||||
|
||||
# Loads all enabled extensions
|
||||
def self.load
|
||||
self.get_enabled.each { |k,v|
|
||||
BeEF::Extension.load(k)
|
||||
}
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -39,23 +39,3 @@ require 'core/module'
|
||||
require 'core/modules'
|
||||
require 'core/extension'
|
||||
require 'core/extensions'
|
||||
|
||||
config = BeEF::Core::Configuration.instance
|
||||
|
||||
# Include extensions defined in the Configuration
|
||||
extensions = config.get('beef.extension').select{|key, ext| ext['enable'] == true }
|
||||
extensions.each{ |k,v|
|
||||
if File.exists?('extensions/'+k+'/extension.rb')
|
||||
require 'extensions/'+k+'/extension.rb'
|
||||
end
|
||||
}
|
||||
|
||||
# Include modules defined in the Configuration
|
||||
modules = config.get('beef.module').select{|key, mod| mod['enable'] == true and mod['category'] != nil }
|
||||
modules.each{ |k,v|
|
||||
cat = BeEF::Module.safe_category(v['category'])
|
||||
if File.exists?('modules/'+cat+'/'+k+'/module.rb')
|
||||
require 'modules/'+cat+'/'+k+'/module.rb'
|
||||
config.set('beef.module.'+k+'.loaded', true)
|
||||
end
|
||||
}
|
||||
|
||||
@@ -15,6 +15,19 @@ module Module
|
||||
def self.is_loaded(mod)
|
||||
return (self.is_enabled(mod) and BeEF::Core::Configuration.instance.get('beef.module.'+mod.to_s+'.loaded') == true)
|
||||
end
|
||||
|
||||
# Loads module
|
||||
def self.load(mod, cat)
|
||||
cat = BeEF::Module.safe_category(cat)
|
||||
if File.exists?('modules/'+cat+'/'+mod+'/module.rb')
|
||||
require 'modules/'+cat+'/'+mod+'/module.rb'
|
||||
BeEF::Core::Configuration.instance.set('beef.module.'+mod+'.loaded', true)
|
||||
print_debug "Loaded module: '#{mod}'"
|
||||
return true
|
||||
end
|
||||
print_error "Unable to load module '#{mod}'"
|
||||
return false
|
||||
end
|
||||
|
||||
# Returns category name in a system folder format
|
||||
def self.safe_category(cat)
|
||||
|
||||
@@ -1,9 +1,21 @@
|
||||
module BeEF
|
||||
module Modules
|
||||
|
||||
def self.safe_category(cat)
|
||||
return cat.to_s.strip.downcase.sub(/\s/, '_')
|
||||
# Return configuration hashes of all modules that are enabled
|
||||
def self.get_enabled
|
||||
return BeEF::Core::Configuration.instance.get('beef.module').select {|k,v| v['enable'] == true and v['category'] != nil }
|
||||
end
|
||||
|
||||
# Return configuration hashes of all modules that are loaded
|
||||
def self.get_loaded
|
||||
return BeEF::Core::Configuration.instance.get('beef.module').select {|k,v| v['loaded'] == true }
|
||||
end
|
||||
|
||||
# Loads modules
|
||||
def self.load
|
||||
self.get_enabled.each { |k,v|
|
||||
BeEF::Module.load(k, v['category'])
|
||||
}
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -17,7 +17,7 @@ end
|
||||
#
|
||||
def print_debug(s)
|
||||
config = BeEF::Core::Configuration.instance
|
||||
if config.get('beef.debug') || BeEF::Extension::Console.verbose?
|
||||
if config.get('beef.debug') || (BeEF::Extension.is_loaded('console') && BeEF::Extension::Console.verbose?)
|
||||
puts Time.now.localtime.strftime("[%k:%M:%S]")+'[>]'.yellow+' '+s
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user