Files
2022-10-26 12:25:11 +08:00

129 lines
3.5 KiB
C++

#include "stdafx.h"
//////////////////////////////////////////////////////////////////////////
#include <PacketStruct_CG.h>
//////////////////////////////////////////////////////////////////////////
#include <PacketHandler/Handler_FromClient.h>
#include <UserSessions/User.h>
#include <UserSessions/UserManager.h>
#include <TimeCheck/HeartbeatChecker.h>
HANDLER_CG_IMPL( CG_CONNECTION_HEARTBEAT_SYN )
{
__TOUCHED((pMsg, wSize));
DWORD dwCurTick = GetTickCount();
HeartbeatChecker& rChecker = pUser->GetHeartbeatChecker();
BOOL bIsValidSize = (BOOL)( sizeof(MSG_CG_CONNECTION_HEARTBEAT_SYN) == wSize );
rChecker.Signal( pUser, dwCurTick );
// 섣부르게 하지 말자. 일단 크기 검사만 수행하는 걸로 하자. 나중에 기능 개선용으로 사용하자.
if( !bIsValidSize )
{
SUNLOG( eDEV_LOG, _T("[RNDPROTOCOL_REPORT][SIZE] HEARTBEAT") );
//SecurePackNode4User& rCRYPT = pUser->GetSecureNode();
//DWORD dwMaxDelay = RandomTimeUtil::SECURE_FAIL_CLOSING_INTERVAL_POLE;
//DWORD dwRelative = RandomTimeUtil::SECURE_FAIL_CLOSING_INTERVAL_MINMAX_BOUNDARY;
//rCRYPT.m_dwTimeout = RandomTimeUtil::GetRandomTimeDelay_ByMinMaxBoundary( dwCurTick, dwMaxDelay, dwRelative );
//RemoveCryptedUser( pUser );
//AddCryptingUser( pUser, sSECURE_CONTROL_STATUS::CRYPTING );
}
//SUNLOG( eCRITICAL_LOG, _T("HBChecker Is NULL") );
}
#ifdef _NA_20100802_SPEED_HACK_DETECTION
HANDLER_CG_IMPL( CG_CONNECTION_TICK_QUERY_ACK )
{
__TOUCHED((pMsg, wSize));
DWORD current_tick = GetTickCount();
if (TickSpeedChecker::IsGloballyEnabled() == false) { // 전역 활성화 여부 먼저 검사
return;
}
TickSpeedChecker& checker = pUser->GetTickSpeedChecker();
MSG_CG_CONNECTION_TICK_QUERY_ACK* packet = \
static_cast<MSG_CG_CONNECTION_TICK_QUERY_ACK*>(pMsg);
checker.HandleClientResponse(packet->round, packet->index, packet->tick_count, current_tick);
}
#endif
HANDLER_CG_IMPL( CG_CRYPTOGRAPHY_ACK )
{
__TOUCHED((pMsg, wSize));
SecurePackNode4User& rSECURE = pUser->GetSecureNode();
rSECURE.OnRecvCG_CRYPTOGRAPHY_ACK( pUser );
return;
}
HANDLER_CG_IMPL( CG_CRYPTOGRAPHY_NAK )
{
__TOUCHED((pMsg, wSize));
SecurePackNode4User& rSECURE = pUser->GetSecureNode();
rSECURE.OnRecvCG_CRYPTOGRAPHY_NAK( pUser );
return;
}
HANDLER_CG_IMPL(CG_SECURE_MOLACONTROL)
{
__TOUCHED((pMsg, wSize));
SecurePackNode4User& rSECURE = pUser->GetSecureNode();
MOLAControl& rMOLA = rSECURE.MOLAController();
rMOLA.RecvQuery( pUser, pMsg, wSize );
}
HANDLER_CG_IMPL( CG_HACKSHIELD_SERVER_EX_QUERY_ACK )
{
__TOUCHED((pMsg, wSize));
#if USING_HACKSHIELD
SecurePackNode4User& rSECURE = pUser->GetSecureNode();
rSECURE.OnRecvCG_HACKSHIELD_SERVER_EX_QUERY_ACK( pUser, (MSG_CG_HACKSHIELD_SERVER_EX_QUERY_ACK*)pMsg, wSize );
#endif
}
HANDLER_CG_IMPL(CG_XIGNCODE_SERVER_QUERY_ACK)
{
__TOUCHED((pMsg, wSize));
#if USING_XIGNCODE
SecurePackNode4User& secure_node = pUser->GetSecureNode();
secure_node.OnRecvXIGNCODE_SERVER_QUERY_ACK(pUser,
static_cast<MSG_CG_XIGNCODE_SERVER_QUERY_ACK*>(pMsg), wSize);
#endif
}
HANDLER_CG_IMPL(CG_GAMEGUARD_SERVER_QUERY_ACK)
{
__TOUCHED((pMsg, wSize));
#if USING_GAMEGUARD
SecurePackNode4User& secure_node = pUser->GetSecureNode();
secure_node.OnRecv_GAMEGUARD_SERVER_QUERY_ACK(pUser, pMsg, wSize);
#endif // USING_GAMEGUARD
}
HANDLER_CG_IMPL(CG_GAMEGUARD_HACKDATA_CMD)
{
__TOUCHED((pMsg, wSize));
#if USING_GAMEGUARD
SecurePackNode4User& secure_node = pUser->GetSecureNode();
secure_node.OnRecv_GAMEGUARD_HACKDATA_CMD(pUser, pMsg, wSize);
#endif // USING_GAMEGUARD
}