Core/Logging: Add new log type for SOAP.

Closes #8201
This commit is contained in:
Spp
2012-10-28 13:03:50 +01:00
parent 57f84c920b
commit 1925027aec
4 changed files with 16 additions and 11 deletions

View File

@@ -217,6 +217,8 @@ char const* Appender::getLogFilterTypeString(LogFilterType type)
return "SERVER LOADING";
case LOG_FILTER_OPCODES:
return "OPCODE";
case LOG_FILTER_SOAP:
return "SOAP";
default:
break;
}

View File

@@ -66,10 +66,11 @@ enum LogFilterType
LOG_FILTER_PLAYER_DUMP = 38,
LOG_FILTER_BATTLEFIELD = 39,
LOG_FILTER_SERVER_LOADING = 40,
LOG_FILTER_OPCODES = 41
LOG_FILTER_OPCODES = 41,
LOG_FILTER_SOAP = 42
};
const uint8 MaxLogFilter = uint8(LOG_FILTER_OPCODES) + 1;
const uint8 MaxLogFilter = 43;
// Values assigned have their equivalent in enum ACE_Log_Priority
enum LogLevel

View File

@@ -32,18 +32,18 @@ void TCSoapRunnable::run()
soap.send_timeout = 5;
if (!soap_valid_socket(soap_bind(&soap, m_host.c_str(), m_port, 100)))
{
sLog->outError(LOG_FILTER_WORLDSERVER, "TCSoap: couldn't bind to %s:%d", m_host.c_str(), m_port);
sLog->outError(LOG_FILTER_SOAP, "Couldn't bind to %s:%d", m_host.c_str(), m_port);
exit(-1);
}
sLog->outInfo(LOG_FILTER_WORLDSERVER, "TCSoap: bound to http://%s:%d", m_host.c_str(), m_port);
sLog->outInfo(LOG_FILTER_SOAP, "Bound to http://%s:%d", m_host.c_str(), m_port);
while (!World::IsStopped())
{
if (!soap_valid_socket(soap_accept(&soap)))
continue; // ran into an accept timeout
sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: accepted connection from IP=%d.%d.%d.%d", (int)(soap.ip>>24)&0xFF, (int)(soap.ip>>16)&0xFF, (int)(soap.ip>>8)&0xFF, (int)soap.ip&0xFF);
sLog->outDebug(LOG_FILTER_SOAP, "Accepted connection from IP=%d.%d.%d.%d", (int)(soap.ip>>24)&0xFF, (int)(soap.ip>>16)&0xFF, (int)(soap.ip>>8)&0xFF, (int)soap.ip&0xFF);
struct soap* thread_soap = soap_copy(&soap);// make a safe copy
ACE_Message_Block* mb = new ACE_Message_Block(sizeof(struct soap*));
@@ -78,33 +78,33 @@ int ns1__executeCommand(soap* soap, char* command, char** result)
// security check
if (!soap->userid || !soap->passwd)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: Client didn't provide login information");
sLog->outDebug(LOG_FILTER_SOAP, "Client didn't provide login information");
return 401;
}
uint32 accountId = AccountMgr::GetId(soap->userid);
if (!accountId)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: Client used invalid username '%s'", soap->userid);
sLog->outDebug(LOG_FILTER_SOAP, "Client used invalid username '%s'", soap->userid);
return 401;
}
if (!AccountMgr::CheckPassword(accountId, soap->passwd))
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: invalid password for account '%s'", soap->userid);
sLog->outDebug(LOG_FILTER_SOAP, "Invalid password for account '%s'", soap->userid);
return 401;
}
if (AccountMgr::GetSecurity(accountId) < SEC_ADMINISTRATOR)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: %s's gmlevel is too low", soap->userid);
sLog->outDebug(LOG_FILTER_SOAP, "%s's gmlevel is too low", soap->userid);
return 403;
}
if (!command || !*command)
return soap_sender_fault(soap, "Command mustn't be empty", "The supplied command was an empty string");
sLog->outDebug(LOG_FILTER_NETWORKIO, "TCSoap: got command '%s'", command);
sLog->outDebug(LOG_FILTER_SOAP, "Got command '%s'", command);
SOAPCommand connection;
// commands are executed in the world thread. We have to wait for them to be completed
@@ -119,7 +119,7 @@ int ns1__executeCommand(soap* soap, char* command, char** result)
int acc = connection.pendingCommands.acquire();
if (acc)
{
sLog->outError(LOG_FILTER_WORLDSERVER, "TCSoap: Error while acquiring lock, acc = %i, errno = %u", acc, errno);
sLog->outError(LOG_FILTER_SOAP, "Error while acquiring lock, acc = %i, errno = %u", acc, errno);
}
// alright, command finished

View File

@@ -2786,6 +2786,8 @@ Appenders=Console Server GM DBErrors Char RA Warden Chat
# 39 - Battlefield
# 40 - Server Loading
# 41 - Opcodes (just id and name sent / received)
# 42 - SOAP
#
# LogLevel
# 0 - (Disabled)
# 1 - (Trace)