DragonNest/Client/DnLauncher/Country/KOR/DnServiceModuleKOR.cpp

190 lines
5 KiB
C++
Raw Normal View History

2024-12-19 09:48:26 +08:00
#include "stdafx.h"
#include "DnServiceModuleKOR.h"
#if defined(_KOR)
#include "../../Extern/Nexon/NMClass/NMSerializable.h"
#include "../../Extern/Nexon/NMClass/NMFiles.cpp"
#include "StringUtil.h"
#define _nmman CNMManager::GetInstance()
#define _nmco CNMCOClientObject::GetInstance()
extern CString g_szOriginalCmdLine;
WiseLog* g_pWiseLog = NULL;
NMGameCode g_uGameCode = 0x0200700D;
BOOL CDnServiceModuleKOR::Initialize()
{
#ifndef _FIRST_PATCH
CFileFind FileFind;
if( FileFind.FindFile( _T( "nmcogame.tmp" ) ) )
ClientDeleteFile( _T( "nmcogame.tmp" ) );
if( FileFind.FindFile( _T( "nmcogame.new" ) ) ) // <20>ٲ<EFBFBD> nmcogame.dll<6C><6C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ü
{
ClientDeleteFile( _T( "nmcogame.dll" ) );
MoveFile( _T( "nmcogame.new" ), _T( "nmcogame.dll" ) );
}
if( FileFind.FindFile( _T( "nmconew.tmp" ) ) )
ClientDeleteFile( _T( "nmconew.tmp" ) );
if( FileFind.FindFile( _T( "nmconew.new" ) ) ) // <20>ٲ<EFBFBD> nmconew.dll<6C><6C> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ü
{
ClientDeleteFile( _T( "nmconew.dll" ) );
MoveFile( _T( "nmconew.new" ), _T( "nmconew.dll" ) );
}
#endif
std::vector<stChannelListSet>::iterator iter = DNPATCHINFO.GetChannelList().begin();
if( iter != DNPATCHINFO.GetChannelList().end() )
{
std::vector<stPartitionListSet>::iterator iter2 = (*iter).m_vecPartitionList.begin();
if( iter2 != (*iter).m_vecPartitionList.end() )
{
if( wcscmp( (*iter2).m_strPartitionName, L"Dragonnest" ) == 0 )
g_uGameCode = 0x0200700D;
else if( wcscmp( (*iter2).m_strPartitionName, L"Dragonnest_Test" ) == 0 )
g_uGameCode = 126996;
else if( wcscmp( (*iter2).m_strPartitionName, L"Dragonnest_OpenTest" ) == 0 )
g_uGameCode = 0x0001F01F;
}
}
// nmconew.dll<6C><6C><EFBFBD><EFBFBD> <20>׽<EFBFBD>Ʈ<EFBFBD><C6AE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> .cfg<66><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> COM<4F><4D>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ȣ<><C8A3><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ö󰡸鼭 Ȯ<><C8AE><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ <20>Լ<EFBFBD><D4BC><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><> <20>ִ<EFBFBD>.
#if _WIN32_WINNT >= 0x0400 & defined(_ATL_FREE_THREADED)
CoInitializeEx( NULL, COINIT_MULTITHREADED );
#else
CoInitialize( NULL );
#endif
if( !InitWiseLog() )
{
CoUninitialize();
return FALSE;
}
CoUninitialize();
if( g_pWiseLog )
g_pWiseLog->SendWebPost( "gamelauncher.aspx" );
return TRUE;
}
void CDnServiceModuleKOR::Destroy()
{
SAFE_DELETE( g_pWiseLog );
}
BOOL CDnServiceModuleKOR::InitWiseLog()
{
LogWnd::TraceLog( _T("InitWiseLog()") );
NMLOCALEID uLocaleId = kLocaleID_KR;
BOOL bResult = TRUE;
// [<5B>ʼ<EFBFBD>] <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
bResult = CNMCOClientObject::GetInstance().SetLocale(uLocaleId);
if( !bResult )
{
LogWnd::Log( LogLevel::Error, _T("NMService intialize failed. ( SetLocale )") );
return FALSE;
}
// [<5B>ʼ<EFBFBD>] <20>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
bResult = CNMCOClientObject::GetInstance().Initialize( g_uGameCode );
if( !bResult )
{
LogWnd::Log( LogLevel::Error, _T("NMService intialize failed. ( nmco.Initialize )") );
return FALSE;
}
// Ŀ<>ǵ<EFBFBD><C7B5><EFBFBD><EFBFBD>ο<EFBFBD><CEBF><EFBFBD> <20>н<EFBFBD><D0BD><EFBFBD>Ʈ <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>Ī <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>մϴ<D5B4>.
if( g_szOriginalCmdLine.GetLength() == 0 )
{
LogWnd::Log( LogLevel::Error, _T("NMService intialize failed. ( CmdLine Emtpy )") );
return FALSE;
}
std::wstring pCmdline = g_szOriginalCmdLine;
std::vector<std::wstring> tokens;
TokenizeW( pCmdline, tokens, std::wstring( L" " ) );
std::wstring szPassPort;
szPassPort = tokens[0].c_str();
NMLoginAuthReplyCode resultAuth = CNMCOClientObject::GetInstance().AttachAuth( szPassPort.c_str() );
if( resultAuth == kLoginAuth_OK )
{
LogWnd::TraceLog( _T("kLoginAuth_OK success!"));
CNMCOClientObject::GetInstance().GetMyInfo();
UINT32 nMyOid = CNMCOClientObject::GetInstance().GetMyOid();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>α<EFBFBD> <20><><EFBFBD><EFBFBD>
g_pWiseLog = new WiseLog();
if( g_pWiseLog )
g_pWiseLog->Start(nMyOid);
}
else
{
LogWnd::Log( LogLevel::Error, _T("AttachAuth failed! result %d"), int(resultAuth) );
// LogWnd::Log( LogLevel::Error, _T("AttachAuth failed! result %d, Passport %s"), int(resultAuth), szPassPort.c_str() );
return FALSE;
}
CNMCOClientObject::GetInstance().LogoutAuth();
CNMCOClientObject::GetInstance().DetachAuth();
return TRUE;
}
BOOL CDnServiceModuleKOR::OnForceFullVersionPatch()
{
BOOL bResult = TRUE;
NMLOCALEID uLocaleId = kLocaleID_KR;
DWORD nErrorCode = 0;
bResult = CNMCOClientObject::GetInstance().SetLocale( uLocaleId );
std::wstring pCmdline = g_szOriginalCmdLine;
std::vector<std::wstring> tokens;
TokenizeW( pCmdline, tokens, std::wstring( L" " ) );
std::wstring szPassPort, szSessionID;
szPassPort = tokens[1].c_str();
for( int i=0; i<(int)tokens.size(); i++ )
{
if( NULL != StrStrW( tokens[i].c_str() , L"/sid:" ) )
szSessionID = tokens[i].c_str() + 5;
}
// [<5B>ʼ<EFBFBD>] <20>޽<EFBFBD><DEBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʱ<EFBFBD>ȭ
if( bResult )
{
bResult = CNMCOClientObject::GetInstance().Initialize( g_uGameCode );
if( bResult )
{
bResult = NMCOHelpers::ExecuteNGMInstaller( g_uGameCode, TRUE, TRUE, DNPATCHINFO.GetOptionParameter().GetBuffer(), (WCHAR *)szPassPort.c_str(), (WCHAR*)szSessionID.c_str() );
return bResult;
}
else
nErrorCode = 7002;
}
else
nErrorCode = 7001;
if( !bResult )
{
CString szMsg;
szMsg.Format( _T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>׽<EFBFBD>Ʈ <20>缳ġ<E7BCB3><C4A1> <20><><EFBFBD><EFBFBD><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>ϴ<EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD> : %d"), nErrorCode );
AfxMessageBox( szMsg );
}
return bResult;
}
#endif // _KOR