mirror of
https://github.com/EQEmu/Server.git
synced 2026-03-30 13:32:26 +00:00
Migrate quite a few database calls to dbcore and fmt
This commit is contained in:
parent
b04d71ff45
commit
daec42c4d9
@ -71,6 +71,26 @@ DatabaseMySQL::DatabaseMySQL(
|
|||||||
Log(Logs::General, Logs::Error, "Failed to connect to MySQL database. Error: %s", mysql_error(database));
|
Log(Logs::General, Logs::Error, "Failed to connect to MySQL database. Error: %s", mysql_error(database));
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint32 errnum = 0;
|
||||||
|
char errbuf[MYSQL_ERRMSG_SIZE];
|
||||||
|
if (!Open(
|
||||||
|
host.c_str(),
|
||||||
|
user.c_str(),
|
||||||
|
pass.c_str(),
|
||||||
|
name.c_str(),
|
||||||
|
atoi(port.c_str()),
|
||||||
|
&errnum,
|
||||||
|
errbuf
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
Log(Logs::General, Logs::Error, "Failed to connect to database: Error: %s", errbuf);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Log(Logs::General, Logs::Status, "Using database '%s' at %s:%d", database, host, port);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Log(Logs::General, Logs::Error, "Failed to create db object in MySQL database.");
|
Log(Logs::General, Logs::Error, "Failed to create db object in MySQL database.");
|
||||||
@ -273,25 +293,22 @@ bool DatabaseMySQL::CreateLoginDataWithID(
|
|||||||
unsigned int id
|
unsigned int id
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (!database) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (id == 0) {
|
if (id == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
MYSQL_RES *result;
|
auto query = fmt::format(
|
||||||
MYSQL_ROW row;
|
"INSERT INTO {0} (LoginServerID, AccountLoginserver, AccountName, AccountPassword, AccountEmail, LastLoginDate, LastIPAddress) "
|
||||||
std::stringstream query(std::stringstream::in | std::stringstream::out);
|
"VALUES ({1}, '{2}', '{3}', '{4}', 'local_creation', NOW(), '127.0.0.1')",
|
||||||
|
server.options.GetAccountTable(),
|
||||||
|
id,
|
||||||
|
EscapeString(loginserver),
|
||||||
|
EscapeString(name),
|
||||||
|
EscapeString(password)
|
||||||
|
);
|
||||||
|
|
||||||
query << "INSERT INTO " << server.options.GetAccountTable()
|
auto results = QueryDatabase(query);
|
||||||
<< " (LoginServerID, AccountLoginserver, AccountName, AccountPassword, AccountEmail, LastLoginDate, LastIPAddress) ";
|
if (!results.Success()) {
|
||||||
query << " VALUES(" << id << ", '" << EscapeString(loginserver) << "', '" << EscapeString(name) << "', '"
|
|
||||||
<< EscapeString(password) << "', 'local_creation', NOW(), '127.0.0.1'); ";
|
|
||||||
|
|
||||||
if (mysql_query(database, query.str().c_str()) != 0) {
|
|
||||||
Log(Logs::General, Logs::Error, "Mysql query failed: %s", query.str().c_str());
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -305,20 +322,15 @@ bool DatabaseMySQL::CreateLoginDataWithID(
|
|||||||
*/
|
*/
|
||||||
void DatabaseMySQL::UpdateLoginHash(const std::string &name, const std::string &loginserver, const std::string &hash)
|
void DatabaseMySQL::UpdateLoginHash(const std::string &name, const std::string &loginserver, const std::string &hash)
|
||||||
{
|
{
|
||||||
if (!database) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto query = fmt::format(
|
auto query = fmt::format(
|
||||||
"UPDATE {0} SET AccountPassword='{1}' WHERE AccountName='{2}' AND AccountLoginserver='{3}'",
|
"UPDATE {0} SET AccountPassword='{1}' WHERE AccountName='{2}' AND AccountLoginserver='{3}'",
|
||||||
server.options.GetAccountTable(),
|
server.options.GetAccountTable(),
|
||||||
hash,
|
hash,
|
||||||
EscapeString(name),
|
EscapeString(name),
|
||||||
EscapeString(loginserver));
|
EscapeString(loginserver)
|
||||||
|
);
|
||||||
|
|
||||||
if (mysql_query(database, query.c_str()) != 0) {
|
QueryDatabase(query);
|
||||||
Log(Logs::General, Logs::Error, "Mysql query failed: %s", query.c_str());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -423,19 +435,14 @@ bool DatabaseMySQL::GetWorldRegistration(
|
|||||||
*/
|
*/
|
||||||
void DatabaseMySQL::UpdateLSAccountData(unsigned int id, std::string ip_address)
|
void DatabaseMySQL::UpdateLSAccountData(unsigned int id, std::string ip_address)
|
||||||
{
|
{
|
||||||
if (!database) {
|
auto query = fmt::format(
|
||||||
return;
|
"UPDATE {0} SET LastIPAddress = '{2}', LastLoginDate = now() where LoginServerId = {3}",
|
||||||
}
|
server.options.GetAccountTable(),
|
||||||
|
ip_address,
|
||||||
|
id
|
||||||
|
);
|
||||||
|
|
||||||
std::stringstream query(std::stringstream::in | std::stringstream::out);
|
QueryDatabase(query);
|
||||||
query << "UPDATE " << server.options.GetAccountTable() << " SET LastIPAddress = '";
|
|
||||||
query << ip_address;
|
|
||||||
query << "', LastLoginDate = now() where LoginServerID = ";
|
|
||||||
query << id;
|
|
||||||
|
|
||||||
if (mysql_query(database, query.str().c_str()) != 0) {
|
|
||||||
Log(Logs::General, Logs::Error, "Mysql query failed: %s", query.str().c_str());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -444,21 +451,24 @@ void DatabaseMySQL::UpdateLSAccountData(unsigned int id, std::string ip_address)
|
|||||||
* @param password
|
* @param password
|
||||||
* @param email
|
* @param email
|
||||||
*/
|
*/
|
||||||
void DatabaseMySQL::UpdateLSAccountInfo(unsigned int id, std::string name, std::string password, std::string email)
|
void DatabaseMySQL::UpdateLSAccountInfo(
|
||||||
|
unsigned int id,
|
||||||
|
std::string name,
|
||||||
|
std::string password,
|
||||||
|
std::string email
|
||||||
|
)
|
||||||
{
|
{
|
||||||
if (!database) {
|
auto query = fmt::format(
|
||||||
return;
|
"REPLACE {0} SET LoginServerID = {1}, AccountName = '{2}', AccountPassword = sha('{3}'), AccountCreateDate = now(), "
|
||||||
}
|
"AccountEmail = '{4}', LastIPAddress = '0.0.0.0', LastLoginDate = now()",
|
||||||
|
server.options.GetAccountTable(),
|
||||||
|
id,
|
||||||
|
EscapeString(name),
|
||||||
|
EscapeString(password),
|
||||||
|
EscapeString(email)
|
||||||
|
);
|
||||||
|
|
||||||
std::stringstream query(std::stringstream::in | std::stringstream::out);
|
QueryDatabase(query);
|
||||||
query << "REPLACE " << server.options.GetAccountTable() << " SET LoginServerID = ";
|
|
||||||
query << id << ", AccountName = '" << name << "', AccountPassword = sha('";
|
|
||||||
query << password << "'), AccountCreateDate = now(), AccountEmail = '" << email;
|
|
||||||
query << "', LastIPAddress = '0.0.0.0', LastLoginDate = now()";
|
|
||||||
|
|
||||||
if (mysql_query(database, query.str().c_str()) != 0) {
|
|
||||||
Log(Logs::General, Logs::Error, "Mysql query failed: %s", query.str().c_str());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -468,30 +478,15 @@ void DatabaseMySQL::UpdateLSAccountInfo(unsigned int id, std::string name, std::
|
|||||||
*/
|
*/
|
||||||
void DatabaseMySQL::UpdateWorldRegistration(unsigned int id, std::string long_name, std::string ip_address)
|
void DatabaseMySQL::UpdateWorldRegistration(unsigned int id, std::string long_name, std::string ip_address)
|
||||||
{
|
{
|
||||||
if (!database) {
|
auto query = fmt::format(
|
||||||
return;
|
"UPDATE {0} SET ServerLastLoginDate = NOW(), ServerLastIPAddr = '{1}', ServerLongName = '{2}' WHERE ServerID = {3}",
|
||||||
}
|
server.options.GetWorldRegistrationTable(),
|
||||||
|
ip_address,
|
||||||
|
EscapeString(long_name),
|
||||||
|
id
|
||||||
|
);
|
||||||
|
|
||||||
char escaped_long_name[101];
|
QueryDatabase(query);
|
||||||
unsigned long length;
|
|
||||||
length = mysql_real_escape_string(
|
|
||||||
database,
|
|
||||||
escaped_long_name,
|
|
||||||
long_name.substr(0, 100).c_str(),
|
|
||||||
long_name.substr(0, 100).length());
|
|
||||||
escaped_long_name[length + 1] = 0;
|
|
||||||
std::stringstream query(std::stringstream::in | std::stringstream::out);
|
|
||||||
query << "UPDATE " << server.options.GetWorldRegistrationTable()
|
|
||||||
<< " SET ServerLastLoginDate = now(), ServerLastIPAddr = '";
|
|
||||||
query << ip_address;
|
|
||||||
query << "', ServerLongName = '";
|
|
||||||
query << escaped_long_name;
|
|
||||||
query << "' WHERE ServerID = ";
|
|
||||||
query << id;
|
|
||||||
|
|
||||||
if (mysql_query(database, query.str().c_str()) != 0) {
|
|
||||||
Log(Logs::General, Logs::Error, "Mysql query failed: %s", query.str().c_str());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -22,6 +22,7 @@
|
|||||||
#define EQEMU_DATABASEMYSQL_H
|
#define EQEMU_DATABASEMYSQL_H
|
||||||
|
|
||||||
#include "database.h"
|
#include "database.h"
|
||||||
|
#include "../common/dbcore.h"
|
||||||
|
|
||||||
#ifdef EQEMU_MYSQL_ENABLED
|
#ifdef EQEMU_MYSQL_ENABLED
|
||||||
|
|
||||||
@ -30,7 +31,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <mysql.h>
|
#include <mysql.h>
|
||||||
|
|
||||||
class DatabaseMySQL : public Database {
|
class DatabaseMySQL : public DBcore {
|
||||||
public:
|
public:
|
||||||
|
|
||||||
DatabaseMySQL() { database = nullptr; }
|
DatabaseMySQL() { database = nullptr; }
|
||||||
|
|||||||
@ -18,6 +18,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef EQEMU_LOGINSERVER_H
|
#ifndef EQEMU_LOGINSERVER_H
|
||||||
#define EQEMU_LOGINSERVER_H
|
#define EQEMU_LOGINSERVER_H
|
||||||
|
|
||||||
|
|||||||
@ -47,8 +47,12 @@ int main()
|
|||||||
|
|
||||||
LogSys.LoadLogSettingsDefaults();
|
LogSys.LoadLogSettingsDefaults();
|
||||||
|
|
||||||
LogSys.log_settings[Logs::Error].log_to_console = Logs::General;
|
LogSys.log_settings[Logs::Error].log_to_console = Logs::General;
|
||||||
LogSys.log_settings[Logs::Error].is_category_enabled = 1;
|
LogSys.log_settings[Logs::Error].is_category_enabled = Logs::General;
|
||||||
|
LogSys.log_settings[Logs::MySQLError].is_category_enabled = Logs::General;
|
||||||
|
LogSys.log_settings[Logs::MySQLError].log_to_console = Logs::General;
|
||||||
|
LogSys.log_settings[Logs::Netcode].is_category_enabled = Logs::General;
|
||||||
|
LogSys.log_settings[Logs::Netcode].log_to_console = Logs::General;
|
||||||
|
|
||||||
Log(Logs::General, Logs::Login_Server, "Logging System Init.");
|
Log(Logs::General, Logs::Login_Server, "Logging System Init.");
|
||||||
|
|
||||||
@ -133,7 +137,6 @@ int main()
|
|||||||
server.config.GetVariableString("database", "db", "peq")
|
server.config.GetVariableString("database", "db", "peq")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* make sure our database got created okay, otherwise cleanup and exit
|
* make sure our database got created okay, otherwise cleanup and exit
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -379,12 +379,16 @@ void WorldServer::ProcessLSAccountUpdate(uint16_t opcode, const EQ::Net::Packet
|
|||||||
ServerLSAccountUpdate_Struct *lsau = (ServerLSAccountUpdate_Struct *) p.Data();
|
ServerLSAccountUpdate_Struct *lsau = (ServerLSAccountUpdate_Struct *) p.Data();
|
||||||
if (is_server_trusted) {
|
if (is_server_trusted) {
|
||||||
Log(Logs::General, Logs::Netcode, "ServerOP_LSAccountUpdate update processed for: %s", lsau->useraccount);
|
Log(Logs::General, Logs::Netcode, "ServerOP_LSAccountUpdate update processed for: %s", lsau->useraccount);
|
||||||
std::string name;
|
std::string name = "";
|
||||||
std::string password;
|
std::string password = "";
|
||||||
std::string email;
|
std::string email = "";
|
||||||
name.assign(lsau->useraccount);
|
name.assign(lsau->useraccount);
|
||||||
password.assign(lsau->userpassword);
|
password.assign(lsau->userpassword);
|
||||||
email.assign(lsau->useremail);
|
|
||||||
|
if (lsau->useremail) {
|
||||||
|
email.assign(lsau->useremail);
|
||||||
|
}
|
||||||
|
|
||||||
server.db->UpdateLSAccountInfo(lsau->useraccountid, name, password, email);
|
server.db->UpdateLSAccountInfo(lsau->useraccountid, name, password, email);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -614,9 +618,9 @@ void WorldServer::Handle_NewLSInfo(ServerNewLSInfo_Struct *i)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* this is the first of two cases where we should deny access even if unregistered is allowed
|
* this is the first of two cases where we should deny access even if unregistered is allowed
|
||||||
*/
|
*/
|
||||||
else {
|
else {
|
||||||
Log(Logs::General,
|
Log(Logs::General,
|
||||||
Logs::World_Server,
|
Logs::World_Server,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user