Files
metasploit-gs/lib/msf/base/logging.rb
T

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

107 lines
2.8 KiB
Ruby
Raw Normal View History

# -*- coding: binary -*-
2005-10-01 21:27:40 +00:00
require 'rex'
module Msf
# This module provides an initialization interface for logging.
class Logging
2013-12-24 17:43:14 -08:00
#Is logging initialized
#@private
2009-11-13 17:31:57 +00:00
@@initialized = false
2013-12-24 17:43:14 -08:00
#Is session logging enabled
#@private
2009-11-14 06:21:22 +00:00
@@session_logging = false
2013-08-30 16:28:33 -05:00
2005-11-15 15:11:43 +00:00
# Initialize logging.
2013-12-26 10:14:41 -08:00
#
# @param log_sink_name [string] Log sink name.
2013-12-24 17:43:14 -08:00
# @return [void]
def self.init(log_sink_name = nil)
2009-11-13 17:31:57 +00:00
if (! @@initialized)
@@initialized = true
2013-08-30 16:28:33 -05:00
log_sink ||= Rex::Logging::LogSinkFactory.new(
log_sink_name,
Msf::Config.log_directory + File::SEPARATOR + "framework.log"
)
2013-08-30 16:28:33 -05:00
2005-10-01 21:27:40 +00:00
# Register each known log source
[
Rex::LogSource,
2021-01-21 17:31:03 -05:00
Rex::Socket::LogSource,
Msf::LogSource,
2005-10-02 03:21:26 +00:00
'base',
2005-10-01 21:27:40 +00:00
].each { |src|
register_log_source(src, log_sink)
2005-10-01 21:27:40 +00:00
}
end
end
2013-08-30 16:28:33 -05:00
2013-12-24 17:43:14 -08:00
# Enables a log source of name src. Creates the .log file in the
# configured directory if logging is not already enabled for this
# source.
2013-12-26 10:14:41 -08:00
#
# @param src [String] log source name.
# @param level [Integer] logging level.
2013-12-24 17:43:14 -08:00
# @return [void]
2005-11-22 03:20:09 +00:00
def self.enable_log_source(src, level = 0)
2005-11-28 16:52:05 +00:00
if (log_source_registered?(src) == false)
f = Rex::Logging::Sinks::Flatfile.new(
Msf::Config.log_directory + File::SEPARATOR + "#{src}.log")
2013-08-30 16:28:33 -05:00
2005-11-28 16:52:05 +00:00
register_log_source(src, f, level)
end
2005-10-02 03:21:26 +00:00
end
2013-08-30 16:28:33 -05:00
2005-10-02 03:21:26 +00:00
# Stops logging for a given log source.
2013-12-26 10:14:41 -08:00
#
# @param src [String] the log source to disable.
2013-12-24 17:43:14 -08:00
# @return [Boolean] true if successful. false if not.
2005-10-02 03:21:26 +00:00
def self.disable_log_source(src)
deregister_log_source(src)
end
2013-08-30 16:28:33 -05:00
2005-10-02 03:21:26 +00:00
# Sets whether or not session logging is to be enabled.
2013-12-26 10:14:41 -08:00
#
# @param tf [Boolean] true if enabling. false if disabling.
2013-12-24 17:43:14 -08:00
# @return [void]
2005-10-02 03:21:26 +00:00
def self.enable_session_logging(tf)
2009-11-14 06:21:22 +00:00
@@session_logging = tf
2005-10-02 03:21:26 +00:00
end
2013-08-30 16:28:33 -05:00
2005-10-02 03:21:26 +00:00
# Returns whether or not session logging is enabled.
2013-12-26 10:14:41 -08:00
#
2013-12-24 17:43:14 -08:00
# @return [Boolean] true if enabled. false if disabled.
2005-10-02 03:21:26 +00:00
def self.session_logging_enabled?
2009-11-14 06:21:22 +00:00
@@session_logging || false
2005-10-02 03:21:26 +00:00
end
2013-08-30 16:28:33 -05:00
2005-10-02 03:21:26 +00:00
# Starts logging for a given session.
2013-12-26 10:14:41 -08:00
#
# @param session [Msf::Session] the session to start logging on.
2013-12-24 17:43:14 -08:00
# @return [void]
2005-10-02 03:21:26 +00:00
def self.start_session_log(session)
2005-11-28 20:41:11 +00:00
if (log_source_registered?(session.log_source) == false)
f = Rex::Logging::Sinks::TimestampColorlessFlatfile.new(
2005-10-02 03:21:26 +00:00
Msf::Config.session_log_directory + File::SEPARATOR + "#{session.log_file_name}.log")
2013-08-30 16:28:33 -05:00
2005-11-28 20:41:11 +00:00
register_log_source(session.log_source, f)
2013-08-30 16:28:33 -05:00
2005-11-28 20:41:11 +00:00
rlog("\n[*] Logging started: #{Time.now}\n\n", session.log_source)
end
2005-10-02 03:21:26 +00:00
end
2013-08-30 16:28:33 -05:00
2005-10-02 03:21:26 +00:00
# Stops logging for a given session.
2013-12-26 10:14:41 -08:00
#
# @param session [Msf::Session] the session to stop logging.
2023-09-24 17:42:00 -04:00
# @return [Boolean] true if successful. false if not.
2005-10-02 03:21:26 +00:00
def self.stop_session_log(session)
2005-10-02 03:57:46 +00:00
rlog("\n[*] Logging stopped: #{Time.now}\n\n", session.log_source)
2013-08-30 16:28:33 -05:00
2005-10-02 03:21:26 +00:00
deregister_log_source(session.log_source)
end
2005-10-01 21:27:40 +00:00
end
2009-11-13 17:31:57 +00:00
end