Removes now-unreachable #ifdef _WIN32 branches across Common/ and the three server binaries (all builds are Linux-only), deletes the entirely unused SEH exception-handling shim and an orphaned vendored MySQL client header. Enables LTO and -march=x86-64-v2 in Release builds for a small free perf win. Also seeds a default GM account (gmadmin/changeme) via database sql files/gm_account.sql so a fresh deploy has something to log into the web admin panel with, switches the MariaDB data directory from a Docker named volume to a host bind mount for visibility/backup, and expands the README with a fuller Docker deployment walkthrough. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
174 lines
3.4 KiB
C++
174 lines
3.4 KiB
C++
#include <cstdio>
|
|
#include <cstdarg>
|
|
#include <cstring>
|
|
#include <string>
|
|
#include <time.h>
|
|
#include "log.h"
|
|
|
|
// Basic colors
|
|
typedef enum
|
|
{
|
|
BLACK,
|
|
BLUE,
|
|
GREEN,
|
|
CYAN,
|
|
RED,
|
|
MAGENTA,
|
|
BROWN,
|
|
LIGHTGRAY,
|
|
DARKGRAY,
|
|
LIGHTBLUE,
|
|
LIGHTGREEN,
|
|
LIGHTCYAN,
|
|
LIGHTRED,
|
|
LIGHTMAGENTA,
|
|
YELLOW,
|
|
WHITE
|
|
} COLORS;
|
|
|
|
// Our base colors
|
|
static int __BACKGROUND = BLACK;
|
|
static int __FOREGROUND = LIGHTGRAY;
|
|
|
|
// Change console text color
|
|
void textcolor(int color)
|
|
{
|
|
}
|
|
|
|
// This function logs based on flags
|
|
void Log( enum msg_type flag, const char *Format, ... )
|
|
{
|
|
va_list ap; // For arguments
|
|
va_start( ap, Format );
|
|
|
|
// Timestamp
|
|
time_t rtime;
|
|
time (&rtime);
|
|
char timestamp[26];
|
|
ctime_s (timestamp, sizeof (timestamp), &rtime);
|
|
timestamp[strlen (timestamp) - 1] = ' ';
|
|
|
|
switch (flag) {
|
|
case MSG_NONE: // direct printf replacement
|
|
{
|
|
textcolor(WHITE);
|
|
va_list apcopy;
|
|
va_copy(apcopy, ap);
|
|
vprintf( Format, apcopy );
|
|
va_end(apcopy);
|
|
break;
|
|
}
|
|
case MSG_STATUS:
|
|
textcolor(GREEN);
|
|
printf("[STATUS]: ");
|
|
break;
|
|
case MSG_SQL:
|
|
textcolor(CYAN);
|
|
printf("[SQL]: ");
|
|
break;
|
|
case MSG_INFO:
|
|
textcolor(LIGHTGREEN);
|
|
printf("[INFO]: ");
|
|
break;
|
|
case MSG_NOTICE:
|
|
textcolor(LIGHTCYAN);
|
|
printf("[NOTICE]: ");
|
|
break;
|
|
case MSG_WARNING:
|
|
textcolor(YELLOW);
|
|
printf("[WARNING]: ");
|
|
break;
|
|
case MSG_DEBUG:
|
|
textcolor(LIGHTBLUE);
|
|
printf("[DEBUG]: ");
|
|
break;
|
|
case MSG_ERROR:
|
|
textcolor(RED);
|
|
printf("[ERROR]: ");
|
|
break;
|
|
case MSG_FATALERROR:
|
|
textcolor(LIGHTRED);
|
|
printf("[FATAL ERROR]: ");
|
|
break;
|
|
case MSG_HACK:
|
|
textcolor(LIGHTRED);
|
|
printf("[HACK]: ");
|
|
break;
|
|
case MSG_LOAD:
|
|
textcolor(BROWN);
|
|
printf("[LOADING]: ");
|
|
break;
|
|
case MSG_GMACTION:
|
|
textcolor(MAGENTA);
|
|
printf("[GM ACTION]: ");
|
|
break;
|
|
case MSG_START:
|
|
{
|
|
textcolor(MAGENTA);
|
|
va_list apcopy;
|
|
va_copy(apcopy, ap);
|
|
vprintf( Format, apcopy );
|
|
va_end(apcopy);
|
|
printf( "\r\n" );
|
|
break;
|
|
}
|
|
//case MSG_SDEBUG:
|
|
// textcolor(MAGENTA);
|
|
// printf("[SDEBUG]: ");
|
|
// break;
|
|
//case MSG_QUERY:
|
|
// textcolor(LIGHTBLUE);
|
|
// printf("[QUERY]: ");
|
|
// break;
|
|
//default:
|
|
// textcolor(MAGENTA);
|
|
// printf("[UNKNOWN CASE]: ");
|
|
// break;
|
|
}
|
|
textcolor(LIGHTGRAY);
|
|
if(flag!=MSG_QUERY)
|
|
{
|
|
printf( "%s- ", timestamp );
|
|
{
|
|
va_list apcopy;
|
|
va_copy(apcopy, ap);
|
|
vprintf( Format, apcopy );
|
|
va_end(apcopy);
|
|
}
|
|
printf( (flag==MSG_LOAD) ? "\r" : "\n" );
|
|
}
|
|
FILE *fh = NULL;
|
|
switch(LOG_THISSERVER)
|
|
{
|
|
case LOG_LOGIN_SERVER:
|
|
fopen_s (&fh, LOG_DIRECTORY LOG_FILENAME_LOGINFILE, "a+");
|
|
break;
|
|
case LOG_CHARACTER_SERVER:
|
|
fopen_s (&fh, LOG_DIRECTORY LOG_FILENAME_CHARFILE, "a+");
|
|
break;
|
|
case LOG_WORLD_SERVER:
|
|
fopen_s (&fh, LOG_DIRECTORY LOG_FILENAME_WORLDFILE, "a+");
|
|
break;
|
|
case LOG_SAME_FILE:
|
|
fopen_s (&fh, LOG_DIRECTORY LOG_DEFAULT_FILE, "a+");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
if(flag == MSG_QUERY)
|
|
{
|
|
if(fh != NULL)
|
|
fclose(fh);
|
|
fopen_s (&fh, LOG_DIRECTORY "queries.txt", "a+");
|
|
}
|
|
if ( fh != NULL )
|
|
{
|
|
fprintf( fh, "%s- ", timestamp );
|
|
vfprintf( fh, Format, ap );
|
|
fputc( '\n', fh );
|
|
fclose( fh );
|
|
}
|
|
|
|
va_end ( ap );
|
|
}
|