68 lines
1.7 KiB
C++
68 lines
1.7 KiB
C++
//========= Copyright Valve Corporation, All rights reserved. ============//
|
|
//
|
|
// Purpose:
|
|
//
|
|
// $NoKeywords: $
|
|
//=============================================================================
|
|
|
|
#include "RconMsgHandler.h"
|
|
|
|
#include "rcon.h"
|
|
#include "info.h"
|
|
|
|
#include "DialogGameInfo.h"
|
|
#include "inetapi.h"
|
|
#include "proto_oob.h"
|
|
|
|
extern void v_strncpy(char *dest, const char *src, int bufsize);
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Constructor
|
|
//-----------------------------------------------------------------------------
|
|
CRconMsgHandlerDetails::CRconMsgHandlerDetails( CRcon *baseobject, HANDLERTYPE type, void *typeinfo /*= NULL*/ )
|
|
: CMsgHandler( type, typeinfo )
|
|
{
|
|
m_pRcon = baseobject;
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Purpose: Process cracked message
|
|
//-----------------------------------------------------------------------------
|
|
bool CRconMsgHandlerDetails::Process( netadr_t *from, CMsgBuffer *msg )
|
|
{
|
|
// Skip the control character
|
|
//if (!m_pRcon->Challenge() && msg->ReadByte()!=A2C_PRINT)
|
|
// return false;
|
|
|
|
// get response name
|
|
const char *str = msg->ReadString();
|
|
if ( !str || !str[0] )
|
|
return false;
|
|
|
|
char info[ 2048 ];
|
|
v_strncpy( info, str, 2047 );
|
|
info[2047] = 0;
|
|
|
|
if(!_strnicmp(info,"lBad rcon_password",18) )
|
|
{
|
|
m_pRcon->BadPassword(info+1);
|
|
return true;
|
|
}
|
|
|
|
|
|
if(m_pRcon->Challenge() )
|
|
{ // if we know the challenge value pass it to UpdateServer
|
|
|
|
int challenge = atoi(info+strlen("challenge rcon"));
|
|
m_pRcon->UpdateServer(from, challenge, NULL);
|
|
}
|
|
else // else pass a default value
|
|
{
|
|
m_pRcon->UpdateServer(from, -1, info+1 );
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|