void CDPCertified::SendCloseExistingConnection( const char* lpszAccount, const char* lpszpw ) { BEFORESEND( ar, PACKETTYPE_CLOSE_EXISTING_CONNECTION ); ar.WriteString( lpszAccount ); ar.WriteString( lpszpw ); SEND( ar, this, DPID_SERVERPLAYER ); }
void CDPCertified::SendNewAccount( LPCSTR lpszAccount, LPCSTR lpszpw ) { BEFORESEND( ar, PACKETTYPE_NEW_ACCOUNT ); ar.WriteString( lpszAccount ); ar.WriteString( lpszpw ); SEND( ar, this, DPID_SERVERPLAYER ); }
void CUserMng::ClearDum( CDPMng* pdp ) { BEFORESEND( ar, PACKETTYPE_KEEP_ALIVE ); CUser* pUsertmp; DWORD dwTick = GetTickCount() - SEC( 10 ); CMclAutoLock Lock( m_AddRemoveLock ); for( map<DPID, CUser*>::iterator i = begin(); i != end(); ++i ) { pUsertmp = i->second; if( pUsertmp->m_dwTick < dwTick ) { pdp->DestroyPlayer( pUsertmp->m_dpid ); } else if( pUsertmp->m_bValid == FALSE ) { pUsertmp->m_bValid = TRUE; pdp->DestroyPlayer( pUsertmp->m_dpid ); } else { pUsertmp->m_bValid = FALSE; SEND( ar, pdp, pUsertmp->m_dpid ); } } }
void CDPCoreClient::SendPreJoin( DWORD dwAuthKey, const TCHAR* lpszAccount, u_long idPlayer, const TCHAR* lpszPlayer ) { BEFORESEND( ar, PACKETTYPE_PRE_JOIN ); ar << dwAuthKey; ar.WriteString( lpszAccount ); ar << idPlayer; ar.WriteString( lpszPlayer ); SEND( ar, this, DPID_SERVERPLAYER ); }
void CDPLoginSrvr::OnQueryTickCount( CAr & ar ) { DWORD dwTime; ar >> dwTime; BEFORESEND( ar1, PACKETTYPE_QUERYTICKCOUNT ); ar1 << dwTime << g_TickCount.GetTickCount(); SEND( ar1, this, DPID_ALLPLAYERS ); }
void CDPCoreClient::QueryTickCount( void ) { hWait = CreateEvent( NULL, FALSE, FALSE, NULL ); BEFORESEND( ar, PACKETTYPE_QUERYTICKCOUNT ); ar << (DWORD)timeGetTime(); SEND( ar, this, DPID_SERVERPLAYER ); WaitForSingleObject( hWait, INFINITE ); CloseHandle( hWait ); }
BOOL CDPMonitorClient::Run( LPCSTR lpAddr, u_long uPort, DWORD dwMonitorId, BOOL fsndPing ) { if( FALSE == ConnectToServer( lpAddr, uPort, FALSE ) ) return FALSE; BEFORESEND( ar, PACKETTYPE_MONITOR_ID ); ar << dwMonitorId << fsndPing; SEND( ar, this, DPID_SERVERPLAYER ); return TRUE; }
// 2006.03 MSG_VER를 보내는 부분이 5차 국내에는 없음 void CDPCertified::SendCertify() { if( ::GetLanguage() == LANG_ENG && ::GetSubLanguage() == LANG_SUB_USA ) g_Neuz.m_dwTimeOutDis = GetTickCount() + SEC( 40 ); else g_Neuz.m_dwTimeOutDis = GetTickCount() + SEC( 20 ); BEFORESEND( ar, PACKETTYPE_CERTIFY ); ar.WriteString( ::GetProtocolVersion() ); // MSG_VER #ifdef __SECURITY_0628 ar.WriteString( CResFile::m_szResVer ); #endif // __SECURITY_0628 ar.WriteString( g_Neuz.m_szAccount ); ////////////////////////////////////////////////////////////////////////// // mulcom BEGIN100218 패스워드 암호화 #ifdef __ENCRYPT_PASSWORD char szPlain[ 16 * MAX_PASSWORD ] = {0, }; char szEnc[ 16 * MAX_PASSWORD ] = {0, }; ::memcpy( szPlain, g_Neuz.m_szPassword, sizeof(g_Neuz.m_szPassword) ); g_xRijndael->ResetChain(); g_xRijndael->Encrypt( szPlain, szEnc, 16 * MAX_PASSWORD, CRijndael::CBC ); ar.Write( szEnc, 16 * MAX_PASSWORD ); #else ar.WriteString( g_Neuz.m_szPassword ); #endif // mulcom END100218 패스워드 암호화 #ifdef __TWN_LOGIN0816 if( GetLanguage() == LANG_TWN ) { ar.WriteString( g_Neuz.m_szSessionPwd ); // char lpOutputString[256] = { 0,}; // sprintf( lpOutputString, "account = %s, pwd = %s, session = %s", g_Neuz.m_szAccount, g_Neuz.m_szPassword, g_Neuz.m_szSessionPwd ); // OutputDebugString( lpOutputString ); } #endif // __TWN_LOGIN0816 SEND( ar, this, DPID_SERVERPLAYER ); }
void CDPLoginSrvr::OnPreJoin( CAr & ar ) { static \ TCHAR lpszAccount[MAX_ACCOUNT], lpszPlayer[MAX_PLAYER]; u_long idPlayer; DWORD dwAuthKey; ar >> dwAuthKey; ar.ReadString( lpszAccount, MAX_ACCOUNT ); ar >> idPlayer; ar.ReadString( lpszPlayer, MAX_PLAYER ); CMclAutoLock Lock( g_PlayerMng.m_AddRemoveLock ); BOOL f = g_PlayerMng.AddPlayer( idPlayer, lpszPlayer, lpszAccount ); // lock if( f == FALSE ) { WriteLog( "OnPreJoin(): AddPlayer() return false, %d, %s", idPlayer, lpszPlayer ); CPlayer* pPlayer = g_PlayerMng.GetPlayer( idPlayer ); // if( !pPlayer ) // { // WriteLog( "OnPreJoin(): ID not found" ); // pPlayer = g_PlayerMng.GetPlayer( lpszPlayer ); // } if( pPlayer ) { if( *pPlayer->lpszAccount != '\0' ) SendQueryRemovePlayer( pPlayer->lpszAccount ); else WriteLog( "OnPreJoin(): lpszAccount == '\0'" ); g_PlayerMng.RemovePlayer( pPlayer ); } else WriteLog( "OnPreJoin(): Player not found" ); } BEFORESEND( ar1, PACKETTYPE_PRE_JOIN ); // result ar1 << dwAuthKey; ar1.WriteString( lpszAccount ); ar1 << idPlayer; ar1.WriteString( lpszPlayer ); ar1 << (BYTE)f; // o SEND( ar1, this, DPID_ALLPLAYERS ); }
bool CProcessLauncher::CreateMyProcess() { if( m_lProcessCount > 0 ) { puts("Process is running." ); return false; } bool bOK = false; if( m_pi.hProcess == NULL ) { if( ::RunProcess( &m_pi, (char *)GetAppName(), GetAppDirectory(), false, NORMAL_PRIORITY_CLASS ) ) { printf( "Process[%s - %d] created.\n", GetAppName(), m_pi.hProcess ); DWORD dwResult = WAIT_OBJECT_0; if( GetStartWait() ) dwResult = WaitForSingleObject( GetEvent(), 1000 * 120 ); // 실행 후의 데이타 로딩을 최대 2분 기다린다. else WaitForInputIdle( m_pi.hProcess, 3000 ); bOK = ( dwResult == WAIT_OBJECT_0 ); printf( "Process[%s - %d] wait result:%d\n", GetAppName(), m_pi.hProcess, dwResult ); } } if( bOK ) { InterlockedIncrement( &m_lProcessCount ); BeginMonitor(); } if( m_pPeer ) { BEFORESEND( ar, PACKETTYPE_PROCESS_CREATED2 ); ar << (BYTE)bOK; ar << (DWORD)( bOK ? 0 : GetLastError() ); SEND( ar, m_pPeer, DPID_SERVERPLAYER ); } return bOK; }
void CProcessLauncher::OnTerminated() { DWORD dwExitCode = 0; GetExitCodeProcess( m_pi.hProcess, &dwExitCode ); CloseHandle( m_pi.hProcess ); CloseHandle( m_pi.hThread ); memset( &m_pi, 0x00, sizeof(m_pi) ); InterlockedDecrement( &m_lProcessCount ); printf( "GetExitCodeProcess: %d \n", dwExitCode ); if( m_pPeer ) { BYTE cbAbort = (dwExitCode == ABORT_CODE ? 1 : 0); BEFORESEND( ar, PACKETTYPE_PROCESS_TERMINATED2 ); ar << cbAbort; SEND( ar, m_pPeer, DPID_SERVERPLAYER ); } // Sleep( 3000 ); }
void CDPCertified::OnKeepAlive( CAr & ar, DPID ) { // BEFORESENDSOLE( ar2, PACKETTYPE_KEEP_ALIVE, DPID_UNKNOWN ); BEFORESEND( ar2, PACKETTYPE_KEEP_ALIVE ); SEND( ar2, this, DPID_SERVERPLAYER ); }
void CDPCoreClient::SendLeave( u_long idPlayer ) { BEFORESEND( ar, PACKETTYPE_LEAVE ); ar << idPlayer; SEND( ar, this, DPID_SERVERPLAYER ); }
void CDPConsole::SendCommand( char* buffer ) { BEFORESEND( ar, PACKETTYPE_CONSOLE_COMMAND ); ar.WriteString( buffer ); SEND( ar, this, DPID_SERVERPLAYER ); }
void CDPLoginSrvr::SendQueryRemovePlayer( const CHAR* lpszAccount ) { BEFORESEND( ar, PACKETTYPE_DESTROY_PLAYER ); ar.WriteString( lpszAccount ); SEND( ar, this, DPID_ALLPLAYERS ); }