From b9818239e3de7220b375ea5f2a7163c7b61b55ee Mon Sep 17 00:00:00 2001 From: passbe Date: Wed, 27 Apr 2011 04:14:56 +0000 Subject: [PATCH] Moved dynamic loading back to loader. Added helper classes for BeEF::Module/s BeEF::Extension/s. This is to facilitate issues 319, 322, 324 git-svn-id: https://beef.googlecode.com/svn/trunk@934 b87d56ec-f9c0-11de-8c8a-61c5e9addfc9 --- core/extension.rb | 5 +++++ core/extensions.rb | 13 +------------ core/loader.rb | 26 +++++++++++++++++++++++--- core/module.rb | 11 +++++++++++ core/modules.rb | 23 +---------------------- 5 files changed, 41 insertions(+), 37 deletions(-) create mode 100644 core/extension.rb create mode 100644 core/module.rb diff --git a/core/extension.rb b/core/extension.rb new file mode 100644 index 000000000..2f57cb4fe --- /dev/null +++ b/core/extension.rb @@ -0,0 +1,5 @@ +module BeEF +module Extension + +end +end diff --git a/core/extensions.rb b/core/extensions.rb index 6f642ba71..984b55c0b 100644 --- a/core/extensions.rb +++ b/core/extensions.rb @@ -1,17 +1,6 @@ module BeEF -module Extension +module Extensions end end -# Include only enabled extensions -config = BeEF::Core::Configuration.instance -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 -} diff --git a/core/loader.rb b/core/loader.rb index fffa25e66..c8f3e2121 100644 --- a/core/loader.rb +++ b/core/loader.rb @@ -34,8 +34,28 @@ require 'core/settings' # Include the core of BeEF require 'core/core' -# Include the extensions +# Include helpers +require 'core/module' +require 'core/modules' +require 'core/extension' require 'core/extensions' -# Include the modules -require 'core/modules' +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 +} diff --git a/core/module.rb b/core/module.rb new file mode 100644 index 000000000..46229d4cf --- /dev/null +++ b/core/module.rb @@ -0,0 +1,11 @@ +module BeEF +module Module + + def self.safe_category(cat) + return cat.to_s.strip.downcase.sub(/\s/, '_') + end + +end +end + + diff --git a/core/modules.rb b/core/modules.rb index 676dd0185..5ed49dc0d 100644 --- a/core/modules.rb +++ b/core/modules.rb @@ -1,30 +1,9 @@ module BeEF -module Module +module Modules def self.safe_category(cat) return cat.to_s.strip.downcase.sub(/\s/, '_') end - def self.loaded - config = BeEF::Core::Configuration.instance - return config.get('beef.module').select{|v| v.has_key?('loaded') and v['loaded'] == true } - end - end end - -# Include only enabled modules -config = BeEF::Core::Configuration.instance -modules = config.get('beef.module').select{|key, mod| - mod['enable'] == true and mod['category'] != nil -} - -# Include each module -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 -} -