#pragma once enum eURLType { _URLTYPE_STRUCTINFO, _URLTYPE_RESOURCE, _URLTYPE_EXE, //_URLTYPE_PARTIAL_RESOURCE, }; struct TURLInfo { int nType; TCHAR szInfo[256]; }; struct TFtpInfo { TCHAR szIP[IPLENMAX]; unsigned short nPort; TCHAR szID[IDLENMAX]; TCHAR szPass[PASSWORDLENMAX]; std::vector URLList; }; struct TPartitionInfo { TCHAR szPartitionName[256]; int nPID; }; struct TMonitorUserData { char szUserName[NAMELENMAX]; char szPassWord[PASSWORDLENMAX]; int nMonitorLevel; //eServerMonitorLevel bool bDuplicateLogin; //Áߺ¹·Î±×Àΰ¡´É }; //½ÇÀç ±¸¼º ¹× °ËÁõÀ» À§ÇÑ xmlÆÄÀÏÀ» ·Îµå¸¸ ÇÏ´Â ±¸Á¶Ã¼ À̰ÍÀ» ±âÁØÀ¸·Î ¼­¹ö µ¥ÀÌŸ¸¦ ±¸¼ºÀ» ÇÏ°Ô µÈ´Ù. struct TStructSocketMax { int nSocketMax; //Client Accept°¡ ÀÖ´Â ¼­¹öÀÇ ¼ÒÄÏÇ® »çÀÌÁî void InitSocketMax() { nSocketMax = 3000; } }; struct TDolbyAxon { int nDolbyWorldID; WCHAR wszPrivateDolbyIP[IPLENMAX]; WCHAR wszPublicDolbyIP[IPLENMAX]; int nDolbyAPort; int nDolbyCPort; TDolbyAxon() { nDolbyWorldID = 0; memset(wszPrivateDolbyIP, 0, sizeof(wszPrivateDolbyIP)); memset(wszPublicDolbyIP, 0, sizeof(wszPublicDolbyIP)); nDolbyAPort = 0; nDolbyCPort = 0; } }; struct TStructDolbyAxon { std::vector vDolbyAxonInfo; void InitDolbyAxon() { vDolbyAxonInfo.clear(); } }; struct TStructDBMiddleWare { int nDBMiddleWareAcceptPort; //µðºñ¹Ìµé¿þ¾îÀÇ ¼­¹ö(°ÔÀÓ ºô¸®Áö)¾ï¼ÁÆ®Æ÷Æ® void InitDBMiddleWare() { nDBMiddleWareAcceptPort = 0; } }; struct TStructLogServer { int nLogServerAcceptPort; //·Î±× ¼­¹öÀÇ ¾ï¼ÁÆ®Æ÷Æ® void InitLogServer() { nLogServerAcceptPort = 0; } }; struct TStructLoginServer { int nLoginMasterAcceptPort; //·Î±×ÀÎ ¼­¹öÀÇ ¸¶½ºÅÍ ¾ï¼ÁÆ®Æ÷Æ® int nLoginClientAcceptPort; //·Î±×ÀÎ ¼­¹öÀÇ Å¬¶óÀÌ¾ðÆ® ¾ï¼ÁÆ®Æ÷Æ® void InitLoginServer() { nLoginClientAcceptPort = 0; nLoginMasterAcceptPort = 0; } }; struct TStructMasterServer { int nMasterVillageAcceptPort; //¸¶½ºÅÍ ¼­¹öÀÇ ºô¸®Áö ¾ï¼ÁÆ®Æ÷Æ® int nMasterGameAcceptPort; //¸¶½ºÅÍ ¼­¹öÀÇ °ÔÀÓ ¾ï¼ÁÆ®Æ÷Æ® void InitMasterServer() { nMasterGameAcceptPort = 0; nMasterVillageAcceptPort = 0; } }; struct TStructVillageServer { int nVillageID; //µðÆúÆ®¿¡´Â ¼¼ÆÃµÇÁö ¾Ê´Â´Ù. int nVillageClientAcceptPort; //ºô¸®Áö ¼­¹öÀÇ Å¬¶óÀÌ¾ðÆ® ¾ï¼ÁÆ®Æ÷Æ® int nCombineWorld; void InitVillageServer() { nVillageID = 0; nVillageClientAcceptPort = 0; nCombineWorld = 0; } }; struct TStructGameServer { bool bPreLoad; //µðÆúÆ®´Â ÄÑÁ®ÀÖ´Ù. int nGameClientAcceptUDPPort; //°ÔÀÓ ¼­¹öÀÇ Å¬¶óÀÌ¾ðÆ® UDP¾ï¼ÁÆ®Æ÷Æ® int nGameClientAcceptTCPPort; //°ÔÀÓ ¼­¹öÀÇ Å¬¶óÀÌ¾ðÆ® TCP¾ï¼ÁÆ®Æ÷Æ® int nGameAffinityType; //µðÆúÆ®´Â ÇÏÀ̺긮µå bool bGameWorldCombine; //¿ùµåÅëÇÕ°ÔÀÓ·ë void InitGameServer() { bPreLoad = true; nGameClientAcceptTCPPort = 0; nGameClientAcceptUDPPort = 0; nGameAffinityType = 1; bGameWorldCombine = false; } }; struct TStructCashServer { int nCashAcceptPort; //ij½Ã¼­¹öÀÇ ¾ï¼ÁÆ®Æ÷Æ® void InitCashServer() { nCashAcceptPort = 0; } }; struct TDefaultServerInfo : public TStructSocketMax, TStructDBMiddleWare, TStructLogServer, TStructLoginServer, TStructMasterServer, TStructVillageServer, TStructGameServer, TStructCashServer, TStructDolbyAxon { TDefaultServerInfo::TDefaultServerInfo() { Init(); } void Init() { InitSocketMax(); InitDBMiddleWare(); InitLogServer(); InitLoginServer(); InitMasterServer(); InitVillageServer(); InitGameServer(); InitCashServer(); InitDolbyAxon(); } }; struct TSQLConnectionInfo { int nPort; WCHAR wszIP[IPLENMAX]; WCHAR wszDBID[IDLENMAX]; WCHAR wszDBName[DBNAMELENMAX]; }; struct TDoorsConnectionInfo { int nPort; WCHAR wszIP[IPLENMAX]; }; struct TDefaultDatabaseInfo { TSQLConnectionInfo MemberShipDB; //¸â¹ö½±ÄÁ³Ø¼ÇÀº ÇϳªÀÌ´Ù. TSQLConnectionInfo ServerLogDB; //·Î±×µðºñ´Â Çϳª¸¸ »ç¿ëÇÑ´Ù. std::map WorldDB; //º¹¼ö°³ÀÇ ¿ùµåÄÁ³Ø¼Ç Á¤º¸¸¦ °®´Â´Ù. first key = worldid void Init() { memset(&MemberShipDB, 0, sizeof(TSQLConnectionInfo)); memset(&ServerLogDB, 0, sizeof(TSQLConnectionInfo)); WorldDB.clear(); } }; struct TSIDBaseConnectionInfo { int nType; int nSID; }; struct TDefaultServerConstructData { int nSID; WCHAR wszType[16]; int nServerType; int nAssignedLauncher; WCHAR wszExcutePath[MAX_PATH]; WCHAR wszExcuteFile[EXCUTELENMAX]; int nForServerType; //sid base dbconnectionÀ» ÀÚµ¿»ý¼ºÇϱâ À§ÇÑ µ¥ÀÌÅí int nServerNo; //¼­¹ö³Ñ¹ö (ij½Ã¿ë : Ÿ ¼­¹ö ÇÊ¿ä½Ã È®Àå°¡´É) std::vector nWorldIDList; std::vector SIDConnectionList; }; struct TDBMiddleWareConstructData : public TDefaultServerConstructData, TStructDBMiddleWare { TDBMiddleWareConstructData() { InitDBMiddleWare(); } }; struct TLoginServerConstructData : public TDefaultServerConstructData, TStructLoginServer, TStructSocketMax { TLoginServerConstructData() { InitSocketMax(); InitLoginServer(); } }; struct TMasterServerConstructData : public TDefaultServerConstructData, TStructMasterServer, TStructSocketMax { TMasterServerConstructData() { InitSocketMax(); InitMasterServer(); } }; struct TGameServerConstructData : public TDefaultServerConstructData, TStructGameServer, TStructSocketMax { TGameServerConstructData() { InitSocketMax(); InitGameServer(); } }; struct TVillageServerConstructData : public TDefaultServerConstructData, TStructVillageServer, TStructSocketMax { TVillageServerConstructData() { InitSocketMax(); InitVillageServer(); } }; struct TLogServerConstructData : public TDefaultServerConstructData, TStructLogServer { TLogServerConstructData() { InitLogServer(); } }; struct TCashServerConstructData : public TDefaultServerConstructData, TStructCashServer { TCashServerConstructData() { InitCashServer(); } }; struct TPreServerStructData { std::map PreStructList; }; struct TServerExcuteData { int nSID; //»ý¼ºµÇ´Â ¼­¹öÀÇ °íÀ¯¹øÈ£ WCHAR wszType[8]; int nPatchType; int nServerType; int nAssignedLauncherID; int nCreateCount; int nCreateIndex; std::wstring wstrExcuteData; TServerExcuteData() { nSID = 0; memset(wszType, 0, sizeof(wszType)); nServerType = 0; nAssignedLauncherID = 0; nCreateCount = 0; nCreateIndex = 0; nPatchType = -1; } }; struct TNetLauncher { int nWID; //Á¾¼ÓµÇ´Â ¿ùµå ¾ÆÀ̵ð int nPID; //Á¾¼ÓµÇ´Â ÆÄƼ¼Ç ¾ÆÀ̵ð int nID; TCHAR szIP[IPLENMAX]; WCHAR wszPublicIP[IPLENMAX]; unsigned long nIP; std::vector ExcuteList; }; struct tMonitorChannelInfo { int nWorldID; int nManagedID; sChannelInfo Info; }; //for convert struct TNetExcuteCommand { int nSID; //»ý¼ºµÇ´Â ¼­¹öÀÇ °íÀ¯¹øÈ£ TCHAR szType[8]; char cType; int nAssignedLauncherID; WCHAR szExcuteFile[EXCUTELENMAX]; WCHAR szCmd[EXCUTECMDMAX]; std::vector > strConList; int nWorldID; int nFor; int nVillageID; //for dbserver std::vector > vAssignedTypeList; int nAssingedType; TNetExcuteCommand() { nSID = 0; memset(szType, 0, sizeof(szType)); cType = 0; nAssignedLauncherID = 0; memset(szExcuteFile, 0, sizeof(szExcuteFile)); memset(szCmd, 0, sizeof(szCmd)); nWorldID = 0; nFor = MANAGED_TYPE_NONE; nAssingedType = 0; nVillageID = 0; } }; struct TWorldConnectionInfo { int nWorldID; int nVillagePort; int nGamePort; WCHAR wszIP[IPLENMAX]; }; #include "DNDataManagerBase.h" class CDataManager : public CDNDataManagerBase { public: CDataManager(); ~CDataManager(); static CDataManager * GetInstance(); bool LoadUser(); bool LoadStruct(); bool ConvertStruct(); bool LoadServerConstructData(); bool SaveUser(); int ChangeUserPassword(TChangePassword* pData); int VerifyNetLauncher(unsigned long nIP); int GetLauncherCount() { return (int)m_NetLauncherList.size(); } const TCHAR * GetIP() { return m_szServiceIP; } const TNetLauncher * GetLauncherInfo(unsigned int nIP); const TNetLauncher * GetLauncherInfobyID(int nNID); bool IsNeedOtherExcutePath(int nID); int GetLauncherCnt() { return (int)m_NetLauncherList.size(); } void SetLauncherPublicIP(int nID, char* szPublicIP); void GetLauncherIds(std::vector * pList); void GetLauncherIds(std::map * pList); void GetAssingedPatchTypeList(int nID, std::list * pList); int GetAssignedCreateLastIndex(int nID, const TCHAR * pType); void SetAssignedCreateCount(int nID, const TCHAR * pType, int nCreateCount); void GetCommandList(std::vector * pvList); void GetCommandListByPID(int nPID, std::vector * pvList); void GetExeCommandList(int nNID, std::vector * pvList); const TServerExcuteData * GetCommand(int nSID); // bool CheckMonitorUser(const char * pName, const char * pPass, int &nLevel, bool &bCanDuplicate); inline WCHAR* GetDoorsIP(void){ return m_DoorsInfo.wszIP; } inline int GetDoorsPort(void){ return m_DoorsInfo.nPort; } #if defined (_SERVICEMANAGER_EX) public: void GetPartitionList(OUT vector& list) const; void GetWorldList(OUT vector& list) const; void GetLauncherList(OUT vector& list) const; void GetPartitionText(OUT wchar_t text[256]) const; const TDefaultServerInfo& GetDefaultServerInfo() const { return m_DefaultServerConstructInfo; } const TDefaultDatabaseInfo& GetDefaultDatabaseInfo() const { return m_DefaultSQLData; } #endif // #if defined (_SERVICEMANAGER_EX) bool IsFirstGameCon(int nSID); private: map m_NetLauncherList; map m_PartitionList; vector m_MonitorUserData; TDefaultServerInfo m_DefaultServerConstructInfo; TDefaultDatabaseInfo m_DefaultSQLData; TPreServerStructData m_PreServerStructData; vector m_vWorldList; TDoorsConnectionInfo m_DoorsInfo; map m_ServerExcuteData; bool ConstructServerStruct(); void ClearPreConstructData(); void GetServerCountFromPreconstruct(int nWorldID, int nType, vector &vConstDatalist); int GetAssingedUserCount(int nWorldID, int nVillageID); void MakeWord(const TDefaultServerConstructData * pConstruct, wstring &wstrMark, int nCreateIndex, int nCreateCount); void MakeDBConInfo(const TSQLConnectionInfo * pInfo, wstring &wstrOut); void MakeWorldDBConInfo(vector &vWorldIDs, wstring &wstrOut); bool MakeConInfo(int nType, int nSID, wstring &wstr, bool bCalledGame = false, vector * pvWorldID = NULL); void MakeDolbyInfo(int nWorldID, wstring &wstr); bool MakeFirstGameCon(wstring &wstr, int &nFarmServerID); TCHAR m_szServiceIP[IPLENMAX]; USHORT m_nServicePort; void ClearData(); void ClearUserData(); void CheckChannelInfo() const; };