Skip to content

Commit b0aa85d

Browse files
committed
modify:cdkey type added
added:login user support reply user info
1 parent d6e69a7 commit b0aa85d

File tree

5 files changed

+47
-11
lines changed

5 files changed

+47
-11
lines changed

XEngine_Module/XEngine_Verification/Verification_Define.h

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,14 @@ typedef enum
3939
}ENUM_VERIFICATION_MODULE_SERIAL_TYPE, * LPENUM_VERIFICATION_MODULE_SERIAL_TYPE;
4040
typedef enum
4141
{
42+
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_EXPIRED = -1, //已过期的版本,Authorize_CDKey_GetLeftTimer将返回失败
4243
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_UNKNOW = 0, //未注册,Authorize_CDKey_GetLeftTimer将返回失败
4344
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_TEMP = 1, //临时,Authorize_CDKey_GetLeftTimer一次后过期,需要Write
4445
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_TRY = 2, //试用
45-
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_OFFICIAL = 3, //正式版
46-
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_UNLIMIT = 4, //无限制版,永不过期.CDKEY不做任何验证
47-
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_EXPIRED = 5 //已过期的版本,Authorize_CDKey_GetLeftTimer将返回失败
46+
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_STANDARD = 3, //标准版,等同于正式版
47+
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_PROFESSIONAL = 4, //专业版
48+
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_ULTIMATE = 5, //旗舰版
49+
ENUM_VERIFICATION_MODULE_CDKEY_TYPE_UNLIMIT = 10 //无限制版,永不过期.CDKEY不做任何验证
4850
}ENUM_VERIFICATION_MODULE_CDKEY_TYPE, * LPENUM_VERIFICATION_MODULE_CDKEY_TYPE;
4951
typedef enum
5052
{
@@ -161,6 +163,12 @@ typedef struct
161163
}st_AuthUserInfo;
162164
XCHAR tszTimeList[2048];
163165
}VERIFICATION_XAUTHKEY;
166+
typedef struct
167+
{
168+
int nSerialType; //过期类型,参考:ENUM_VERIFICATION_MODULE_SERIAL_TYPE
169+
int nUserLevel; //用户等级
170+
int nLeftTime; //剩余时间,根据过期类型决定
171+
}VERIFICATION_USERINFO;
164172
//////////////////////////////////////////////////////////////////////////
165173
// 导出函数
166174
//////////////////////////////////////////////////////////////////////////
@@ -883,12 +891,17 @@ extern "C" bool Verification_XAuthNet_GetAuth();
883891
类型:整数型
884892
可空:Y
885893
意思:输入密码加密类型
894+
参数.七:pSt_UserInfo
895+
In/Out:In
896+
类型:数据结构指针
897+
可空:Y
898+
意思:输出用户信息
886899
返回值
887900
类型:逻辑型
888901
意思:是否成功
889902
备注:
890903
*********************************************************************/
891-
extern "C" bool Verification_XAuthNet_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, LPCXSTR lpszHWCode = NULL, XSHOT nDYCode = 0, XNETHANDLE xhToken = 0, XLONG dwCryption = 0);
904+
extern "C" bool Verification_XAuthNet_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, LPCXSTR lpszHWCode = NULL, XSHOT nDYCode = 0, XNETHANDLE xhToken = 0, XLONG dwCryption = 0, VERIFICATION_USERINFO* pSt_UserInfo = NULL);
892905
/********************************************************************
893906
函数名称:Verification_XAuthNet_Logout
894907
函数功能:用户登出协议

XEngine_Module/XEngine_Verification/Verification_XAuth/Verification_XAuthKey.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -677,15 +677,15 @@ bool CVerification_XAuthKey::Verification_XAuthKey_UserRegister(VERIFICATION_XAU
677677
//次数验证
678678
bSerial = true;
679679
pSt_AuthLocal->st_AuthRegInfo.enSerialType = ENUM_VERIFICATION_MODULE_SERIAL_TYPE_TIME;
680-
pSt_AuthLocal->st_AuthRegInfo.enRegType = ENUM_VERIFICATION_MODULE_CDKEY_TYPE_OFFICIAL;
680+
pSt_AuthLocal->st_AuthRegInfo.enRegType = ENUM_VERIFICATION_MODULE_CDKEY_TYPE_STANDARD;
681681
Verification_XAuthKey_BuildKeyTime(pSt_AuthLocal, pSt_AuthLocal->st_AuthSerial.st_TimeLimit.nTimeCount);
682682
}
683683
else if (0 == _tcsxncmp(pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataSerial, lpszSerialStr, _tcsxlen(pSt_AuthLocal->st_AuthSerial.st_DataLimit.tszDataSerial)))
684684
{
685685
//日期序列
686686
bSerial = true;
687687
pSt_AuthLocal->st_AuthRegInfo.enSerialType = ENUM_VERIFICATION_MODULE_SERIAL_TYPE_CUSTOM;
688-
pSt_AuthLocal->st_AuthRegInfo.enRegType = ENUM_VERIFICATION_MODULE_CDKEY_TYPE_OFFICIAL;
688+
pSt_AuthLocal->st_AuthRegInfo.enRegType = ENUM_VERIFICATION_MODULE_CDKEY_TYPE_STANDARD;
689689
XENGINE_LIBTIME st_LibTime = {};
690690
BaseLib_Time_GetSysTime(&st_LibTime);
691691
if (pSt_AuthLocal->st_AuthSerial.st_DataLimit.bTimeAdd)

XEngine_Module/XEngine_Verification/Verification_XAuth/Verification_XAuthNet.cpp

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -401,12 +401,17 @@ bool CVerification_XAuthNet::Verification_XAuthNet_GetAuth()
401401
类型:整数型
402402
可空:Y
403403
意思:输入密码加密类型
404+
参数.七:pSt_UserInfo
405+
In/Out:In
406+
类型:数据结构指针
407+
可空:Y
408+
意思:输出用户信息
404409
返回值
405410
类型:逻辑型
406411
意思:是否成功
407412
备注:
408413
*********************************************************************/
409-
bool CVerification_XAuthNet::Verification_XAuthNet_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, LPCXSTR lpszHWCode /* = NULL */, XSHOT nDYCode /* = 0 */, XNETHANDLE xhToken /* = 0 */, XLONG dwCryption /* = 0 */)
414+
bool CVerification_XAuthNet::Verification_XAuthNet_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, LPCXSTR lpszHWCode /* = NULL */, XSHOT nDYCode /* = 0 */, XNETHANDLE xhToken /* = 0 */, XLONG dwCryption /* = 0 */, VERIFICATION_USERINFO* pSt_UserInfo /* = NULL */)
410415
{
411416
Verification_IsErrorOccur = false;
412417

@@ -495,6 +500,20 @@ bool CVerification_XAuthNet::Verification_XAuthNet_Login(LPCXSTR lpszUser, LPCXS
495500
Verification_dwErrorCode = XClient_GetLastError();
496501
return false;
497502
}
503+
if (st_ProtocolHdr.unPacketSize == sizeof(VERIFICATION_USERINFO))
504+
{
505+
if (ENUM_XENGINE_PROTOCOLHDR_CRYPTO_TYPE_XCRYPT == st_ProtocolHdr.wCrypto)
506+
{
507+
XCHAR tszCodecBuffer[2048] = {};
508+
st_ProtocolHdr.wCrypto = ENUM_XENGINE_PROTOCOLHDR_CRYPTO_TYPE_XCRYPT;
509+
Cryption_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszCodecBuffer, tszPassStr);
510+
memcpy(&st_UserInfo, tszCodecBuffer, sizeof(VERIFICATION_USERINFO));
511+
}
512+
else
513+
{
514+
memcpy(&st_UserInfo, ptszMsgBuffer, sizeof(VERIFICATION_USERINFO));
515+
}
516+
}
498517
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
499518
//判断是否登录协议
500519
if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN != st_ProtocolHdr.unOperatorCode)
@@ -513,6 +532,10 @@ bool CVerification_XAuthNet::Verification_XAuthNet_Login(LPCXSTR lpszUser, LPCXS
513532
m_bRun = true;
514533
m_bLogin = true;
515534
m_bAuth = true;
535+
if (NULL != pSt_UserInfo)
536+
{
537+
*pSt_UserInfo = st_UserInfo;
538+
}
516539
//登录成功,创建线程
517540
pSTDThread = std::make_unique<std::thread>(Verification_XAuthNet_Thread, this);
518541
if (NULL == pSTDThread)

XEngine_Module/XEngine_Verification/Verification_XAuth/Verification_XAuthNet.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class CVerification_XAuthNet
2929
bool Verification_XAuthNet_Connect(LPCXSTR lpszClientAddr, int nPort, LPCXSTR lpszPass = NULL);
3030
bool Verification_XAuthNet_Close();
3131
bool Verification_XAuthNet_GetAuth();
32-
bool Verification_XAuthNet_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, LPCXSTR lpszHWCode = NULL, XSHOT nDYCode = 0, XNETHANDLE xhToken = 0, XLONG dwCryption = 0);
32+
bool Verification_XAuthNet_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, LPCXSTR lpszHWCode = NULL, XSHOT nDYCode = 0, XNETHANDLE xhToken = 0, XLONG dwCryption = 0, VERIFICATION_USERINFO* pSt_UserInfo = NULL);
3333
bool Verification_XAuthNet_Logout(LPCXSTR lpszUser, LPCXSTR lpszPass, XLONG dwCryption = 0);
3434
protected:
3535
static XHTHREAD XCALLBACK Verification_XAuthNet_Thread(XPVOID lParam);
@@ -39,7 +39,7 @@ class CVerification_XAuthNet
3939
bool m_bAuth = false;
4040
XSOCKET m_hSocket = 0;
4141
XCHAR tszPassStr[128] = {};
42+
VERIFICATION_USERINFO st_UserInfo = {};
4243
private:
4344
std::unique_ptr<std::thread> pSTDThread;
44-
public:
4545
};

XEngine_Module/XEngine_Verification/pch.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,9 @@ extern "C" bool Verification_XAuthNet_GetAuth()
157157
{
158158
return m_XAuthNetVerification.Verification_XAuthNet_GetAuth();
159159
}
160-
extern "C" bool Verification_XAuthNet_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, LPCXSTR lpszHWCode, XSHOT nDYCode, XNETHANDLE xhToken, XLONG dwCryption)
160+
extern "C" bool Verification_XAuthNet_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, LPCXSTR lpszHWCode, XSHOT nDYCode, XNETHANDLE xhToken, XLONG dwCryption, VERIFICATION_USERINFO* pSt_UserInfo)
161161
{
162-
return m_XAuthNetVerification.Verification_XAuthNet_Login(lpszUser, lpszPass, lpszHWCode, nDYCode, xhToken, dwCryption);
162+
return m_XAuthNetVerification.Verification_XAuthNet_Login(lpszUser, lpszPass, lpszHWCode, nDYCode, xhToken, dwCryption, pSt_UserInfo);
163163
}
164164
extern "C" bool Verification_XAuthNet_Logout(LPCXSTR lpszUser, LPCXSTR lpszPass, XLONG dwCryption)
165165
{

0 commit comments

Comments
 (0)