1- #ifdef _WINDOWS
1+ #ifdef _MSC_BUILD
22#include < Windows.h>
33#include < tchar.h>
44#pragma comment(lib,"Ws2_32.lib")
@@ -32,16 +32,19 @@ using namespace std;
3232// Linux::g++ -std=c++17 -Wall -g Auth_APPClient.cpp -o Auth_APPClient.exe -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_BaseLib -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Core -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Client -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_NetHelp -lXEngine_BaseLib -lXEngine_OPenSsl -lXClient_Socket -lNetHelp_APIClient -lpthread -ljsoncpp -Wl,-rpath=../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_BaseLib:../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Core:../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Client:../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_NetHelp,--disable-new-dtags
3333// Macos::g++ -std=c++17 -Wall -g Auth_APPClient.cpp -o Auth_APPClient.exe -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_BaseLib -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Core -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_Client -L ../../../XEngine/XEngine_Release/XEngine_Linux/Ubuntu/XEngine_NetHelp -lXEngine_BaseLib -lXEngine_OPenSsl -lXClient_Socket -lNetHelp_APIClient -lpthread -ljsoncpp
3434
35- BOOL bRun = TRUE ;
36- BOOL bLogin = TRUE ;
37- BOOL bTimeOut = TRUE ;
38- BOOL bEncrypto = FALSE ;
39-
40- SOCKET m_Socket = 0 ;
41- LPCTSTR lpszUser = _T(" 123123aa" );
42- LPCTSTR lpszPass = _T(" 123123" );
43- LPCTSTR lpszSerial = _T(" XAUTH-XYRYM-ZAA10-59NKW-KOFLP-35838-ZXC36-ZOVTH" );
44- LPCTSTR lpszEmail = _T(
" [email protected] " );
35+ #define _DYNAMIC_CODE
36+ bool bRun = true ;
37+ bool bLogin = true ;
38+ bool bTimeOut = true ;
39+ bool bEncrypto = false ;
40+ XNETHANDLE xhToken = 0 ;
41+ int nDYCode = 0 ;
42+
43+ XSOCKET m_Socket = 0 ;
44+ LPCXSTR lpszUser = _T(" 123123aa" );
45+ LPCXSTR lpszPass = _T(" 123123" );
46+ LPCXSTR lpszSerial = _T(" XAUTH-XYRYM-ZAA10-59NKW-KOFLP-35838-ZXC36-ZOVTH" );
47+ LPCXSTR lpszEmail = _T(
" [email protected] " );
4548__int64x nPhoneNumber = 1366666666 ;
4649__int64x nIDNumber = 511025111111111111 ;
4750
@@ -50,13 +53,13 @@ XHTHREAD AuthClient_Thread()
5053 while (bRun)
5154 {
5255 int nMsgLen = 0 ;
53- TCHAR *ptszMsgBuffer;
56+ XCHAR *ptszMsgBuffer;
5457 XENGINE_PROTOCOLHDR st_ProtocolHdr;
5558
5659 memset (&st_ProtocolHdr, ' \0 ' , sizeof (XENGINE_PROTOCOLHDR));
5760 if (XClient_TCPSelect_RecvPkt (m_Socket, &ptszMsgBuffer, &nMsgLen, &st_ProtocolHdr))
5861 {
59- TCHAR tszMsgBuffer[4096 ];
62+ XCHAR tszMsgBuffer[4096 ];
6063 memset (tszMsgBuffer, ' \0 ' , sizeof (tszMsgBuffer));
6164
6265 if (nMsgLen > 0 && bEncrypto)
@@ -71,7 +74,7 @@ XHTHREAD AuthClient_Thread()
7174
7275 if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN == st_ProtocolHdr.unOperatorCode )
7376 {
74- bLogin = FALSE ;
77+ bLogin = false ;
7578 if (0 == st_ProtocolHdr.wReserve )
7679 {
7780 printf (_T (" 登录成功\n " ));
@@ -83,7 +86,7 @@ XHTHREAD AuthClient_Thread()
8386 }
8487 else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_TIMEDOUT == st_ProtocolHdr.unOperatorCode )
8588 {
86- bTimeOut = FALSE ;
89+ bTimeOut = false ;
8790 printf (_T (" 用户过期\n " ));
8891 }
8992 else
@@ -102,7 +105,7 @@ int AuthClient_Register()
102105 Json::Value st_JsonRoot;
103106 Json::Value st_JsonUserInfo;
104107 Json::Value st_JsonUserTable;
105- LPCTSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/register" );
108+ LPCXSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/register" );
106109
107110 st_JsonUserInfo[" tszUserName" ] = lpszUser;
108111 st_JsonUserInfo[" tszUserPass" ] = lpszPass;
@@ -129,7 +132,7 @@ int AuthClient_Pay()
129132 int nHTTPCode = 0 ;
130133 Json::Value st_JsonRoot;
131134 Json::Value st_JsonObject;
132- LPCTSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/pay" );
135+ LPCXSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/pay" );
133136
134137 st_JsonObject[" tszSerialNumber" ] = lpszSerial;
135138 st_JsonObject[" tszUserName" ] = lpszUser;
@@ -144,9 +147,39 @@ int AuthClient_Pay()
144147
145148 return 0 ;
146149}
150+ int AuthClient_DynamicCode ()
151+ {
152+ int nHTTPCode = 0 ;
153+ LPCXSTR lpszUrl = _T (" http://127.0.0.1:5302/api?function=dcode&user=get" );
154+
155+ int nMsgLen = 0 ;
156+ CHAR* ptszMsgBuffer = NULL ;
157+ APIClient_Http_Request (_T (" GET" ), lpszUrl, NULL , NULL , &ptszMsgBuffer, &nMsgLen);
158+ printf (" AuthClient_DynamicCode:\n %s\n " , ptszMsgBuffer);
159+
160+ Json::Value st_JsonRoot;
161+ JSONCPP_STRING st_JsonError;
162+ Json::CharReaderBuilder st_ReaderBuilder;
163+ std::unique_ptr<Json::CharReader> const pSt_JsonReader (st_ReaderBuilder.newCharReader ());
164+ if (!pSt_JsonReader->parse (ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError))
165+ {
166+ return 0 ;
167+ }
168+ XCHAR tszDCodeStr[64 ];
169+ XCHAR tszTokenStr[64 ];
170+
171+ memset (tszDCodeStr, ' \0 ' , sizeof (tszDCodeStr));
172+ memset (tszTokenStr, ' \0 ' , sizeof (tszTokenStr));
173+
174+ nDYCode = st_JsonRoot[" nDynamicCode" ].asUInt ();
175+ xhToken = st_JsonRoot[" xhToken" ].asUInt64 ();
176+ BaseLib_OperatorMemory_FreeCStyle ((XPPMEM)&ptszMsgBuffer);
177+
178+ return 0 ;
179+ }
147180int AuthClient_Login ()
148181{
149- TCHAR tszMsgBuffer[2048 ];
182+ XCHAR tszMsgBuffer[2048 ];
150183 XENGINE_PROTOCOLHDR st_ProtocolHdr; // 协议头
151184 XENGINE_PROTOCOL_USERAUTH st_AuthUser;
152185
@@ -164,14 +197,20 @@ int AuthClient_Login()
164197 strcpy (st_AuthUser.tszUserName , lpszUser);
165198 strcpy (st_AuthUser.tszUserPass , lpszPass);
166199
200+ if (nDYCode > 0 )
201+ {
202+ st_ProtocolHdr.xhToken = xhToken;
203+ _stprintf (st_AuthUser.tszDCode , _T (" %d" ), nDYCode);
204+ }
205+
167206 int nMsgLen = 0 ;
168207 if (bEncrypto)
169208 {
170- TCHAR tszCodecBuffer[2048 ];
209+ XCHAR tszCodecBuffer[2048 ];
171210 memset (tszCodecBuffer, ' \0 ' , sizeof (tszCodecBuffer));
172211
173212 st_ProtocolHdr.wCrypto = ENUM_XENGINE_PROTOCOLHDR_CRYPTO_TYPE_XCRYPT;
174- OPenSsl_XCrypto_Encoder ((LPCTSTR )&st_AuthUser, (int *)&st_ProtocolHdr.unPacketSize , (UCHAR*)tszCodecBuffer, lpszPass);
213+ OPenSsl_XCrypto_Encoder ((LPCXSTR )&st_AuthUser, (int *)&st_ProtocolHdr.unPacketSize , (UCHAR*)tszCodecBuffer, lpszPass);
175214
176215 memcpy (tszMsgBuffer, &st_ProtocolHdr, sizeof (XENGINE_PROTOCOLHDR));
177216 memcpy (tszMsgBuffer + sizeof (XENGINE_PROTOCOLHDR), tszCodecBuffer, st_ProtocolHdr.unPacketSize );
@@ -200,7 +239,7 @@ int AuthClient_Login()
200239int AuthClient_Notice ()
201240{
202241 int nHTTPCode = 0 ;
203- LPCTSTR lpszUrl = _T (" http://127.0.0.1:5302/api?function=notice" );
242+ LPCXSTR lpszUrl = _T (" http://127.0.0.1:5302/api?function=notice" );
204243
205244 int nMsgLen = 0 ;
206245 CHAR* ptszMsgBuffer = NULL ;
@@ -217,7 +256,7 @@ int AuthClient_Notice()
217256 }
218257 for (unsigned int i = 0 ; i < st_JsonRoot[" Array" ].size (); i++)
219258 {
220- TCHAR tszMsgBuffer[2048 ];
259+ XCHAR tszMsgBuffer[2048 ];
221260 memset (tszMsgBuffer, ' \0 ' , sizeof (tszMsgBuffer));
222261 Json::Value st_JsonArray = st_JsonRoot[" Array" ][i];
223262
@@ -234,7 +273,7 @@ int AuthClient_GetPass()
234273 int nHTTPCode = 0 ;
235274 Json::Value st_JsonRoot;
236275 Json::Value st_JsonObject;
237- LPCTSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/pass" );
276+ LPCXSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/pass" );
238277
239278 st_JsonObject[" tszUserName" ] = lpszUser;
240279 st_JsonObject[" tszEMailAddr" ] = lpszEmail;
@@ -256,7 +295,7 @@ int AuthClient_GetTime()
256295 int nHTTPCode = 0 ;
257296 Json::Value st_JsonRoot;
258297 Json::Value st_JsonObject;
259- LPCTSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/time" );
298+ LPCXSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/time" );
260299
261300 st_JsonObject[" tszUserName" ] = lpszUser;
262301 st_JsonObject[" tszUserPass" ] = lpszPass;
@@ -275,7 +314,7 @@ int AuthClient_Delete()
275314 int nHTTPCode = 0 ;
276315 Json::Value st_JsonRoot;
277316 Json::Value st_JsonObject;
278- LPCTSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/delete" );
317+ LPCXSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/delete" );
279318
280319 st_JsonObject[" tszUserName" ] = lpszUser;
281320 st_JsonObject[" tszUserPass" ] = lpszPass;
@@ -298,8 +337,8 @@ int AuthClient_Try()
298337 int nHTTPCode = 0 ;
299338 Json::Value st_JsonRoot;
300339 Json::Value st_JsonObject;
301- LPCTSTR lpszSerialNet = _T (" cpuid:112233" ); // 通过此可以做临时网络验证,安全性比本地临时验证高
302- LPCTSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/try" );
340+ LPCXSTR lpszSerialNet = _T (" cpuid:112233" ); // 通过此可以做临时网络验证,安全性比本地临时验证高
341+ LPCXSTR lpszUrl = _T (" http://127.0.0.1:5302/auth/user/try" );
303342
304343 st_JsonObject[" tszSerial" ] = lpszSerialNet;
305344 st_JsonRoot[" st_UserTry" ] = st_JsonObject;
@@ -314,12 +353,12 @@ int AuthClient_Try()
314353}
315354int main ()
316355{
317- #ifdef _WINDOWS
356+ #ifdef _MSC_BUILD
318357 WSADATA st_WSAData;
319358 WSAStartup (MAKEWORD (2 , 2 ), &st_WSAData);
320359#endif
321360 int nPort = 5300 ;
322- LPCTSTR lpszAddr = _T (" 127.0.0.1" );
361+ LPCXSTR lpszAddr = _T (" 127.0.0.1" );
323362
324363 if (!XClient_TCPSelect_Create (&m_Socket, lpszAddr, nPort))
325364 {
@@ -330,18 +369,21 @@ int main()
330369
331370 AuthClient_Register ();
332371 AuthClient_Pay ();
372+ #ifdef _DYNAMIC_CODE
373+ AuthClient_DynamicCode ();
374+ #endif
333375 AuthClient_Login ();
334376 AuthClient_Notice ();
335377 AuthClient_GetPass ();
336378 AuthClient_GetTime ();
337379 AuthClient_Delete ();
338380 AuthClient_Try ();
339381
340- bRun = FALSE ;
382+ bRun = false ;
341383 XClient_TCPSelect_Close (m_Socket);
342384 pSTDThread.join ();
343385
344- #ifdef _WINDOWS
386+ #ifdef _MSC_BUILD
345387 WSACleanup ();
346388#endif
347389 return 0 ;
0 commit comments