Class: Msf::Config
- Inherits:
-
Hash
- Object
- Hash
- Msf::Config
- Defined in:
- lib/msf/base/config.rb
Overview
This class wraps interaction with global configuration that can be used as a persistent storage point for configuration, logs, and other such fun things.
Constant Summary collapse
- InstallRoot =
The installation's root directory for the distribution
File.(File.join(File.dirname(__FILE__), '..', '..', '..'))
- FileSep =
Default system file separator.
File::SEPARATOR
- Defaults =
Default configuration locations.
{ 'ConfigDirectory' => get_config_root, 'ConfigFile' => "config", 'ModuleDirectory' => "modules", 'ScriptDirectory' => "scripts", 'LogDirectory' => "logs", 'LogosDirectory' => "logos", 'SessionLogDirectory' => "logs/sessions", 'PluginDirectory' => "plugins", 'DataDirectory' => "data", 'LootDirectory' => "loot", 'LocalDirectory' => "local" }
Class Method Summary collapse
-
.config_directory ⇒ String
Returns the configuration directory default.
-
.config_file ⇒ String
Returns the full path to the configuration file.
-
.data_directory ⇒ String
Returns the data directory.
-
.delete_group(group) ⇒ void
Deletes the specified config group from the ini file.
-
.fav_modules_file ⇒ String
Returns the full path to the fav_modules file.
-
.get_config_root ⇒ String
Determines the base configuration directory.
-
.history_file ⇒ String
Returns the full path to the history file.
-
.init ⇒ void
Initializes configuration, creating directories as necessary.
-
.install_root ⇒ String
Returns the framework installation root.
-
.load(path = nil) ⇒ Rex::Parser::Ini
Loads configuration from the supplied file path, or the default one if none is specified.
-
.local_directory ⇒ String
Returns the directory in which locally-generated data will reside.
-
.log_directory ⇒ String
Returns the directory that log files should be stored in.
-
.logos_directory ⇒ String
Return the directory that logo files should be loaded from.
-
.loot_directory ⇒ String
Returns the directory in which captured data will reside.
- .meterpreter_history ⇒ Object
-
.module_directory ⇒ String
Returns the global module directory.
-
.persist_file ⇒ String
Returns the full path to the handler file.
-
.plugin_directory ⇒ String
Returns the directory that plugins are stored in.
- .pry_history ⇒ Object
-
.save(opts) ⇒ void
Saves configuration to the path specified in the ConfigFile hash key or the default path if one isn't specified.
-
.script_directory ⇒ String
Returns the path that scripts can be loaded from.
-
.session_log_directory ⇒ String
Returns the directory in which session log files are to reside.
-
.user_data_directory ⇒ String
Path to user-specific data directory.
-
.user_logos_directory ⇒ String
Return the user-specific directory that logo files should be loaded from.
-
.user_module_directory ⇒ String
Returns the user-specific module base path.
-
.user_plugin_directory ⇒ String
Returns the user-specific plugin base path.
-
.user_script_directory ⇒ String
Returns the user-specific script base path.
Instance Method Summary collapse
-
#config_directory ⇒ String
Returns the configuration directory default.
-
#config_file ⇒ String
Returns the full path to the configuration file.
-
#data_directory ⇒ String
Returns the data directory.
-
#delete_group(group) ⇒ void
Deletes the specified config group from the ini file.
-
#fav_modules_file ⇒ String
Returns the full path to the fav_modules file.
-
#history_file ⇒ String
Returns the full path to the history file.
-
#init ⇒ void
Initializes configuration, creating directories as necessary.
-
#initialize ⇒ Hash
constructor
Updates the config class' self with the default hash.
-
#install_root ⇒ String
Returns the installation root directory.
-
#load(path = nil) ⇒ Rex::Parser::Ini
Loads configuration from the supplied file path, or the default one if none is specified.
-
#local_directory ⇒ String
Returns the directory in which locally-generated data will reside.
-
#log_directory ⇒ String
Returns the directory that log files should be stored in.
-
#logos_directory ⇒ String
Return the directory that logo files should be loaded from.
-
#loot_directory ⇒ String
Returns the directory in which captured data will reside.
- #meterpreter_history ⇒ Object
-
#module_directory ⇒ String
Returns the global module directory.
-
#persist_file ⇒ String
Returns the full path to the handler file.
-
#plugin_directory ⇒ String
Returns the directory that plugins are stored in.
- #pry_history ⇒ Object
-
#save(opts) ⇒ void
Saves configuration to the path specified in the ConfigFile hash key or the default path if one isn't specified.
-
#script_directory ⇒ String
Returns the path that scripts can be loaded from.
-
#session_log_directory ⇒ String
Returns the directory in which session log files are to reside.
-
#user_data_directory ⇒ String
Path to user-specific data directory.
-
#user_logos_directory ⇒ String
Return the user-specific directory that logo files should be loaded from.
-
#user_module_directory ⇒ String
Returns the user-specific module base path.
-
#user_plugin_directory ⇒ String
Returns the user-specific plugin base path.
-
#user_script_directory ⇒ String
Returns the user-specific script base path.
Constructor Details
#initialize ⇒ Hash
Updates the config class' self with the default hash.
276 277 278 |
# File 'lib/msf/base/config.rb', line 276 def initialize update(Defaults) end |
Class Method Details
.config_directory ⇒ String
Returns the configuration directory default.
96 97 98 |
# File 'lib/msf/base/config.rb', line 96 def self.config_directory self.new.config_directory end |
.config_file ⇒ String
Returns the full path to the configuration file.
199 200 201 |
# File 'lib/msf/base/config.rb', line 199 def self.config_file self.new.config_file end |
.data_directory ⇒ String
Returns the data directory
192 193 194 |
# File 'lib/msf/base/config.rb', line 192 def self.data_directory self.new.data_directory end |
.delete_group(group) ⇒ void
This method returns an undefined value.
Deletes the specified config group from the ini file
269 270 271 |
# File 'lib/msf/base/config.rb', line 269 def self.delete_group(group) self.new.delete_group(group) end |
.fav_modules_file ⇒ String
Returns the full path to the fav_modules file.
220 221 222 |
# File 'lib/msf/base/config.rb', line 220 def self.fav_modules_file self.new.fav_modules_file end |
.get_config_root ⇒ String
Determines the base configuration directory. This method should be considered `private`.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/msf/base/config.rb', line 28 def self.get_config_root # Use MSF_CFGROOT_CONFIG environment variable first. val = Rex::Compat.getenv('MSF_CFGROOT_CONFIG') if (val and File.directory?(val)) return val end # XXX Update this when there is a need to break compatibility config_dir_major = 4 config_dir = ".msf#{config_dir_major}" # Windows-specific environment variables ['HOME', 'LOCALAPPDATA', 'APPDATA', 'USERPROFILE'].each do |dir| val = Rex::Compat.getenv(dir) if (val and File.directory?(val)) return File.join(val, config_dir) end end begin # First we try $HOME/.msfx File.("~#{FileSep}#{config_dir}") rescue ::ArgumentError # Give up and install root + ".msfx" InstallRoot + config_dir end end |
.history_file ⇒ String
Returns the full path to the history file.
206 207 208 |
# File 'lib/msf/base/config.rb', line 206 def self.history_file self.new.history_file end |
.init ⇒ void
This method returns an undefined value.
Initializes configuration, creating directories as necessary.
234 235 236 |
# File 'lib/msf/base/config.rb', line 234 def self.init self.new.init end |
.install_root ⇒ String
Returns the framework installation root.
89 90 91 |
# File 'lib/msf/base/config.rb', line 89 def self.install_root InstallRoot end |
.load(path = nil) ⇒ Rex::Parser::Ini
Loads configuration from the supplied file path, or the default one if none is specified.
243 244 245 |
# File 'lib/msf/base/config.rb', line 243 def self.load(path = nil) self.new.load(path) end |
.local_directory ⇒ String
Returns the directory in which locally-generated data will reside.
159 160 161 |
# File 'lib/msf/base/config.rb', line 159 def self.local_directory self.new.local_directory end |
.log_directory ⇒ String
Returns the directory that log files should be stored in.
124 125 126 |
# File 'lib/msf/base/config.rb', line 124 def self.log_directory self.new.log_directory end |
.logos_directory ⇒ String
Return the directory that logo files should be loaded from.
103 104 105 |
# File 'lib/msf/base/config.rb', line 103 def self.logos_directory self.new.logos_directory end |
.loot_directory ⇒ String
Returns the directory in which captured data will reside.
152 153 154 |
# File 'lib/msf/base/config.rb', line 152 def self.loot_directory self.new.loot_directory end |
.meterpreter_history ⇒ Object
210 211 212 |
# File 'lib/msf/base/config.rb', line 210 def self.meterpreter_history self.new.meterpreter_history end |
.module_directory ⇒ String
Returns the global module directory.
110 111 112 |
# File 'lib/msf/base/config.rb', line 110 def self.module_directory self.new.module_directory end |
.persist_file ⇒ String
Returns the full path to the handler file.
227 228 229 |
# File 'lib/msf/base/config.rb', line 227 def self.persist_file self.new.persist_file end |
.plugin_directory ⇒ String
Returns the directory that plugins are stored in.
131 132 133 |
# File 'lib/msf/base/config.rb', line 131 def self.plugin_directory self.new.plugin_directory end |
.pry_history ⇒ Object
214 215 216 |
# File 'lib/msf/base/config.rb', line 214 def self.pry_history self.new.pry_history end |
.save(opts) ⇒ void
This method returns an undefined value.
Saves configuration to the path specified in the ConfigFile hash key or the default path if one isn't specified. The options should be group references that have named value pairs.
261 262 263 |
# File 'lib/msf/base/config.rb', line 261 def self.save(opts) self.new.save(opts) end |
.script_directory ⇒ String
Returns the path that scripts can be loaded from.
117 118 119 |
# File 'lib/msf/base/config.rb', line 117 def self.script_directory self.new.script_directory end |
.session_log_directory ⇒ String
Returns the directory in which session log files are to reside.
145 146 147 |
# File 'lib/msf/base/config.rb', line 145 def self.session_log_directory self.new.session_log_directory end |
.user_data_directory ⇒ String
Returns path to user-specific data directory.
185 186 187 |
# File 'lib/msf/base/config.rb', line 185 def self.user_data_directory self.new.user_data_directory end |
.user_logos_directory ⇒ String
Return the user-specific directory that logo files should be loaded from.
166 167 168 |
# File 'lib/msf/base/config.rb', line 166 def self.user_logos_directory self.new.user_logos_directory end |
.user_module_directory ⇒ String
Returns the user-specific module base path
173 174 175 |
# File 'lib/msf/base/config.rb', line 173 def self.user_module_directory self.new.user_module_directory end |
.user_plugin_directory ⇒ String
Returns the user-specific plugin base path
138 139 140 |
# File 'lib/msf/base/config.rb', line 138 def self.user_plugin_directory self.new.user_plugin_directory end |
.user_script_directory ⇒ String
Returns the user-specific script base path
180 181 182 |
# File 'lib/msf/base/config.rb', line 180 def self.user_script_directory self.new.user_script_directory end |
Instance Method Details
#config_directory ⇒ String
Returns the configuration directory default.
297 298 299 |
# File 'lib/msf/base/config.rb', line 297 def config_directory self['ConfigDirectory'] end |
#config_file ⇒ String
Returns the full path to the configuration file.
304 305 306 |
# File 'lib/msf/base/config.rb', line 304 def config_file config_directory + FileSep + self['ConfigFile'] end |
#data_directory ⇒ String
Returns the data directory
422 423 424 |
# File 'lib/msf/base/config.rb', line 422 def data_directory install_root + FileSep + self['DataDirectory'] end |
#delete_group(group) ⇒ void
This method returns an undefined value.
Deletes the specified config group from the ini file
479 480 481 482 483 484 485 |
# File 'lib/msf/base/config.rb', line 479 def delete_group(group) ini = Rex::Parser::Ini.new(config_file) ini.delete(group) ini.to_file end |
#fav_modules_file ⇒ String
Returns the full path to the fav_modules file.
326 327 328 |
# File 'lib/msf/base/config.rb', line 326 def fav_modules_file config_directory + FileSep + "fav_modules" end |
#history_file ⇒ String
Returns the full path to the history file.
311 312 313 |
# File 'lib/msf/base/config.rb', line 311 def history_file config_directory + FileSep + "history" end |
#init ⇒ void
This method returns an undefined value.
Initializes configuration, creating directories as necessary.
429 430 431 432 433 434 435 436 437 438 439 440 |
# File 'lib/msf/base/config.rb', line 429 def init FileUtils.mkdir_p(module_directory) FileUtils.mkdir_p(config_directory) FileUtils.mkdir_p(log_directory) FileUtils.mkdir_p(session_log_directory) FileUtils.mkdir_p(loot_directory) FileUtils.mkdir_p(local_directory) FileUtils.mkdir_p(user_logos_directory) FileUtils.mkdir_p(user_module_directory) FileUtils.mkdir_p(user_plugin_directory) FileUtils.mkdir_p(user_data_directory) end |
#install_root ⇒ String
Returns the installation root directory
283 284 285 |
# File 'lib/msf/base/config.rb', line 283 def install_root InstallRoot end |
#load(path = nil) ⇒ Rex::Parser::Ini
Loads configuration from the supplied file path, or the default one if none is specified.
447 448 449 450 451 |
# File 'lib/msf/base/config.rb', line 447 def load(path = nil) path = config_file if (!path) return Rex::Parser::Ini.new(path) end |
#local_directory ⇒ String
Returns the directory in which locally-generated data will reside.
382 383 384 |
# File 'lib/msf/base/config.rb', line 382 def local_directory config_directory + FileSep + self['LocalDirectory'] end |
#log_directory ⇒ String
Returns the directory that log files should be stored in.
354 355 356 |
# File 'lib/msf/base/config.rb', line 354 def log_directory config_directory + FileSep + self['LogDirectory'] end |
#logos_directory ⇒ String
Return the directory that logo files should be loaded from.
290 291 292 |
# File 'lib/msf/base/config.rb', line 290 def logos_directory data_directory + FileSep + self['LogosDirectory'] end |
#loot_directory ⇒ String
Returns the directory in which captured data will reside.
375 376 377 |
# File 'lib/msf/base/config.rb', line 375 def loot_directory config_directory + FileSep + self['LootDirectory'] end |
#meterpreter_history ⇒ Object
315 316 317 |
# File 'lib/msf/base/config.rb', line 315 def meterpreter_history config_directory + FileSep + "meterpreter_history" end |
#module_directory ⇒ String
Returns the global module directory.
340 341 342 |
# File 'lib/msf/base/config.rb', line 340 def module_directory install_root + FileSep + self['ModuleDirectory'] end |
#persist_file ⇒ String
Returns the full path to the handler file.
333 334 335 |
# File 'lib/msf/base/config.rb', line 333 def persist_file config_directory + FileSep + "persist" end |
#plugin_directory ⇒ String
Returns the directory that plugins are stored in.
361 362 363 |
# File 'lib/msf/base/config.rb', line 361 def plugin_directory install_root + FileSep + self['PluginDirectory'] end |
#pry_history ⇒ Object
319 320 321 |
# File 'lib/msf/base/config.rb', line 319 def pry_history config_directory + FileSep + "pry_history" end |
#save(opts) ⇒ void
This method returns an undefined value.
Saves configuration to the path specified in the ConfigFile hash key or the default path if one isn't specified. The options should be group references that have named value pairs.
467 468 469 470 471 472 473 |
# File 'lib/msf/base/config.rb', line 467 def save(opts) ini = Rex::Parser::Ini.new(opts['ConfigFile'] || config_file) ini.update(opts) ini.to_file end |
#script_directory ⇒ String
Returns the path that scripts can be loaded from.
347 348 349 |
# File 'lib/msf/base/config.rb', line 347 def script_directory install_root + FileSep + self['ScriptDirectory'] end |
#session_log_directory ⇒ String
Returns the directory in which session log files are to reside.
368 369 370 |
# File 'lib/msf/base/config.rb', line 368 def session_log_directory config_directory + FileSep + self['SessionLogDirectory'] end |
#user_data_directory ⇒ String
Returns path to user-specific data directory.
415 416 417 |
# File 'lib/msf/base/config.rb', line 415 def user_data_directory config_directory + FileSep + self['DataDirectory'] end |
#user_logos_directory ⇒ String
Return the user-specific directory that logo files should be loaded from.
389 390 391 |
# File 'lib/msf/base/config.rb', line 389 def user_logos_directory config_directory + FileSep + self['LogosDirectory'] end |
#user_module_directory ⇒ String
Returns the user-specific module base path
396 397 398 |
# File 'lib/msf/base/config.rb', line 396 def user_module_directory config_directory + FileSep + "modules" end |
#user_plugin_directory ⇒ String
Returns the user-specific plugin base path
403 404 405 |
# File 'lib/msf/base/config.rb', line 403 def user_plugin_directory config_directory + FileSep + "plugins" end |
#user_script_directory ⇒ String
Returns the user-specific script base path
410 411 412 |
# File 'lib/msf/base/config.rb', line 410 def user_script_directory config_directory + FileSep + "scripts" end |