Files
Leviathan/Server/GameServer/SecuritySolution/XSecuritySolutionManager.h
T
2026-06-01 12:46:52 +02:00

43 lines
1.2 KiB
C++

#pragma once
// ISecuritySolutionImpl을 상속받은 녀석의 인스턴스 관리 및 예외 IP 체크만 함
struct XSecuritySolutionManager
{
public:
enum _SECURITY_SOLUTION_TYPE
{
TYPE_NONE = 0,
TYPE_GAMEGUARD = 1,
TYPE_HACKSHIELD = 2,
TYPE_XTRAP = 3,
};
public:
static XSecuritySolutionManager & Instance()
{
static XSecuritySolutionManager _instance;
return _instance;
}
~XSecuritySolutionManager();
const bool Init();
const void Deinit();
// 이하 5개의 함수는 g_ConnectionTagLock이 걸린 채로 사용되어야 함
const bool InitClientSession( struct IStreamSocketConnection * pConnection );
const bool BlockInitIncompleteClientSession( struct IStreamSocketConnection * pConnection );
const void DeinitClientSession( struct IStreamSocketConnection * pConnection );
const bool ProcValidation( struct IStreamSocketConnection * pConnection );
const bool OnValidationResponse( struct IStreamSocketConnection * pConnection, const void * pResponseBuffer, unsigned int size );
protected:
XSecuritySolutionManager()
: m_pImpl( 0 )
{}
const bool isExceptionalIP( const char * pszIP ) const;
protected:
struct ISecuritySolutionImpl * m_pImpl;
};