@@ -8,6 +8,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX
88 LPCXSTR lpszAPIRegister = _X (" register" );
99 LPCXSTR lpszAPIPay = _X (" pay" );
1010 LPCXSTR lpszAPIPass = _X (" pass" );
11+ LPCXSTR lpszAPITime = _X (" time" );
1112 LPCXSTR lpszAPITry = _X (" try" );
1213
1314 memset (tszSDBuffer, ' \0 ' , sizeof (tszSDBuffer));
@@ -297,6 +298,66 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX
297298 XEngine_Client_TaskSend (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
298299 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,用户名:%s,找回重置密码成功" ), lpszClientAddr, st_UserInfo.tszUserName );
299300 }
301+ else if (0 == _tcsxnicmp (lpszAPIName, lpszAPITime, _tcsxlen (lpszAPIName)))
302+ {
303+ if (!st_FunSwitch.bSwitchTime )
304+ {
305+ Protocol_Packet_HttpComm (tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, " the function is closed" );
306+ XEngine_Client_TaskSend (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
307+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,获取用户时间信息失败,获取用户时间功能已经被服务器关闭!" ), lpszClientAddr);
308+ return false ;
309+ }
310+ XENGINE_PROTOCOL_USERAUTHEX st_UserAuth = {};
311+ if (!Protocol_Parse_HttpParseAuth (lpszMsgBuffer, nMsgLen, &st_UserAuth))
312+ {
313+ Protocol_Packet_HttpComm (tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_PARSE, " protocol parse is incorrect" );
314+ XEngine_Client_TaskSend (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
315+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,获取用户时间信息失败,协议错误:%s" ), lpszClientAddr, lpszMsgBuffer);
316+ return false ;
317+ }
318+ int nListCount = 0 ;
319+ AUTHREG_USERTABLE st_UserTable = {};
320+ AUTHSESSION_NETCLIENT** ppSt_ListClient;
321+ if (!Session_Authorize_GetClient (&ppSt_ListClient, &nListCount, st_UserAuth.tszUserName ))
322+ {
323+ // 没在线,获取数据库信息
324+ bool bSuccess = false ;
325+ if (0 == st_AuthConfig.st_XSql .nDBType )
326+ {
327+ bSuccess = DBModule_SQLite_UserQuery (st_UserAuth.tszUserName , &st_UserTable);
328+ }
329+ else
330+ {
331+ bSuccess = DBModule_MySQL_UserQuery (st_UserAuth.tszUserName , &st_UserTable);
332+ }
333+ if (!bSuccess)
334+ {
335+ Protocol_Packet_HttpComm (tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, " user not found" );
336+ XEngine_Client_TaskSend (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
337+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,用户名:%s,获取时间失败,无法继续,错误:%lX" ), lpszClientAddr, st_UserAuth.tszUserName , DBModule_GetLastError ());
338+ return false ;
339+ }
340+ nListCount = 1 ;
341+ BaseLib_Memory_Malloc ((XPPPMEM)&ppSt_ListClient, 1 , sizeof (AUTHSESSION_NETCLIENT));
342+ _tcsxcpy ((*ppSt_ListClient)[0 ].st_UserTable .st_UserInfo .tszUserName , st_UserTable.st_UserInfo .tszUserName );
343+ _tcsxcpy ((*ppSt_ListClient)[0 ].tszLeftTime , st_UserTable.tszLeftTime );
344+ (*ppSt_ListClient)[0 ].nLeftTime = _ttxoll (st_UserTable.tszLeftTime );
345+ (*ppSt_ListClient)[0 ].st_UserTable .enDeviceType = st_UserTable.enDeviceType ;
346+ (*ppSt_ListClient)[0 ].st_UserTable .enSerialType = st_UserTable.enSerialType ;
347+ }
348+ // 安全验证判断
349+ if ((0 != _tcsxncmp (st_UserAuth.tszUserName , st_UserTable.st_UserInfo .tszUserName , _tcsxlen (st_UserTable.st_UserInfo .tszUserName ))) || (0 == _tcsxncmp (st_UserAuth.tszUserPass , st_UserTable.st_UserInfo .tszUserPass , _tcsxlen (st_UserTable.st_UserInfo .tszUserPass ))))
350+ {
351+ Protocol_Packet_HttpComm (tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTMATCH, " user information is incorrent" );
352+ XEngine_Client_TaskSend (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
353+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" HTTP客户端:%s,用户名:%s,获取时间失败,验证信息失败" ), lpszClientAddr, st_UserAuth.tszUserName );
354+ return false ;
355+ }
356+ Protocol_Packet_UserTime (tszSDBuffer, &nSDLen, &ppSt_ListClient, nListCount);
357+ BaseLib_Memory_Free ((XPPPMEM)&ppSt_ListClient, nListCount);
358+ XEngine_Client_TaskSend (lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP);
359+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" HTTP客户端:%s,用户名:%s,获取时间成功" ), lpszClientAddr, st_UserTable.st_UserInfo .tszUserName );
360+ }
300361 else if (0 == _tcsxnicmp (lpszAPIName, lpszAPITry, _tcsxlen (lpszAPIName)))
301362 {
302363 AUTHREG_TEMPVER st_VERTemp;
0 commit comments