diff --git a/common/eqemu_logsys.cpp b/common/eqemu_logsys.cpp index 3389342b9..36246ae32 100644 --- a/common/eqemu_logsys.cpp +++ b/common/eqemu_logsys.cpp @@ -317,6 +317,8 @@ std::string EQEmuLogSys::GetLinuxConsoleColorFromCategory(uint16 log_category) case Logs::Normal: return LC_YELLOW; case Logs::MySQLError: + case Logs::Warning: + case Logs::Critical: case Logs::Error: return LC_RED; case Logs::MySQLQuery: diff --git a/loginserver/client.cpp b/loginserver/client.cpp index 64c429a96..5e82dea74 100644 --- a/loginserver/client.cpp +++ b/loginserver/client.cpp @@ -46,7 +46,7 @@ bool Client::Process() EQApplicationPacket *app = connection->PopPacket(); while (app) { if (server.options.IsTraceOn()) { - Log(Logs::General, Logs::Netcode, "Application packet received from client (size %u)", app->Size()); + LogDebug("Application packet received from client (size {0})", app->Size()); } if (server.options.IsDumpInPacketsOn()) { @@ -62,19 +62,19 @@ bool Client::Process() switch (app->GetOpcode()) { case OP_SessionReady: { if (server.options.IsTraceOn()) { - LogInfo("Session ready received from client."); + LogInfo("Session ready received from client"); } Handle_SessionReady((const char *) app->pBuffer, app->Size()); break; } case OP_Login: { if (app->Size() < 20) { - LogError("Login received but it is too small, discarding."); + LogError("Login received but it is too small, discarding"); break; } if (server.options.IsTraceOn()) { - LogInfo("Login received from client."); + LogInfo("Login received from client"); } Handle_Login((const char *) app->pBuffer, app->Size()); @@ -82,12 +82,12 @@ bool Client::Process() } case OP_ServerListRequest: { if (app->Size() < 4) { - LogError("Server List Request received but it is too small, discarding."); + LogError("Server List Request received but it is too small, discarding"); break; } if (server.options.IsTraceOn()) { - LogDebug("Server list request received from client."); + LogDebug("Server list request received from client"); } SendServerListPacket(*(uint32_t *) app->pBuffer); @@ -95,7 +95,7 @@ bool Client::Process() } case OP_PlayEverquestRequest: { if (app->Size() < sizeof(PlayEverquestRequest_Struct)) { - LogError("Play received but it is too small, discarding."); + LogError("Play received but it is too small, discarding"); break; } @@ -127,12 +127,12 @@ bool Client::Process() void Client::Handle_SessionReady(const char *data, unsigned int size) { if (status != cs_not_sent_session_ready) { - LogError("Session ready received again after already being received."); + LogError("Session ready received again after already being received"); return; } if (size < sizeof(unsigned int)) { - LogError("Session ready was too small."); + LogError("Session ready was too small"); return; } @@ -210,7 +210,7 @@ void Client::Handle_Login(const char *data, unsigned int size) std::string outbuffer; outbuffer.resize(size - 12); if (outbuffer.length() == 0) { - LogError("Corrupt buffer sent to server, no length."); + LogError("Corrupt buffer sent to server, no length"); return; } @@ -224,7 +224,7 @@ void Client::Handle_Login(const char *data, unsigned int size) std::string user(&outbuffer[0]); if (user.length() >= outbuffer.length()) { - LogError("Corrupt buffer sent to server, preventing buffer overflow."); + LogError("Corrupt buffer sent to server, preventing buffer overflow"); return; } @@ -306,7 +306,7 @@ void Client::Handle_Login(const char *data, unsigned int size) void Client::Handle_Play(const char *data) { if (status != cs_logged_in) { - LogError("Client sent a play request when they were not logged in, discarding."); + LogError("Client sent a play request when they were not logged in, discarding"); return; } @@ -347,7 +347,7 @@ void Client::SendServerListPacket(uint32 seq) void Client::SendPlayResponse(EQApplicationPacket *outapp) { if (server.options.IsTraceOn()) { - Log(Logs::General, Logs::Netcode, "Sending play response for %s.", GetAccountName().c_str()); + LogDebug("Sending play response for {0}", GetAccountName()); // server_log->LogPacket(log_network_trace, (const char*)outapp->pBuffer, outapp->size); } connection->QueuePacket(outapp); diff --git a/loginserver/client_manager.cpp b/loginserver/client_manager.cpp index 0967f2a63..d37ec545f 100644 --- a/loginserver/client_manager.cpp +++ b/loginserver/client_manager.cpp @@ -28,7 +28,7 @@ extern bool run_server; ClientManager::ClientManager() { - int titanium_port = server.config.GetVariableInt("Titanium", "port", 5998); + int titanium_port = server.config.GetVariableInt("client_configuration", "titanium_port", 5998); EQStreamManagerInterfaceOptions titanium_opts(titanium_port, false, false); @@ -36,14 +36,14 @@ ClientManager::ClientManager() titanium_ops = new RegularOpcodeManager; if (!titanium_ops->LoadOpcodes( server.config.GetVariableString( - "Titanium", - "opcodes", + "client_configuration", + "titanium_opcodes", "login_opcodes.conf" ).c_str())) { LogError( "ClientManager fatal error: couldn't load opcodes for Titanium file [{0}]", - server.config.GetVariableString("Titanium", "opcodes", "login_opcodes.conf") + server.config.GetVariableString("client_configuration", "titanium_opcodes", "login_opcodes.conf") ); run_server = false; @@ -63,15 +63,22 @@ ClientManager::ClientManager() } ); - int sod_port = server.config.GetVariableInt("SoD", "port", 5999); + int sod_port = server.config.GetVariableInt("client_configuration", "sod_port", 5999); EQStreamManagerInterfaceOptions sod_opts(sod_port, false, false); sod_stream = new EQ::Net::EQStreamManager(sod_opts); sod_ops = new RegularOpcodeManager; - if (!sod_ops->LoadOpcodes(server.config.GetVariableString("SoD", "opcodes", "login_opcodes.conf").c_str())) { + if ( + !sod_ops->LoadOpcodes( + server.config.GetVariableString( + "client_configuration", + "sod_opcodes", + "login_opcodes.conf" + ).c_str() + )) { LogError( "ClientManager fatal error: couldn't load opcodes for SoD file {0}", - server.config.GetVariableString("SoD", "opcodes", "login_opcodes.conf").c_str() + server.config.GetVariableString("client_configuration", "sod_opcodes", "login_opcodes.conf").c_str() ); run_server = false; @@ -118,7 +125,7 @@ void ClientManager::Process() auto iter = clients.begin(); while (iter != clients.end()) { if ((*iter)->Process() == false) { - Log(Logs::General, Logs::Debug, "Client had a fatal error and had to be removed from the login."); + LogWarning("Client had a fatal error and had to be removed from the login"); delete (*iter); iter = clients.erase(iter); } @@ -134,7 +141,7 @@ void ClientManager::ProcessDisconnect() while (iter != clients.end()) { std::shared_ptr c = (*iter)->GetConnection(); if (c->CheckState(CLOSED)) { - LogInfo("Client disconnected from the server, removing client."); + LogInfo("Client disconnected from the server, removing client"); delete (*iter); iter = clients.erase(iter); } diff --git a/loginserver/database.cpp b/loginserver/database.cpp index 11e884ee1..ce1de51ce 100644 --- a/loginserver/database.cpp +++ b/loginserver/database.cpp @@ -62,7 +62,7 @@ Database::Database( errbuf ) ) { - Log(Logs::General, Logs::Error, "Failed to connect to database: Error: %s", errbuf); + LogError("Failed to connect to database: Error: [{0}]", errbuf); exit(1); } else { diff --git a/loginserver/main.cpp b/loginserver/main.cpp index 76a4390cf..2a3db762c 100644 --- a/loginserver/main.cpp +++ b/loginserver/main.cpp @@ -55,13 +55,25 @@ int main(int argc, char** argv) server.config = EQ::JsonConfigFile::Load("login.json"); LogInfo("Config System Init"); - server.options.Trace(server.config.GetVariableBool("general", "trace", false)); - server.options.WorldTrace(server.config.GetVariableBool("general", "world_trace", false)); - server.options.DumpInPackets(server.config.GetVariableBool("general", "dump_packets_in", false)); - server.options.DumpOutPackets(server.config.GetVariableBool("general", "dump_packets_out", false)); - server.options.RejectDuplicateServers(server.config.GetVariableBool("general", "reject_duplicate_servers", false)); - server.options.AutoCreateAccounts(server.config.GetVariableBool("general", "auto_create_accounts", true)); - server.options.AutoLinkAccounts(server.config.GetVariableBool("general", "auto_link_accounts", false)); + /** + * options: logging + */ + server.options.Trace(server.config.GetVariableBool("logging", "trace", false)); + server.options.WorldTrace(server.config.GetVariableBool("logging", "world_trace", false)); + server.options.DumpInPackets(server.config.GetVariableBool("logging", "dump_packets_in", false)); + server.options.DumpOutPackets(server.config.GetVariableBool("logging", "dump_packets_out", false)); + + /** + * options: worldservers + */ + server.options.RejectDuplicateServers(server.config.GetVariableBool("worldservers", "reject_duplicate_servers", false)); + server.options.AllowUnregistered(server.config.GetVariableBool("worldservers", "unregistered_allowed", true)); + + /** + * options: account + */ + server.options.AutoCreateAccounts(server.config.GetVariableBool("account", "auto_create_accounts", true)); + server.options.AutoLinkAccounts(server.config.GetVariableBool("account", "auto_link_accounts", false)); #ifdef LSPX server.options.EQEmuLoginServerAddress( @@ -88,7 +100,6 @@ int main(int argc, char** argv) server.options.EncryptionMode(server.config.GetVariableInt("security", "mode", 6)); #endif - server.options.AllowUnregistered(server.config.GetVariableBool("security", "unregistered_allowed", true)); server.options.AllowTokenLogin(server.config.GetVariableBool("security", "allow_token_login", false)); server.options.AllowPasswordLogin(server.config.GetVariableBool("security", "allow_password_login", true)); server.options.UpdateInsecurePasswords( @@ -177,18 +188,18 @@ int main(int argc, char** argv) LoginserverCommandHandler::CommandHandler(argc, argv); - LogInfo("[Config] IsTraceOn [{0}]", server.options.IsTraceOn()); - LogInfo("[Config] IsWorldTraceOn [{0}]", server.options.IsWorldTraceOn()); - LogInfo("[Config] IsDumpInPacketsOn [{0}]", server.options.IsDumpInPacketsOn()); - LogInfo("[Config] IsDumpOutPacketsOn [{0}]", server.options.IsDumpOutPacketsOn()); - LogInfo("[Config] IsRejectingDuplicateServers [{0}]", server.options.IsRejectingDuplicateServers()); - LogInfo("[Config] CanAutoCreateAccounts [{0}]", server.options.CanAutoCreateAccounts()); - LogInfo("[Config] CanAutoLinkAccounts [{0}]", server.options.CanAutoLinkAccounts()); - LogInfo("[Config] GetEncryptionMode [{0}]", server.options.GetEncryptionMode()); - LogInfo("[Config] IsUnregisteredAllowed [{0}]", server.options.IsUnregisteredAllowed()); - LogInfo("[Config] IsTokenLoginAllowed [{0}]", server.options.IsTokenLoginAllowed()); - LogInfo("[Config] IsPasswordLoginAllowed [{0}]", server.options.IsPasswordLoginAllowed()); - LogInfo("[Config] IsUpdatingInsecurePasswords [{0}]", server.options.IsUpdatingInsecurePasswords()); + LogInfo("[Config] [Logging] IsTraceOn [{0}]", server.options.IsTraceOn()); + LogInfo("[Config] [Logging] IsWorldTraceOn [{0}]", server.options.IsWorldTraceOn()); + LogInfo("[Config] [Logging] IsDumpInPacketsOn [{0}]", server.options.IsDumpInPacketsOn()); + LogInfo("[Config] [Logging] IsDumpOutPacketsOn [{0}]", server.options.IsDumpOutPacketsOn()); + LogInfo("[Config] [Account] CanAutoCreateAccounts [{0}]", server.options.CanAutoCreateAccounts()); + LogInfo("[Config] [Account] CanAutoLinkAccounts [{0}]", server.options.CanAutoLinkAccounts()); + LogInfo("[Config] [WorldServer] IsRejectingDuplicateServers [{0}]", server.options.IsRejectingDuplicateServers()); + LogInfo("[Config] [WorldServer] IsUnregisteredAllowed [{0}]", server.options.IsUnregisteredAllowed()); + LogInfo("[Config] [Security] GetEncryptionMode [{0}]", server.options.GetEncryptionMode()); + LogInfo("[Config] [Security] IsTokenLoginAllowed [{0}]", server.options.IsTokenLoginAllowed()); + LogInfo("[Config] [Security] IsPasswordLoginAllowed [{0}]", server.options.IsPasswordLoginAllowed()); + LogInfo("[Config] [Security] IsUpdatingInsecurePasswords [{0}]", server.options.IsUpdatingInsecurePasswords()); while (run_server) { Timer::SetCurrentTime(); diff --git a/loginserver/server_manager.cpp b/loginserver/server_manager.cpp index e2d7ff089..3bc001a69 100644 --- a/loginserver/server_manager.cpp +++ b/loginserver/server_manager.cpp @@ -77,10 +77,10 @@ ServerManager::ServerManager() auto iter = world_servers.begin(); while (iter != world_servers.end()) { if ((*iter)->GetConnection()->GetUUID() == c->GetUUID()) { - LogF(Logs::General, - Logs::World_Server, - "World server {0} has been disconnected, removing.", - (*iter)->GetServerLongName().c_str()); + LogInfo( + "World server {0} has been disconnected, removing.", + (*iter)->GetServerLongName() + ); world_servers.erase(iter); return; } diff --git a/loginserver/world_server.cpp b/loginserver/world_server.cpp index 48bf57d13..049804943 100644 --- a/loginserver/world_server.cpp +++ b/loginserver/world_server.cpp @@ -95,11 +95,11 @@ void WorldServer::Reset() void WorldServer::ProcessNewLSInfo(uint16_t opcode, const EQ::Net::Packet &packet) { if (server.options.IsWorldTraceOn()) { - Log(Logs::General, - Logs::Netcode, - "Application packet received from server: 0x%.4X, (size %u)", + LogDebug( + "Application packet received from server: {0}, (size {1})", opcode, - packet.Length()); + packet.Length() + ); } if (server.options.IsDumpInPacketsOn()) { @@ -189,11 +189,11 @@ void WorldServer::ProcessLSStatus(uint16_t opcode, const EQ::Net::Packet &packet void WorldServer::ProcessUserToWorldResponseLegacy(uint16_t opcode, const EQ::Net::Packet &packet) { if (server.options.IsWorldTraceOn()) { - Log(Logs::General, - Logs::Netcode, - "Application packet received from server: 0x%.4X, (size %u)", + LogDebug( + "Application packet received from server: {0}, (size {1})", opcode, - packet.Length()); + packet.Length() + ); } if (server.options.IsDumpInPacketsOn()) { @@ -213,7 +213,7 @@ void WorldServer::ProcessUserToWorldResponseLegacy(uint16_t opcode, const EQ::Ne //Because this is a part of the client login procedure it makes tracking client errors //While keeping world server spam with multiple servers connected almost impossible. if (server.options.IsTraceOn()) { - Log(Logs::General, Logs::Netcode, "User-To-World Response received"); + LogDebug("User-To-World Response received"); } auto *user_to_world_response = (UsertoWorldResponseLegacy_Struct *) packet.Data(); @@ -266,16 +266,17 @@ void WorldServer::ProcessUserToWorldResponseLegacy(uint16_t opcode, const EQ::Ne break; } - LogF(Logs::General, - Logs::Netcode, - "Sending play response: allowed [{0}] sequence [{1}] server number [{2}] message [{3}]", - per->Allowed, - per->Sequence, - per->ServerNumber, - per->Message - ); + if (server.options.IsWorldTraceOn()) { + LogDebug( + "Sending play response: allowed [{0}] sequence [{1}] server number [{2}] message [{3}]", + per->Allowed, + per->Sequence, + per->ServerNumber, + per->Message + ); - Log(Logs::General, Logs::Netcode, "[Size: %u] %s", outapp->size, DumpPacketToString(outapp).c_str()); + LogDebug("[Size: {0}] {1}", outapp->size, DumpPacketToString(outapp)); + } if (server.options.IsDumpOutPacketsOn()) { DumpPacket(outapp); @@ -299,11 +300,11 @@ void WorldServer::ProcessUserToWorldResponseLegacy(uint16_t opcode, const EQ::Ne void WorldServer::ProcessUserToWorldResponse(uint16_t opcode, const EQ::Net::Packet &packet) { if (server.options.IsWorldTraceOn()) { - Log(Logs::General, - Logs::Netcode, + LogDebug( "Application packet received from server: 0x%.4X, (size %u)", opcode, - packet.Length()); + packet.Length() + ); } if (server.options.IsDumpInPacketsOn()) { @@ -323,7 +324,7 @@ void WorldServer::ProcessUserToWorldResponse(uint16_t opcode, const EQ::Net::Pac //Because this is a part of the client login procedure it makes tracking client errors //While keeping world server spam with multiple servers connected almost impossible. if (server.options.IsTraceOn()) { - Log(Logs::General, Logs::Netcode, "User-To-World Response received"); + LogDebug("User-To-World Response received"); } auto user_to_world_response = (UsertoWorldResponse_Struct *) packet.Data(); @@ -355,7 +356,7 @@ void WorldServer::ProcessUserToWorldResponse(uint16_t opcode, const EQ::Net::Pac client->GetPlayServerID() ); - Log(Logs::General, Logs::Netcode, "[Size: %u] %s", outapp->size, DumpPacketToString(outapp).c_str()); + LogDebug("[Size: {0}] {1}", outapp->size, DumpPacketToString(outapp)); if (user_to_world_response->response > 0) { per->Allowed = 1; @@ -387,14 +388,14 @@ void WorldServer::ProcessUserToWorldResponse(uint16_t opcode, const EQ::Net::Pac } if (server.options.IsTraceOn()) { - Log(Logs::General, - Logs::Netcode, - "Sending play response with following data, allowed %u, sequence %u, server number %u, message %u", + LogDebug( + "Sending play response with following data, allowed {0}, sequence {1}, server number {2}, message {3}", per->Allowed, per->Sequence, per->ServerNumber, - per->Message); - Log(Logs::General, Logs::Netcode, "[Size: %u] %s", outapp->size, DumpPacketToString(outapp).c_str()); + per->Message + ); + LogDebug("[Size: {0}] {1}", outapp->size, DumpPacketToString(outapp)); } if (server.options.IsDumpOutPacketsOn()) { @@ -419,11 +420,11 @@ void WorldServer::ProcessUserToWorldResponse(uint16_t opcode, const EQ::Net::Pac void WorldServer::ProcessLSAccountUpdate(uint16_t opcode, const EQ::Net::Packet &packet) { if (server.options.IsWorldTraceOn()) { - Log(Logs::General, - Logs::Netcode, - "Application packet received from server: 0x%.4X, (size %u)", + LogDebug( + "Application packet received from server: {0}, (size {1})", opcode, - packet.Length()); + packet.Length() + ); } if (server.options.IsDumpInPacketsOn()) { @@ -439,7 +440,9 @@ void WorldServer::ProcessLSAccountUpdate(uint16_t opcode, const EQ::Net::Packet return; } - Log(Logs::General, Logs::Netcode, "ServerOP_LSAccountUpdate packet received from: %s", short_name.c_str()); + if (server.options.IsWorldTraceOn()) { + LogDebug("ServerOP_LSAccountUpdate packet received from [{0}]", short_name); + } auto *loginserver_update = (ServerLSAccountUpdate_Struct *) packet.Data(); if (IsServerTrusted()) { @@ -756,12 +759,12 @@ bool WorldServer::HandleNewLoginserverRegisteredOnly( bool does_world_server_pass_authentication_check = ( world_registration.server_admin_account_name == this->GetAccountName() && - eqcrypt_verify_hash( - GetAccountName(), - GetAccountPassword(), - world_registration.server_admin_account_password, - server.options.GetEncryptionMode() - ) + eqcrypt_verify_hash( + GetAccountName(), + GetAccountPassword(), + world_registration.server_admin_account_password, + server.options.GetEncryptionMode() + ) ); this @@ -847,12 +850,12 @@ bool WorldServer::HandleNewLoginserverInfoUnregisteredAllowed( bool does_world_server_pass_authentication_check = ( world_registration.server_admin_account_name == this->GetAccountName() && - eqcrypt_verify_hash( - GetAccountName(), - GetAccountPassword(), - world_registration.server_admin_account_password, - server.options.GetEncryptionMode() - ) + eqcrypt_verify_hash( + GetAccountName(), + GetAccountPassword(), + world_registration.server_admin_account_password, + server.options.GetEncryptionMode() + ) ); bool does_world_server_have_non_empty_credentials = (