From a64c21eb96cc9edd44c4c9d7d8b6d86387b3b3cb Mon Sep 17 00:00:00 2001 From: Akkadius Date: Tue, 20 Jan 2015 05:30:19 -0600 Subject: [PATCH] Undo Queryserv refactoring because our database class stuff is stupid --- queryserv/database.cpp | 60 ++++++++++++++++++++++++++++++--------- queryserv/database.h | 12 +++++--- queryserv/lfguild.cpp | 16 +++++------ queryserv/queryserv.cpp | 4 +-- queryserv/worldserver.cpp | 18 ++++++------ 5 files changed, 72 insertions(+), 38 deletions(-) diff --git a/queryserv/database.cpp b/queryserv/database.cpp index 4b517016d..1a97ecfc2 100644 --- a/queryserv/database.cpp +++ b/queryserv/database.cpp @@ -48,7 +48,7 @@ #include "../common/string_util.h" #include "../common/servertalk.h" -QSDatabase::QSDatabase () +Database::Database () { DBInitVars(); } @@ -57,13 +57,13 @@ QSDatabase::QSDatabase () Establish a connection to a mysql database with the supplied parameters */ -QSDatabase::QSDatabase(const char* host, const char* user, const char* passwd, const char* database, uint32 port) +Database::Database(const char* host, const char* user, const char* passwd, const char* database, uint32 port) { DBInitVars(); Connect(host, user, passwd, database, port); } -bool QSDatabase::Connect(const char* host, const char* user, const char* passwd, const char* database, uint32 port) +bool Database::Connect(const char* host, const char* user, const char* passwd, const char* database, uint32 port) { uint32 errnum= 0; char errbuf[MYSQL_ERRMSG_SIZE]; @@ -81,24 +81,24 @@ bool QSDatabase::Connect(const char* host, const char* user, const char* passwd, } } -void QSDatabase::DBInitVars() { +void Database::DBInitVars() { } -void QSDatabase::HandleMysqlError(uint32 errnum) { +void Database::HandleMysqlError(uint32 errnum) { } /* Close the connection to the database */ -QSDatabase::~QSDatabase() +Database::~Database() { } -void QSDatabase::AddSpeech(const char* from, const char* to, const char* message, uint16 minstatus, uint32 guilddbid, uint8 type) { +void Database::AddSpeech(const char* from, const char* to, const char* message, uint16 minstatus, uint32 guilddbid, uint8 type) { char *escapedFrom = new char[strlen(from) * 2 + 1]; char *escapedTo = new char[strlen(to) * 2 + 1]; @@ -123,7 +123,7 @@ void QSDatabase::AddSpeech(const char* from, const char* to, const char* message } -void QSDatabase::LogPlayerTrade(QSPlayerLogTrade_Struct* QS, uint32 detailCount) { +void Database::LogPlayerTrade(QSPlayerLogTrade_Struct* QS, uint32 detailCount) { std::string query = StringFormat("INSERT INTO `qs_player_trade_record` SET `time` = NOW(), " "`char1_id` = '%i', `char1_pp` = '%i', `char1_gp` = '%i', " @@ -164,7 +164,7 @@ void QSDatabase::LogPlayerTrade(QSPlayerLogTrade_Struct* QS, uint32 detailCount) } -void QSDatabase::LogPlayerHandin(QSPlayerLogHandin_Struct* QS, uint32 detailCount) { +void Database::LogPlayerHandin(QSPlayerLogHandin_Struct* QS, uint32 detailCount) { std::string query = StringFormat("INSERT INTO `qs_player_handin_record` SET `time` = NOW(), " "`quest_id` = '%i', `char_id` = '%i', `char_pp` = '%i', " @@ -205,7 +205,7 @@ void QSDatabase::LogPlayerHandin(QSPlayerLogHandin_Struct* QS, uint32 detailCoun } -void QSDatabase::LogPlayerNPCKill(QSPlayerLogNPCKill_Struct* QS, uint32 members){ +void Database::LogPlayerNPCKill(QSPlayerLogNPCKill_Struct* QS, uint32 members){ std::string query = StringFormat("INSERT INTO `qs_player_npc_kill_record` " "SET `npc_id` = '%i', `type` = '%i', " @@ -236,7 +236,7 @@ void QSDatabase::LogPlayerNPCKill(QSPlayerLogNPCKill_Struct* QS, uint32 members) } -void QSDatabase::LogPlayerDelete(QSPlayerLogDelete_Struct* QS, uint32 items) { +void Database::LogPlayerDelete(QSPlayerLogDelete_Struct* QS, uint32 items) { std::string query = StringFormat("INSERT INTO `qs_player_delete_record` SET `time` = NOW(), " "`char_id` = '%i', `stack_size` = '%i', `char_items` = '%i'", @@ -269,7 +269,7 @@ void QSDatabase::LogPlayerDelete(QSPlayerLogDelete_Struct* QS, uint32 items) { } -void QSDatabase::LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 items) { +void Database::LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 items) { /* These are item moves */ std::string query = StringFormat("INSERT INTO `qs_player_move_record` SET `time` = NOW(), " @@ -305,7 +305,7 @@ void QSDatabase::LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 items) { } -void QSDatabase::LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uint32 items) { +void Database::LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uint32 items) { /* Merchant transactions are from the perspective of the merchant, not the player -U */ std::string query = StringFormat("INSERT INTO `qs_merchant_transaction_record` SET `time` = NOW(), " "`zone_id` = '%i', `merchant_id` = '%i', `merchant_pp` = '%i', " @@ -346,7 +346,7 @@ void QSDatabase::LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uin } -void QSDatabase::GeneralQueryReceive(ServerPacket *pack) { +void Database::GeneralQueryReceive(ServerPacket *pack) { /* These are general queries passed from anywhere in zone instead of packing structures and breaking them down again and again */ @@ -363,3 +363,35 @@ void QSDatabase::GeneralQueryReceive(ServerPacket *pack) { safe_delete(pack); safe_delete(queryBuffer); } + +void Database::LoadLogSysSettings(EQEmuLogSys::LogSettings* log_settings){ + std::string query = + "SELECT " + "log_category_id, " + "log_category_description, " + "log_to_console, " + "log_to_file, " + "log_to_gmsay " + "FROM " + "logsys_categories " + "ORDER BY log_category_id"; + auto results = QueryDatabase(query); + + int log_category = 0; + Log.file_logs_enabled = false; + + for (auto row = results.begin(); row != results.end(); ++row) { + log_category = atoi(row[0]); + log_settings[log_category].log_to_console = atoi(row[2]); + log_settings[log_category].log_to_file = atoi(row[3]); + log_settings[log_category].log_to_gmsay = atoi(row[4]); + + /* + This determines whether or not the process needs to actually file log anything. + If we go through this whole loop and nothing is set to any debug level, there is no point to create a file or keep anything open + */ + if (log_settings[log_category].log_to_file > 0){ + Log.file_logs_enabled = true; + } + } +} \ No newline at end of file diff --git a/queryserv/database.h b/queryserv/database.h index fe99a866d..898e300c4 100644 --- a/queryserv/database.h +++ b/queryserv/database.h @@ -23,6 +23,7 @@ #define AUTHENTICATION_TIMEOUT 60 #define INVALID_ID 0xFFFFFFFF +#include "../common/eqemu_logsys.h" #include "../common/global_define.h" #include "../common/types.h" #include "../common/dbcore.h" @@ -35,12 +36,12 @@ //atoi is not uint32 or uint32 safe!!!! #define atoul(str) strtoul(str, nullptr, 10) -class QSDatabase : public DBcore { +class Database : public DBcore { public: - QSDatabase(); - QSDatabase(const char* host, const char* user, const char* passwd, const char* database,uint32 port); + Database(); + Database(const char* host, const char* user, const char* passwd, const char* database,uint32 port); bool Connect(const char* host, const char* user, const char* passwd, const char* database,uint32 port); - ~QSDatabase(); + ~Database(); void AddSpeech(const char* from, const char* to, const char* message, uint16 minstatus, uint32 guilddbid, uint8 type); void LogPlayerTrade(QSPlayerLogTrade_Struct* QS, uint32 DetailCount); @@ -50,6 +51,9 @@ public: void LogPlayerMove(QSPlayerLogMove_Struct* QS, uint32 Items); void LogMerchantTransaction(QSMerchantLogTransaction_Struct* QS, uint32 Items); void GeneralQueryReceive(ServerPacket *pack); + + void LoadLogSysSettings(EQEmuLogSys::LogSettings* log_settings); + protected: void HandleMysqlError(uint32 errnum); private: diff --git a/queryserv/lfguild.cpp b/queryserv/lfguild.cpp index 2684f4541..340321f06 100644 --- a/queryserv/lfguild.cpp +++ b/queryserv/lfguild.cpp @@ -8,7 +8,7 @@ #include "../common/rulesys.h" extern WorldServer *worldserver; -extern QSDatabase qs_database; +extern Database database; PlayerLookingForGuild::PlayerLookingForGuild(char *Name, char *Comments, uint32 Level, uint32 Class, uint32 AACount, uint32 Timezone, uint32 TimePosted) { @@ -38,7 +38,7 @@ bool LFGuildManager::LoadDatabase() std::string query = "SELECT `type`,`name`,`comment`, " "`fromlevel`, `tolevel`, `classes`, " "`aacount`, `timezone`, `timeposted` FROM `lfguild`"; - auto results = qs_database.QueryDatabase(query); + auto results = database.QueryDatabase(query); if (!results.Success()) { return false; } @@ -239,7 +239,7 @@ void LFGuildManager::TogglePlayer(uint32 FromZoneID, uint32 FromInstanceID, char } std::string query = StringFormat("DELETE FROM `lfguild` WHERE `type` = 0 AND `name` = '%s'", From); - auto results = qs_database.QueryDatabase(query); + auto results = database.QueryDatabase(query); uint32 Now = time(nullptr); @@ -252,7 +252,7 @@ void LFGuildManager::TogglePlayer(uint32 FromZoneID, uint32 FromInstanceID, char "`classes`, `aacount`, `timezone`, `timeposted`) " "VALUES (0, '%s', '%s', %u, 0, %u, %u, %u, %u)", From, Comments, Level, Class, AAPoints, TimeZone, Now); - auto results = qs_database.QueryDatabase(query); + auto results = database.QueryDatabase(query); } ServerPacket *pack = new ServerPacket(ServerOP_QueryServGeneric, strlen(From) + strlen(Comments) + 30); @@ -281,7 +281,7 @@ void LFGuildManager::ToggleGuild(uint32 FromZoneID, uint32 FromInstanceID, char } std::string query = StringFormat("DELETE FROM `lfguild` WHERE `type` = 1 AND `name` = '%s'", GuildName); - auto results = qs_database.QueryDatabase(query); + auto results = database.QueryDatabase(query); uint32 Now = time(nullptr); @@ -296,7 +296,7 @@ void LFGuildManager::ToggleGuild(uint32 FromZoneID, uint32 FromInstanceID, char "VALUES (1, '%s', '%s', %u, %u, %u, %u, %u, %u)", GuildName, Comments, FromLevel, ToLevel, Classes, AACount, TimeZone, Now); - auto results = qs_database.QueryDatabase(query); + auto results = database.QueryDatabase(query); } @@ -324,7 +324,7 @@ void LFGuildManager::ExpireEntries() continue; std::string query = StringFormat("DELETE from `lfguild` WHERE `type` = 0 AND `name` = '%s'", (*it).Name.c_str()); - auto results = qs_database.QueryDatabase(query); + auto results = database.QueryDatabase(query); if(!results.Success()) it = Players.erase(it); @@ -336,7 +336,7 @@ void LFGuildManager::ExpireEntries() continue; std::string query = StringFormat("DELETE from `lfguild` WHERE `type` = 1 AND `name` = '%s'", (*it2).Name.c_str()); - auto results = qs_database.QueryDatabase(query); + auto results = database.QueryDatabase(query); if(!results.Success()) it2 = Guilds.erase(it2); diff --git a/queryserv/queryserv.cpp b/queryserv/queryserv.cpp index c01d10265..f285f8410 100644 --- a/queryserv/queryserv.cpp +++ b/queryserv/queryserv.cpp @@ -17,7 +17,6 @@ */ -#include "../common/database.h" #include "../common/global_define.h" #include "../common/eqemu_logsys.h" #include "../common/opcodemgr.h" @@ -37,7 +36,6 @@ volatile bool RunLoops = true; TimeoutManager timeout_manager; Database database; -QSDatabase qs_database; LFGuildManager lfguildmanager; std::string WorldShortName; const queryservconfig *Config; @@ -79,7 +77,7 @@ int main() { Log.Out(Logs::General, Logs::QS_Server, "Connecting to MySQL..."); /* MySQL Connection */ - if (!qs_database.Connect( + if (!database.Connect( Config->QSDatabaseHost.c_str(), Config->QSDatabaseUsername.c_str(), Config->QSDatabasePassword.c_str(), diff --git a/queryserv/worldserver.cpp b/queryserv/worldserver.cpp index e043facf9..2d2f288a4 100644 --- a/queryserv/worldserver.cpp +++ b/queryserv/worldserver.cpp @@ -38,7 +38,7 @@ extern WorldServer worldserver; extern const queryservconfig *Config; -extern QSDatabase qs_database; +extern Database database; extern LFGuildManager lfguildmanager; WorldServer::WorldServer() @@ -78,42 +78,42 @@ void WorldServer::Process() Server_Speech_Struct *SSS = (Server_Speech_Struct*)pack->pBuffer; std::string tmp1 = SSS->from; std::string tmp2 = SSS->to; - qs_database.AddSpeech(tmp1.c_str(), tmp2.c_str(), SSS->message, SSS->minstatus, SSS->guilddbid, SSS->type); + database.AddSpeech(tmp1.c_str(), tmp2.c_str(), SSS->message, SSS->minstatus, SSS->guilddbid, SSS->type); break; } case ServerOP_QSPlayerLogTrades: { QSPlayerLogTrade_Struct *QS = (QSPlayerLogTrade_Struct*)pack->pBuffer; - qs_database.LogPlayerTrade(QS, QS->_detail_count); + database.LogPlayerTrade(QS, QS->_detail_count); break; } case ServerOP_QSPlayerLogHandins: { QSPlayerLogHandin_Struct *QS = (QSPlayerLogHandin_Struct*)pack->pBuffer; - qs_database.LogPlayerHandin(QS, QS->_detail_count); + database.LogPlayerHandin(QS, QS->_detail_count); break; } case ServerOP_QSPlayerLogNPCKills: { QSPlayerLogNPCKill_Struct *QS = (QSPlayerLogNPCKill_Struct*)pack->pBuffer; uint32 Members = pack->size - sizeof(QSPlayerLogNPCKill_Struct); if (Members > 0) Members = Members / sizeof(QSPlayerLogNPCKillsPlayers_Struct); - qs_database.LogPlayerNPCKill(QS, Members); + database.LogPlayerNPCKill(QS, Members); break; } case ServerOP_QSPlayerLogDeletes: { QSPlayerLogDelete_Struct *QS = (QSPlayerLogDelete_Struct*)pack->pBuffer; uint32 Items = QS->char_count; - qs_database.LogPlayerDelete(QS, Items); + database.LogPlayerDelete(QS, Items); break; } case ServerOP_QSPlayerLogMoves: { QSPlayerLogMove_Struct *QS = (QSPlayerLogMove_Struct*)pack->pBuffer; uint32 Items = QS->char_count; - qs_database.LogPlayerMove(QS, Items); + database.LogPlayerMove(QS, Items); break; } case ServerOP_QSPlayerLogMerchantTransactions: { QSMerchantLogTransaction_Struct *QS = (QSMerchantLogTransaction_Struct*)pack->pBuffer; uint32 Items = QS->char_count + QS->merchant_count; - qs_database.LogMerchantTransaction(QS, Items); + database.LogMerchantTransaction(QS, Items); break; } case ServerOP_QueryServGeneric: { @@ -155,7 +155,7 @@ void WorldServer::Process() } case ServerOP_QSSendQuery: { /* Process all packets here */ - qs_database.GeneralQueryReceive(pack); + database.GeneralQueryReceive(pack); break; } }