aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Logging
diff options
context:
space:
mode:
authorleak <leak@bitmx.net>2012-02-19 13:51:16 +0100
committerleak <leak@bitmx.net>2012-02-19 13:51:16 +0100
commit8e3a4b956e8fcc3ec31240d847a7a630eaf2bba2 (patch)
treec7a797f883906019d9fa820b4d782eb7dfd4c1c5 /src/server/shared/Logging
parentf0f68f15a86c5ac0c83c47c6db67786506f8460d (diff)
Core/Warden: Base implementation for Warden functionality
Note: The default config file action for clients failing the checks can be changed for each check via the characters.warden_action table Credits to TOM_RUS
Diffstat (limited to 'src/server/shared/Logging')
-rwxr-xr-xsrc/server/shared/Logging/Log.cpp24
-rwxr-xr-xsrc/server/shared/Logging/Log.h3
2 files changed, 26 insertions, 1 deletions
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
index abdeace4d97..a9bb282cf86 100755
--- a/src/server/shared/Logging/Log.cpp
+++ b/src/server/shared/Logging/Log.cpp
@@ -29,7 +29,7 @@ extern LoginDatabaseWorkerPool LoginDatabase;
Log::Log() :
raLogfile(NULL), logfile(NULL), gmLogfile(NULL), charLogfile(NULL),
- dberLogfile(NULL), chatLogfile(NULL), arenaLogFile(NULL), sqlLogFile(NULL), sqlDevLogFile(NULL),
+ dberLogfile(NULL), chatLogfile(NULL), arenaLogFile(NULL), sqlLogFile(NULL), sqlDevLogFile(NULL), wardenLogFile(NULL),
m_gmlog_per_account(false), m_enableLogDBLater(false),
m_enableLogDB(false), m_colored(false)
{
@@ -73,6 +73,10 @@ Log::~Log()
if (sqlDevLogFile != NULL)
fclose(sqlDevLogFile);
sqlDevLogFile = NULL;
+
+ if (wardenLogFile != NULL)
+ fclose(wardenLogFile);
+ wardenLogFile = NULL;
}
void Log::SetLogLevel(char *Level)
@@ -166,6 +170,7 @@ void Log::Initialize()
arenaLogFile = openLogFile("ArenaLogFile", NULL, "a");
sqlLogFile = openLogFile("SQLDriverLogFile", NULL, "a");
sqlDevLogFile = openLogFile("SQLDeveloperLogFile", NULL, "a");
+ wardenLogFile = openLogFile("Warden.LogFile",NULL,"a");
// Main log file settings
m_logLevel = ConfigMgr::GetIntDefault("LogLevel", LOGL_NORMAL);
@@ -1055,3 +1060,20 @@ void Log::outErrorST(const char * str, ...)
ACE_Stack_Trace st;
outError("%s [Stacktrace: %s]", nnew_str, st.c_str());
}
+
+void Log::outWarden(const char * str, ...)
+{
+ if (!str)
+ return;
+
+ if (wardenLogFile)
+ {
+ outTimestamp(wardenLogFile);
+ va_list ap;
+ va_start(ap, str);
+ vfprintf(wardenLogFile, str, ap);
+ fprintf(wardenLogFile, "\n" );
+ fflush(wardenLogFile);
+ va_end(ap);
+ }
+}
diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h
index 2381d91d98d..4baa1695a55 100755
--- a/src/server/shared/Logging/Log.h
+++ b/src/server/shared/Logging/Log.h
@@ -50,6 +50,7 @@ enum DebugLogFilters
LOG_FILTER_LOOT = 0x00100000, // Loot related
LOG_FILTER_GUILD = 0x00200000, // Guild related
LOG_FILTER_TRANSPORTS = 0x00400000, // Transport related
+ LOG_FILTER_WARDEN = 0x00800000, // Warden related
};
enum LogTypes
@@ -136,6 +137,7 @@ class Log
void outChat( const char * str, ... ) ATTR_PRINTF(2, 3);
void outArena( const char * str, ... ) ATTR_PRINTF(2, 3);
void outSQLDriver( const char* str, ... ) ATTR_PRINTF(2, 3);
+ void outWarden( const char * str, ... ) ATTR_PRINTF(2, 3);
void outCharDump( const char * str, uint32 account_id, uint32 guid, const char * name );
static void outTimestamp(FILE* file);
@@ -168,6 +170,7 @@ class Log
FILE* arenaLogFile;
FILE* sqlLogFile;
FILE* sqlDevLogFile;
+ FILE* wardenLogFile;
// cache values for after initilization use (like gm log per account case)
std::string m_logsDir;