mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-19 08:11:30 +00:00
Add more logging
This commit is contained in:
parent
bb7cae46c5
commit
cdfd473476
@ -180,24 +180,38 @@ void Client::Handle_SessionReady(const char *data, unsigned int size)
|
|||||||
*/
|
*/
|
||||||
void Client::Handle_Login(const char *data, unsigned int size)
|
void Client::Handle_Login(const char *data, unsigned int size)
|
||||||
{
|
{
|
||||||
|
std::string logging_function_prefix = "[Client::Handle_Login]";
|
||||||
|
|
||||||
if (status != cs_waiting_for_login) {
|
if (status != cs_waiting_for_login) {
|
||||||
Log(Logs::General, Logs::Error, "Login received after already having logged in.");
|
LogF(
|
||||||
|
Logs::General,
|
||||||
|
Logs::Error,
|
||||||
|
"{0} Login received after already having logged in",
|
||||||
|
logging_function_prefix
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((size - 12) % 8 != 0) {
|
if ((size - 12) % 8 != 0) {
|
||||||
Log(Logs::General,
|
LogF(
|
||||||
|
Logs::General,
|
||||||
Logs::Error,
|
Logs::Error,
|
||||||
"Login received packet of size: %u, this would cause a block corruption, discarding.",
|
"{0} Login received packet of size: {1}, this would cause a block corruption, discarding.",
|
||||||
size);
|
logging_function_prefix,
|
||||||
|
size
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (size < sizeof(LoginLoginRequest_Struct)) {
|
if (size < sizeof(LoginLoginRequest_Struct)) {
|
||||||
Log(Logs::General,
|
LogF(
|
||||||
|
Logs::General,
|
||||||
Logs::Error,
|
Logs::Error,
|
||||||
"Login received packet of size: %u, this would cause a buffer overflow, discarding.",
|
"{0} Login received packet of size: %u, this would cause a buffer overflow, discarding.",
|
||||||
size);
|
logging_function_prefix,
|
||||||
|
size
|
||||||
|
);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -224,7 +238,12 @@ void Client::Handle_Login(const char *data, unsigned int size)
|
|||||||
|
|
||||||
std::string user(&outbuffer[0]);
|
std::string user(&outbuffer[0]);
|
||||||
if (user.length() >= outbuffer.length()) {
|
if (user.length() >= outbuffer.length()) {
|
||||||
LogF(Logs::General, Logs::Debug, "Corrupt buffer sent to server, preventing buffer overflow.");
|
LogF(
|
||||||
|
Logs::General,
|
||||||
|
Logs::Debug,
|
||||||
|
"{0} Corrupt buffer sent to server, preventing buffer overflow.",
|
||||||
|
logging_function_prefix
|
||||||
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -245,7 +264,7 @@ void Client::Handle_Login(const char *data, unsigned int size)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (server.options.IsPasswordLoginAllowed()) {
|
if (server.options.IsPasswordLoginAllowed()) {
|
||||||
cred = (&outbuffer[1 + user.length()]);
|
cred = (&outbuffer[1 + user.length()]);
|
||||||
auto components = SplitString(user, '.');
|
auto components = SplitString(user, '.');
|
||||||
if (components.size() == 2) {
|
if (components.size() == 2) {
|
||||||
db_loginserver = components[0];
|
db_loginserver = components[0];
|
||||||
@ -255,7 +274,8 @@ void Client::Handle_Login(const char *data, unsigned int size)
|
|||||||
LogF(
|
LogF(
|
||||||
Logs::General,
|
Logs::General,
|
||||||
Logs::Login_Server,
|
Logs::Login_Server,
|
||||||
"Attempting password based login [{0}] login [{1}] user [{2}]",
|
"{0} Attempting password based login [{1}] login [{2}] user [{3}]",
|
||||||
|
logging_function_prefix,
|
||||||
user,
|
user,
|
||||||
db_loginserver,
|
db_loginserver,
|
||||||
user
|
user
|
||||||
@ -265,10 +285,19 @@ void Client::Handle_Login(const char *data, unsigned int size)
|
|||||||
|
|
||||||
if (server.db->GetLoginDataFromAccountInfo(user, db_loginserver, db_account_password_hash, db_account_id)) {
|
if (server.db->GetLoginDataFromAccountInfo(user, db_loginserver, db_account_password_hash, db_account_id)) {
|
||||||
result = VerifyLoginHash(user, db_loginserver, cred, db_account_password_hash);
|
result = VerifyLoginHash(user, db_loginserver, cred, db_account_password_hash);
|
||||||
|
|
||||||
|
LogF(
|
||||||
|
Logs::Detail,
|
||||||
|
Logs::Login_Server,
|
||||||
|
"{0} [VerifyLoginHash] Success [{1}]",
|
||||||
|
logging_function_prefix,
|
||||||
|
(result ? "true" : "false")
|
||||||
|
);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
status = cs_creating_account;
|
status = cs_creating_account;
|
||||||
AttemptLoginAccountCreation(user, cred, db_loginserver);
|
AttemptLoginAccountCreation(user, cred, db_loginserver);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -278,9 +307,25 @@ void Client::Handle_Login(const char *data, unsigned int size)
|
|||||||
* Login accepted
|
* Login accepted
|
||||||
*/
|
*/
|
||||||
if (result) {
|
if (result) {
|
||||||
|
LogF(
|
||||||
|
Logs::Detail, Logs::Login_Server, "{0} [{1}] login [{2}] user [{3}] Login succeeded",
|
||||||
|
logging_function_prefix,
|
||||||
|
user,
|
||||||
|
db_loginserver,
|
||||||
|
user
|
||||||
|
);
|
||||||
|
|
||||||
DoSuccessfulLogin(user, db_account_id, db_loginserver);
|
DoSuccessfulLogin(user, db_account_id, db_loginserver);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
LogF(
|
||||||
|
Logs::Detail, Logs::Login_Server, "{0} [{1}] login [{2}] user [{3}] Login failed",
|
||||||
|
logging_function_prefix,
|
||||||
|
user,
|
||||||
|
db_loginserver,
|
||||||
|
user
|
||||||
|
);
|
||||||
|
|
||||||
DoFailedLogin();
|
DoFailedLogin();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -358,6 +403,11 @@ void Client::GenerateKey()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param user
|
||||||
|
* @param pass
|
||||||
|
* @param loginserver
|
||||||
|
*/
|
||||||
void Client::AttemptLoginAccountCreation(
|
void Client::AttemptLoginAccountCreation(
|
||||||
const std::string &user,
|
const std::string &user,
|
||||||
const std::string &pass,
|
const std::string &pass,
|
||||||
@ -403,7 +453,8 @@ void Client::AttemptLoginAccountCreation(
|
|||||||
&Client::LoginOnNewConnection,
|
&Client::LoginOnNewConnection,
|
||||||
this,
|
this,
|
||||||
std::placeholders::_1
|
std::placeholders::_1
|
||||||
));
|
)
|
||||||
|
);
|
||||||
login_connection_manager->OnConnectionStateChange(
|
login_connection_manager->OnConnectionStateChange(
|
||||||
std::bind(
|
std::bind(
|
||||||
&Client::LoginOnStatusChange,
|
&Client::LoginOnStatusChange,
|
||||||
@ -411,14 +462,16 @@ void Client::AttemptLoginAccountCreation(
|
|||||||
std::placeholders::_1,
|
std::placeholders::_1,
|
||||||
std::placeholders::_2,
|
std::placeholders::_2,
|
||||||
std::placeholders::_3
|
std::placeholders::_3
|
||||||
));
|
)
|
||||||
|
);
|
||||||
login_connection_manager->OnPacketRecv(
|
login_connection_manager->OnPacketRecv(
|
||||||
std::bind(
|
std::bind(
|
||||||
&Client::LoginOnPacketRecv,
|
&Client::LoginOnPacketRecv,
|
||||||
this,
|
this,
|
||||||
std::placeholders::_1,
|
std::placeholders::_1,
|
||||||
std::placeholders::_2
|
std::placeholders::_2
|
||||||
));
|
)
|
||||||
|
);
|
||||||
|
|
||||||
login_connection_manager->Connect(addr, port);
|
login_connection_manager->Connect(addr, port);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -121,37 +121,45 @@ bool DatabaseMySQL::GetLoginDataFromAccountInfo(
|
|||||||
unsigned int &id
|
unsigned int &id
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (!database) {
|
auto query = fmt::format(
|
||||||
|
"SELECT LoginServerID, AccountPassword FROM {0} WHERE AccountName = '{1}' AND AccountLoginserver = '{2}' LIMIT 1",
|
||||||
|
server.options.GetAccountTable(),
|
||||||
|
EscapeString(name),
|
||||||
|
EscapeString(loginserver)
|
||||||
|
);
|
||||||
|
|
||||||
|
auto results = QueryDatabase(query);
|
||||||
|
|
||||||
|
if (results.RowCount() != 1) {
|
||||||
|
LogF(
|
||||||
|
Logs::Detail,
|
||||||
|
Logs::Login_Server,
|
||||||
|
"Database::GetLoginDataFromAccountInfo could not find account for name [{0}] login [{1}]",
|
||||||
|
name,
|
||||||
|
loginserver
|
||||||
|
);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
MYSQL_RES *res;
|
|
||||||
MYSQL_ROW row;
|
|
||||||
std::stringstream query(std::stringstream::in | std::stringstream::out);
|
|
||||||
query << "SELECT LoginServerID, AccountPassword FROM " << server.options.GetAccountTable()
|
query << "SELECT LoginServerID, AccountPassword FROM " << server.options.GetAccountTable()
|
||||||
<< " WHERE AccountName = '";
|
if (!results.Success()) {
|
||||||
query << EscapeString(name);
|
|
||||||
query << "' AND AccountLoginserver='";
|
|
||||||
query << EscapeString(loginserver);
|
|
||||||
query << "'";
|
|
||||||
|
|
||||||
if (mysql_query(database, query.str().c_str()) != 0) {
|
|
||||||
LogF(Logs::General, Logs::Error, "Mysql query failed: {0}", query.str());
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
res = mysql_use_result(database);
|
auto row = results.begin();
|
||||||
|
|
||||||
if (res) {
|
id = atoi(row[0]);
|
||||||
while ((row = mysql_fetch_row(res)) != nullptr) {
|
password = row[1];
|
||||||
id = atoi(row[0]);
|
|
||||||
password = row[1];
|
LogF(
|
||||||
mysql_free_result(res);
|
Logs::Detail,
|
||||||
return true;
|
Logs::Login_Server,
|
||||||
}
|
"Database::GetLoginDataFromAccountInfo found account for name [{0}] login [{1}]",
|
||||||
}
|
name,
|
||||||
|
loginserver
|
||||||
|
);
|
||||||
|
|
||||||
Log(Logs::General, Logs::Error, "Mysql query returned no result: %s", query.str().c_str());
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -48,11 +48,15 @@ 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 = Logs::General;
|
LogSys.log_settings[Logs::Error].is_category_enabled = 1;
|
||||||
LogSys.log_settings[Logs::MySQLError].is_category_enabled = Logs::General;
|
|
||||||
LogSys.log_settings[Logs::MySQLError].log_to_console = 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::MySQLError].is_category_enabled = 1;
|
||||||
|
LogSys.log_settings[Logs::MySQLQuery].log_to_console = Logs::General;
|
||||||
|
LogSys.log_settings[Logs::MySQLQuery].is_category_enabled = 1;
|
||||||
LogSys.log_settings[Logs::Netcode].log_to_console = Logs::General;
|
LogSys.log_settings[Logs::Netcode].log_to_console = Logs::General;
|
||||||
|
LogSys.log_settings[Logs::Netcode].is_category_enabled = Logs::General;
|
||||||
|
|
||||||
|
LogSys.log_settings[Logs::Login_Server].log_to_console = Logs::Detail;
|
||||||
|
|
||||||
Log(Logs::General, Logs::Login_Server, "Logging System Init.");
|
Log(Logs::General, Logs::Login_Server, "Logging System Init.");
|
||||||
|
|
||||||
@ -182,6 +186,15 @@ int main()
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
Log(Logs::General, Logs::Login_Server, "Server Started.");
|
Log(Logs::General, Logs::Login_Server, "Server Started.");
|
||||||
|
|
||||||
|
if (LogSys.log_settings[Logs::Login_Server].log_to_console == 1) {
|
||||||
|
Log(
|
||||||
|
Logs::General,
|
||||||
|
Logs::Login_Server,
|
||||||
|
"Loginserver logging set to level [1] for more debugging, enable detail [3]"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
while (run_server) {
|
while (run_server) {
|
||||||
Timer::SetCurrentTime();
|
Timer::SetCurrentTime();
|
||||||
server.client_manager->Process();
|
server.client_manager->Process();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user