예제 #1
0
파일: XLoginInfo.cpp 프로젝트: xahgo/tama
BOOL XLoginInfo::Save( void )
{
	FILE *fp = NULL;
	XBREAK( m_strLoginFile.empty() );
	// fprintf_s때문에 euckr형으로 만들어야 함
	LPCTSTR _szPath = XE::MakeDocFullPath( _T(""), m_strLoginFile.c_str() );
	string strPath = SZ2C( _szPath );
	fopen_s( &fp, strPath.c_str(), "wt" );

	if( fp == NULL )
	{
		XLOGXN("save failed %s", _szPath );
		return FALSE;
	}
#if defined(_XUNIVERSAL) || defined(_XINDONESIA)
	if( m_typeLogin == xLT_UUID )
	{
		XBREAK( m_strUUID.empty() == true );
		fprintf_s( fp, "__uuid\r\n" );
		fprintf_s( fp, "\"%s\"\r\n", m_strUUID.c_str() );
		XLOGXN("save uuid=%s", C2SZ(m_strUUID.c_str()) );
	} else
#endif
#ifdef _XUNIVERSAL
	if( m_typeLogin == xLT_IDPW )
	{
		// 아니면 아이디/비번으로 로그인한것.
		fprintf_s( fp, "__idpw\r\n" );
		fprintf_s( fp, "\"%s\"\r\n", m_strID.c_str() );
		XLOGXN("id=%s", C2SZ(m_strID.c_str()) );
		fprintf_s( fp, "\"%s\"\r\n", m_strPassword.c_str() );
		XLOGXN("pw=%s", C2SZ(m_strPassword.c_str()) );
	} else
#endif
#ifdef _XLOGIN_FACEBOOK
	if( m_typeLogin == xLT_FACEBOOK )
	{
		// 페북으로 로그인한것
		fprintf_s( fp, "__facebook\r\n" );
		fprintf_s( fp, "\"%s\"\r\n", m_strFbUserId.c_str() );
		XLOGXN("save fb id=%s", C2SZ(m_strFbUserId.c_str()) );
		fprintf_s( fp, "\"%s\"\r\n", SZ2C(m_strFbUsername.c_str()) );
		XLOGXN("save fb username=%s", m_strFbUsername.c_str() );
		fprintf_s( fp, "\"%s\"\r\n", SZ2C(m_strFbName.c_str()) );
		XLOGXN("save fb name=%s", m_strFbName.c_str() );
	} else
#endif
	{
		fprintf_s( fp, "__none\r\n" );
		XBREAKF(1, "unknown m_typeLogin save" );
	}
	fclose( fp );
	XLOGXN("loginInfo save success %s", _szPath );
	return TRUE;
}
예제 #2
0
int XDownloadTask::AddRequest( LPCTSTR pathSub, LPCTSTR szURL, LPCTSTR szDstLocal )
{
	if( XBREAK( m_bGo == TRUE ) )
		return 0;
	// 다운 다받고 나서 콜백처리 아직 안했는데 애드되는걸 막기위함.
	if( XBREAK( m_bComplete == TRUE ) )
		return 0;
	xREQ_INFO info;
	
	info.strURL = SZ2C( szURL );	// 스레드안에서 SZ2C를 안쓰려고 여기서 변환함.
	info.strSubPath = SZ2C( pathSub );
	// 기본적으로 워킹폴더/szURL로 받는다. 다운경로에 pathSub는 무시된다.
	_tstring strPath = XE::GetPathWork();
	if( szDstLocal == NULL )
	{
		strPath += szURL;
		TCHAR szPath[ 1024 ];
		_tcscpy_s( szPath, strPath.c_str() );
		XPLATFORM_PATH( szPath );
		info.strToRename = SZ2C( szPath );
		_tstring path = XE::GetFilePath( szPath );
		_tstring filename = XE::GetFileName( szPath );
		strPath = path;	// 원본파일명으로 받을땐 파일명 앞에 특수문자를 붙여서 받은후 원본파일을 지우고 받은파일을 리네임시킨다.
		strPath += _T("__");
		strPath += filename;
	}
	else
	{
		if( XE::IsHave( XE::GetFileName( szDstLocal ) ) )
		{
			// dstLocal에 파일명이 지정되어있다면 
			// dstFullpath = 워킹폴더+szDstLocal
			strPath += szDstLocal;
//			_tcscat_s( szPath, szDstLocal );
		} else
		{
			// 파일명이 안지정되어 있다면
			// dstFullpath = 워킹폴더+szDstLocal+szURL
			strPath += szDstLocal;
			strPath += szURL;
//			_tcscat_s( szPath, szDstLocal );
//			_tcscat_s( szPath, szURL );
		}
	}
	TCHAR szPath[ 1024 ];
	_tcscpy_s( szPath, strPath.c_str() );
	XPLATFORM_PATH( szPath );
	info.strDstFullpath = SZ2C( szPath );	
	m_listReq.Add( info );
	return m_listReq.size();
}
예제 #3
0
파일: XGameLua.cpp 프로젝트: xahgo/tama
XGameLua::XGameLua() 
{ 
	Init(); 
	TCHAR szFullPath[ 1024 ];
#ifdef _SERVER
	_tcscpy_s( szFullPath, XE::_GetPathPackageRoot() );
	_tcscat_s( szFullPath, XE::MakePath( DIR_SCRIPTW, _T("") ) );
	SetModulePath( SZ2C( szFullPath ) );
#else
	_tcscpy_s( szFullPath, XE::GetPathWork() );
	_tcscat_s( szFullPath, XE::MakePath( DIR_SCRIPTW, _T("") ) );
	SetModulePath( SZ2C( szFullPath ) );
#endif
	//		RegisterGlobal();
}
예제 #4
0
파일: XLoginInfo.cpp 프로젝트: xahgo/tama
//====================================================
//#include "etc/InputMng.h"
BOOL XConnectINI::Load( LPCTSTR szFile )
{
	CToken token;
	if( token.LoadFromDoc( szFile, XE::TXT_EUCKR ) == xFAIL )
	{
#ifdef WIN32
  #ifdef _DEBUG
		strcpy_s( m_cIP, "192.168.100.44" );
  #else
		_tstring strDocPath = XE::MakeDocFullPath( _T(""), szFile );
		XALERT( "%s file not found", strDocPath.c_str() );
		exit(1);
//		strcpy_s( m_cIP, "49.239.180.50" );
  #endif 
#else
        if( XInputMng::s_Device == XE::DEVICE_IPAD ||
           XInputMng::s_Device == XE::DEVICE_IPOD )
            strcpy_s( m_cIP, XIP_LOGIN );
        else
        if( XInputMng::s_Device == XE::DEVICE_ANDROID )
            strcpy_s( m_cIP, XIP_LOGIN );
        else
        {
            strcpy_s( m_cIP, XIP_LOGIN );
    //		strcpy_s( m_cIP, "59.5.5.245" );
        }
#endif
        m_Port = XPORT_LOGIN;
		strcpy_s( m_cIPPatch, XIP_PATCH );
		strcpy_s( m_cID, "test3" );
		return FALSE;
	}
	AXLOGXN("try read ip");
	strcpy_s( m_cIP, Convert_TCHAR_To_char( token.GetToken() ) );		// ip
	AXLOGXN("login ip:%s", token.m_Token);
	if( XE::IsEmpty(m_cIP) )
		strcpy_s( m_cIP, "211.52.84.50" );
		
	AXLOGXN("try read port");
	m_Port = token.GetNumber();
	AXLOGXN("login port:%d", m_Port);
#ifdef _XBOT2
  #ifdef _XPATCH
  #error "봇 클라이언트에서는 _XPATCH를 빼시오"
  #endif
	token.GetNumber();		// dummy
	m_numBot = token.GetNumber();
#endif
#ifdef _XPATCH
	AXLOGXN("try read patch ip");
	strcpy_s( m_cIPPatch, SZ2C( token.GetToken() ) );	// patchsvr ip
	AXLOGXN("patch ip:%s", token.m_Token);
	if( XE::IsEmpty(m_cIPPatch) )
		strcpy_s( m_cIPPatch, "49.239.180.50" );
#endif

	return TRUE;
}
예제 #5
0
// full_list.txt를 쓴다.
// int XMain::WriteFullList( XArrayLinear<XPatch::XRES_INFO>& aryAll )
int XMain::WriteFullList( const XVector<XPatch::XRES_INFO>& aryAll )
{
    char cPath[ 1024 ];
    strcpy_s( cPath, SZ2C( XE::_GetPathPackageRoot() ) );
    strcat_s( cPath, "full_list.txt" );
    FILE *fp = NULL;
    fopen_s( &fp, cPath, "wt" );
    if( fp == NULL )
        return 0;
    char cBuff[ 1024 ];
//	XARRAYLINEAR_LOOP( aryAll, XPatch::XRES_INFO, info )
    for( auto& info : aryAll ) {
        strcpy_s( cBuff, SZ2C( info.strFile.c_str() ) );
        strReplace( cBuff, '\\', '/' );
        fprintf_s( fp, "\"%s\"\t%d\t%llu\n", cBuff, info.size, info.llChecksum );
    }
    fprintf_s( fp, "// num files %d \n", aryAll.size() );
    fclose( fp );
    return 1;
}
예제 #6
0
// core_list.txt를 쓴다.
//int XMain::WriteCoreList( XArrayLinear<_tstring>& aryCore )
int XMain::WriteCoreList( const XVector<_tstring>& aryCore )
{
    char cPath[ 1024 ];
    strcpy_s( cPath, SZ2C( XE::_GetPathPackageRoot() ) );
    strcat_s( cPath, "core_list.txt" );
    FILE *fp = NULL;
    fopen_s( &fp, cPath, "wt" );
    if( fp == NULL )
        return 0;
    char cBuff[ 1024 ];
//	XARRAYLINEAR_LOOP( aryCore, _tstring, strRes )
    for( auto& strRes : aryCore ) {
        strcpy_s( cBuff, SZ2C( strRes.c_str() ) );
        strReplace( cBuff, '\\', '/' );
        fprintf_s( fp, "\"%s\"\n", cBuff );
        //		fprintf_s( fp, "\"%s\"\n", SZ2C( strRes.c_str() ) );
    }
    fprintf_s( fp, "// num files %d \n", aryCore.size() );
    fclose( fp );
    return 1;
}
예제 #7
0
파일: XLoginInfo.cpp 프로젝트: xahgo/tama
BOOL XConnectINI::Save( LPCTSTR szFile )
{
	XLOGXN("save %s", szFile );
    FILE *fp = NULL;
    fp = fopen( XE::MakeDocFullPath( "", SZ2C(szFile) ), "wt" );
    if( fp == NULL )
	{
		XLOGXN("open failed %s", szFile );
        return FALSE;
	}
    fprintf(fp, "\"%s\"\r\n", m_cIP );
	XLOGXN("ip: %s", m_cIP );
    fprintf(fp, "%d\r\n", (int)m_Port );
	XLOGXN("port: %d", m_Port );
//    fprintf(fp, "\"%s\"\r\n", m_cID );
	fprintf(fp, "\"%s\"\r\n", m_cIPPatch );
	XLOGXN("patch ip: %s", m_cIPPatch );
    fclose(fp);
    
    return TRUE;
}
예제 #8
0
파일: XGameLua.cpp 프로젝트: xahgo/tama
XGameLua::XGameLua( const char *cLua ) 
{ 
	Init(); 
	/*
	루아 내부에서 다른루아를 include한다고 해도 어차피 마스터본에는 lua파일은 암호화되어 배포되어 include하지 못한다.
	그러므로 사전 컴파일된 루아 바이너리를 쓰는 방법을 찾아봐야 할듯.
	*/
	TCHAR szFullPath[ 1024 ];
#ifdef _SERVER
	_tcscpy_s( szFullPath, XE::_GetPathPackageRoot() );
	_tcscat_s( szFullPath, XE::MakePath( DIR_SCRIPTW, _T("") ) );
#else
	switch( XE::GetLoadType() )
	{
	case XE::xLT_PACKAGE_ONLY:
#if defined(WIN32) || defined(_VER_IOS)
		_tcscpy_s( szFullPath, XE::_GetPathPackageRoot() );
		_tcscat_s( szFullPath, XE::MakePath( DIR_SCRIPTW, _T("") ) );
#else
			XBREAKF(1, "do not use! package only type");
#endif
		break;
	case XE::xLT_WORK_FOLDER_ONLY:
	case XE::xLT_WORK_TO_PACKAGE:
	case XE::xLT_WORK_TO_PACKAGE_COPY:
		_tcscpy_s( szFullPath, XE::MakeWorkFullPath( DIR_SCRIPTW, _T("") ) );
		break;
	default:
		XBREAKF( 1, "unknown loadtype" );
	}
#endif
	XLOGXN("lua module path.....%s", szFullPath );
	SetModulePath( SZ2C( szFullPath ) );
	LoadScript( XE::MakePath( DIR_SCRIPTA, cLua ) );
//	RegisterGlobal();
}
예제 #9
0
파일: XLoginInfo.cpp 프로젝트: xahgo/tama
BOOL XLoginInfo::Load( LPCTSTR szFile )
{
	CToken token;
	m_strLoginFile = szFile;
    // 플랫폼에 관계없이 이 함수로 대동단결
	if( token.LoadFromDoc( szFile, XE::TXT_EUCKR ) == xFAIL )
	{
		XLOGXN("login.txt not found");
		return FALSE;
	}
	XLOGXN("load login.txt success!");
	if( token.GetToken() == NULL )
		return FALSE;
#ifdef _XLOGIN_UUID
	if( token == _T("__none") )
	{
		// login파일이 없으면 디폴트 uuid방식으로 로그인
		m_typeLogin = xLT_UUID;
		XLOGXN("uuid not found. create uuid now.");
		char cUUID[ 48 ];
		XPH::GetUUID( cUUID, 48 );
		m_strUUID = cUUID;
		XLOGXN("UUID:%s", C2SZ( cUUID ) );
		Save();
	} else
	if( token == _T("__uuid") )
	{
		if( token.GetToken() )
			m_strUUID = SZ2C(token.m_Token);
		else
			return FALSE;	// 파일이 깨진것 앱을 다시 설치해야함.
		m_typeLogin = xLT_UUID;
	} else
#endif
#ifdef _XLOGIN_FACEBOOK
	if( token == _T("__facebook") )
	{
		if( token.GetToken() )
			m_strFbUserId = SZ2C(token.m_Token);
		else
			return FALSE;
		//
		if( token.GetToken() )
			m_strFbUsername = token.m_Token;
		else
		{
			// 페북에 유저네임이 없을수도 있게 되어서 에러로 처리하지 않음.
//			m_strFbUserId.clear();
//			return FALSE;
		}
		m_typeLogin = xLT_FACEBOOK;
	} else
#endif
#ifdef _XUNIVERSAL
	if( token == _T("__idpw") )
	{
		//
		if( token.GetToken() )
			m_strID = SZ2C( token.m_Token );
		XLOGXN("login id:%s", token.m_Token);
		//
		if( token.GetToken() )
			m_strPassword = SZ2C( token.m_Token );
		else
		{
			m_strID.clear();
			return FALSE;
		}
		m_typeLogin = xLT_IDPW;
  #ifdef _DEV
		XLOGXN("login pw:%s", token.m_Token);
  #endif
	} else
#endif 
	{
		m_typeLogin = xLT_NONE;
		XBREAKF( 1, "unknown login identifier:%s", token.m_Token );
		return FALSE;
	}
// add facebook login mode
//////////////////////////////////////////////////////////////////////////
	m_bLoaded = TRUE;
	return TRUE;
}