#include "StdAfx.h" #include ".\tempuser.h" #include "UserSessionFactory.h" #include "User.h" #include #include #include "UserManager.h" #include "UserInfoParser.h" #include "UserInfo.h" #include "ServerInfoParser.h" #include "WorldManager.h" TempUser::TempUser(void) { } TempUser::~TempUser(void) { } VOID TempUser::OnDisconnect() { } VOID TempUser::Init() { UserSession::Init(); } VOID TempUser::Release() { UserSession::Release(); } BOOL TempUser::SendPacket( MSG_BASE* pMsg, WORD wSize ) { return UserSession::SendPacket( pMsg, wSize ); } VOID TempUser::OnRecv( BYTE * pMsg, WORD wSize ) { //1. ÀÎÁõ¿äû ÆÐŶÀÌ ¿À¸é.. ÀÎÁõ°Ë»ç ´Ü°è¸¦ °ÅÄ¡°í, //2. ¼º°øÀ̸é... »õ·Î¿î ³×Æ®¿öÅ©°´Ã¼¸¦ »ý¼º½ÃÄѼ­, ÇÒ´çÇϰí, ¸Þ´ÏÁ®¿¡ Ãß°¡ÇÑ´Ù. //3. ½ÇÆÐ¸é..... ½ÇÆÐ ¸Þ¼¼Áö¸¦ º¸³½´Ù. const WORD wLoginSyn = MAKEWORD( SM_USER, SM_USER_LOGIN_SYN ); MSG_BASE* pMsgBase = (MSG_BASE*)pMsg; if( !pMsgBase ) return; WORD wMsgKey = MAKEWORD( pMsgBase->m_byCategory, pMsgBase->m_byProtocol ); if( wLoginSyn == wMsgKey) //·Î±×ÀÎ ÆÐŶÀ̸é.. { MSG_SM_USER_LOGIN_SYN *pRecvMsg = (MSG_SM_USER_LOGIN_SYN*)pMsg; if( !pRecvMsg ) return; UserInfo* pUserInfo = UserInfoParser::Instance()->GetUserInfo( pRecvMsg->m_szUserID, pRecvMsg->m_szPassWord, GetIP() ); if( pUserInfo ) //ÀÖÀ¸¸é... { User* pNewUser = (User*)UserSessionFactory::Instance()->AllocUser( UT_USER ); pNewUser->SetUserKey( pUserInfo->GetUserGUID() ); pNewUser->SetID( pUserInfo->GetUserID() ); pNewUser->SetPassword( pUserInfo->GetUserPassWord() ); pNewUser->SetGrade( pUserInfo->GetUserGrade() ); Redirect( pNewUser ); UserSessionFactory::Instance()->FreeUser( this ); UserManager::Instance()->AddUser( pNewUser ); MSGOUT( "[User Login] ID : %s, IP : %s, KEY : %d", pUserInfo->GetUserID(), GetIP(), pNewUser->GetUserKey() ); MSG_SM_USER_LOGIN_ACK AckMsg; AckMsg.m_byResult = RC_USER_LOGIN_SUCCESS; AckMsg.m_dwUserKey = pUserInfo->GetUserGUID(); AckMsg.m_byGrade = pUserInfo->GetUserGrade(); pNewUser->SendPacket( &AckMsg, sizeof(AckMsg) ); // ¼­¹öÁ¤º¸ Send MSG_SM_SERVER_INFO_CMD CmdMsg; WorldManager::Instance()->SerializeServerInfoStreamForUser( CmdMsg.m_ServerTotalInfo, pNewUser->GetUserKey() ); pNewUser->SendPacket( &CmdMsg, CmdMsg.GetSize() ); #ifdef __20080312__SOLARAUTH_SERVER_PATCH MSG_SM_SCRIPTFOLDER_INFO_CMD FoldInfo; WorldManager::Instance()->SerializeScriptFolderInfoStream( FoldInfo.m_SCFolderTotalInfo, pNewUser->GetUserKey() ); pNewUser->SendPacket( &FoldInfo, FoldInfo.GetSize() ); #endif // FTP ¿¬°á Á¤º¸ Send MSG_SM_SERVER_FTP_INFO_CMD FtpCmd; WorldManager::Instance()->SerializeFtpInfoStreamForUser( FtpCmd.m_FtpTotalInfo, pNewUser->GetUserKey() ); pNewUser->SendPacket( &FtpCmd, FtpCmd.GetSize() ); } else //¾øÀ¸¸é.. { MSG_SM_USER_LOGIN_ACK ack; ack.m_byResult = RC_USER_LOGIN_FAIL; SendPacket( &ack, sizeof(ack) ); } } }