From 981f4b87c46c561a361ed72008c3f9385476e2f5 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 23 Sep 2022 10:42:06 +0800 Subject: [PATCH 01/22] update readme and fixed x64 debug build --- README.md | 7 +++++-- .../XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj | 2 +- .../XEngine_AuthorizeService.vcxproj | 2 +- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index dc2ad46..b6c547f 100644 --- a/README.md +++ b/README.md @@ -115,5 +115,8 @@ mfc转qt界面库(我们需要会Qt的人员加入一起开发) mysql支持 列表数据分割,用于大型服务器 支持用户和硬件绑定同时验证 -支持自定义序列号插入导入 -统计用户所有在线时间 \ No newline at end of file +支持自定义序列号导入导出 +统计用户所有在线时间 +黑名单设置(IP,用户) +支持代理端 +支持绑定自定义内容 \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj index 4fc5536..923a654 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj @@ -120,7 +120,7 @@ Use Level3 - true + false _WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) pch.h diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj index cc09c72..378f78d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj @@ -123,7 +123,7 @@ Level3 - true + false _DEBUG;_CONSOLE;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true From 2361e969a444e027681ae98c54060427a6c0c343 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 21 Oct 2022 09:53:53 +0800 Subject: [PATCH 02/22] update:match xengine v7.42 --- .../XEngine_AuthorizeService/Authorize_Hdr.h | 6 +++--- .../XEngine_AuthorizeService.cpp | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index df05aa2..cf7a01d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -59,9 +59,9 @@ extern XHANDLE xhTCPPacket; extern XHANDLE xhWSPacket; extern XHANDLE xhHttpPacket; extern XHANDLE xhMemPool; -extern XNETHANDLE xhTCPPool; -extern XNETHANDLE xhWSPool; -extern XNETHANDLE xhHttpPool; +extern XHANDLE xhTCPPool; +extern XHANDLE xhWSPool; +extern XHANDLE xhHttpPool; extern XENGINE_SERVICECONFIG st_AuthConfig; #define XENGINE_AUTH_APP_NETTYPE_TCP 0 diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 3c4e706..db8f856 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -9,9 +9,9 @@ XHANDLE xhTCPPacket = NULL; XHANDLE xhWSPacket = NULL; XHANDLE xhHttpPacket = NULL; XHANDLE xhMemPool = NULL; -XNETHANDLE xhTCPPool = 0; -XNETHANDLE xhWSPool = 0; -XNETHANDLE xhHttpPool = 0; +XHANDLE xhTCPPool = NULL; +XHANDLE xhWSPool = NULL; +XHANDLE xhHttpPool = NULL; XENGINE_SERVICECONFIG st_AuthConfig; void ServiceApp_Stop(int signo) @@ -229,7 +229,7 @@ int main(int argc, char** argv) ppSt_ListTCPThread[i]->lParam = pInt_Index; ppSt_ListTCPThread[i]->fpCall_ThreadsTask = XEngine_AuthService_TCPThread; } - ManagePool_Thread_NQCreate(&xhTCPPool, &ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread); + xhTCPPool = ManagePool_Thread_NQCreate(&ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动TCP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nTCPThread); BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread, sizeof(THREADPOOL_PARAMENT)); @@ -240,7 +240,7 @@ int main(int argc, char** argv) ppSt_ListWSThread[i]->lParam = pInt_Index; ppSt_ListWSThread[i]->fpCall_ThreadsTask = XEngine_AuthService_WSThread; } - ManagePool_Thread_NQCreate(&xhWSPool, &ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread); + xhWSPool = ManagePool_Thread_NQCreate(&ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动WEBSOCKET任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nWSThread); BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread, sizeof(THREADPOOL_PARAMENT)); @@ -251,7 +251,7 @@ int main(int argc, char** argv) ppSt_ListHttpThread[i]->lParam = pInt_Index; ppSt_ListHttpThread[i]->fpCall_ThreadsTask = XEngine_AuthService_HttpThread; } - ManagePool_Thread_NQCreate(&xhHttpPool, &ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread); + xhHttpPool = ManagePool_Thread_NQCreate(&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动HTTP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nHTTPThread); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("所有服务成功启动,网络验证服务运行中,XEngien版本:%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_OperatorVer_XGetStr(), st_AuthConfig.st_XVer.pStl_ListVer->size(), st_AuthConfig.st_XVer.pStl_ListVer->front().c_str()); From 5abacf04a34c05cc77729ff30653f5b00fff1834 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 24 Oct 2022 10:20:01 +0800 Subject: [PATCH 03/22] modify:build warn --- .../Authorize_Dialog/Dialog_Config.cpp | 6 +++--- .../Authorize_Dialog/Dialog_Modify.cpp | 8 ++++---- .../Authorize_Dialog/Dialog_Serial.cpp | 12 ++++++------ .../Authorize_Dialog/Dialog_User.cpp | 12 ++++++------ .../XEngine_AuthorizeApp.vcxproj | 2 +- .../AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp | 4 ++-- 6 files changed, 22 insertions(+), 22 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp index ba71190..0dfd71c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Config.cpp @@ -101,7 +101,7 @@ void CDialog_Config::OnBnClickedButton1() //请求用户信息 int nMsgLen = 0; CHAR* ptszMsgBuffer = NULL; - APIHelp_HttpRequest_Get(tszUrlAddr, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("GET"), tszUrlAddr, NULL, NULL, &ptszMsgBuffer, &nMsgLen); Json::Value st_JsonRoot; JSONCPP_STRING st_JsonError; @@ -166,7 +166,7 @@ void CDialog_Config::OnBnClickedButton2() //请求用户信息 int nMsgLen = 0; CHAR* ptszMsgBuffer = NULL; - APIHelp_HttpRequest_Get(tszUrlAddr, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("GET"), tszUrlAddr, NULL, NULL, &ptszMsgBuffer, &nMsgLen); Json::Value st_JsonRoot; JSONCPP_STRING st_JsonError; @@ -227,7 +227,7 @@ void CDialog_Config::OnBnClickedButton5() //请求用户信息 int nMsgLen = 0; CHAR* ptszMsgBuffer = NULL; - APIHelp_HttpRequest_Get(tszUrlAddr, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("GET"), tszUrlAddr, NULL, NULL, &ptszMsgBuffer, &nMsgLen); Json::Value st_JsonRoot; JSONCPP_STRING st_JsonError; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp index c8bb37f..df179c7 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp @@ -105,11 +105,11 @@ BOOL CDialog_Modify::OnInitDialog() nMsgLen = st_JsonRoot.toStyledString().length(); OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); - APIHelp_HttpRequest_Post(tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else { - APIHelp_HttpRequest_Post(tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); } st_JsonObject.clear(); st_JsonRoot.clear(); @@ -239,11 +239,11 @@ void CDialog_Modify::OnBnClickedButton2() nMsgLen = st_JsonRoot.toStyledString().length(); OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); - APIHelp_HttpRequest_Post(tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else { - APIHelp_HttpRequest_Post(tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); } st_JsonRoot.clear(); JSONCPP_STRING st_JsonError; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp index d756e93..a699855 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp @@ -107,11 +107,11 @@ void CDialog_Serial::OnBnClickedButton1() nMsgLen = st_JsonRoot.toStyledString().length(); OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); - APIHelp_HttpRequest_Post(tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else { - APIHelp_HttpRequest_Post(tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); } JSONCPP_STRING st_JsonError; Json::CharReaderBuilder st_ReaderBuilder; @@ -211,11 +211,11 @@ void CDialog_Serial::OnBnClickedButton2() nMsgLen = st_JsonRoot.toStyledString().length(); OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); - APIHelp_HttpRequest_Post(tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else { - APIHelp_HttpRequest_Post(tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); } st_JsonRoot.clear(); JSONCPP_STRING st_JsonError; @@ -310,11 +310,11 @@ void CDialog_Serial::OnBnClickedButton4() nMsgLen = st_JsonRoot.toStyledString().length(); OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); - APIHelp_HttpRequest_Post(tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else { - APIHelp_HttpRequest_Post(tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); } st_JsonRoot.clear(); JSONCPP_STRING st_JsonError; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp index ae3dc97..098ee36 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp @@ -110,11 +110,11 @@ void CDialog_User::OnBnClickedButton1() nMsgLen = st_JsonRoot.toStyledString().length(); OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); - APIHelp_HttpRequest_Post(tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else { - APIHelp_HttpRequest_Post(tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); } JSONCPP_STRING st_JsonError; Json::CharReaderBuilder st_ReaderBuilder; @@ -219,11 +219,11 @@ void CDialog_User::OnBnClickedButton2() nMsgLen = st_JsonRoot.toStyledString().length(); OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); - APIHelp_HttpRequest_Post(tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else { - APIHelp_HttpRequest_Post(tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); } //查看返回值是否正确 st_JsonRoot.clear(); @@ -307,11 +307,11 @@ void CDialog_User::OnBnClickedButton3() nMsgLen = st_JsonRoot.toStyledString().length(); OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); - APIHelp_HttpRequest_Post(tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); } else { - APIHelp_HttpRequest_Post(tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); } //查看返回值是否正确 st_JsonRoot.clear(); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj index 923a654..31dc6c3 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj @@ -98,7 +98,7 @@ Use Level3 - false + true WIN32;_WINDOWS;_DEBUG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) pch.h diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp index 9c5b9e1..f0e65ed 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp @@ -45,7 +45,7 @@ BOOL XEngine_AuthorizeHTTP_Token(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, st_AuthProtocol.enDeviceType = ENUM_PROTOCOL_FOR_DEVICE_TYPE_WEB; Protocol_Packet_HttpUserPass(tszSDBuffer, &nSDLen, &st_AuthProtocol); - APIHelp_HttpRequest_Post(st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogin, tszSDBuffer, &nHTTPCode, &ptszMsgBuffer, &nHTTPLen); + APIHelp_HttpRequest_Custom(_T("POST"), st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogin, tszSDBuffer, &nHTTPCode, &ptszMsgBuffer, &nHTTPLen); if (200 != nHTTPCode) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); @@ -197,7 +197,7 @@ BOOL XEngine_AuthorizeHTTP_Token(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, memset(tszSDBuffer, '\0', MAX_PATH); Protocol_Packet_HttpUserTime(tszSDBuffer, &nSDLen, &st_AuthTime); - APIHelp_HttpRequest_Post(st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogout, tszSDBuffer); + APIHelp_HttpRequest_Custom(_T("POST"), st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogout, tszSDBuffer); } Database_SQLite_UserLeave(&st_AuthTime); } From 3c97d7d5a60014ab77e6bd28f25b325d904ee541 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 24 Oct 2022 10:26:05 +0800 Subject: [PATCH 04/22] delete:not need parament for http get --- .../AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp | 2 +- .../AuthorizeHTTP_Get/AuthorizeHTTP_Token.h | 2 +- .../XEngine_AuthorizeService/Authorize_HttpTask.cpp | 2 +- .../XEngine_AuthorizeService/Authorize_Net.cpp | 2 +- .../XEngine_AuthorizeService/Authorize_TCPTask.cpp | 2 +- .../XEngine_AuthorizeService/Authorize_Task.cpp | 4 ++-- .../XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp index f0e65ed..9283d0e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp @@ -1,6 +1,6 @@ #include "../Authorize_Hdr.h" -BOOL XEngine_AuthorizeHTTP_Token(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR** pptszList, int nListCount) +BOOL XEngine_AuthorizeHTTP_Token(LPCTSTR lpszClientAddr, TCHAR** pptszList, int nListCount) { int nSDLen = 4096; TCHAR tszSDBuffer[4096]; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.h index cba6083..6923313 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.h @@ -1,3 +1,3 @@ #pragma once -BOOL XEngine_AuthorizeHTTP_Token(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR** pptszList, int nListCount); \ No newline at end of file +BOOL XEngine_AuthorizeHTTP_Token(LPCTSTR lpszClientAddr, TCHAR** pptszList, int nListCount); \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index f67a427..fba9841 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -152,7 +152,7 @@ BOOL XEngine_Client_HttpTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return FALSE; } - XEngine_AuthorizeHTTP_Token(lpszClientAddr, lpszMsgBuffer, nMsgLen, pptszList, nListCount); + XEngine_AuthorizeHTTP_Token(lpszClientAddr, pptszList, nListCount); BaseLib_OperatorMemory_Free((XPPPMEM)&pptszList, nListCount); } else diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index b14d79e..0f875a9 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -107,7 +107,7 @@ BOOL XEngine_CloseClient(LPCTSTR lpszClientAddr) memset(tszSDBuffer, '\0', MAX_PATH); Protocol_Packet_HttpUserTime(tszSDBuffer, &nSDLen, &st_AuthTime); - APIHelp_HttpRequest_Post(st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogout, tszSDBuffer); + APIHelp_HttpRequest_Custom(_T("POST"), st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogout, tszSDBuffer); } else { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index b11ca08..fe3791b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -83,7 +83,7 @@ BOOL XEngine_Client_TCPTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int n int nHTTPLen = 0; TCHAR* ptszMsgBuffer = NULL; Protocol_Packet_HttpUserPass(tszSDBuffer, &nSDLen, &st_AuthProtocol); - APIHelp_HttpRequest_Post(st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogin, tszSDBuffer, &nHTTPCode, &ptszMsgBuffer, &nHTTPLen); + APIHelp_HttpRequest_Custom(_T("POST"), st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogin, tszSDBuffer, &nHTTPCode, &ptszMsgBuffer, &nHTTPLen); if (200 != nHTTPCode) { pSt_ProtocolHdr->wReserve = 251; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp index 2176705..e424883 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp @@ -31,7 +31,7 @@ void __stdcall XEngine_TaskEvent_Client(LPCSTR lpszUserAddr, LPCSTR lpszUserName memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); Protocol_Packet_HttpUserTime(tszMsgBuffer, &nMsgLen, &st_AuthTime); - APIHelp_HttpRequest_Post(st_AuthConfig.st_XLogin.st_PassUrl.tszPassTimeout, tszMsgBuffer); + APIHelp_HttpRequest_Custom(_T("POST"), st_AuthConfig.st_XLogin.st_PassUrl.tszPassTimeout, tszMsgBuffer); } if (XENGINE_AUTH_APP_NETTYPE_HTTP != nNetType) { @@ -76,7 +76,7 @@ void __stdcall XEngine_TaskEvent_Token(XNETHANDLE xhToken, LPVOID lParam) memset(tszSDBuffer, '\0', MAX_PATH); Protocol_Packet_HttpUserTime(tszSDBuffer, &nSDLen, &st_AuthTime); - APIHelp_HttpRequest_Post(st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogout, tszSDBuffer); + APIHelp_HttpRequest_Custom(_T("POST"), st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogout, tszSDBuffer); } Database_SQLite_UserLeave(&st_AuthTime); } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj index 378f78d..4b45e26 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj @@ -93,7 +93,7 @@ Level3 - false + true WIN32;_DEBUG;_CONSOLE;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true 4819 From 38ec3a0038b59afc6fa29c6006989bc4a63fac47 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 24 Oct 2022 10:41:31 +0800 Subject: [PATCH 05/22] modify:support tcp and websocket and http function switch --- .../XEngine_AuthorizeService.cpp | 162 ++++++++++-------- 1 file changed, 86 insertions(+), 76 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index db8f856..5f9c680 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -168,92 +168,102 @@ int main(int argc, char** argv) goto XENGINE_EXITAPP; } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化会话TOKEN服务成功")); - - xhTCPPacket = HelpComponents_Datas_Init(st_AuthConfig.st_XMax.nMaxQueue, st_AuthConfig.st_XMax.nTCPThread); - if (NULL == xhTCPPacket) + //是否开启TCP服务 + if (st_AuthConfig.nTCPPort > 0) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,初始化TCP组包器失败,错误:%lX"), Packets_GetLastError()); - goto XENGINE_EXITAPP; - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化TCP组包器成功,任务池个数:%d"), st_AuthConfig.st_XMax.nTCPThread); - xhWSPacket = RfcComponents_WSPacket_InitEx(st_AuthConfig.st_XMax.nWSThread, st_AuthConfig.st_XMax.nMaxQueue); - if (NULL == xhWSPacket) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,初始化WebSocket组包器失败,错误:%lX"), WSFrame_GetLastError()); - goto XENGINE_EXITAPP; - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化WebSocket组包器成功,任务池个数:%d"), st_AuthConfig.st_XMax.nWSThread); - xhHttpPacket = RfcComponents_HttpServer_InitEx(lpszHTTPCode, lpszHTTPMime, st_AuthConfig.st_XMax.nHTTPThread); - if (NULL == xhHttpPacket) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,初始化HTTP组包器失败,错误:%lX"), HttpServer_GetLastError()); - goto XENGINE_EXITAPP; - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化HTTP组包器成功,任务池个数:%d"), st_AuthConfig.st_XMax.nHTTPThread); + xhTCPPacket = HelpComponents_Datas_Init(st_AuthConfig.st_XMax.nMaxQueue, st_AuthConfig.st_XMax.nTCPThread); + if (NULL == xhTCPPacket) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,初始化TCP组包器失败,错误:%lX"), Packets_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化TCP组包器成功,任务池个数:%d"), st_AuthConfig.st_XMax.nTCPThread); - xhTCPSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nTCPPort, st_AuthConfig.st_XMax.nMaxClient, st_AuthConfig.st_XMax.nIOThread); - if (NULL == xhTCPSocket) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动TCP验证网络服务失败,错误:%lX"), NetCore_GetLastError()); - goto XENGINE_EXITAPP; - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化TCP验证网络服务成功,端口:%d,网络池个数:%d"), st_AuthConfig.nTCPPort, st_AuthConfig.st_XMax.nIOThread); - NetCore_TCPXCore_RegisterCallBackEx(xhTCPSocket, XEngine_Client_TCPAccept, XEngine_Client_TCPRecv, XEngine_Client_TCPClose); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化TCP验证网络事件成功")); + xhTCPSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nTCPPort, st_AuthConfig.st_XMax.nMaxClient, st_AuthConfig.st_XMax.nIOThread); + if (NULL == xhTCPSocket) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动TCP验证网络服务失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化TCP验证网络服务成功,端口:%d,网络池个数:%d"), st_AuthConfig.nTCPPort, st_AuthConfig.st_XMax.nIOThread); + NetCore_TCPXCore_RegisterCallBackEx(xhTCPSocket, XEngine_Client_TCPAccept, XEngine_Client_TCPRecv, XEngine_Client_TCPClose); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化TCP验证网络事件成功")); - xhWSSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nWSPort, st_AuthConfig.st_XMax.nMaxQueue, st_AuthConfig.st_XMax.nIOThread); - if (NULL == xhWSSocket) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动WEBSOCKET验证网络服务失败,错误:%lX"), NetCore_GetLastError()); - goto XENGINE_EXITAPP; + BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread, sizeof(THREADPOOL_PARAMENT)); + for (int i = 0; i < st_AuthConfig.st_XMax.nTCPThread; i++) + { + int* pInt_Index = new int; + *pInt_Index = i; + ppSt_ListTCPThread[i]->lParam = pInt_Index; + ppSt_ListTCPThread[i]->fpCall_ThreadsTask = XEngine_AuthService_TCPThread; + } + xhTCPPool = ManagePool_Thread_NQCreate(&ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动TCP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nTCPThread); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化WEBSOCKET验证网络服务成功,端口:%d,网络池个数:%d"), st_AuthConfig.nWSPort, st_AuthConfig.st_XMax.nIOThread); - NetCore_TCPXCore_RegisterCallBackEx(xhWSSocket, XEngine_Client_WSAccept, XEngine_Client_WSRecv, XEngine_Client_WSClose); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化WEBSOCKET验证网络事件成功")); - - xhHttpSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nHTTPPort, st_AuthConfig.st_XMax.nMaxQueue, st_AuthConfig.st_XMax.nIOThread); - if (NULL == xhHttpSocket) + //是否开启WEBSOCEKT服务 + if (st_AuthConfig.nWSPort > 0) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动HTTP管理网络服务失败,错误:%lX"), NetCore_GetLastError()); - goto XENGINE_EXITAPP; - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化HTTP管理网络服务成功,端口:%d,网络池个数:%d"), st_AuthConfig.nHTTPPort, st_AuthConfig.st_XMax.nIOThread); - NetCore_TCPXCore_RegisterCallBackEx(xhHttpSocket, XEngine_Client_HttpAccept, XEngine_Client_HttpRecv, XEngine_Client_HttpClose); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化HTTP管理网络事件成功")); + xhWSPacket = RfcComponents_WSPacket_InitEx(st_AuthConfig.st_XMax.nWSThread, st_AuthConfig.st_XMax.nMaxQueue); + if (NULL == xhWSPacket) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,初始化WebSocket组包器失败,错误:%lX"), WSFrame_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化WebSocket组包器成功,任务池个数:%d"), st_AuthConfig.st_XMax.nWSThread); - BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread, sizeof(THREADPOOL_PARAMENT)); - for (int i = 0; i < st_AuthConfig.st_XMax.nTCPThread; i++) - { - int* pInt_Index = new int; - *pInt_Index = i; - ppSt_ListTCPThread[i]->lParam = pInt_Index; - ppSt_ListTCPThread[i]->fpCall_ThreadsTask = XEngine_AuthService_TCPThread; - } - xhTCPPool = ManagePool_Thread_NQCreate(&ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动TCP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nTCPThread); + xhWSSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nWSPort, st_AuthConfig.st_XMax.nMaxQueue, st_AuthConfig.st_XMax.nIOThread); + if (NULL == xhWSSocket) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动WEBSOCKET验证网络服务失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化WEBSOCKET验证网络服务成功,端口:%d,网络池个数:%d"), st_AuthConfig.nWSPort, st_AuthConfig.st_XMax.nIOThread); + NetCore_TCPXCore_RegisterCallBackEx(xhWSSocket, XEngine_Client_WSAccept, XEngine_Client_WSRecv, XEngine_Client_WSClose); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化WEBSOCKET验证网络事件成功")); - BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread, sizeof(THREADPOOL_PARAMENT)); - for (int i = 0; i < st_AuthConfig.st_XMax.nWSThread; i++) - { - int* pInt_Index = new int; - *pInt_Index = i; - ppSt_ListWSThread[i]->lParam = pInt_Index; - ppSt_ListWSThread[i]->fpCall_ThreadsTask = XEngine_AuthService_WSThread; + BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread, sizeof(THREADPOOL_PARAMENT)); + for (int i = 0; i < st_AuthConfig.st_XMax.nWSThread; i++) + { + int* pInt_Index = new int; + *pInt_Index = i; + ppSt_ListWSThread[i]->lParam = pInt_Index; + ppSt_ListWSThread[i]->fpCall_ThreadsTask = XEngine_AuthService_WSThread; + } + xhWSPool = ManagePool_Thread_NQCreate(&ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动WEBSOCKET任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nWSThread); } - xhWSPool = ManagePool_Thread_NQCreate(&ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动WEBSOCKET任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nWSThread); - - BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread, sizeof(THREADPOOL_PARAMENT)); - for (int i = 0; i < st_AuthConfig.st_XMax.nHTTPThread; i++) + //是否开启HTTP服务 + if (st_AuthConfig.nHTTPPort > 0) { - int* pInt_Index = new int; - *pInt_Index = i; - ppSt_ListHttpThread[i]->lParam = pInt_Index; - ppSt_ListHttpThread[i]->fpCall_ThreadsTask = XEngine_AuthService_HttpThread; - } - xhHttpPool = ManagePool_Thread_NQCreate(&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动HTTP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nHTTPThread); + xhHttpPacket = RfcComponents_HttpServer_InitEx(lpszHTTPCode, lpszHTTPMime, st_AuthConfig.st_XMax.nHTTPThread); + if (NULL == xhHttpPacket) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,初始化HTTP组包器失败,错误:%lX"), HttpServer_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化HTTP组包器成功,任务池个数:%d"), st_AuthConfig.st_XMax.nHTTPThread); + + xhHttpSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nHTTPPort, st_AuthConfig.st_XMax.nMaxQueue, st_AuthConfig.st_XMax.nIOThread); + if (NULL == xhHttpSocket) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动HTTP管理网络服务失败,错误:%lX"), NetCore_GetLastError()); + goto XENGINE_EXITAPP; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化HTTP管理网络服务成功,端口:%d,网络池个数:%d"), st_AuthConfig.nHTTPPort, st_AuthConfig.st_XMax.nIOThread); + NetCore_TCPXCore_RegisterCallBackEx(xhHttpSocket, XEngine_Client_HttpAccept, XEngine_Client_HttpRecv, XEngine_Client_HttpClose); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化HTTP管理网络事件成功")); + BaseLib_OperatorMemory_Malloc((XPPPMEM)&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread, sizeof(THREADPOOL_PARAMENT)); + for (int i = 0; i < st_AuthConfig.st_XMax.nHTTPThread; i++) + { + int* pInt_Index = new int; + *pInt_Index = i; + ppSt_ListHttpThread[i]->lParam = pInt_Index; + ppSt_ListHttpThread[i]->fpCall_ThreadsTask = XEngine_AuthService_HttpThread; + } + xhHttpPool = ManagePool_Thread_NQCreate(&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动HTTP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nHTTPThread); + } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("所有服务成功启动,网络验证服务运行中,XEngien版本:%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_OperatorVer_XGetStr(), st_AuthConfig.st_XVer.pStl_ListVer->size(), st_AuthConfig.st_XVer.pStl_ListVer->front().c_str()); while (TRUE) From 15e9b8def52cdba919a83a6b63d2a0cb6beb8ba4 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 24 Oct 2022 13:37:34 +0800 Subject: [PATCH 06/22] added:function switch --- .../AuthorizeModule_Configure.def | 3 +- .../AuthorizeModule_Configure/Config_Define.h | 33 ++++++++- .../ModuleConfigure_Json.cpp | 68 +++++++++++++++++++ .../ModuleConfigure_Json.h | 1 + .../AuthorizeModule_Configure/pch.cpp | 4 ++ .../AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp | 28 ++++++++ .../Authorize_Config.cpp | 6 ++ .../XEngine_AuthorizeService/Authorize_Hdr.h | 1 + .../Authorize_TCPTask.cpp | 8 +++ .../XEngine_AuthorizeService.cpp | 16 +++-- 10 files changed, 159 insertions(+), 9 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Configure/AuthorizeModule_Configure.def b/XEngine_Source/AuthorizeModule_Configure/AuthorizeModule_Configure.def index db2cbe6..c34c535 100644 --- a/XEngine_Source/AuthorizeModule_Configure/AuthorizeModule_Configure.def +++ b/XEngine_Source/AuthorizeModule_Configure/AuthorizeModule_Configure.def @@ -3,4 +3,5 @@ LIBRARY EXPORTS Config_GetLastError - ModuleConfigure_Json_File \ No newline at end of file + ModuleConfigure_Json_File + ModuleConfigure_Json_Switch \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index d4dd067..6740589 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -66,12 +66,22 @@ typedef struct int nMaxSize; //最大大小 int nMaxCount; //备份个数 int nLogLeave; //日志级别 - }st_XLog; + }st_XLog; struct { list *pStl_ListVer; }st_XVer; }XENGINE_SERVICECONFIG; +//功能开关 +typedef struct +{ + BOOL bSwitchDelete; //删除开关 + BOOL bSwitchRegister; //注册开关 + BOOL bSwitchLogin; //登录开关 + BOOL bSwitchPay; //充值开关 + BOOL bSwitchPass; //找回密码开关 + BOOL bSwtichTime; //计时开关,关闭后客户端不会消耗时间(仅分钟卡有效) +}XENGINE_FUNCTIONSWITCH; ////////////////////////////////////////////////////////////////////////// // 导出的函数 ////////////////////////////////////////////////////////////////////////// @@ -97,4 +107,23 @@ extern "C" DWORD Config_GetLastError(int* pInt_SysError = NULL); 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL ModuleConfigure_Json_File(LPCTSTR lpszConfigFile, XENGINE_SERVICECONFIG * pSt_ServerConfig); \ No newline at end of file +extern "C" BOOL ModuleConfigure_Json_File(LPCTSTR lpszConfigFile, XENGINE_SERVICECONFIG * pSt_ServerConfig); +/******************************************************************** +函数名称:ModuleConfigure_Json_Switch +函数功能:功能开关配置文件 + 参数.一:lpszFile + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入配置文件位置 + 参数.二:pSt_AuthConfig + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:输出读取到的配置信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL ModuleConfigure_Json_Switch(LPCTSTR lpszConfigFile, XENGINE_FUNCTIONSWITCH * pSt_ServerConfig); \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index bcaa799..a54469d 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -181,5 +181,73 @@ BOOL CModuleConfigure_Json::ModuleConfigure_Json_File(LPCTSTR lpszConfigFile, XE { pSt_ServerConfig->st_XVer.pStl_ListVer->push_back(st_JsonXVer[i].asCString()); } + return TRUE; +} +/******************************************************************** +函数名称:ModuleConfigure_Json_Switch +函数功能:功能开关配置文件 + 参数.一:lpszFile + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入配置文件位置 + 参数.二:pSt_AuthConfig + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:输出读取到的配置信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CModuleConfigure_Json::ModuleConfigure_Json_Switch(LPCTSTR lpszConfigFile, XENGINE_FUNCTIONSWITCH* pSt_ServerConfig) +{ + Config_IsErrorOccur = FALSE; + + if ((NULL == lpszConfigFile) || (NULL == pSt_ServerConfig)) + { + Config_IsErrorOccur = TRUE; + Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_PARAMENT; + return FALSE; + } + Json::Value st_JsonRoot; + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_JsonBuilder; + //读取配置文件所有内容到缓冲区 + FILE* pSt_File = _tfopen(lpszConfigFile, _T("rb")); + if (NULL == pSt_File) + { + Config_IsErrorOccur = TRUE; + Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_OPENFILE; + return FALSE; + } + size_t nCount = 0; + TCHAR tszMsgBuffer[4096]; + while (1) + { + size_t nRet = fread(tszMsgBuffer + nCount, 1, 2048, pSt_File); + if (nRet <= 0) + { + break; + } + nCount += nRet; + } + fclose(pSt_File); + //开始解析配置文件 + std::unique_ptr const pSt_JsonReader(st_JsonBuilder.newCharReader()); + if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nCount, &st_JsonRoot, &st_JsonError)) + { + Config_IsErrorOccur = TRUE; + Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_PARSE; + return FALSE; + } + pSt_ServerConfig->bSwitchDelete = st_JsonRoot["bSwitchDelete"].asBool(); + pSt_ServerConfig->bSwitchRegister = st_JsonRoot["bSwitchRegister"].asBool(); + pSt_ServerConfig->bSwitchLogin = st_JsonRoot["bSwitchLogin"].asBool(); + pSt_ServerConfig->bSwitchPay = st_JsonRoot["bSwitchPay"].asBool(); + pSt_ServerConfig->bSwitchPass = st_JsonRoot["bSwitchPass"].asBool(); + pSt_ServerConfig->bSwtichTime = st_JsonRoot["bSwtichTime"].asBool(); + return TRUE; } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.h b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.h index 7ff4947..f3401e1 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.h +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.h @@ -18,6 +18,7 @@ class CModuleConfigure_Json ~CModuleConfigure_Json(); public: BOOL ModuleConfigure_Json_File(LPCTSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig); + BOOL ModuleConfigure_Json_Switch(LPCTSTR lpszConfigFile, XENGINE_FUNCTIONSWITCH* pSt_ServerConfig); protected: private: }; \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Configure/pch.cpp b/XEngine_Source/AuthorizeModule_Configure/pch.cpp index 7fa7816..a89801b 100644 --- a/XEngine_Source/AuthorizeModule_Configure/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/pch.cpp @@ -32,4 +32,8 @@ extern "C" DWORD Config_GetLastError(int* pInt_SysError) extern "C" BOOL ModuleConfigure_Json_File(LPCTSTR lpszConfigFile, XENGINE_SERVICECONFIG * pSt_ServerConfig) { return m_Config.ModuleConfigure_Json_File(lpszConfigFile, pSt_ServerConfig); +} +extern "C" BOOL ModuleConfigure_Json_Switch(LPCTSTR lpszConfigFile, XENGINE_FUNCTIONSWITCH * pSt_ServerConfig) +{ + return m_Config.ModuleConfigure_Json_Switch(lpszConfigFile, pSt_ServerConfig); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp index a2a878c..1f390f9 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp @@ -21,6 +21,13 @@ BOOL XEngine_AuthorizeHTTP_User(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPC memset(tszClientAddr, '\0', sizeof(tszClientAddr)); memset(&st_UserInfo, '\0', sizeof(XENGINE_PROTOCOL_USERINFO)); + if (!st_FunSwitch.bSwitchDelete) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,删除失败,删除功能已经被服务器关闭!"), lpszClientAddr); + return FALSE; + } Protocol_Parse_HttpParseUser(lpszMsgBuffer, nMsgLen, &st_UserInfo); Session_Authorize_GetAddrForUser(st_UserInfo.tszUserName, tszClientAddr); @@ -36,6 +43,13 @@ BOOL XEngine_AuthorizeHTTP_User(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPC AUTHREG_USERTABLE st_UserTable; memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); + if (!st_FunSwitch.bSwitchRegister) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,注册失败,注册功能已经被服务器关闭!"), lpszClientAddr); + return FALSE; + } Protocol_Parse_HttpParseTable(lpszMsgBuffer, nMsgLen, &st_UserTable); //填充写入数据 _stprintf(st_UserTable.tszLeftTime, _T("%d"), st_AuthConfig.st_XVerification.nTryTime); @@ -72,6 +86,13 @@ BOOL XEngine_AuthorizeHTTP_User(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPC memset(&st_UserInfo, '\0', sizeof(AUTHREG_USERTABLE)); memset(&st_UserPay, '\0', sizeof(AUTHREG_PROTOCOL_USERPAY)); + if (!st_FunSwitch.bSwitchPay) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,充值失败,充值功能已经被服务器关闭!"), lpszClientAddr); + return FALSE; + } Protocol_Parse_HttpParsePay(lpszMsgBuffer, nMsgLen, &st_UserPay); if (!Database_SQLite_UserPay(st_UserPay.tszUserName, st_UserPay.tszSerialNumber)) { @@ -96,6 +117,13 @@ BOOL XEngine_AuthorizeHTTP_User(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPC memset(&st_UserInfo, '\0', sizeof(XENGINE_PROTOCOL_USERINFO)); memset(&st_AuthProtocol, '\0', sizeof(XENGINE_PROTOCOL_USERAUTH)); + if (!st_FunSwitch.bSwitchPass) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,找回密码失败,密码找回功能已经被服务器关闭!"), lpszClientAddr); + return FALSE; + } Protocol_Parse_HttpParseUser(lpszMsgBuffer, nMsgLen, &st_UserInfo); if (!Database_SQLite_UserQuery(st_UserInfo.tszUserName, &st_UserTable)) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp index 4666a62..66c55c5 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Config.cpp @@ -3,12 +3,18 @@ BOOL Authorize_Service_Parament(int argc, char** argv) { LPCTSTR lpszFile = _T("./XEngine_Config/XEngine_Config.json"); + LPCTSTR lpszSwitchFile = _T("./XEngine_Config/XEngine_SwitchConfig.json"); if (!ModuleConfigure_Json_File(lpszFile, &st_AuthConfig)) { printf("解析配置文件失败,Configure_IniFile_Read:%lX\n", Config_GetLastError()); return FALSE; } + if (!ModuleConfigure_Json_Switch(lpszSwitchFile, &st_FunSwitch)) + { + printf("解析配置文件失败,ModuleConfigure_Json_Switch:%lX\n", Config_GetLastError()); + return FALSE; + } for (int i = 0;i < argc;i++) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index cf7a01d..898195c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -63,6 +63,7 @@ extern XHANDLE xhTCPPool; extern XHANDLE xhWSPool; extern XHANDLE xhHttpPool; extern XENGINE_SERVICECONFIG st_AuthConfig; +extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #define XENGINE_AUTH_APP_NETTYPE_TCP 0 #define XENGINE_AUTH_APP_NETTYPE_WS 1 diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index fe3791b..d131d0d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -67,6 +67,14 @@ BOOL XEngine_Client_TCPTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int n pSt_ProtocolHdr->unPacketSize = 0; pSt_ProtocolHdr->unOperatorCode = XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPLOGIN; + if (!st_FunSwitch.bSwitchLogin) + { + pSt_ProtocolHdr->wReserve = 503; + Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("客户端:%s,登录失败,因为登录功能被服务器关闭!"), lpszClientAddr); + return FALSE; + } if (ENUM_PROTOCOL_FOR_DEVICE_TYPE_UNKNOW == st_AuthProtocol.enDeviceType) { pSt_ProtocolHdr->wReserve = 250; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 5f9c680..48f176f 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -13,6 +13,7 @@ XHANDLE xhTCPPool = NULL; XHANDLE xhWSPool = NULL; XHANDLE xhHttpPool = NULL; XENGINE_SERVICECONFIG st_AuthConfig; +XENGINE_FUNCTIONSWITCH st_FunSwitch; void ServiceApp_Stop(int signo) { @@ -112,6 +113,7 @@ int main(int argc, char** argv) memset(&st_XLogConfig, '\0', sizeof(HELPCOMPONENTS_XLOG_CONFIGURE)); memset(&st_AuthConfig, '\0', sizeof(XENGINE_SERVICECONFIG)); + memset(&st_FunSwitch, '\0', sizeof(XENGINE_FUNCTIONSWITCH)); if (!Authorize_Service_Parament(argc, argv)) { @@ -182,7 +184,7 @@ int main(int argc, char** argv) xhTCPSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nTCPPort, st_AuthConfig.st_XMax.nMaxClient, st_AuthConfig.st_XMax.nIOThread); if (NULL == xhTCPSocket) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动TCP验证网络服务失败,错误:%lX"), NetCore_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,初始化TCP验证网络服务失败,错误:%lX"), NetCore_GetLastError()); goto XENGINE_EXITAPP; } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化TCP验证网络服务成功,端口:%d,网络池个数:%d"), st_AuthConfig.nTCPPort, st_AuthConfig.st_XMax.nIOThread); @@ -198,7 +200,7 @@ int main(int argc, char** argv) ppSt_ListTCPThread[i]->fpCall_ThreadsTask = XEngine_AuthService_TCPThread; } xhTCPPool = ManagePool_Thread_NQCreate(&ppSt_ListTCPThread, st_AuthConfig.st_XMax.nTCPThread); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动TCP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nTCPThread); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化TCP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nTCPThread); } //是否开启WEBSOCEKT服务 if (st_AuthConfig.nWSPort > 0) @@ -214,7 +216,7 @@ int main(int argc, char** argv) xhWSSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nWSPort, st_AuthConfig.st_XMax.nMaxQueue, st_AuthConfig.st_XMax.nIOThread); if (NULL == xhWSSocket) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动WEBSOCKET验证网络服务失败,错误:%lX"), NetCore_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,初始化WEBSOCKET验证网络服务失败,错误:%lX"), NetCore_GetLastError()); goto XENGINE_EXITAPP; } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化WEBSOCKET验证网络服务成功,端口:%d,网络池个数:%d"), st_AuthConfig.nWSPort, st_AuthConfig.st_XMax.nIOThread); @@ -230,7 +232,7 @@ int main(int argc, char** argv) ppSt_ListWSThread[i]->fpCall_ThreadsTask = XEngine_AuthService_WSThread; } xhWSPool = ManagePool_Thread_NQCreate(&ppSt_ListWSThread, st_AuthConfig.st_XMax.nWSThread); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动WEBSOCKET任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nWSThread); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化WEBSOCKET任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nWSThread); } //是否开启HTTP服务 if (st_AuthConfig.nHTTPPort > 0) @@ -246,7 +248,7 @@ int main(int argc, char** argv) xhHttpSocket = NetCore_TCPXCore_StartEx(st_AuthConfig.nHTTPPort, st_AuthConfig.st_XMax.nMaxQueue, st_AuthConfig.st_XMax.nIOThread); if (NULL == xhHttpSocket) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动HTTP管理网络服务失败,错误:%lX"), NetCore_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,初始化HTTP管理网络服务失败,错误:%lX"), NetCore_GetLastError()); goto XENGINE_EXITAPP; } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化HTTP管理网络服务成功,端口:%d,网络池个数:%d"), st_AuthConfig.nHTTPPort, st_AuthConfig.st_XMax.nIOThread); @@ -262,8 +264,10 @@ int main(int argc, char** argv) ppSt_ListHttpThread[i]->fpCall_ThreadsTask = XEngine_AuthService_HttpThread; } xhHttpPool = ManagePool_Thread_NQCreate(&ppSt_ListHttpThread, st_AuthConfig.st_XMax.nHTTPThread); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动HTTP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nHTTPThread); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化HTTP任务线程池成功,线程个数:%d"), st_AuthConfig.st_XMax.nHTTPThread); } + + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d"), st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("所有服务成功启动,网络验证服务运行中,XEngien版本:%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_OperatorVer_XGetStr(), st_AuthConfig.st_XVer.pStl_ListVer->size(), st_AuthConfig.st_XVer.pStl_ListVer->front().c_str()); while (TRUE) From 3b81514e0050943222987029163dce2f8e2558e0 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Oct 2022 11:32:28 +0800 Subject: [PATCH 07/22] modify:parse support switch protocol --- .../Protocol_Define.h | 26 ++++++++- .../Protocol_Parse/Protocol_Parse.cpp | 53 +++++++++++++++++++ .../Protocol_Parse/Protocol_Parse.h | 1 + .../AuthorizeModule_Protocol/pch.cpp | 4 ++ XEngine_Source/AuthorizeModule_Protocol/pch.h | 3 ++ 5 files changed, 86 insertions(+), 1 deletion(-) diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h index 3dbe0ab..efaa73a 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h @@ -530,4 +530,28 @@ extern "C" BOOL Protocol_Parse_HttpParseOnline(LPCTSTR lpszMsgBuffer, int nMsgLe 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Protocol_Parse_HttpParseTime(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_PROTOCOL_TIME* pSt_ProtocolTime); \ No newline at end of file +extern "C" BOOL Protocol_Parse_HttpParseTime(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_PROTOCOL_TIME* pSt_ProtocolTime); +/******************************************************************** +函数名称:Protocol_Parse_HttpParseSwitch +函数功能:开关选项解析函数 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要解析的大小 + 参数.三:pSt_FunSwitch + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:导出获取到的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH * pSt_FunSwitch); \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp index 2ebaba6..6c8d020 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp @@ -759,4 +759,57 @@ BOOL CProtocol_Parse::Protocol_Parse_HttpParseTime(LPCTSTR lpszMsgBuffer, int nM _tcscpy(pSt_ProtocolTime->tszUserName, st_JsonProtocol["tszUserName"].asCString()); } return TRUE; +} +/******************************************************************** +函数名称:Protocol_Parse_HttpParseSwitch +函数功能:开关选项解析函数 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要解析的大小 + 参数.三:pSt_FunSwitch + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:导出获取到的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CProtocol_Parse::Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch) +{ + Protocol_IsErrorOccur = FALSE; + + if ((NULL == lpszMsgBuffer) || (NULL == pSt_FunSwitch)) + { + Protocol_IsErrorOccur = TRUE; + Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT; + return FALSE; + } + Json::Value st_JsonRoot; + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_ReaderBuilder; + + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (!pSt_JsonReader->parse(lpszMsgBuffer, lpszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Protocol_IsErrorOccur = TRUE; + Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARSE; + return FALSE; + } + Json::Value st_JsonObject = st_JsonRoot["st_SwitchInfo"]; + + pSt_FunSwitch->bSwitchDelete = st_JsonObject["bSwitchDelete"].asBool(); + pSt_FunSwitch->bSwitchRegister = st_JsonObject["bSwitchRegister"].asBool(); + pSt_FunSwitch->bSwitchLogin = st_JsonObject["bSwitchLogin"].asBool(); + pSt_FunSwitch->bSwitchPay = st_JsonObject["bSwitchPay"].asBool(); + pSt_FunSwitch->bSwitchPass = st_JsonObject["bSwitchPass"].asBool(); + return TRUE; } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h index d189f54..13992f9 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h @@ -29,6 +29,7 @@ class CProtocol_Parse BOOL Protocol_Parse_HttpParseSerial2(LPCTSTR lpszMsgBuffer, int nMsgLen, ENUM_HELPCOMPONENTS_AUTHORIZE_SERIAL_TYPE* penSerialType, int* pInt_NumberCount, int* pInt_SerialCount, TCHAR* ptszHasTime); BOOL Protocol_Parse_HttpParseOnline(LPCTSTR lpszMsgBuffer, int nMsgLen, BOOL* pbOnline); BOOL Protocol_Parse_HttpParseTime(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_PROTOCOL_TIME* pSt_ProtocolTime); + BOOL Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch); protected: private: }; \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp index 09a4ae1..6078644 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp @@ -109,4 +109,8 @@ extern "C" BOOL Protocol_Parse_HttpParseOnline(LPCTSTR lpszMsgBuffer, int nMsgLe extern "C" BOOL Protocol_Parse_HttpParseTime(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_PROTOCOL_TIME * pSt_ProtocolTime) { return m_ProtocolParse.Protocol_Parse_HttpParseTime(lpszMsgBuffer, nMsgLen, pSt_ProtocolTime); +} +extern "C" BOOL Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH * pSt_FunSwitch) +{ + return m_ProtocolParse.Protocol_Parse_HttpParseSwitch(lpszMsgBuffer, nMsgLen, pSt_FunSwitch); } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.h b/XEngine_Source/AuthorizeModule_Protocol/pch.h index 1a7cd27..31ccc61 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.h +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.h @@ -16,7 +16,9 @@ #include #include #include +#include #include +using namespace std; #include #include #include @@ -25,6 +27,7 @@ #include #include #include "../XAuth_Protocol.h" +#include "../AuthorizeModule_Configure/Config_Define.h" #include "../AuthorizeModule_Session/Session_Define.h" #include "../AuthorizeModule_Session/Session_Error.h" #include "Protocol_Define.h" From 99a1e7560397b28bf2be6408258547117ca958f1 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Oct 2022 09:48:42 +0800 Subject: [PATCH 08/22] added:switch function protocol packet --- .../AuthorizeModule_Protocol.def | 4 +- .../Protocol_Define.h | 24 ++++++++++ .../Protocol_Packet/Protocol_Packet.cpp | 47 +++++++++++++++++++ .../Protocol_Packet/Protocol_Packet.h | 1 + .../AuthorizeModule_Protocol/pch.cpp | 4 ++ 5 files changed, 79 insertions(+), 1 deletion(-) diff --git a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def index 4199611..2ae6ff0 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def +++ b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def @@ -11,6 +11,7 @@ EXPORTS Protocol_Packet_HttpClientList Protocol_Packet_HttpSerialList Protocol_Packet_HttpToken + Protocol_Packet_HttpSwitch Protocol_Parse_WSHdr Protocol_Parse_HttpParseToken @@ -22,4 +23,5 @@ EXPORTS Protocol_Parse_HttpParseSerial Protocol_Parse_HttpParseSerial2 Protocol_Parse_HttpParseOnline - Protocol_Parse_HttpParseTime \ No newline at end of file + Protocol_Parse_HttpParseTime + Protocol_Parse_HttpParseSwitch \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h index efaa73a..4fce0bb 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h @@ -244,6 +244,30 @@ extern "C" BOOL Protocol_Packet_HttpSerialList(TCHAR* ptszMsgBuffer, int* pInt_M 备注: *********************************************************************/ extern "C" BOOL Protocol_Packet_HttpToken(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout); +/******************************************************************** +函数名称:Protocol_Packet_HttpSwitch +函数功能:打包开关功能选项 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:导出包装好的缓冲区 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出包装大小 + 参数.三:pSt_FunSwitch + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要打包的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Protocol_Packet_HttpSwitch(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch); /************************************************************************/ /* 解析类协议 */ /************************************************************************/ diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp index 948cd6e..75386e0 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp @@ -539,6 +539,53 @@ BOOL CProtocol_Packet::Protocol_Packet_HttpToken(TCHAR* ptszMsgBuffer, int* pInt st_JsonRoot["tszTimeStart"] = tszTimeStart; st_JsonRoot["tszTimeEnd"] = tszTimeEnd; + *pInt_MsgLen = st_JsonRoot.toStyledString().length(); + memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen); + return TRUE; +} +/******************************************************************** +函数名称:Protocol_Packet_HttpSwitch +函数功能:打包开关功能选项 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:导出包装好的缓冲区 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出包装大小 + 参数.三:pSt_FunSwitch + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要打包的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CProtocol_Packet::Protocol_Packet_HttpSwitch(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch) +{ + Protocol_IsErrorOccur = FALSE; + + if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) + { + Protocol_IsErrorOccur = TRUE; + Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT; + return FALSE; + } + Json::Value st_JsonRoot; + + st_JsonRoot["msg"] = "success"; + st_JsonRoot["code"] = 0; + st_JsonRoot["bSwitchDelete"] = pSt_FunSwitch->bSwitchDelete; + st_JsonRoot["bSwitchLogin"] = pSt_FunSwitch->bSwitchLogin; + st_JsonRoot["bSwitchPass"] = pSt_FunSwitch->bSwitchPass; + st_JsonRoot["bSwitchPay"] = pSt_FunSwitch->bSwitchPay; + st_JsonRoot["bSwitchRegister"] = pSt_FunSwitch->bSwitchRegister; + *pInt_MsgLen = st_JsonRoot.toStyledString().length(); memcpy(ptszMsgBuffer, st_JsonRoot.toStyledString().c_str(), *pInt_MsgLen); return TRUE; diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h index 21d5cc2..e48e58f 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h @@ -26,6 +26,7 @@ class CProtocol_Packet BOOL Protocol_Packet_HttpClientList(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHSESSION_NETCLIENT*** pppSt_OnClient, int nOnCount, AUTHREG_USERTABLE*** pppSt_OffClient, int nOffCount); BOOL Protocol_Packet_HttpSerialList(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_SERIALTABLE*** pppSt_SerialList, int nListCount); BOOL Protocol_Packet_HttpToken(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout); + BOOL Protocol_Packet_HttpSwitch(TCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch); protected: private: }; \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp index 6078644..5c364e2 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp @@ -63,6 +63,10 @@ extern "C" BOOL Protocol_Packet_HttpToken(TCHAR * ptszMsgBuffer, int* pInt_MsgLe { return m_ProtocolPacket.Protocol_Packet_HttpToken(ptszMsgBuffer, pInt_MsgLen, xhToken, nTimeout); } +extern "C" BOOL Protocol_Packet_HttpSwitch(TCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_FUNCTIONSWITCH * pSt_FunSwitch) +{ + return m_ProtocolPacket.Protocol_Packet_HttpSwitch(ptszMsgBuffer, pInt_MsgLen, pSt_FunSwitch); +} /************************************************************************/ /* 解析类协议 */ /************************************************************************/ From 808ad0a9ba243ea6b3ea3bc1093085a780757561 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Oct 2022 09:50:09 +0800 Subject: [PATCH 09/22] added:get function switch for service --- .../AuthorizeHTTP_Switch.cpp | 30 +++++++++++++++++++ .../AuthorizeHTTP_Post/AuthorizeHTTP_Switch.h | 3 ++ .../XEngine_AuthorizeService/Authorize_Hdr.h | 5 ++-- .../Authorize_HttpTask.cpp | 23 ++++++++++++++ .../XEngine_AuthorizeService/Makefile | 4 ++- .../XEngine_AuthorizeService.vcxproj | 2 ++ .../XEngine_AuthorizeService.vcxproj.filters | 6 ++++ 7 files changed, 70 insertions(+), 3 deletions(-) create mode 100644 XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp create mode 100644 XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.h diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp new file mode 100644 index 0000000..a029f66 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp @@ -0,0 +1,30 @@ +#include "../Authorize_Hdr.h" + +BOOL XEngine_AuthorizeHTTP_Switch(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen) +{ + int nSDLen = 4096; + int nRVLen = 4096; + TCHAR tszSDBuffer[4096]; + TCHAR tszRVBuffer[4096]; + LPCTSTR lpszAPIGet = _T("get"); + LPCTSTR lpszAPISet = _T("set"); + + memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); + memset(tszRVBuffer, '\0', sizeof(tszRVBuffer)); + + if (0 == _tcsnicmp(lpszAPIGet, lpszAPIName, _tcslen(lpszAPIGet))) + { + Protocol_Packet_HttpSwitch(tszSDBuffer, &nSDLen, &st_FunSwitch); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求获取功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister); + } + else if (0 == _tcsnicmp(lpszAPISet, lpszAPIName, _tcslen(lpszAPISet))) + { + Protocol_Parse_HttpParseSwitch(lpszMsgBuffer, nMsgLen, &st_FunSwitch); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求设置功能开关成功,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d"), lpszClientAddr, st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister); + } + + return TRUE; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.h new file mode 100644 index 0000000..c1da707 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.h @@ -0,0 +1,3 @@ +#pragma once + +BOOL XEngine_AuthorizeHTTP_Switch(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen); \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index 898195c..6998e94 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -41,14 +41,14 @@ using namespace std; #include #include #include "../../XAuth_Protocol.h" +#include "../../AuthorizeModule_Configure/Config_Define.h" +#include "../../AuthorizeModule_Configure/Config_Error.h" #include "../../AuthorizeModule_Database/Database_Define.h" #include "../../AuthorizeModule_Database/Database_Error.h" #include "../../AuthorizeModule_Session/Session_Define.h" #include "../../AuthorizeModule_Session/Session_Error.h" #include "../../AuthorizeModule_Protocol/Protocol_Define.h" #include "../../AuthorizeModule_Protocol/Protocol_Error.h" -#include "../../AuthorizeModule_Configure/Config_Define.h" -#include "../../AuthorizeModule_Configure/Config_Error.h" extern BOOL bIsRun; extern XLOG xhLog; @@ -80,6 +80,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #include "AuthorizeHTTP_Post/AuthorizeHTTP_Client.h" #include "AuthorizeHTTP_Post/AuthorizeHTTP_Serial.h" #include "AuthorizeHTTP_Post/AuthorizeHTTP_Pass.h" +#include "AuthorizeHTTP_Post/AuthorizeHTTP_Switch.h" #include "AuthorizeHTTP_Get/AuthorizeHTTP_Token.h" #ifdef _WINDOWS diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index fba9841..396d764 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -68,6 +68,7 @@ BOOL XEngine_Client_HttpTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int LPCTSTR lpszAPIVerSerial = _T("serial"); LPCTSTR lpszAPIVerUser = _T("user"); LPCTSTR lpszAPIVerPass = _T("pass"); + LPCTSTR lpszAPIVerSwitch = _T("switch"); memset(tszAPIType, '\0', sizeof(tszAPIType)); memset(tszAPIVer, '\0', sizeof(tszAPIVer)); @@ -134,6 +135,28 @@ BOOL XEngine_Client_HttpTask(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int { XEngine_AuthorizeHTTP_Pass(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); } + else if (0 == _tcsnicmp(lpszAPIVerSwitch, tszAPIVer, _tcslen(lpszAPIVerSwitch))) + { + AUTHREG_USERTABLE st_UserTable; + memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); + //验证权限 + Protocol_Parse_HttpParseToken(lpszMsgBuffer, nMsgLen, &xhToken); + if (!Session_Token_Get(xhToken, &st_UserTable)) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "Unauthorized"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,请求的API:%s 失败,因为没有经过验证"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); + return FALSE; + } + if (0 != st_UserTable.st_UserInfo.nUserLevel) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "permission is failed"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); + return FALSE; + } + XEngine_AuthorizeHTTP_Switch(lpszClientAddr, tszAPIName, lpszMsgBuffer, nMsgLen); + } } else if (0 == _tcsnicmp(lpszMethodGet, pSt_HTTPParament->tszHttpMethod, _tcslen(lpszMethodGet))) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile index 034ac6b..4b7bc9e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile @@ -10,7 +10,7 @@ LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool LIBEX = -ldl -lpthread LOADSO = -Wl,-rpath=./,--disable-new-dtags LIBINCLUDE = Authorize_Config.o Authorize_Net.o Authorize_Task.o Authorize_TCPTask.o Authorize_WSTask.o Authorize_HttpTask.o XEngine_AuthorizeService.o \ - AuthorizeHTTP_Client.o AuthorizeHTTP_Serial.o AuthorizeHTTP_User.o AuthorizeHTTP_Pass.o \ + AuthorizeHTTP_Client.o AuthorizeHTTP_Serial.o AuthorizeHTTP_User.o AuthorizeHTTP_Pass.o AuthorizeHTTP_Switch.o \ AuthorizeHTTP_Token.o ifeq ($(OS),Windows_NT) @@ -63,6 +63,8 @@ AuthorizeHTTP_User.o:./AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp AuthorizeHTTP_Pass.o:./AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp +AuthorizeHTTP_Switch.o:./AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp AuthorizeHTTP_Token.o:./AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) ./AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj index 4b45e26..c6a20e7 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj @@ -154,6 +154,7 @@ + @@ -168,6 +169,7 @@ + diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters index 2795b43..fed2230 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters @@ -63,6 +63,9 @@ 源文件\AuthorizeHTTP_Post + + 源文件\AuthorizeHTTP_Post + @@ -101,5 +104,8 @@ 头文件\AuthorizeHTTP_Post + + 头文件\AuthorizeHTTP_Post + \ No newline at end of file From 4aaffde4ec4bf657fc8e0b92ad4d0bb7689344a8 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Oct 2022 09:51:37 +0800 Subject: [PATCH 10/22] added:support control function switch for management app --- .../Authorize_Dialog/Dialog_Switch.cpp | 313 ++++++++++++++++++ .../Authorize_Dialog/Dialog_Switch.h | 40 +++ .../XEngineAuthorizeApp.aps | Bin 98520 -> 118452 bytes .../XEngineAuthorizeApp.rc | Bin 22364 -> 25594 bytes .../XEngine_AuthorizeApp.vcxproj | 2 + .../XEngine_AuthorizeApp.vcxproj.filters | 6 + .../XEngine_AuthorizeAppDlg.cpp | 12 + .../XEngine_AuthorizeAppDlg.h | 1 + .../XEngine_AuthorizeApp/pch.h | 5 + .../XEngine_AuthorizeApp/resource.h | 11 +- 10 files changed, 389 insertions(+), 1 deletion(-) create mode 100644 XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp create mode 100644 XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp new file mode 100644 index 0000000..96c30a3 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.cpp @@ -0,0 +1,313 @@ +// Dialog_Switch.cpp: 实现文件 +// + +#include "pch.h" +#include "../XEngine_AuthorizeApp.h" +#include "afxdialogex.h" +#include "Dialog_Switch.h" + + +// CDialog_Switch 对话框 + +IMPLEMENT_DYNAMIC(CDialog_Switch, CDialogEx) + +CDialog_Switch::CDialog_Switch(CWnd* pParent /*=nullptr*/) + : CDialogEx(IDD_DIALOG_SWITCH, pParent) +{ + +} + +CDialog_Switch::~CDialog_Switch() +{ +} + +void CDialog_Switch::DoDataExchange(CDataExchange* pDX) +{ + CDialogEx::DoDataExchange(pDX); + DDX_Control(pDX, IDC_RADIO1, m_RadioDelOPen); + DDX_Control(pDX, IDC_RADIO2, m_RadioDelClose); + DDX_Control(pDX, IDC_RADIO3, m_RadioRegOPen); + DDX_Control(pDX, IDC_RADIO4, m_RadioRegClose); + DDX_Control(pDX, IDC_RADIO5, m_RadioLoginOPen); + DDX_Control(pDX, IDC_RADIO6, m_RadioLoginClose); + DDX_Control(pDX, IDC_RADIO7, m_RadioPayOPen); + DDX_Control(pDX, IDC_RADIO8, m_RadioPayClose); + DDX_Control(pDX, IDC_RADIO9, m_RadioPassOPen); + DDX_Control(pDX, IDC_RADIO10, m_RadioPassClose); + DDX_Control(pDX, IDC_BUTTON2, m_BtnSetConfigure); + DDX_Control(pDX, IDC_BUTTON1, m_BtnGetConfigure); +} + + +BEGIN_MESSAGE_MAP(CDialog_Switch, CDialogEx) + ON_BN_CLICKED(IDC_BUTTON1, &CDialog_Switch::OnBnClickedButton1) + ON_BN_CLICKED(IDC_BUTTON2, &CDialog_Switch::OnBnClickedButton2) +END_MESSAGE_MAP() + + +// CDialog_Switch 消息处理程序 + + +void CDialog_Switch::OnBnClickedButton1() +{ + // TODO: 在此添加控件通知处理程序代码 + CString m_StrIPAddr; + CString m_StrIPPort; + CString m_StrToken; + TCHAR tszUrlAddr[MAX_PATH]; + CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd); + + memset(tszUrlAddr, '\0', MAX_PATH); + pWnd->m_EditIPAddr.GetWindowText(m_StrIPAddr); + pWnd->m_EditIPPort.GetWindowText(m_StrIPPort); + pWnd->m_EditToken.GetWindowText(m_StrToken); + + Json::Value st_JsonRoot; + st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer()); + + int nMsgLen = 0; + CHAR* ptszMsgBuffer = NULL; + _stprintf(tszUrlAddr, _T("http://%s:%s/auth/switch/get"), m_StrIPAddr.GetBuffer(), m_StrIPPort.GetBuffer()); + //是否加密 + TCHAR tszPassBuffer[64]; + memset(tszPassBuffer, '\0', sizeof(tszPassBuffer)); + ::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer)); + + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + } + else + { + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + } + st_JsonRoot.clear(); + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_ReaderBuilder; + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, tszPassBuffer); + if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); + return; + } + } + else + { + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); + return; + } + } + + if (0 == st_JsonRoot["code"].asInt()) + { + Authorize_Help_LogPrint(_T("查询服务功能开关成功")); + + if (st_JsonRoot["bSwitchDelete"].asBool()) + { + m_RadioDelOPen.SetCheck(BST_CHECKED); + m_RadioDelClose.SetCheck(BST_UNCHECKED); + } + else + { + m_RadioDelOPen.SetCheck(BST_UNCHECKED); + m_RadioDelClose.SetCheck(BST_CHECKED); + } + + if (st_JsonRoot["bSwitchRegister"].asBool()) + { + m_RadioRegOPen.SetCheck(BST_CHECKED); + m_RadioRegClose.SetCheck(BST_UNCHECKED); + } + else + { + m_RadioRegOPen.SetCheck(BST_UNCHECKED); + m_RadioRegClose.SetCheck(BST_CHECKED); + } + + if (st_JsonRoot["bSwitchLogin"].asBool()) + { + m_RadioLoginOPen.SetCheck(BST_CHECKED); + m_RadioLoginClose.SetCheck(BST_UNCHECKED); + } + else + { + m_RadioLoginOPen.SetCheck(BST_UNCHECKED); + m_RadioLoginClose.SetCheck(BST_CHECKED); + } + + if (st_JsonRoot["bSwitchPay"].asBool()) + { + m_RadioPayOPen.SetCheck(BST_CHECKED); + m_RadioPayClose.SetCheck(BST_UNCHECKED); + } + else + { + m_RadioPayOPen.SetCheck(BST_UNCHECKED); + m_RadioPayClose.SetCheck(BST_CHECKED); + } + + if (st_JsonRoot["bSwitchPass"].asBool()) + { + m_RadioPassOPen.SetCheck(BST_CHECKED); + m_RadioPassClose.SetCheck(BST_UNCHECKED); + } + else + { + m_RadioPassOPen.SetCheck(BST_UNCHECKED); + m_RadioPassClose.SetCheck(BST_CHECKED); + } + m_BtnSetConfigure.EnableWindow(TRUE); + } + else + { + Authorize_Help_LogPrint(_T("查询服务功能开关失败")); + } + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); +} + + +void CDialog_Switch::OnBnClickedButton2() +{ + // TODO: 在此添加控件通知处理程序代码 + CString m_StrIPAddr; + CString m_StrIPPort; + CString m_StrToken; + TCHAR tszUrlAddr[MAX_PATH]; + CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd); + + memset(tszUrlAddr, '\0', MAX_PATH); + pWnd->m_EditIPAddr.GetWindowText(m_StrIPAddr); + pWnd->m_EditIPPort.GetWindowText(m_StrIPPort); + pWnd->m_EditToken.GetWindowText(m_StrToken); + + Json::Value st_JsonRoot; + Json::Value st_JsonObject; + + if (BST_CHECKED == m_RadioDelOPen.GetCheck()) + { + st_JsonObject["bSwitchDelete"] = true; + } + else + { + st_JsonObject["bSwitchDelete"] = false; + } + + if (BST_CHECKED == m_RadioRegOPen.GetCheck()) + { + st_JsonObject["bSwitchRegister"] = true; + } + else + { + st_JsonObject["bSwitchRegister"] = false; + } + + if (BST_CHECKED == m_RadioLoginOPen.GetCheck()) + { + st_JsonObject["bSwitchLogin"] = true; + } + else + { + st_JsonObject["bSwitchLogin"] = false; + } + + if (BST_CHECKED == m_RadioPayOPen.GetCheck()) + { + st_JsonObject["bSwitchPay"] = true; + } + else + { + st_JsonObject["bSwitchPay"] = false; + } + + if (BST_CHECKED == m_RadioPassOPen.GetCheck()) + { + st_JsonObject["bSwitchPass"] = true; + } + else + { + st_JsonObject["bSwitchPass"] = false; + } + + st_JsonRoot["st_SwitchInfo"] = st_JsonObject; + st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer()); + + int nMsgLen = 0; + CHAR* ptszMsgBuffer = NULL; + _stprintf(tszUrlAddr, _T("http://%s:%s/auth/switch/set"), m_StrIPAddr.GetBuffer(), m_StrIPPort.GetBuffer()); + //是否加密 + TCHAR tszPassBuffer[64]; + memset(tszPassBuffer, '\0', sizeof(tszPassBuffer)); + ::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer)); + + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + } + else + { + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + } + st_JsonRoot.clear(); + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_ReaderBuilder; + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, tszPassBuffer); + if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); + return; + } + } + else + { + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析接口数据错误,无法继续")); + return; + } + } + + if (0 == st_JsonRoot["code"].asInt()) + { + Authorize_Help_LogPrint(_T("设置功能开关成功")); + } + else + { + Authorize_Help_LogPrint(_T("插入功能开关失败")); + } + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); +} + + +BOOL CDialog_Switch::OnInitDialog() +{ + CDialogEx::OnInitDialog(); + + // TODO: 在此添加额外的初始化 + m_BtnSetConfigure.EnableWindow(FALSE); + return TRUE; // return TRUE unless you set the focus to a control + // 异常: OCX 属性页应返回 FALSE +} diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h new file mode 100644 index 0000000..0bea832 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Switch.h @@ -0,0 +1,40 @@ +#pragma once +#include "afxdialogex.h" + + +// CDialog_Switch 对话框 + +class CDialog_Switch : public CDialogEx +{ + DECLARE_DYNAMIC(CDialog_Switch) + +public: + CDialog_Switch(CWnd* pParent = nullptr); // 标准构造函数 + virtual ~CDialog_Switch(); + +// 对话框数据 +#ifdef AFX_DESIGN_TIME + enum { IDD = IDD_DIALOG_SWITCH }; +#endif + +protected: + virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 + + DECLARE_MESSAGE_MAP() +public: + afx_msg void OnBnClickedButton1(); + CButton m_RadioDelOPen; + CButton m_RadioDelClose; + CButton m_RadioRegOPen; + CButton m_RadioRegClose; + CButton m_RadioLoginOPen; + CButton m_RadioLoginClose; + CButton m_RadioPayOPen; + CButton m_RadioPayClose; + CButton m_RadioPassOPen; + CButton m_RadioPassClose; + afx_msg void OnBnClickedButton2(); + virtual BOOL OnInitDialog(); + CButton m_BtnSetConfigure; + CButton m_BtnGetConfigure; +}; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps index e1848011deb03a75711e24860a361870766d049e..e4a0d3d194eeb57393e0c5911497a550fc789046 100644 GIT binary patch delta 12763 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 delta 36 ucmV+<0Neli#{t}~0kDWZlL}F=vouOV4wL*)3bU?RfCH263>ve%T|NdlArHU+ diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj index 31dc6c3..26763d5 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj @@ -194,6 +194,7 @@ + @@ -207,6 +208,7 @@ + diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj.filters b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj.filters index 8dd51b5..9f87650 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj.filters +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeApp.vcxproj.filters @@ -60,6 +60,9 @@ 头文件\Authorize_Help + + 头文件\Authorize_Dialog + @@ -86,6 +89,9 @@ 源文件\Authorize_Help + + 源文件\Authorize_Dialog + diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp index d942618..bc356f2 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.cpp @@ -68,10 +68,12 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog() m_TabWindows.InsertItem(0, _T("服务配置")); m_TabWindows.InsertItem(1, _T("用户管理")); m_TabWindows.InsertItem(2, _T("序列号管理")); + m_TabWindows.InsertItem(3, _T("功能开关")); m_DlgConfig.Create(IDD_DIALOG_CONFIG, &m_TabWindows); m_DlgUser.Create(IDD_DIALOG_USER, &m_TabWindows); m_DlgSerial.Create(IDD_DIALOG_SERIAL, &m_TabWindows); + m_DlgSwitch.Create(IDD_DIALOG_SWITCH, &m_TabWindows); //调整子对话框在父窗口中的位置 CRect st_Rect; m_TabWindows.GetClientRect(&st_Rect); @@ -83,10 +85,12 @@ BOOL CXEngineAuthorizeAppDlg::OnInitDialog() m_DlgConfig.MoveWindow(&st_Rect); m_DlgUser.MoveWindow(&st_Rect); m_DlgSerial.MoveWindow(&st_Rect); + m_DlgSwitch.MoveWindow(&st_Rect); //分别设置隐藏和显示 m_DlgConfig.ShowWindow(TRUE); m_DlgUser.ShowWindow(FALSE); m_DlgSerial.ShowWindow(FALSE); + m_DlgSwitch.ShowWindow(FALSE); m_TabWindows.SetCurSel(0); hMainWnd = m_hWnd; @@ -140,17 +144,25 @@ void CXEngineAuthorizeAppDlg::OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult m_DlgConfig.ShowWindow(TRUE); m_DlgUser.ShowWindow(FALSE); m_DlgSerial.ShowWindow(FALSE); + m_DlgSwitch.ShowWindow(FALSE); break; case 1: m_DlgConfig.ShowWindow(FALSE); m_DlgUser.ShowWindow(TRUE); m_DlgSerial.ShowWindow(FALSE); + m_DlgSwitch.ShowWindow(FALSE); break; case 2: m_DlgConfig.ShowWindow(FALSE); m_DlgUser.ShowWindow(FALSE); m_DlgSerial.ShowWindow(TRUE); + m_DlgSwitch.ShowWindow(FALSE); break; + case 3: + m_DlgConfig.ShowWindow(FALSE); + m_DlgUser.ShowWindow(FALSE); + m_DlgSerial.ShowWindow(FALSE); + m_DlgSwitch.ShowWindow(TRUE); default: break; } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h index f44ce79..fec042d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngine_AuthorizeAppDlg.h @@ -34,6 +34,7 @@ class CXEngineAuthorizeAppDlg : public CDialogEx CDialog_Config m_DlgConfig; CDialog_User m_DlgUser; CDialog_Serial m_DlgSerial; + CDialog_Switch m_DlgSwitch; public: CTabCtrl m_TabWindows; afx_msg void OnTcnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h index 25ea7bc..b2a6b75 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/pch.h @@ -12,6 +12,8 @@ #endif //PCH_H #include +#include +using namespace std; #include #include #include @@ -23,12 +25,15 @@ #include #include #include "../../XAuth_Protocol.h" +#include "../../AuthorizeModule_Configure/Config_Define.h" +#include "../../AuthorizeModule_Configure/Config_Error.h" #include "../../AuthorizeModule_Help/AuthHelp_Define.h" #include "../../AuthorizeModule_Help/AuthHelp_Error.h" #include "Authorize_Dialog/Dialog_Config.h" #include "Authorize_Dialog/Dialog_User.h" #include "Authorize_Dialog/Dialog_Serial.h" #include "Authorize_Dialog/Dialog_Modify.h" +#include "Authorize_Dialog/Dialog_Switch.h" #include "Authorize_Help/Authorize_Help.h" extern HWND hMainWnd; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h index 433c305..643065b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h @@ -8,6 +8,7 @@ #define IDD_DIALOG_USER 132 #define IDD_DIALOG_SERIAL 134 #define IDD_DIALOG_MODIFY 136 +#define IDD_DIALOG_SWITCH 138 #define IDC_TAB1 1000 #define IDC_EDIT1 1001 #define IDC_EDIT2 1002 @@ -31,12 +32,20 @@ #define IDC_CHECK2 1014 #define IDC_RADIO1 1015 #define IDC_RADIO2 1016 +#define IDC_RADIO3 1017 +#define IDC_RADIO4 1018 +#define IDC_RADIO5 1019 +#define IDC_RADIO6 1020 +#define IDC_RADIO7 1021 +#define IDC_RADIO8 1022 +#define IDC_RADIO9 1023 +#define IDC_RADIO10 1024 // Next default values for new objects // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 138 +#define _APS_NEXT_RESOURCE_VALUE 140 #define _APS_NEXT_COMMAND_VALUE 32771 #define _APS_NEXT_CONTROL_VALUE 1017 #define _APS_NEXT_SYMED_VALUE 101 From a1beff39bb832b05a10a66f09afb120da2e6a7d1 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Oct 2022 09:52:17 +0800 Subject: [PATCH 11/22] fixed:not upload help code --- .../Authorize_Help/Authorize_Help.cpp | 45 +++++++++++++++++++ .../Authorize_Help/Authorize_Help.h | 13 ++++++ 2 files changed, 58 insertions(+) create mode 100644 XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Help/Authorize_Help.cpp create mode 100644 XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Help/Authorize_Help.h diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Help/Authorize_Help.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Help/Authorize_Help.cpp new file mode 100644 index 0000000..807aad9 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Help/Authorize_Help.cpp @@ -0,0 +1,45 @@ +#include "pch.h" +#include "../resource.h" +#include "Authorize_Help.h" +/******************************************************************** +// Created: 2022/09/15 09:40:05 +// File Name: H:\XEngine_Authorize\XEngine_Source\XEngine_APPService\XEngine_AuthorizeApp\Authorize_Help\Authorize_Help.cpp +// File Path: H:\XEngine_Authorize\XEngine_Source\XEngine_APPService\XEngine_AuthorizeApp\Authorize_Help +// File Base: Authorize_Help +// File Ext: cpp +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 帮助函数类 +// History: +*********************************************************************/ +////////////////////////////////////////////////////////////////////////// +// 公有函数 +////////////////////////////////////////////////////////////////////////// +BOOL Authorize_Help_LogPrint(LPCTSTR lpszLogBuffer) +{ + TCHAR tszLogBuffer[8196]; + TCHAR tszAddBuffer[8196]; + TCHAR tszTimeStr[64]; + + memset(tszLogBuffer, '\0', sizeof(tszLogBuffer)); + memset(tszAddBuffer, '\0', sizeof(tszAddBuffer)); + memset(tszTimeStr, '\0', sizeof(tszTimeStr)); + + ::GetDlgItemText(hMainWnd, IDC_EDIT1, tszAddBuffer, sizeof(tszAddBuffer)); + + BaseLib_OperatorTime_TimeToStr(tszTimeStr); + if (_tcslen(tszAddBuffer) <= 0) + { + _stprintf(tszLogBuffer, _T("%s:%s"), tszTimeStr, lpszLogBuffer); + } + else if (_tcslen(tszAddBuffer) >= 8196) + { + _stprintf(tszLogBuffer, _T("%s:%s"), tszTimeStr, lpszLogBuffer); + } + else + { + _stprintf(tszLogBuffer, _T("%s\r\n%s:%s"), tszAddBuffer, tszTimeStr, lpszLogBuffer); + } + ::SetDlgItemText(hMainWnd, IDC_EDIT1, tszLogBuffer); + return TRUE; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Help/Authorize_Help.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Help/Authorize_Help.h new file mode 100644 index 0000000..0141bd7 --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Help/Authorize_Help.h @@ -0,0 +1,13 @@ +#pragma once +/******************************************************************** +// Created: 2022/09/15 09:39:01 +// File Name: H:\XEngine_Authorize\XEngine_Source\XEngine_APPService\XEngine_AuthorizeApp\Authorize_Help\Authorize_Help.h +// File Path: H:\XEngine_Authorize\XEngine_Source\XEngine_APPService\XEngine_AuthorizeApp\Authorize_Help +// File Base: Authorize_Help +// File Ext: h +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 帮助函数类 +// History: +*********************************************************************/ +BOOL Authorize_Help_LogPrint(LPCTSTR lpszLogBuffer); \ No newline at end of file From 9a2f6d7727979825f22616ead806c56b229373ea Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 31 Oct 2022 09:11:09 +0800 Subject: [PATCH 12/22] added:insert custom serial for db --- .../AuthorizeModule_Database.def | 1 + .../Database_Define.h | 14 ++++++++ .../Database_SQLite/Database_SQLite.cpp | 36 +++++++++++++++++++ .../Database_SQLite/Database_SQLite.h | 1 + .../AuthorizeModule_Database/pch.cpp | 4 +++ 5 files changed, 56 insertions(+) diff --git a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def index 5a278fd..60ea7bf 100644 --- a/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def +++ b/XEngine_Source/AuthorizeModule_Database/AuthorizeModule_Database.def @@ -16,6 +16,7 @@ EXPORTS Database_SQLite_SerialDelete Database_SQLite_SerialQuery Database_SQLite_SerialQueryAll + Database_SQLite_SerialPush Database_SQLite_TryInsert Database_SQLite_TryQuery Database_SQLite_TryDelete diff --git a/XEngine_Source/AuthorizeModule_Database/Database_Define.h b/XEngine_Source/AuthorizeModule_Database/Database_Define.h index 58a3d91..0b51135 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_Define.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_Define.h @@ -225,6 +225,20 @@ extern "C" BOOL Database_SQLite_SerialQuery(LPCSTR lpszSerialNumber,LPAUTHREG_SE *********************************************************************/ extern "C" BOOL Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_SerialTable, int* pInt_ListCount); /******************************************************************** +函数名称:Database_SQLite_SerialPush +函数功能:插入一条指定的序列号信息到服务器 + 参数.一:pSt_SerialTable + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable); +/******************************************************************** 函数名称:Database_SQLite_TryInsert 函数功能:网络使用模式插入一条数据 参数.一:pSt_AuthVer diff --git a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp index 15e2563..1882730 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp +++ b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp @@ -754,6 +754,42 @@ BOOL CDatabase_SQLite::Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE ***ppp return TRUE; } /******************************************************************** +函数名称:Database_SQLite_SerialPush +函数功能:插入一条指定的序列号信息到服务器 + 参数.一:pSt_SerialTable + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CDatabase_SQLite::Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable) +{ + SQLPacket_IsErrorOccur = FALSE; + + TCHAR tszSQLStatement[1024]; //SQL语句 + memset(tszSQLStatement, '\0', 1024); + + if (Database_SQLite_SerialQuery(pSt_SerialTable->tszSerialNumber)) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; + return FALSE; + } + _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_Serial values(NULL,'%s','%s','%s',%d,%d,%s)"), pSt_SerialTable->tszUserName, pSt_SerialTable->tszSerialNumber, pSt_SerialTable->tszMaxTime, pSt_SerialTable->enSerialType, pSt_SerialTable->bIsUsed, pSt_SerialTable->tszCreateTime); + + if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) + { + SQLPacket_IsErrorOccur = TRUE; + SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_ISFAILED; + return FALSE; + } + return TRUE; +} +/******************************************************************** 函数名称:Database_SQLite_TryInsert 函数功能:网络使用模式插入一条数据 参数.一:pSt_AuthVer diff --git a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h index 7a4230b..ac90269 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h @@ -35,6 +35,7 @@ class CDatabase_SQLite BOOL Database_SQLite_SerialDelete(LPCTSTR lpszSerialNumber); //删除一个序列号 BOOL Database_SQLite_SerialQuery(LPCTSTR lpszSerialNumber,LPAUTHREG_SERIALTABLE pSt_SerialTable = NULL); //按照卡号或者用户查询 BOOL Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE ***pppSt_SerialTable,int *pInt_ListCount); //查询所有序列卡 + BOOL Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable); public: BOOL Database_SQLite_TryInsert(AUTHREG_NETVER* pSt_AuthVer); BOOL Database_SQLite_TryQuery(AUTHREG_NETVER* pSt_AuthVer); diff --git a/XEngine_Source/AuthorizeModule_Database/pch.cpp b/XEngine_Source/AuthorizeModule_Database/pch.cpp index e8e3621..a34e01e 100644 --- a/XEngine_Source/AuthorizeModule_Database/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Database/pch.cpp @@ -81,6 +81,10 @@ extern "C" BOOL Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_Ser { return m_SQLAuth.Database_SQLite_SerialQueryAll(pppSt_SerialTable, pInt_ListCount); } +extern "C" BOOL Database_SQLite_SerialPush(AUTHREG_SERIALTABLE * pSt_SerialTable) +{ + return m_SQLAuth.Database_SQLite_SerialPush(pSt_SerialTable); +} extern "C" BOOL Database_SQLite_TryInsert(AUTHREG_NETVER * pSt_AuthVer) { return m_SQLAuth.Database_SQLite_TryInsert(pSt_AuthVer); From 128a0fb97bc0f9e4f41a7a09b2dc25f9805ffc20 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 31 Oct 2022 09:11:42 +0800 Subject: [PATCH 13/22] added:support insert custom serial --- .../AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp index b7dc90b..357017b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp @@ -7,6 +7,7 @@ BOOL XEngine_AuthorizeHTTP_Serial(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, L LPCTSTR lpszAPIList = _T("list"); LPCTSTR lpszAPIInsert = _T("insert"); LPCTSTR lpszAPIDelete = _T("delete"); + LPCTSTR lpszAPIPush = _T("push"); memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); @@ -106,5 +107,20 @@ BOOL XEngine_AuthorizeHTTP_Serial(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, L XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求删除序列号成功,删除个数:%d"), lpszClientAddr, nListCount); } + else if (0 == _tcsnicmp(lpszAPIPush, lpszAPIName, _tcslen(lpszAPIPush))) + { + int nListCount = 0; + AUTHREG_SERIALTABLE** ppSt_SerialTable; + + Protocol_Parse_HttpParseSerial(lpszMsgBuffer, nMsgLen, &ppSt_SerialTable, &nListCount); + for (int i = 0; i < nListCount; i++) + { + Database_SQLite_SerialPush(ppSt_SerialTable[i]); + } + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_SerialTable, nListCount); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("HTTP客户端:%s,请求推送自定义序列号成功,个数:%d"), lpszClientAddr, nListCount); + } return TRUE; } \ No newline at end of file From e63ce9f7e325f7986238c1be352d5dbcf912d811 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 31 Oct 2022 09:25:57 +0800 Subject: [PATCH 14/22] added:serial export and import supported for management app --- .../Database_SQLite/Database_SQLite.cpp | 2 +- .../Authorize_Dialog/Dialog_Serial.cpp | 182 ++++++++++++++++++ .../Authorize_Dialog/Dialog_Serial.h | 2 + .../XEngineAuthorizeApp.aps | Bin 118452 -> 100428 bytes .../XEngineAuthorizeApp.rc | Bin 25594 -> 25812 bytes .../XEngine_AuthorizeApp/resource.h | 2 + 6 files changed, 187 insertions(+), 1 deletion(-) diff --git a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp index 1882730..595cf55 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp +++ b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp @@ -779,7 +779,7 @@ BOOL CDatabase_SQLite::Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_Seria SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_EXIST; return FALSE; } - _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_Serial values(NULL,'%s','%s','%s',%d,%d,%s)"), pSt_SerialTable->tszUserName, pSt_SerialTable->tszSerialNumber, pSt_SerialTable->tszMaxTime, pSt_SerialTable->enSerialType, pSt_SerialTable->bIsUsed, pSt_SerialTable->tszCreateTime); + _stprintf_s(tszSQLStatement, _T("INSERT INTO AuthReg_Serial values(NULL,'%s','%s','%s',%d,%d,'%s')"), pSt_SerialTable->tszUserName, pSt_SerialTable->tszSerialNumber, pSt_SerialTable->tszMaxTime, pSt_SerialTable->enSerialType, pSt_SerialTable->bIsUsed, pSt_SerialTable->tszCreateTime); if (!DataBase_SQLite_Exec(xhData, tszSQLStatement)) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp index a699855..893bf86 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp @@ -37,6 +37,8 @@ BEGIN_MESSAGE_MAP(CDialog_Serial, CDialogEx) ON_BN_CLICKED(IDC_BUTTON2, &CDialog_Serial::OnBnClickedButton2) ON_BN_CLICKED(IDC_BUTTON4, &CDialog_Serial::OnBnClickedButton4) ON_BN_CLICKED(IDC_BUTTON3, &CDialog_Serial::OnBnClickedButton3) + ON_BN_CLICKED(IDC_BUTTON6, &CDialog_Serial::OnBnClickedButton6) + ON_BN_CLICKED(IDC_BUTTON7, &CDialog_Serial::OnBnClickedButton7) END_MESSAGE_MAP() @@ -373,3 +375,183 @@ void CDialog_Serial::OnBnClickedButton3() } Authorize_Help_LogPrint(_T("复制成功!")); } + + +void CDialog_Serial::OnBnClickedButton6() +{ + // TODO: 在此添加控件通知处理程序代码 + TCHAR tszFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||"); + CFileDialog m_FileDlg(TRUE, _T("txt"), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, tszFilter, this); + // 显示保存文件对话框 + if (IDOK != m_FileDlg.DoModal()) + { + return; + } + FILE* pSt_File = _tfopen(m_FileDlg.GetPathName(), _T("rb")); + + TCHAR tszMsgBuffer[MAX_PATH]; + //跳过第一行 + if (NULL == fgets(tszMsgBuffer, MAX_PATH, pSt_File)) + { + //没有数据 + AfxMessageBox(_T("没有数据")); + return; + } + list stl_ListSerial; + while (TRUE) + { + memset(tszMsgBuffer, '\0', MAX_PATH); + //一行一行读取 + if (NULL == fgets(tszMsgBuffer, MAX_PATH, pSt_File)) + { + break; + } + //解析数据 + int nID = 0; + AUTHREG_SERIALTABLE st_SerialTable; + memset(&st_SerialTable, '\0', sizeof(AUTHREG_SERIALTABLE)); + + int nRet = _stscanf(tszMsgBuffer, _T("%d %s %s %s %d %d %s %s"), &nID, st_SerialTable.tszUserName, st_SerialTable.tszSerialNumber, st_SerialTable.tszMaxTime, &st_SerialTable.enSerialType, &st_SerialTable.bIsUsed, st_SerialTable.tszCreateTime, (st_SerialTable.tszCreateTime + 11)); + st_SerialTable.tszCreateTime[10] = ' '; + stl_ListSerial.push_back(st_SerialTable); + } + fclose(pSt_File); + + CString m_StrIPAddr; + CString m_StrIPPort; + CString m_StrToken; + TCHAR tszUrlAddr[MAX_PATH]; + CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd); + + memset(tszUrlAddr, '\0', MAX_PATH); + pWnd->m_EditIPAddr.GetWindowText(m_StrIPAddr); + pWnd->m_EditIPPort.GetWindowText(m_StrIPPort); + pWnd->m_EditToken.GetWindowText(m_StrToken); + + CString m_StrHasTime; + CString m_StrSerialCount; + CString m_StrNumberCount; + Json::Value st_JsonRoot; + Json::Value st_JsonArray; + + m_EditHasTime.GetWindowText(m_StrHasTime); + m_EditSerialCount.GetWindowText(m_StrSerialCount); + m_ComboNumber.GetLBText(m_ComboNumber.GetCurSel(), m_StrNumberCount); + + for (auto stl_ListIterator = stl_ListSerial.begin(); stl_ListIterator != stl_ListSerial.end(); stl_ListIterator++) + { + Json::Value st_JsonObject; + st_JsonObject["bIsUsed"] = stl_ListIterator->bIsUsed; + st_JsonObject["enSerialType"] = stl_ListIterator->enSerialType; + st_JsonObject["tszCreateTime"] = stl_ListIterator->tszCreateTime; + st_JsonObject["tszMaxTime"] = stl_ListIterator->tszMaxTime; + st_JsonObject["tszSerialNumber"] = stl_ListIterator->tszSerialNumber; + st_JsonObject["tszUserName"] = stl_ListIterator->tszUserName; + st_JsonArray.append(st_JsonObject); + } + st_JsonRoot["Array"] = st_JsonArray; + st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer()); + + int nMsgLen = 0; + CHAR* ptszMsgBuffer = NULL; + _stprintf(tszUrlAddr, _T("http://%s:%s/auth/serial/push"), m_StrIPAddr.GetBuffer(), m_StrIPPort.GetBuffer()); + //是否加密 + TCHAR tszPassBuffer[64]; + memset(tszPassBuffer, '\0', sizeof(tszPassBuffer)); + ::GetDlgItemText(hConfigWnd, IDC_EDIT6, tszPassBuffer, sizeof(tszPassBuffer)); + + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + nMsgLen = st_JsonRoot.toStyledString().length(); + OPenSsl_XCrypto_Encoder(st_JsonRoot.toStyledString().c_str(), &nMsgLen, (UCHAR*)tszMsgBuffer, tszPassBuffer); + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, tszMsgBuffer, NULL, &ptszMsgBuffer, &nMsgLen); + } + else + { + APIHelp_HttpRequest_Custom(_T("POST"), tszUrlAddr, st_JsonRoot.toStyledString().c_str(), NULL, &ptszMsgBuffer, &nMsgLen); + } + st_JsonRoot.clear(); + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_ReaderBuilder; + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (bCrypto) + { + TCHAR tszMsgBuffer[2048]; + memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + + OPenSsl_XCrypto_Decoder(ptszMsgBuffer, &nMsgLen, tszMsgBuffer, tszPassBuffer); + if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析序列号推送接口数据错误,无法继续")); + return; + } + } + else + { + if (!pSt_JsonReader->parse(ptszMsgBuffer, ptszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Authorize_Help_LogPrint(_T("解析序列号推送接口数据错误,无法继续")); + return; + } + } + + if (0 == st_JsonRoot["code"].asInt()) + { + Authorize_Help_LogPrint(_T("导入序列号成功")); + } + else + { + Authorize_Help_LogPrint(_T("导入序列号失败")); + } + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + //刷新 + OnBnClickedButton1(); +} + + +void CDialog_Serial::OnBnClickedButton7() +{ + // TODO: 在此添加控件通知处理程序代码 + TCHAR tszFilter[] = _T("文本文件(*.txt)|*.txt|所有文件(*.*)|*.*||"); + CFileDialog m_FileDlg(FALSE, _T("txt"), _T("serial"), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, tszFilter, this); + // 显示保存文件对话框 + if (IDOK != m_FileDlg.DoModal()) + { + return; + } + FILE* pSt_File = _tfopen(m_FileDlg.GetPathName(), _T("wb")); + + TCHAR tszMsgBuffer[MAX_PATH]; + memset(tszMsgBuffer, '\0', MAX_PATH); + //写字段头 + int nRet = _stprintf(tszMsgBuffer, _T("ID UserName SerialNumber MaxTime CardSerialType bIsUsed CreateTime\r\n")); + fwrite(tszMsgBuffer, 1, nRet, pSt_File); + + for (int i = 0; i < m_ListSerial.GetItemCount(); i++) + { + int nSerialType = 0; + int nUsedType = 0; + memset(tszMsgBuffer, '\0', MAX_PATH); + + for (int j = 0; j < sizeof(lpszXSerialType) - 1; j++) + { + if (0 == _tcsnicmp(lpszXSerialType[j], m_ListSerial.GetItemText(i, 3).GetBuffer(), _tcslen(lpszXSerialType[j]))) + { + nSerialType = j; + break; + } + } + if (0 == _tcsnicmp(m_ListSerial.GetItemText(i, 4).GetBuffer(), "未使用", m_ListSerial.GetItemText(i, 4).GetLength())) + { + nUsedType = 0; + } + nRet = _stprintf(tszMsgBuffer, _T("%d %s %s %s %d %d %s %s\r\n"), i, m_ListSerial.GetItemText(i, 0).GetBuffer(), m_ListSerial.GetItemText(i, 1).GetBuffer(), m_ListSerial.GetItemText(i, 2).GetBuffer(), nSerialType, nUsedType, m_ListSerial.GetItemText(i, 5).GetBuffer(), m_ListSerial.GetItemText(i, 6).GetBuffer()); + fwrite(tszMsgBuffer, 1, nRet, pSt_File); + } + fclose(pSt_File); + + Authorize_Help_LogPrint(_T("导出序列号成功")); +} diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.h index 5e79a1a..aad7cd6 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.h @@ -32,4 +32,6 @@ class CDialog_Serial : public CDialogEx CEdit m_EditHasTime; afx_msg void OnBnClickedButton4(); afx_msg void OnBnClickedButton3(); + afx_msg void OnBnClickedButton6(); + afx_msg void OnBnClickedButton7(); }; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps index e4a0d3d194eeb57393e0c5911497a550fc789046..8cab5401ee5e9c5eb18821e646df20a72d1f93a3 100644 GIT binary patch delta 1814 zcmb7^Urbw77{I^pwm{{Nu!KM%NgJat8k32E7-zCZ zlRapnB}e%djgtj@Q_wM2I~UTCJrq_9PkV7OWKTL5V&Z~-Vph+&#jV>@xk>w-`#Zny z-gECg-*@Trl1#if?$(@p7uf~nP=D#PAjLBQ0FS^6GZn1v@+me`o-**%h$=!VEF6e`Ch=3cseCz{1yuirQE5GdT4{}HPx zl}25`8Du$l%61x!h2J20@EgPqp0co?qQ%L%uj^6zc0((j=?N){f2b2|R+|ls0A6=* z#N+lVDzSqpM{?FNVcEg_&{By54(CX3zo++vO-K&DhaOz2OAseC9xG%a1y9$6&u;Y*jcq8 z#GF>gj1v~tH-70+^cI^A>mNtbgyB)N#N+`tU&kHx`anI~nW$a;V&HTU`^i^&sFT;P z*a-iB_Is=@5R;aG9U5$8Yrclnp97~+x(;k^u#KG^`L069LB*wbd-<~2bHR7;Hv2w! z6+LW5iQ@n(4t5;E`g{uy%3{ zi{>}6MzWyjUUuoK8jW;cz_^C3eQ6-;4b)2dQtG^cX30{)hF0o}5J0Y^SwT)!vGW%V z^o_8(4%219KxRib4fMNUzZ|7K)pN4*H~G~voSjV5`>*o$6W}MBrd^=144S07_sMX9 z)3{JR*3oA#NM#AED_ItgSc}x2E)`H!er6k^s-W@-7V~Mh1yYJ-zwCO3ELtU vxb6ks(Ap-wyo`9p!%|AC1td1kekFk@xAYsx$_7j&cgg|2nnC()15N({2oL9m delta 11719 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�PdB%5VgAMv7OVM&e6u){|frVg&YW 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 diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h index 643065b..16a25ce 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/resource.h @@ -25,7 +25,9 @@ #define IDC_COMBO1 1009 #define IDC_BUTTON5 1009 #define IDC_COMBO2 1010 +#define IDC_BUTTON6 1011 #define IDC_EDIT6 1012 +#define IDC_BUTTON7 1012 #define IDC_EDIT7 1013 #define IDC_CHECK1 1013 #define IDC_EDIT8 1014 From 3e975068f7179ac8076c87e8d0644011ff7e1253 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 31 Oct 2022 09:49:59 +0800 Subject: [PATCH 15/22] fixed:http client login switch does not work --- .../AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp index 9283d0e..c76ed0f 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp @@ -102,6 +102,13 @@ BOOL XEngine_AuthorizeHTTP_Token(LPCTSTR lpszClientAddr, TCHAR** pptszList, int //处理权限 if (st_UserTable.st_UserInfo.nUserLevel > 0) { + if (!st_FunSwitch.bSwitchLogin) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "Function does not to enable"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,登录失败,因为登录功能被服务器关闭!"), lpszClientAddr); + return FALSE; + } //普通用户 if (!st_AuthConfig.st_XLogin.bHTTPAuth) { From ff45e59ed5cb578d18d9af86b3ea9eb652ed03e3 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 31 Oct 2022 10:44:52 +0800 Subject: [PATCH 16/22] modify:support parse http posstart and posend --- .../AuthorizeModule_Protocol.def | 3 +- .../Protocol_Define.h | 31 ++++++++++- .../Protocol_Parse/Protocol_Parse.cpp | 54 +++++++++++++++++++ .../Protocol_Parse/Protocol_Parse.h | 1 + .../AuthorizeModule_Protocol/pch.cpp | 4 ++ 5 files changed, 91 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def index 2ae6ff0..417d8f2 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def +++ b/XEngine_Source/AuthorizeModule_Protocol/AuthorizeModule_Protocol.def @@ -24,4 +24,5 @@ EXPORTS Protocol_Parse_HttpParseSerial2 Protocol_Parse_HttpParseOnline Protocol_Parse_HttpParseTime - Protocol_Parse_HttpParseSwitch \ No newline at end of file + Protocol_Parse_HttpParseSwitch + Protocol_Parse_HttpParsePos \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h index 4fce0bb..7afa917 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h @@ -578,4 +578,33 @@ extern "C" BOOL Protocol_Parse_HttpParseTime(LPCTSTR lpszMsgBuffer, int nMsgLen, 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH * pSt_FunSwitch); \ No newline at end of file +extern "C" BOOL Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH * pSt_FunSwitch); +/******************************************************************** +函数名称:Protocol_Parse_HttpParsePos +函数功能:解析开始结束字段 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要解析的大小 + 参数.三:pInt_PosStart + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:导出获取到的开始位置 + 参数.四:pInt_PosEnd + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:导出获取到的结束位置 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Protocol_Parse_HttpParsePos(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_PosStart, int* pInt_PosEnd); \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp index 6c8d020..950f596 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.cpp @@ -812,4 +812,58 @@ BOOL CProtocol_Parse::Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int pSt_FunSwitch->bSwitchPay = st_JsonObject["bSwitchPay"].asBool(); pSt_FunSwitch->bSwitchPass = st_JsonObject["bSwitchPass"].asBool(); return TRUE; +} +/******************************************************************** +函数名称:Protocol_Parse_HttpParsePos +函数功能:解析开始结束字段 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要解析的大小 + 参数.三:pInt_PosStart + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:导出获取到的开始位置 + 参数.四:pInt_PosEnd + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:导出获取到的结束位置 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CProtocol_Parse::Protocol_Parse_HttpParsePos(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_PosStart, int* pInt_PosEnd) +{ + Protocol_IsErrorOccur = FALSE; + + if ((NULL == lpszMsgBuffer) || (NULL == pInt_PosStart)) + { + Protocol_IsErrorOccur = TRUE; + Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARAMENT; + return FALSE; + } + Json::Value st_JsonRoot; + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_ReaderBuilder; + + std::unique_ptr const pSt_JsonReader(st_ReaderBuilder.newCharReader()); + if (!pSt_JsonReader->parse(lpszMsgBuffer, lpszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + Protocol_IsErrorOccur = TRUE; + Protocol_dwErrorCode = ERROR_AUTHORIZE_MODULE_PROTOCOL_PARSE; + return FALSE; + } + + *pInt_PosStart = st_JsonRoot["PosStart"].asInt(); + *pInt_PosEnd = st_JsonRoot["PosEnd"].asInt(); + return TRUE; } \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h index 13992f9..ca81eb2 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Parse/Protocol_Parse.h @@ -30,6 +30,7 @@ class CProtocol_Parse BOOL Protocol_Parse_HttpParseOnline(LPCTSTR lpszMsgBuffer, int nMsgLen, BOOL* pbOnline); BOOL Protocol_Parse_HttpParseTime(LPCTSTR lpszMsgBuffer, int nMsgLen, AUTHREG_PROTOCOL_TIME* pSt_ProtocolTime); BOOL Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch); + BOOL Protocol_Parse_HttpParsePos(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_PosStart, int* pInt_PosEnd); protected: private: }; \ No newline at end of file diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp index 5c364e2..f2bf42c 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp @@ -117,4 +117,8 @@ extern "C" BOOL Protocol_Parse_HttpParseTime(LPCTSTR lpszMsgBuffer, int nMsgLen, extern "C" BOOL Protocol_Parse_HttpParseSwitch(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_FUNCTIONSWITCH * pSt_FunSwitch) { return m_ProtocolParse.Protocol_Parse_HttpParseSwitch(lpszMsgBuffer, nMsgLen, pSt_FunSwitch); +} +extern "C" BOOL Protocol_Parse_HttpParsePos(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_PosStart, int* pInt_PosEnd) +{ + return m_ProtocolParse.Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, pInt_PosStart, pInt_PosEnd); } \ No newline at end of file From 620401a3a0962c8d5bf1d90ac565e447fe57e927 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 31 Oct 2022 11:41:19 +0800 Subject: [PATCH 17/22] modify:Database_SQLite_UserList and Database_SQLite_SerialQueryAll supported set pos parament --- .../Database_Define.h | 24 ++++++++++++++-- .../Database_SQLite/Database_SQLite.cpp | 28 ++++++++++++++++--- .../Database_SQLite/Database_SQLite.h | 6 ++-- .../AuthorizeModule_Database/pch.cpp | 8 +++--- 4 files changed, 53 insertions(+), 13 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Database/Database_Define.h b/XEngine_Source/AuthorizeModule_Database/Database_Define.h index 0b51135..def70a0 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_Define.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_Define.h @@ -152,12 +152,22 @@ extern "C" BOOL Database_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); 类型:整数型 可空:N 意思:输出列表个数 + 参数.三:nPosStart + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入起始位置 + 参数.四:nPosEnd + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入结束位置 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount); +extern "C" BOOL Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); /******************************************************************** 函数名称:Database_SQLite_SerialInsert 函数功能:插入一个序列号到数据库 @@ -218,12 +228,22 @@ extern "C" BOOL Database_SQLite_SerialQuery(LPCSTR lpszSerialNumber,LPAUTHREG_SE 类型:整数型指针 可空:Y 意思:输出多少张卡 + 参数.三:nPosStart + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入起始位置 + 参数.四:nPosEnd + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入结束位置 返回值 类型:逻辑型 意思:是否查询成功 备注:参数一需要调用基础库的释放内存函数进行内存释放 *********************************************************************/ -extern "C" BOOL Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_SerialTable, int* pInt_ListCount); +extern "C" BOOL Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd); /******************************************************************** 函数名称:Database_SQLite_SerialPush 函数功能:插入一条指定的序列号信息到服务器 diff --git a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp index 595cf55..29c428e 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp +++ b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.cpp @@ -449,12 +449,22 @@ BOOL CDatabase_SQLite::Database_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable) 类型:整数型 可空:N 意思:输出列表个数 + 参数.三:nPosStart + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入起始位置 + 参数.四:nPosEnd + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入结束位置 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -BOOL CDatabase_SQLite::Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount) +BOOL CDatabase_SQLite::Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd) { SQLPacket_IsErrorOccur = FALSE; @@ -464,7 +474,7 @@ BOOL CDatabase_SQLite::Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserI TCHAR tszSQLStatement[1024]; //SQL语句 memset(tszSQLStatement, '\0', 1024); - _stprintf_s(tszSQLStatement, _T("SELECT * FROM AuthReg_User")); + _stprintf_s(tszSQLStatement, _T("SELECT * FROM AuthReg_User LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); if (!DataBase_SQLite_GetTable(xhData, tszSQLStatement, &ppszResult, &nRow, &nColumn)) { SQLPacket_IsErrorOccur = TRUE; @@ -694,12 +704,22 @@ BOOL CDatabase_SQLite::Database_SQLite_SerialQuery(LPCTSTR lpszSerialNumber,LPAU 类型:整数型指针 可空:Y 意思:输出多少张卡 + 参数.三:nPosStart + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入起始位置 + 参数.四:nPosEnd + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入结束位置 返回值 类型:逻辑型 意思:是否查询成功 备注:参数一需要调用基础库的释放内存函数进行内存释放 *********************************************************************/ -BOOL CDatabase_SQLite::Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE ***pppSt_SerialTable,int *pInt_ListCount) +BOOL CDatabase_SQLite::Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE*** pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd) { SQLPacket_IsErrorOccur = FALSE; @@ -710,7 +730,7 @@ BOOL CDatabase_SQLite::Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE ***ppp memset(tszSQLStatement,'\0',1024); - _stprintf_s(tszSQLStatement,_T("select * from AuthReg_Serial")); + _stprintf_s(tszSQLStatement, _T("SELECT * FROM AuthReg_Serial LIMIT %d,%d"), nPosStart, nPosEnd - nPosStart); if (!DataBase_SQLite_GetTable(xhData,tszSQLStatement,&ppszResult,&nRow,&nColumn)) { SQLPacket_IsErrorOccur = TRUE; diff --git a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h index ac90269..a5b3cfa 100644 --- a/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h +++ b/XEngine_Source/AuthorizeModule_Database/Database_SQLite/Database_SQLite.h @@ -29,12 +29,12 @@ class CDatabase_SQLite BOOL Database_SQLite_UserPay(LPCTSTR lpszUserName,LPCTSTR lpszSerialName); //充值卡充值 BOOL Database_SQLite_UserLeave(AUTHREG_PROTOCOL_TIME* pSt_TimeProtocol); //用户离开更新表 BOOL Database_SQLite_UserSet(AUTHREG_USERTABLE* pSt_UserTable); - BOOL Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount); + BOOL Database_SQLite_UserList(AUTHREG_USERTABLE*** pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd); public: BOOL Database_SQLite_SerialInsert(LPCTSTR lpszSerialNumber); //插入序列卡 BOOL Database_SQLite_SerialDelete(LPCTSTR lpszSerialNumber); //删除一个序列号 - BOOL Database_SQLite_SerialQuery(LPCTSTR lpszSerialNumber,LPAUTHREG_SERIALTABLE pSt_SerialTable = NULL); //按照卡号或者用户查询 - BOOL Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE ***pppSt_SerialTable,int *pInt_ListCount); //查询所有序列卡 + BOOL Database_SQLite_SerialQuery(LPCTSTR lpszSerialNumber,LPAUTHREG_SERIALTABLE pSt_SerialTable = NULL); //按照卡号或者用户查询 + BOOL Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE ***pppSt_SerialTable,int *pInt_ListCount, int nPosStart, int nPosEnd);//查询所有序列卡 BOOL Database_SQLite_SerialPush(AUTHREG_SERIALTABLE* pSt_SerialTable); public: BOOL Database_SQLite_TryInsert(AUTHREG_NETVER* pSt_AuthVer); diff --git a/XEngine_Source/AuthorizeModule_Database/pch.cpp b/XEngine_Source/AuthorizeModule_Database/pch.cpp index a34e01e..e202186 100644 --- a/XEngine_Source/AuthorizeModule_Database/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Database/pch.cpp @@ -61,9 +61,9 @@ extern "C" BOOL Database_SQLite_UserSet(AUTHREG_USERTABLE * pSt_UserTable) { return m_SQLAuth.Database_SQLite_UserSet(pSt_UserTable); } -extern "C" BOOL Database_SQLite_UserList(AUTHREG_USERTABLE * **pppSt_UserInfo, int* pInt_ListCount) +extern "C" BOOL Database_SQLite_UserList(AUTHREG_USERTABLE * **pppSt_UserInfo, int* pInt_ListCount, int nPosStart, int nPosEnd) { - return m_SQLAuth.Database_SQLite_UserList(pppSt_UserInfo, pInt_ListCount); + return m_SQLAuth.Database_SQLite_UserList(pppSt_UserInfo, pInt_ListCount, nPosStart, nPosEnd); } extern "C" BOOL Database_SQLite_SerialInsert(LPCTSTR lpszSerialNumber) { @@ -77,9 +77,9 @@ extern "C" BOOL Database_SQLite_SerialQuery(LPCTSTR lpszSerialNumber, LPAUTHREG_ { return m_SQLAuth.Database_SQLite_SerialQuery(lpszSerialNumber, pSt_SerialTable); } -extern "C" BOOL Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_SerialTable, int* pInt_ListCount) +extern "C" BOOL Database_SQLite_SerialQueryAll(AUTHREG_SERIALTABLE * **pppSt_SerialTable, int* pInt_ListCount, int nPosStart, int nPosEnd) { - return m_SQLAuth.Database_SQLite_SerialQueryAll(pppSt_SerialTable, pInt_ListCount); + return m_SQLAuth.Database_SQLite_SerialQueryAll(pppSt_SerialTable, pInt_ListCount, nPosStart, nPosEnd); } extern "C" BOOL Database_SQLite_SerialPush(AUTHREG_SERIALTABLE * pSt_SerialTable) { From 6dfdf65fc9e23d42f5f135f557a16f6697c60ed9 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 31 Oct 2022 11:42:29 +0800 Subject: [PATCH 18/22] modify:client and serial supported set start and end pos --- .../AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp | 12 +++++++++++- .../AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp index 1bceec3..669f82c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp @@ -32,6 +32,8 @@ BOOL XEngine_AuthorizeHTTP_Client(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, L { int nOnCount = 0; int nOffCount = 0; + int nPosStart = 0; + int nPosEnd = 0; BOOL bOnline = FALSE; AUTHREG_USERTABLE** ppSt_UserInfo; AUTHSESSION_NETCLIENT** ppSt_ListClient; @@ -46,6 +48,14 @@ BOOL XEngine_AuthorizeHTTP_Client(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, L } memset(ptszMsgBuffer, '\0', XENGINE_AUTH_MAX_BUFFER); + Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); + if ((nPosEnd - nPosStart) > 100) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "pos parament is not rigth"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,请求用户列表失败,POS参数不正确,%d - %d"), lpszClientAddr, nPosStart, nPosEnd); + return FALSE; + } Protocol_Parse_HttpParseOnline(lpszMsgBuffer, nMsgLen, &bOnline); //得到在线用户 Session_Authorize_GetClient(&ppSt_ListClient, &nOnCount); @@ -53,7 +63,7 @@ BOOL XEngine_AuthorizeHTTP_Client(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, L if (!bOnline) { //只有bOnline不是在线列表的时候才执行 - Database_SQLite_UserList(&ppSt_UserInfo, &nOffCount); + Database_SQLite_UserList(&ppSt_UserInfo, &nOffCount, nPosStart, nPosEnd); } Protocol_Packet_HttpClientList(ptszMsgBuffer, &nSDLen, &ppSt_ListClient, nOnCount, &ppSt_UserInfo, nOffCount); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp index 357017b..34d02c5 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp @@ -13,6 +13,8 @@ BOOL XEngine_AuthorizeHTTP_Serial(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, L if (0 == _tcsnicmp(lpszAPIList, lpszAPIName, _tcslen(lpszAPIList))) { + int nPosStart = 0; + int nPosEnd = 0; int nListCount = 0; TCHAR* ptszMsgBuffer = (TCHAR*)malloc(XENGINE_AUTH_MAX_BUFFER); if (NULL == ptszMsgBuffer) @@ -21,8 +23,16 @@ BOOL XEngine_AuthorizeHTTP_Serial(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, L } memset(ptszMsgBuffer, '\0', XENGINE_AUTH_MAX_BUFFER); + Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); + if ((nPosEnd - nPosStart) > 100) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "pos parament is not rigth"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("HTTP客户端:%s,请求序列号列表失败,POS参数不正确,%d - %d"), lpszClientAddr, nPosStart, nPosEnd); + return FALSE; + } AUTHREG_SERIALTABLE** ppSt_SerialTable; - Database_SQLite_SerialQueryAll(&ppSt_SerialTable, &nListCount); + Database_SQLite_SerialQueryAll(&ppSt_SerialTable, &nListCount, nPosStart, nPosEnd); Protocol_Packet_HttpSerialList(ptszMsgBuffer, &nSDLen, &ppSt_SerialTable, nListCount); BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_SerialTable, nListCount); XEngine_Client_TaskSend(lpszClientAddr, ptszMsgBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); From 94eb67fde97e86167a7c0f310439cc6b26686845 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 31 Oct 2022 15:11:16 +0800 Subject: [PATCH 19/22] delete:unused code --- .../AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp index a029f66..29e60f1 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Switch.cpp @@ -3,14 +3,11 @@ BOOL XEngine_AuthorizeHTTP_Switch(LPCTSTR lpszClientAddr, LPCTSTR lpszAPIName, LPCTSTR lpszMsgBuffer, int nMsgLen) { int nSDLen = 4096; - int nRVLen = 4096; TCHAR tszSDBuffer[4096]; - TCHAR tszRVBuffer[4096]; LPCTSTR lpszAPIGet = _T("get"); LPCTSTR lpszAPISet = _T("set"); memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - memset(tszRVBuffer, '\0', sizeof(tszRVBuffer)); if (0 == _tcsnicmp(lpszAPIGet, lpszAPIName, _tcslen(lpszAPIGet))) { From bd790f3a3bd6e81b3119479d7ade83726ab9051b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 1 Nov 2022 09:33:31 +0800 Subject: [PATCH 20/22] update:support query range list for management app --- .../Authorize_Dialog/Dialog_Serial.cpp | 12 ++++++++++++ .../Authorize_Dialog/Dialog_Serial.h | 2 ++ .../Authorize_Dialog/Dialog_User.cpp | 10 ++++++++++ .../Authorize_Dialog/Dialog_User.h | 2 ++ .../XEngineAuthorizeApp.aps | Bin 100428 -> 119060 bytes .../XEngineAuthorizeApp.rc | Bin 25812 -> 27018 bytes 6 files changed, 26 insertions(+) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp index 893bf86..8be34cc 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.cpp @@ -29,6 +29,8 @@ void CDialog_Serial::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_COMBO2, m_ComboNumber); DDX_Control(pDX, IDC_EDIT1, m_EditSerialCount); DDX_Control(pDX, IDC_EDIT2, m_EditHasTime); + DDX_Control(pDX, IDC_EDIT3, m_EditPosStart); + DDX_Control(pDX, IDC_EDIT7, m_EditPosEnd); } @@ -71,6 +73,9 @@ BOOL CDialog_Serial::OnInitDialog() m_ComboNumber.InsertString(5, _T("9")); m_ComboNumber.InsertString(6, _T("10")); + m_EditPosStart.SetWindowText("0"); + m_EditPosEnd.SetWindowText("50"); + m_ComboNumber.SetCurSel(0); m_ComboSerialType.SetCurSel(0); return TRUE; // return TRUE unless you set the focus to a control @@ -85,10 +90,15 @@ void CDialog_Serial::OnBnClickedButton1() CString m_StrIPAddr; CString m_StrIPPort; CString m_StrToken; + CString m_StrPosStart; + CString m_StrPosEnd; + CDialog_Config* pWnd = (CDialog_Config*)CDialog_Config::FromHandle(hConfigWnd); pWnd->m_EditIPAddr.GetWindowText(m_StrIPAddr); pWnd->m_EditIPPort.GetWindowText(m_StrIPPort); pWnd->m_EditToken.GetWindowText(m_StrToken); + m_EditPosStart.GetWindowText(m_StrPosStart); + m_EditPosEnd.GetWindowText(m_StrPosEnd); TCHAR tszUrlAddr[MAX_PATH]; memset(tszUrlAddr, '\0', MAX_PATH); @@ -98,6 +108,8 @@ void CDialog_Serial::OnBnClickedButton1() CHAR* ptszMsgBuffer = NULL; Json::Value st_JsonRoot; st_JsonRoot["xhToken"] = _ttoi64(m_StrToken.GetBuffer()); + st_JsonRoot["PosStart"] = _ttoi(m_StrPosStart.GetBuffer()); + st_JsonRoot["PosEnd"] = _ttoi(m_StrPosEnd.GetBuffer()); //是否加密 TCHAR tszPassBuffer[64]; memset(tszPassBuffer, '\0', sizeof(tszPassBuffer)); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.h index aad7cd6..d632363 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Serial.h @@ -34,4 +34,6 @@ class CDialog_Serial : public CDialogEx afx_msg void OnBnClickedButton3(); afx_msg void OnBnClickedButton6(); afx_msg void OnBnClickedButton7(); + CEdit m_EditPosStart; + CEdit m_EditPosEnd; }; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp index 098ee36..e6bfa49 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.cpp @@ -29,6 +29,8 @@ void CDialog_User::DoDataExchange(CDataExchange* pDX) DDX_Control(pDX, IDC_EDIT1, m_EditFlushTime); DDX_Control(pDX, IDC_CHECK2, m_CheckAuto); DDX_Control(pDX, IDC_BUTTON4, m_BtnModifyClient); + DDX_Control(pDX, IDC_EDIT2, m_EditPosStart); + DDX_Control(pDX, IDC_EDIT3, m_EditPosEnd); } @@ -61,6 +63,8 @@ BOOL CDialog_User::OnInitDialog() m_ListCtrlClient.SetExtendedStyle(LVS_EX_FULLROWSELECT); m_EditFlushTime.SetWindowText("1"); + m_EditPosStart.SetWindowText("0"); + m_EditPosEnd.SetWindowText("50"); hUserWnd = m_hWnd; return TRUE; // return TRUE unless you set the focus to a control // 异常: OCX 属性页应返回 FALSE @@ -75,12 +79,16 @@ void CDialog_User::OnBnClickedButton1() TCHAR tszIPPort[MAX_PATH]; TCHAR tszToken[MAX_PATH]; TCHAR tszUrlAddr[MAX_PATH]; + CString m_StrPosStart; + CString m_StrPosEnd; memset(tszIPAddr, '\0', MAX_PATH); memset(tszIPPort, '\0', MAX_PATH); memset(tszToken, '\0', MAX_PATH); memset(tszUrlAddr, '\0', MAX_PATH); + m_EditPosStart.GetWindowText(m_StrPosStart); + m_EditPosEnd.GetWindowText(m_StrPosEnd); ::GetWindowText(::GetDlgItem(hConfigWnd, IDC_EDIT1), tszIPAddr, MAX_PATH); ::GetWindowText(::GetDlgItem(hConfigWnd, IDC_EDIT2), tszIPPort, MAX_PATH); ::GetWindowText(::GetDlgItem(hConfigWnd, IDC_EDIT9), tszToken, MAX_PATH); @@ -90,6 +98,8 @@ void CDialog_User::OnBnClickedButton1() CHAR* ptszMsgBuffer = NULL; Json::Value st_JsonRoot; st_JsonRoot["xhToken"] = _ttoi64(tszToken); + st_JsonRoot["PosStart"] = _ttoi(m_StrPosStart.GetBuffer()); + st_JsonRoot["PosEnd"] = _ttoi(m_StrPosEnd.GetBuffer()); if (BST_CHECKED == m_CheckOnlineList.GetCheck()) { st_JsonRoot["Online"] = true; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.h index 96f6440..1750595 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_User.h @@ -38,4 +38,6 @@ class CDialog_User : public CDialogEx CButton m_CheckAuto; CButton m_BtnModifyClient; afx_msg void OnBnClickedButton5(); + CEdit m_EditPosStart; + CEdit m_EditPosEnd; }; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.aps index 8cab5401ee5e9c5eb18821e646df20a72d1f93a3..3132c9f06e4d7b8b3700081abd8ee7e1630213d2 100644 GIT binary patch delta 11629 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 bhf6qT2&eXr(!{Ma(Q>Xd!SZP3*U$eC5sb(? delta 1277 zcmb7@O-NKx6vxkbZ$<|la~7uK^Ud_EF&|{p5E9Z#WvCpiB&Pf*(#S=S3loZ#V$gc( z+8n`6X1ECP1I33r3=svEGddC2B8k}qEh3CUT4m?X1Y)b_h4;?6KmO;Qd++;F!Nj;VF^;d@E@psWfHg3KhYQg`Pb@rv#nu}OeW>j0 zP{ShnNm<1Df0IFFN}+)z3}UG@wuHxXqRcV|oV{=!eo&Kz74B(RhB|P;4iC~3XgI%s z1^1{afi-fSTM2Ar(T82pd|s4>KB}I>D*Bbc)`cWy-DV^2unEpU2XsRiS~zcoi*S}_ zt(yp`Hwuk+F&{`z3?>FA1%pZok3H{Wr+&yCnWTe{jd6Ngb8hw>Mjqq$+|D z?V!T}!y& zNY-C3f**M`$*!%Cb{jRC;fWgf4rHyNPx;4`W*R&(<+%`g^bGX}%Sj(R7V zO@K77eyFq|&`?vL0br+tX#=1qbQsKm?tN%kIr)H|(q;(*4o0vBM+1LOkO#n;Hdh;p zGNOjZ1{o=7W1uX^C5AvF48b(W+U68v#R^kaG4p10j7-s C@M-S= delta 89 zcmeCW%y{J_meFc^br!_B7+S2KbY)ffk`f)#AOXe`RO+0ER=2mt Date: Tue, 1 Nov 2022 09:43:14 +0800 Subject: [PATCH 21/22] update:configure file --- XEngine_Release/XEngine_Config/XEngine_Config.json | 1 + XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index f61fe54..6a5b946 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -45,6 +45,7 @@ "LogLeave":32 }, "XVer":[ + "V3.3.0.1001 Build20221101", "V3.2.0.1001 Build20220923", "V3.1.0.1001 Build20220826", "V3.0.0.1001 Build20220816", diff --git a/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json b/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json new file mode 100644 index 0000000..5a42b15 --- /dev/null +++ b/XEngine_Release/XEngine_Config/XEngine_SwitchConfig.json @@ -0,0 +1,8 @@ +{ + "bSwitchDelete":true, + "bSwitchRegister":true, + "bSwitchLogin":true, + "bSwitchPay":true, + "bSwitchPass":true, + "bSwtichTime":true +} \ No newline at end of file From a33043bdd8e970083f2a674f33da8d93099bbe0f Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 1 Nov 2022 09:43:30 +0800 Subject: [PATCH 22/22] update:readme and docment --- CHANGELOG | 16 ++++++++++++++++ README.en.md | 1 + README.md | 3 ++- XEngine_Docment/Docment_en.docx | Bin 129678 -> 131256 bytes XEngine_Docment/Docment_zh.docx | Bin 130841 -> 132903 bytes 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 292e856..4519d72 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,19 @@ +XEngine_Authorize V3.3.0.1001 + +增加:自定义序列号导入和导出 +增加:功能开关支持(注册,登录,删除,充值,获取时间,找回密码) +修改:支持TCP,WEBSOCEKT,HTTP功能开关 +修改:客户端和序列号查询支持设置起始和结束位置 +更新:匹配XEngine V7.42 +删除:不需要的HTTPGET负载参数 + +added:custom serial number export and import +added:functions switch support(register,login,delete,pay,get time,get pass) +modify:support tcp and websocket and http function switch +modify:client and serial query supported set start and end pos +update:match xengine v7.42 +delete:not need parament for http get +====================================================================================== XEngine_Authorize V3.2.0.1001 增加:为管理程序增加用户注册功能 diff --git a/README.en.md b/README.en.md index 90dd59b..a295b2f 100644 --- a/README.en.md +++ b/README.en.md @@ -82,6 +82,7 @@ port :tcp port 5300,websocket port 5301,http management port 5302,Transmission v ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/2.png "在这里输入图片标题") ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/3.png "在这里输入图片标题") ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/4.png "在这里输入图片标题") +![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/5.png "在这里输入图片标题") ## Participate in contribution diff --git a/README.md b/README.md index b6c547f..07a4e78 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ make FLAGS=CleanAll 清理编译 ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/2.png "在这里输入图片标题") ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/3.png "在这里输入图片标题") ![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/4.png "在这里输入图片标题") +![输入图片说明](https://www.xyry.org/XEngine_StructPic/authorize/5.png "在这里输入图片标题") ## 参与贡献 @@ -106,8 +107,8 @@ V3版本为全新版本,为了适应过多环境要求开发 如果你有问题,可以在issues中提交 ## 开发计划 -功能启用关闭(注册,登录,等) mfc转qt界面库(我们需要会Qt的人员加入一起开发) +消息公告 支持多端登录 多端登录合并用时 生成会话TOKEN分布式鉴权 diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index 8b7ff40fb11fa5bb828277a8bd04b6c74621f2f6..aafb22259739d02860a1d50ea922741fcbacccb1 100644 GIT binary patch delta 114456 zcmY(JWn5GL-^NiCL4Q#GVureG8{F8fkbkQ z{nEdnL%)TUXY?GK=a07@@fW_{H)~qQI#0(jsbDl~ob-qvS7>R}Ba_ifj?TxIL|2Ag zsC&QRW+!-E>z&Cmsjcsu9|b%^pA@uIZsxyQz(+|I2?s@J5VwLlha~R54NtTlUsg2I zWjx2lz`$^UA;Dl-qZ@IyIWBYZj3jV+uEe=Wd?Xy+@?8j*q_X z?j9C`Nlm1(!DqJTL3Ong_nyh!5@Qf;lAKg{hWvBS=JU_6S`lbd3~Te^--n1!?YOs3 ztwWn;qKKkDKHnDa{jdM;2&nr(umiJvh%v^f=*MWwI$Q#Go$vkv`T9G(K7Q09(6(B< zBFLSe_+IlH*VVCz84m{S=r1w6pF(mqxd4#r^b9rZto_iFoXINFe!_*Q6)KJ|k1yS#zhoFN5swenvse^#`g>-&eqJX`2ao@FZNTv<^l8I| z&1zwpk5HbQzT#?aJrvcQzA**5rCX$L?iQH)S_pW4*xMwg(>tKDK!4IBYZ*QBsYZ}W zkN>!mmhs@rd7Wvm5r^>W_;Y=fbJq`@5t>S{yt~iPn@$zrT3y=t|1YnoUP@f11>-Hi zvs;)uo)AlA-u01dX(e{WdlT#_TwwG4Z*~nukJY44j{So5NNe{>6HB9nb3Tkw0cs6})Ew7E2zPdzGqX{|(h~7b#w3vwsx2B$Yyg_Vv7P zESmK;eD-&E-0+B{X&^+O34PDZ?AmSC(V$l)xxdf9ywlHr#o&UJTbqsHS-{H-w9(HZ)5AZr<@n#bv}H|usy>t zYoEz@!-(-&)Q3j18{jhlR(<${gdqF&^rC1h<|pL{T8KJ*XJ1IYk!=SuyethM=#vEc z&bV)?5N)R$txkZ_kD>G>d-@uIz61r6S~HK3@EIz({5jqIFXSW^P1_QpX3~iv>eQ2N z1SJ_qMv+jE69{gYel%`~pfUs0RN7uI1Xv50oo<~4ASaubPgD@SKI-6Oj5>A6o;Hb8 zryrOjD2?>ZUZIl$bvlRoktw}My%T)A$w40$qWweTE9n&Ee+XVmeMRH1n1rAYb0Fv+gWO8({{x5x0CArKL38e>9dRH|h-3s^ zbe zlc{uy(Eq00xq&!&Pd}j1*GTHc>L)Y~ECHZ)6Ivj^$r76W5pg`6ilDD>f$1wjv~eNY zdO6~_`&1zMY6##WRE?lx0OBk_T0w%B(LT`#z9!nKIVgKNo}^BtAb3rHW2oSLdiI!TxZFSa6E8Iz@i+f9%iE(RPPeb^5*#&>{<_b_;<|T;;k?mDz*> zmKgPW-{|&eO8Ngt{-NI!_O+A-Q9n7M&<`MVve_}t@N{!0J0$DnUIZBe9JkU}d}&m5 zG8%kLRHvgbR0y>SI257}uh^eZ0AL?VAI3rGRlvR?{je2t;F}8U-k`7B(=+KuNPyx? zZv|*VCrjh z1@xNz8~yujk?Eaiw8$WCa2!uUP8x!W2NyCn$>B|_RB}Yv=>$iI#mKh#eRtCA-gf!C z5EO%6;G<8r&kOCZ{4)fpmG6Ia>Zp;*TWGb5rBL=y_KJ}!`vc{w_*58rKXeEJo>`HH z9aGY_VN9u{{axoF$_%0tv;T;aqeh^N62jmK**zr@< zR@5F|U@uHMfUuDFbOZVT4bdX}Cbt0*WVQXKh<}OuuEocLQmww|z_v&q7}KD48<0Mi z69V9z^HXU4mqe%TPB*Gii;3VO6L8#Q>7+zEc){La=U8cq=0EGLY<=4siJK1(1Qpr) zG<_o3@S z7j`MGkuCc5K&>JWF0=LlMQ#qr*0l@TBgo^>0uuyOSN_36 z-9bcB7_7DB2Of&7sxinwPEg*2&%vulesg1`6=9H?{y$1;gvYZXW*XM=q*h@E07sH* zr3Slt@vHX00)K@1vtBevs1Ug}2v)HtRRNo1Wp$X=Jhut3piaWl zW~@zYQYksA;i{;XDFO=HNn(Mk>4N%Vh6v*F=jZ*=dyz+-z|+pUC7 zTNgZ}H-f$_{dgS}&~IYs4~A>24dxW}$y$NfvS-Pg@)irT5qTCf5n&C)5H^POG3$WSwxNH?CN7SnK;dHS%pp`pBK4}PPA$^rcJAO?& zR;5HjjtlVYw$Kfl@~m2D=u}Rd!1$DLOz&yys62$}nO`6K+ z-YRoUJ4_A6gz^qQ9IvHNiWC=D8m^wc2*`h|02`r>^23q+-~yF(jdXNMXQOsm%E@Cw zM515-0zmkL@j^(wH8ourDoowqT$K=GNM0*Wr8L$gV`6U{J170M!53jxsK*c2!_<+2 z`w>uAFb*?L*yQOHG@%fYr~rh&(9Yc#ZF>a<+aq?09k{{ja?G67wvu1@tJ~>%ILEXh zYrq@aKcn(o_(xFR{&4?>{5!_r?M)@11qPtrv;m2N>Nj?eChA10r){v4cW~%NH9V+z z9P_fPOkmGue%5|rKU~@s`Nm2mb=L-MACZSSwj8l5!YQ>j@6Mfjus3omj3jU}S4RBk z1Z;Z~-k+1ShyO}D;N2d|U%1(eQzLy4tc|mab$tHZza|xPxGAee0!Fzo*ng+x0pr|D zVsCr&%iX&(^gJ#yt(s6s#NH82M|^UEuMxuLMJD`xL_9&^(qF1&N%H-ZWS;JH;VcIWpBE%J>qNfs9+@(QmVa8vk%3yH^QBo*Qijqa z!busDsdhyeZ0B*#t3enD_ZKJ)k?y}i$2fNfH4)cj50aPQ7TLw}^J6^h%oMj&IuWiP z$p~L?aH$lxBVej(@==)G+*c-PMjuK!>>#8XZ#XIf0$pHkl+9_G_AFMb0qIQna@OiW z7S|5(kH~%bK_Vaj>n=ci`X-ftx`o&okik+Hc3X2g>c3K?jayOx7MOxZHG)HDmJ6!y zB1cY=yE=eEJ306c!nWL4yqKKg(zsW(Px2U>MC>oQWeK=#6QCe;@?ttrouKxXXKVNKcxPgf)J;4bpeK#Kk`n2yya1-p$Iclc(dP@8p8X2)W8$NfO zomYnR9Bh05Be-H33yYq*zCCuC%zS zyVu?6Y&mU|bl5bH_P&xCp}hCZznLiKJz@y7;b0L;mXGs#!u4id3rr*oeKO#H_HQ>J zAn34{I*6YyufiQ|hDz$r)QR-wpt}`4<+?=_rmy7bOnq;Z7NOk6G2U2#HSYQAkfdk! z+J(GR;l8a^zO316Fd56C1#_%tzQ@+lMuD$FImc0Ugs*gh6Ty02YH^Mx-oK#DeW&e7 z^E2(Tmb2$RuKQ+CCOgbePNu@{WMF_i-b1MoREs*xprR}FQ~aQc?)}5rt;a%`RvBbt zq%8a34I2jGF3Rj&S+k$K@1YsR<(Dr~!jM{Ub>?`H?ekdhGAR7QGNxTd3bAdM5{iCE zP}DOc6mc9_0&%HW$)F2*dsWTq{WE^`q{q0(7W6*Gt9l94CUp9Q?!6mc1-2y7%P_)P zbCBdBEDBs&d+VQy$&hD6;C7-@__`{|j>o3v*;K+r2(6g7d%lrshsNf}Tc9!NA^jlG zh1aW~mfjg28%MYk9L>l2W+C5KyW5&@?@$LF;6Opcf6**3Q#UCqA1BGzgWRFXPFp|L zKmY{Y6QSlU#NejJy9OMp36f6hcjz>ne2u*VW;e>njtH6Do#r*U1!;*GUG3fB2QlF@ zX#Tyek}am7z>$r}r+1nR9(N(bnK0PV>>^9o|q2sTeq!c{XO;%|WTZk^xytB#jG}6$QW7Sea7GjM|zMYvqvmhS*GK9t~r) z$4u3iBR|d;6fgA7&vBQfUhc_3%Zh*8lvY%A`=fjbve~#`y$2Vs?UOmdY1&2p)Z*iy zgc(A5*3haER z)P%zryB20fZLswyg>YEP^wI`jPa^P`X>2`DoUgfk2|{daEpj_!S40uERAJKjC@7#r z?Xy$cE52$>jNKc=y)4?RrN5UA9(nJyU?KrLFU$d^Zg%w9K*i?iTRcDUfD*A6t9x=B z(Aj!usE!HP+W1hhH>23Y%;}=5OAJuGc{AXJvkqzDYtGpkyI9?(J2-6Kc<|a*nvEwo z&hq|27UAX8;F{48i?2tB#@1kB~G~(xz_B zS38h$GSsjUX@EI%f9skl>~B~jS=?x}YX3hsLNiz`TP?XUrWFpjkZc^m3^&xh&ksRc zKRJSx#DAr9kF;#$L^4>;m|-N7wIcw&juXp^&i8FVNj%6D?O1V*NAWAPcFiDd%BF$jt7`)Ln1$dFJ1;y1(Hz8u6<^KxsXqbC!{D4X*rE z0Rmkctc^+A<~_6&Y`6j$Qq|NiiMhGbbH3Q@ zF@0knfse-h!P{Qdd8k-Y^!$&@$V`_9KW#768@7_u+Y~t5eb#(tvig#B9dd4&wyEN& zJri$Ryc`i0qjT8v+)!>MXC`MNL_FqqY~Atm=F8 zv&kd7wec_L6l}|F=SR&j(2F2zf@D&TCQ(}UtHYqJeCn_6?Du6vLS9xUaW30fD#OrP z(AC=Jl_O!~d4>^!+Jqb>ZQiK{}b48Z1*BRSP?_`J>2BbG$Dqcc*#HA6?5xb$jU^aVYVC{jd9HpuC1 z+;-N|-X~5HcQ1~ZXyr64GdAnpQO!?lN!L!%I}$GtBQb)>8^=`F#E>Cc5~AzfcUr z*tP24DJ25YyuU_Z&{@SYW^wy9$F>rcuVtiW3rxQ8}f_?i6-|&V^P(&7l_K-?{eDtMi9^{S9EA{X*;15;XZ2-;=%b zsZDtrv%4bZy;`jW)4@o6*7C0tEzMjYT#+%uERfF0Cm407R}6Xlur=ZJMve^Qtvti8 zODf%P)wdV-?38p$La;Trqu|&Ic>ua9>PH6ChrcfeXOq3p#lOa?aD6uH>cUo zt~Eu;>!bJN@f-4mh}91d2ly(Rp4^K(mZ(O1tR=Tib@C}rJ+T%O0j+Sf1UU#FRF{`} z*X#E*?$&9XK^uJSbip*XB#)vb2GntLKyM4$K6z*%^hvs+r!`T&BWktEw@fSQ#HtLIq&2aG9Iy+TOx0R3Q*v4{55p~sTvwh6uSXiKz^X)SX9edmi7+6YkRFI@gdri)@csK)W1|-`q_^!vP&rpSAEQR>@PB`4 zLB&##Qz{p85Ki=vFAz-_eoMaKtqU68>N3HoV-`>(@xk#kj{@oKMIvg!S4(Rv#4@i| zd|~oiU|`%Tj5HTaghYZ5NmWv{MVJ}0pK#!tbO77yB!#QYGi#Lrz#A3Kp~EyC_$D^< z8EJ^;r$~r5865NEkhgHW>UNh(N^@<>tu}adh1L6!oC~k`?VAwo@hNyhPWZ}{DT<=2 z=ayiClQ$})cu+O>O1Dn9@4Nuxp2+X6sgiofKwM4~ug9EYozgb_BA!^g446bL!%y|d zuZ&Ry0nk|&jYJ!u zaJcQBANBhzxsmi!#=q9xn?J4L^zsJ>-Y-DKH}b<)(j^HOn&9{ES0KICJkC}{QTxc0 z2Lj#IFC*W5Ht;3v9EDmfl#AF;2c(h@-6oErksT}9B7;Cq(IXXg*fSR!tuW6R%ZRsj zYDZl)AP$DAp4zlNX$;9y(A?aXzwVX5TjjY~@A+H*GzqzcD<8o`^Pf@2FFMlXXp0t; zPcbz*zbtS(74NoTw;xSkcvlLsKiW=Vb2uIxFU)A-w-MRU_V=M+-A=md9l4MjsCtQ4 zSo?thoEI>5Q)vEh_RO={itLq`Vt3mh)tnY;R@>RfQ_`wSZ)bDPFnp@U%OveJm83h_ z3iz$RmWUZBpRe~M&Q<(w`Hx$yHO1|0_53VE1+q8W_ROFyM@@a;Zc0i_$}Nc6B@z3r z;r}?`zeE0dFOH8)=5cj8J3VPQ8O&2bUpyLHP(nk1Qu(n;k%rr%8}f(;h{B89R@TM) zIJZIkYIKm^23OIxd_cxLkXmgY z44p6nvY;8Rnp65fj&MhA@6!VmNzaBVu!xiFR7|2G$N>?<&u2l#epm z<1;ShSp!0kXNP4&2C5H}ea`BA%5Tp2Bpu0Jlh*j1rC%mrJdno4zxl8HdGuP&Q)T50jtlAoj+S3&&NDAcG2BZL6;QR?KvlinDWO3^n(iK=Er=W)3mThX54^%4)y zZ;b@_7|J!}*$PUv9!{7#JlgAO3n{j^&G|3Z=OR(h{i3@saZ#x?T@v}8r)6XGUUl#_ z&41(})nhBBtKKO~H}A%12X2l6rWO`UuN79Sb>^apf;+8-4PqQEO|{0|*}-U#xu0Kq z>}uqg)Lp-$ug23^qgg7N50+N)i5m|;8FT1M*nLO{NUDveUfWrg+{7*HP8LSC)K^73 z6iN!W61BoJP7fO{Scbf5x7NI_`FBnGHyevt@*HeKK`@W< zwH?3zfd7#H>zUq1=R9lK<3gR{sqjG!=i2b5dOJ?fP;}hiOhV#+A-QI3PB9Ak&B_#KZ7}ZH zW04iE?Yc^ehC3o0eVnai&>Fe5aP^+DtT-uMr{98&<@&UZCl5O*5}>}S`_Hh4=^Aq0 zKGC-AV+~d{({Of2wY2OJsdo~s^|ww|JjwXmRw-0RI0>ton=SXlJrSBVi5pT(uO2gv zC1PJ*;v5t=FFPDrX^A-O)Mer)<%MZ@EgY*(Dg}+Jw@xr`95r)QLpAmmKvQ~s_}wzU z&vS2U& zvOosi9)-ccNXM=`TN=k}HqW{d{zM;VYE!1*Fq94F;EQ3sf8Iffv8Y)O+VdH$)cCTX zcn=o9=5;yf23an$hV%TgyZtmuI8cx`2Q&V<#Mzwxah6aU@QMF+OM13IojPBoj|L|( z9~nM#>ArG+l7_pOls^-+K4?#3^mnAQm1N5`mzG_7 zsw3|?cW35x^Xg=0X5o2Q_MWPReEX}FFI*=>C;W+m17zKt^EI!Fd;U}!x(M2ge!ssr z$Z}$ncPX-ZFOA2RhZFS8Ov|)!Z0XaxhYj}+>YrM+)&jRirDP#YT7`DeDUXEQ|L_N- z{O9-*F2k#;@Sv{=8hN%WxwA-d=$rTLCcRrt;+5}a#d50@FMI=C}R^yqWJ2z^R zu4Ia34iXwadXiMj!B6_140{V5OBu2dzV34EB!vjCMC8wDnO%LN-l=T8`D3tj(gZ zakuQ6a;&HP4j9H+?MSY&2$HLlJ{tR2c$*~j$=W7fs$*OG=|3g%G*U^ig7!S{WGqVF zPb}rawB|qUSikhd%LG4)4BV5+P~WV>{7zz%Z_)V(z??N<##eblVyRDt6y`x$>|Zng zY~9%7^q1RJF&mwac)g~69~qIacGXgqp-4TFd{J`Jb>U&!mGSiE9InoIO){wXF|3LI zn~G`ir{K|%<@v0bZQS&_QEaoSO3CRQwfl@gqMFwE%jCUhSJgfKoz}#Y z3q0*Nfbglhb72kNWPYzePgJWG&DHf&9yU6b+}HNr&-wK_SkmfMfbzo?cRr2KHTO@o zqgUEohF^NE%e225FDc{`A*y&gOKvaTRElkV4t9aB`7P+Ki|H)d?s;}N9#*3ct~U-6 zzLxh)**^(-w<0|3#o+5X|L(uXdkUZ}MnFWjZv*IMRZKVRreydz%cv=uq_zoyj@316 zIFf!71y8fuJT8gk%10>u@GrX#?1$KNviBPGseBOqjQ}ME40d1y6Wt3-WyTu#7?MT` zR9$PLIXQIqybLTeHV00SnaUo8q%q;Xg{KoxzpoGY84MZ$Z*!@OTQaK7VK9Vx%9r5wNu*6jeV!|~fQHPw!YVV!XXH4{@YMc5L6j2U3(N|o zcS!^+8;W6@LoP_lr|H3%vu8@vId#SkzF*Pnzz4h-UG?2G_D4+rb|-uuH_?K~{>4Ip z%~F#7EvCSiqF$;l zMQ^F@akomjN`1q|)XJ1e4P<2~(vED3Zg^~;22x^^vV`#)QFrhkB2vfjzyz#EY#iU# zrZ>j^w%p^1@s+?2AHHN`wBpa>%!c(NE%yJ_^EO>;^G~XH?eZ?2CHgal5N$p2sHM0k zI9wF|0n0j&C2>#l^M){_h2G%MHO!75C4P*D)VN@-fqfRyByk9@@ApB_PDfM zAcHmVVm*;O0*ifR3v8XnB=IZRyLLrB|9pd_E1vNkWbDd)zN^uvY&q^7SA42Gdvzix zBQKngr_bqOs*z^s__bM8S=`&m%uF`T90$J@J99~2E5+EPkejDDG=G1M_vdwiN)8*D zwCh3Ai%d5-zYE+7t#U5&=s}-5Vi}d7;KA6JY?F}#-25Kjz^UMd zLR$8_*}cKdLALyC$L!f`9(TVtRJCxX8yOWgqi^>_?HN|{yq?rH8!~({4H(}%(H;ba zS5*&Q5Z2i7!~^oeN)M0Y_GzO(+-z?A{M9xklB{M@RlC3QjGK zde%L7zt0}rFaEaAQaZfF<@Lo+1!r<7;s4$~*(XUZ-|x2ogs)L78uQGWYgH7VBIcH`sPyGx;b}-w4>Rh+D^U~EgiMtueiRuRlpDN z)K*LxKM@onrS@L4B5jAX(-?tQQO%>d>3s{!Ah6D48 z4fwNRglR#uz$n9&v-+D{Z=f+n(f@()OWie$XAy}yJ z(~n$|#fR|StxUSN+#kD^y)%=)J9CEgVPt%A`8y?#!HFsJP}xp(9?Q^6UQIdAO46<8 zH@YX>9xEkkW|f9K5P#1$WtEy?dA_~bhkNC>)2o;_cPMwhe27NWN|UB8AIp+h+1=4& z_e(Brtn3%Co24dkc0vr3-(iQ?>gxQV$Eu8-85geo=M-v?si(mM@GVTX-S-Y19HWW& ze`$j{W993Rmd_m41y0O@-q)!2ZZzgsyII^t6KVnorRGutCHGH;Z{!`KJwVT0Vzumx+i%Z`!x(eBO7INzuBLvg6X? z9_Mfpfvh3>P5%oJ^!QH7oUbs|vw>f`ihWUYSfkYq7HU#rA%aUINqT0fWtL7o6%B#j zQLx4yS(>_Ox}m@8$(uskqzKmgFLgk%=4+@ah)(2NRd3T@sMe&l*A1DDMps(O-UwDl z%6?JnaBlu~nHKdB1vb8f?=s)riZwZo>b^zhYi@ zuheiL?U9v?=i6_XJl19rXb(%Y%f^_+-AmYMkj|VGkjMv{VxuTXw0q@rf#H{-HtAEdH8x7>f{wJ8yXiE_{*}HbRZJplwT&anXQclR_j|F>8zJ!+>Bb3bVE( z13;DKB8}0|9P!C_-Q!;3>#hamb2fTiE-8M#cQ0P?R+`TtRpNK&tF~psV_j2T$eim* zJ@J2v)gmaauC})D2l|1XYZ*q1d#ox!I!)r0@_*Hj22J6$dWuuG= zef4~&^X}uSbk<(;wXK|AVTzEniJRI!V4TUla$r*&Ja2Z_%+0Avp79O5D(LYnJu{q{ zmsF3~8Z_31+z#s0X87b*gtMHn9t{~vULCb<2)qipytvBkSKV|KwuWb~meE_gjRfXc z-$tx@D-22joUJnGEZbEQPtcRr-yfGaraJ26Bz>gWwcT}3iepAf$>)ZAhWnry%zn>n zo53ve$3>RJhvJOi-X2L~g3M%AXR<;s?gCAFG!X%U|cCQN7EC@f{kHdIdJ}qqMl)X6@sB%dg>lI&WZ@VfY9|>&K1v zEfK77F-f(BU3`+lQYw8jq-?T~<}h|ZOpHa?4{t1U)|hajdO6vhWjKa;BLe`j_URT2 z-DJHv#@k(gL)?(%8btotPUBG5L|uh(dg0{wUqTaI7Wox$RM$VR)sw!?vv09?{hxq; zAGztppKdy#uBnk5S} z{$Hx>o-FilMdHw%QJ7*#mcJ{o9Zf9Omp63DA#z;_9D&ve4Al7Fb$A&qUQNrccD2N|EdyG0d67hdC`uoBHF}Fbpl^PSoku`< z>O@Ug&-S+JrP82y0og~~4kP;Cy$z5TioR=>gtb7~Xi@+NQ|3s<$TTn#G?XYG<^9XZ zn!<1=FZngW_}fk?eXfKPrw3=qP(&!Z*7e;)33R@nZ;@{NDG}0w^rn?U{$q#zNU6<_ zo+;3rlO&xFFAKhv`1C87_d0zjyCYJLEM67={4pGUcs6T}mGxu%Ki$0-(y=G9I7ZI; zeC6b4=^mY2%28Y_3Ab)nhQxP2lG2Vuijn7-8Ph%;j@$wgU`|0d6Wxs6=`R{X zo^<5TMx{92dDWwBGC#*m&}Fa2$2mKlk-ZhmZ^&>Tp^&uy)pfW*b~m56xPx@7Qs#}D z4C8f;pI4FRG#bpIGObcaSUZZPf5FJjmT5({cAqnlLp-AeqJAFE*T`3>P|JpcoGHw97H0uVT-F10%bavS5~EMYuuKFZ(hFXvo}bM zVHt^pMWb9=%U_(UgZ({EKGSSd6?Nj9t<(K<_j0Jcs z#>P1o+5`en6tyMc;qtdhgGaOXq$X^graB^Ydj9M%4orVqh;HZzAsKV}n9*M4E{>R0 z?`?Q4qqPM=Nd4SZ*gCr(qvJ}&WHiB)nvvnmb){_8$Zv}9cGBtKQc&h++oHvrmLPM> zzw*1ZswshCfk*etl-iDoUTf}af`9tM76RCQujK=?=U(7zl=4u<;*iNWk+bSyyu^hz zXZED?HD(V;^6MHZU*M@sj9LrH1HXkLR{3u;W)UsJeXFh_c{(9qliqI7*O{s+{FnH>lKy&`jesCGHfT0sB+1lz3 zUczm82p6*0SiG=3&7ItgF?RbDo-l}T`Sd0$ysg3h%(3F1dFS)hx%io9b~jpdPrY~~ z?9=ZIyU#4th7S0V>n~K@{-NpmGyAxsAMmq4R+E!xz7tvN-h*B}JS2PDn)Fl6 z79G6joKrx zjxbyoOMkFzF+H~>;S~~Dzh6B2z%D33jMMUmjlib0WV5^?_bC1(sdwMcWu33P05A{_ zdig+6wQwSWBPF)E*M=2+;;$k6Fq$ZLEjx8$w*=)O4N=lGCnu47+)SV}{|y@zbEy@| zKhCN_&hB41<RW=B)38R)q=d|+0^k-{{=U-s&yC1$t4$mO%e>9^<_h@(Dn0LeK6CzZ zNesm{El~ejl})oetbxgXq#T)gs|{6*IM}C+!9q-Slb6(8f2!z8gj2kb)@D9WRL{^4 zdEZ86y06;kwP{2oLY(`)~gk--K0k9 z;XfM8tV8AL` z*K|^if2M(VdNM;>BH!s`2$DhC*)3P4f2_8=mC?cGSR%BLpRKLkD}Zb_GCyN$dhw6f z1!qb5%_S}`WSW&jy?#FTe6a*3bIZrx+~igpas09f&VOfY7P5U=(Oi>(#OIHHu2GT2 zKV?zP-g&mCrQ!Vxe!=&xr=gT{Y8Zon^C$gm3x(jC@|)2(m~4|l$i>@l6IOFF%}q

mo?$*FGN56}LHEqIXOpLD?x8U92sO=h|1{J-Ww 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

*qx;5Yz!s{_W119=OAA~=Vl)TN;>;5R=!w6P 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 delta 112883 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
$!<}Cw}Ln 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 z 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 BtVsX> diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index acb9b9af155a63b2e9d4e21cbb08ab557949aed5..9a75ba52cf423fc9e2a62f7f4b1b87ea09e32d25 100644 GIT binary patch delta 114923 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%0D8W?{tXQJ)DHSkVbAJS;` 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 delta 112876 zcmZ5nWmnW+7bX9cqJWA>NFyyRje?|rbb|zmnxqiF+<3kPENqyhz3z=%KRp%Ib zrSNG~_>wD-+%L^0|KDuzqa-b|AmUm6=5$%&;=%p{*fC;qeuyv^a5)zz@cisn3nd-O zrF<0#&v=O^*;Y#}eb$+VC#h8{RE_P-($-)eq}$he#iAI%JMq~|j9A!XU1u-teagKd z_vm!3!>rnDBqmK5GMUDFrF?&=Le-tRHs$A_6a)iQ?aC5dicpetUem6mb@a&w;gCC| z?gejJn%^jM8tR|j^KJ|&YJx&o`>!tTnzV8N9)BCYIDp0et;sl?X)(~md~M!DD0^Y4 zuyWaXxSX}Xz(R93ditj&0Ug)tL*JOwzOq{6qaovg)K_BT-T3b{2#Fry;o*_ug=uXl zX#XV?CNM}`#AgD=wfbH@{Ek-bRNMl894sm_R^!3nk5E^A6x?cZ-W(GS)N0Oj%Bp3A zvOXNdMt3uUCCnJ~AESCNr*|2O$X-)@wze&6k@U9|+?0$AST{W#`8=dU$iyEx8uiYY zGde`Yp0D-&w>VSC`MX61)SKFSHiF)Ht=gtxuD@g4Bg2}3FJ{hdzDTp4qJyunpDiN zj8@J3cVYi=ds4sA<6*H?^jDP>_uncsQhmlgeWk4rD!g4YskdD8RP{jR1H1SB&JQ>{ z9{;6}olaZrPpTe{PLR|nvHzp>^{2-A2Pn~zZjq27e>u0Y7k`Z|k{rD|Is^rwB#rueTf_yXZ%mUWE0x8p^+o5!K=x zK5wy`mwqxr&kobl9+%{XogZO6+ZA5RV$yv%$qh>zf z;{l)sV%ljEpl05plNOAYP|Upg)GjZd3;sLt1*r7vUMoQsz|I5xUG!>J&)}xC9oo5N zSRDwA7dLT>Z4FFsp%trIIKu{=qhN%me#k(#63Ir+FMy}uxtwqJ&ivugqojhB09Pyc zj}D`w`Hp=|8V+8Ni>%w`_52%f9;BfJLan0%nO$lf?LZZ67GH14@JN7&I^Dkp^8fWs0BMj zbJL1|b@4yPEi9XkZ=Nh&+sfv&wE3X>9?N4(b7zo;b((RgsRj|vmFWhNz#Ww%!UyYB zULFvrSK;93cr#L=iBxC8bKRrOS5YRra`3pS(hBB<=jO^6%O^8Sh?Iz%7Wca;U+HS zigU6L!~^{)t5*(|pcXisG@@Hj?)KU-!VnoMma)ii_)m0lg1rL#Yv4b3uj3 z?As}qBivp}$%!8TteVmXz!BGMK64m%pn2ywpw`?|Q5^wh2WjW7INh=?JqI5M$l#Br z8a##Mgk(ofOK-KVA#TDSGcTW(Cz=-mYU->o_4^S?RW8-nQ7x-Je?<)Afc zDJrlDPpO(aU0QFn6WC`jQ1kS6O1ks!^GQG}B_Ba8I9z{Lx+cZ=*nKOm8D4@z&4D)0 zc0@*{ZT;m-<}He0nloz`!m`Mys@mRAcuE{E9BN_cI(_YY0zSII1W|KmwL3Ze?`j&+h`$OqI<* z!zi>$Z06X(=#~Y|dwdAVDQZQabjfcG?b+SP?sVO1iF4@i=!W_(O$b78bI3EVzs^;} zq&BN7R&Rxy7~gq#KhoN@apJ$iZmEy@1m|wSP0tQ4{jqR5NYz48ZVe6_PSThgw-sf- z;?&-xWo>IesQp^g_0|q*nd>l$!T2L!v6+(YRv)W3`7GDyMJlX{X@QsT5dk$YPX~*! zJnr{xHS(3;0>n%j!HAKX%X3$X^ety7P7Hx-HnzlIE~K+gfC!4(pXmADs`Ih-5#P0{ z?sv^2QR*%sw&=y#+O%i*y>E|qTke|tT4ov)P91U|4$nPXaPn05-)_d8Zr{{KJ<~f~ zmRrecIUS{+5u_nQ11?9|x9)%I!MKIF_P+

Z>u_Q6!N^`4mH28Z~Z&=bgQ!c}nC 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