DragonNest/Server/ServerCommon/RU/DNMailRUAuth.cpp

97 lines
2.7 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
#include "StdAfx.h"
#if defined(_RU) && defined(_FINAL_BUILD)
#include "DNMailRUAuth.h"
#include "HttpClientManager.h"
#include "Util.h"
#include "Log.h"
#include "XMLParser.h"
int MailRUAuthLogin(char const *AccountID, char const *pOTPHash, char const *ip)
{
CHttpClient* pHttpClient = g_pHttpClientManager->FindHttpClient();
if (!pHttpClient) {
return ERROR_MAILRU_ERROR;
}
wchar_t szTemp[128] = {0,};
SNPRINTFW(szTemp, _countof(szTemp), L"/Client.php?uid=%S&hash=%S&ip=%S", AccountID, pOTPHash, ip);
CHttpClientAuto Auto(pHttpClient, g_pHttpClientManager);
int nStatus = pHttpClient->SendRequestGet(szTemp);
if( nStatus != 200) // 200<30><30> <20>ƴϸ<C6B4> <20><> <20><><EFBFBD><EFBFBD>?
{
g_Log.Log(LogType::_ERROR, L"MailRU Auth GetStatus!(%d), ID:%S\r\n", nStatus, AccountID);
return ERROR_MAILRU_ERROR;
}
BYTE byBuff[1024]={0,};
if( pHttpClient->RecvResponse((LPBYTE)byBuff, 1024) == 0)
{
return ParseErrorCode((char*)byBuff);
}
return ERROR_MAILRU_ERROR;
}
int ParseErrorCode(char* pResult)
{
//Xml <20>Ľ<EFBFBD>..
CXMLParser parser;
if (parser.OpenByBuffer(pResult) == false)
{
g_Log.Log(LogType::_ERROR, L"MailRU Auth XML Parser Error!(%S)\r\n", pResult);
return ERROR_MAILRU_INVALID_REQUEST;
}
if (parser.FirstChildElement("gasreply", true) == true)
{
if (parser.FirstChildElement("status", false) == true)
{
if( wcscmp(parser.GetText(), L"gas_ok") == 0)
{
return ERROR_NONE;
}
else if( wcscmp( parser.GetText(), L"gas_auth_failed") == 0)
{
// ID, Pass Ʋ<><C6B2>
return ERROR_MAILRU_WORNG_PASSWORD;
}
else if( wcscmp( parser.GetText(), L"gas_error") == 0)
{
// <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>޽<EFBFBD><DEBD><EFBFBD> <20>ޱ<EFBFBD>.
if( parser.FirstChildElement("info", true) == true)
{
const WCHAR* pErrorCode = NULL;
const WCHAR* pErrorMSG = NULL;
if( parser.FirstChildElement("errorcode", false) == true )
{
pErrorCode = parser.GetText();
}
if( parser.FirstChildElement("errormessage", false) == true)
{
pErrorMSG = parser.GetText();
}
if( pErrorCode && pErrorMSG )
g_Log.Log(LogType::_ERROR, L"MailRU Auth Error Code:%s, Message:%s\r\n", pErrorCode, pErrorMSG);
return ERROR_MAILRU_ERROR;
}
}
else if( wcscmp(parser.GetText(), L"gas_user_banned") == 0)
{
// <20><><EFBFBD><EFBFBD><EFBFBD≯<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>޽<EFBFBD><DEBD><EFBFBD> <20>ޱ<EFBFBD>.
if( parser.FirstChildElement("info", true) == true)
{
// bants<74><73> <20><><EFBFBD><EFBFBD> <20>Ϸ<EFBFBD><CFB7><EFBFBD> <20>ð<EFBFBD><C3B0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>׳<EFBFBD> pass
if( parser.FirstChildElement("banreason", false) == true)
{
g_Log.Log(LogType::_ERROR, L"MailRU Auth Banned User Message:%s\r\n", parser.GetText());
}
return ERROR_MAILRU_BLOCK;
}
}
}
}
return ERROR_MAILRU_INVALID_REQUEST;
}
#endif //if defined(_RU)