mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
Several RCON bug fixes and improvements
* Fixed uncontrolled format specifier in 'NetMsg' call on the RCON client. * Removed extraneous call to 'PrintPercentageEscape'. * Compare, and disable RCON logs if user attempts to connect to listen server's RCON.
This commit is contained in:
parent
5f4b436ec6
commit
bd1bec3cfe
@ -252,25 +252,33 @@ void CRConClient::ProcessMessage(const sv_rcon::response& sv_response) const
|
||||
{
|
||||
if (!sv_response.responseval().empty())
|
||||
{
|
||||
bool bLocalHost = (g_pNetAdr->ComparePort(m_Address) && g_pNetAdr->CompareAdr(m_Address));
|
||||
const long i = strtol(sv_response.responseval().c_str(), NULL, NULL);
|
||||
|
||||
if (!i) // sv_rcon_sendlogs is not set.
|
||||
{
|
||||
if (cl_rcon_request_sendlogs->GetBool())
|
||||
if (!bLocalHost && cl_rcon_request_sendlogs->GetBool())
|
||||
{
|
||||
string svLogQuery = this->Serialize("", "", cl_rcon::request_t::SERVERDATA_REQUEST_SEND_CONSOLE_LOG);
|
||||
string svLogQuery = this->Serialize("", "1", cl_rcon::request_t::SERVERDATA_REQUEST_SEND_CONSOLE_LOG);
|
||||
this->Send(svLogQuery);
|
||||
}
|
||||
}
|
||||
else if (bLocalHost)
|
||||
{
|
||||
// Don't send logs to local host, it already gets logged to the same console.
|
||||
string svLogQuery = this->Serialize("", "0", cl_rcon::request_t::SERVERDATA_REQUEST_SEND_CONSOLE_LOG);
|
||||
this->Send(svLogQuery);
|
||||
}
|
||||
}
|
||||
|
||||
DevMsg(eDLL_T::NETCON, "%s", PrintPercentageEscape(sv_response.responsemsg()).c_str());
|
||||
DevMsg(eDLL_T::NETCON, "%s", sv_response.responsemsg().c_str());
|
||||
break;
|
||||
}
|
||||
case sv_rcon::response_t::SERVERDATA_RESPONSE_CONSOLE_LOG:
|
||||
{
|
||||
NetMsg(static_cast<LogType_t>(sv_response.messagetype()),
|
||||
static_cast<eDLL_T>(sv_response.messageid()), sv_response.responseval().c_str(),
|
||||
PrintPercentageEscape(sv_response.responsemsg()).c_str());
|
||||
static_cast<eDLL_T>(sv_response.messageid()),
|
||||
sv_response.responseval().c_str(), "%s", sv_response.responsemsg().c_str());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@ -293,24 +301,9 @@ string CRConClient::Serialize(const string& svReqBuf, const string& svReqVal, co
|
||||
|
||||
cl_request.set_messageid(-1);
|
||||
cl_request.set_requesttype(request_t);
|
||||
|
||||
switch (request_t)
|
||||
{
|
||||
case cl_rcon::request_t::SERVERDATA_REQUEST_SETVALUE:
|
||||
case cl_rcon::request_t::SERVERDATA_REQUEST_AUTH:
|
||||
{
|
||||
cl_request.set_requestmsg(svReqBuf);
|
||||
cl_request.set_requestval(svReqVal);
|
||||
break;
|
||||
}
|
||||
case cl_rcon::request_t::SERVERDATA_REQUEST_EXECCOMMAND:
|
||||
{
|
||||
cl_request.set_requestmsg(svReqBuf);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return cl_request.SerializeAsString();
|
||||
}
|
||||
|
||||
|
@ -160,7 +160,8 @@ void CRConServer::Send(const std::string& svMessage) const
|
||||
|
||||
if (pData->m_bAuthorized)
|
||||
{
|
||||
::send(pData->m_hSocket, ssSendBuf.str().data(), static_cast<int>(ssSendBuf.str().size()), MSG_NOSIGNAL);
|
||||
::send(pData->m_hSocket, ssSendBuf.str().data(),
|
||||
static_cast<int>(ssSendBuf.str().size()), MSG_NOSIGNAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -488,7 +489,7 @@ void CRConServer::ProcessMessage(const cl_rcon::request& cl_request)
|
||||
{
|
||||
if (pData->m_bAuthorized)
|
||||
{
|
||||
sv_rcon_sendlogs->SetValue(true);
|
||||
sv_rcon_sendlogs->SetValue(cl_request.requestval().c_str());
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -416,19 +416,20 @@ void CNetCon::ProcessMessage(const sv_rcon::response& sv_response) const
|
||||
const long i = strtol(sv_response.responseval().c_str(), NULL, NULL);
|
||||
if (!i) // sv_rcon_sendlogs is not set.
|
||||
{
|
||||
string svLogQuery = this->Serialize("", "", cl_rcon::request_t::SERVERDATA_REQUEST_SEND_CONSOLE_LOG);
|
||||
string svLogQuery = this->Serialize("", "1",
|
||||
cl_rcon::request_t::SERVERDATA_REQUEST_SEND_CONSOLE_LOG);
|
||||
this->Send(svLogQuery);
|
||||
}
|
||||
}
|
||||
|
||||
DevMsg(eDLL_T::NETCON, "%s", PrintPercentageEscape(sv_response.responsemsg()).c_str());
|
||||
DevMsg(eDLL_T::NETCON, "%s", sv_response.responsemsg().c_str());
|
||||
break;
|
||||
}
|
||||
case sv_rcon::response_t::SERVERDATA_RESPONSE_CONSOLE_LOG:
|
||||
{
|
||||
NetMsg(static_cast<LogType_t>(sv_response.messagetype()),
|
||||
static_cast<eDLL_T>(sv_response.messageid()), sv_response.responseval().c_str(),
|
||||
PrintPercentageEscape(sv_response.responsemsg()).c_str());
|
||||
static_cast<eDLL_T>(sv_response.messageid()),
|
||||
sv_response.responseval().c_str(), "%s", sv_response.responsemsg().c_str());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
|
Loading…
x
Reference in New Issue
Block a user