diff --git a/CHANGELOG b/CHANGELOG index 38f8e7b6c15c0fc4085d4547ab55c6108d995acf..17e4ae6bd0cecad6f2007eda52e784d8ed40a4b5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,21 @@ +XEngine_APIService V3.4.0.1001 + +增加:lua脚本心跳协议支持 +增加:短连接和敏感词查询列表支持 +增加:机器信息收集协议 +修改:允许lua返回的消息大小为0了 +修改:数据库支持部启用了 +修改:条件编译现在不需要添加额外的命令用于支持linux和macos了 +修复:当使用中文字符串插入和其他操作敏感词,日志,邮编数据库的时候不正确的问题 + +added:lua file heartbeat supported +added:query list support for short link +added:machine information collection protocol support +modify:allow lua to return msg is zero size +modify:database support not enable +modify:The conditional compilation switch does not require additional compilation commands on linux or macos +fixed:when use chinese charset insert or other operator is incorrect for word filter +====================================================================================== XEngine_APIService V3.3.0.1001 增加:行政区域ID转换支持 diff --git a/README.en.md b/README.en.md index e31db86cdf57aa29b7ffe0b7c5dc658af5401729..6230981b3b044c40879fbbdb6154bd8a9f8f0d63 100644 --- a/README.en.md +++ b/README.en.md @@ -50,6 +50,9 @@ Support privatization deployment, free, safe, open source, controllable 29. Image Process 30. process deamon 31. Region ID Convert +32. Machine Information Collect +33. heartbeat + ## install #### XEngine Evn diff --git a/README.md b/README.md index f64c2d0714fbebc288b0ca05c621032034fc9c82..531b37fd84ce50c18d780df7be5cbea832220b7c 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,8 @@ c c++ interface api service 29. 图像处理 30. 进程守护 31. 行政区域ID转换 +32. 机器信息收集 +33. 心跳处理 ## 安装教程 diff --git a/XEngine_APPClient/APPClient_IDExample/APPClient_IDExample.cpp b/XEngine_APPClient/APPClient_IDExample/APPClient_IDExample.cpp index 0f6c23646dd1b75970a7046bb3e0d3ca4e4bbca3..f51ad930a8c6812289e44f8f30ce4fffbad114c9 100644 --- a/XEngine_APPClient/APPClient_IDExample/APPClient_IDExample.cpp +++ b/XEngine_APPClient/APPClient_IDExample/APPClient_IDExample.cpp @@ -29,14 +29,21 @@ int main() #endif int nLen = 0; XCHAR* ptszMsgBuffer = NULL; - LPCXSTR lpszUrl = _X("http://127.0.0.1:5501/api?function=id¶ms1=511025191101018792¶ms2=0"); + LPCXSTR lpszUrl = _X("http://127.0.0.1:5501/api?function=id¶ms1=511025198807018792¶ms2=0"); if (!APIClient_Http_Request(_X("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nLen)) { printf("发送投递失败!\n"); return 0; } +#ifdef _MSC_BUILD + XCHAR tszGBKBuffer[1024] = {}; + BaseLib_OperatorCharset_UTFToAnsi(ptszMsgBuffer, tszGBKBuffer, &nLen); + printf("接受到数据,大小:%d,内容:%s\n", nLen, tszGBKBuffer); +#else printf("接受到数据,大小:%d,内容:%s\n", nLen, ptszMsgBuffer); +#endif + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); #ifdef _MSC_BUILD diff --git a/XEngine_APPClient/APPClient_ImageExample/APPClient_ImageExample.cpp b/XEngine_APPClient/APPClient_ImageExample/APPClient_ImageExample.cpp index 639b3772fe539e2fe27c53c6505ac4ba875e16ec..0a453d688c3c6739b52db52531cd476605c7b265 100644 --- a/XEngine_APPClient/APPClient_ImageExample/APPClient_ImageExample.cpp +++ b/XEngine_APPClient/APPClient_ImageExample/APPClient_ImageExample.cpp @@ -58,7 +58,7 @@ bool APPClient_ImageExample_GetAttr(LPCXSTR lpszMsgBuffer, int nMsgLen, int* pIn } int test_imgzoom() { - LPCXSTR lpszFileDir = _X("D:\\Image\\*.png"); + LPCXSTR lpszFileDir = _X("D:\\Image\\*"); int nListCount = 0; XCHAR** pptszListFile; @@ -100,8 +100,6 @@ int test_imgzoom() BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); } - - return 0; } diff --git a/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.cpp b/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.cpp new file mode 100644 index 0000000000000000000000000000000000000000..10d368f505ce08b1bfec4d68ad11c2e0ccaef504 --- /dev/null +++ b/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.cpp @@ -0,0 +1,120 @@ +#ifdef _MSC_BUILD +#include +#include +#pragma comment(lib,"Ws2_32") +#pragma comment(lib,"jsoncpp") +#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") +#pragma comment(lib,"XEngine_Client/XClient_APIHelp") +#pragma comment(lib,"XEngine_SystemSdk/XEngine_SystemApi") +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//需要优先配置XEngine +//WINDOWS支持VS2022 x64 debug 编译调试 +//g++ -std=c++17 -Wall -g APPClient_MachineExample.cpp -o APPClient_MachineExample.exe -lXEngine_BaseLib -lXClient_APIHelp -lXEngine_SystemApi + + +int test_insert() +{ + int nLen = 0; + int nCode = 0; + LPCXSTR lpszAPIUrl = _X("http://127.0.0.1:5501/api?function=machine¶ms1=0"); + + XCHAR tszOSName[128] = {}; + XCHAR tszOSVersion[128] = {}; + XCHAR tszOSBuild[128] = {}; + XCHAR tszComputerName[128] = {}; + XLONG nOSArch = 0; + SYSTEMAPI_SERIAL_INFOMATION st_SDKSerial = {}; + SystemApi_System_GetSystemVer(tszOSName, tszOSVersion, tszOSBuild, &nOSArch); + SystemApi_System_GetSysName(NULL, tszComputerName); + SystemApi_HardWare_GetSerial(&st_SDKSerial); + + Json::Value st_JsonRoot; + Json::StreamWriterBuilder st_JsonBuilder; + st_JsonRoot["tszMachineName"] = tszOSName; + st_JsonRoot["tszMachineCode"] = st_SDKSerial.tszSystemSerial; + st_JsonRoot["tszMachineSystem"] = tszComputerName; + + st_JsonBuilder["emitUTF8"] = true; + + XCHAR* ptszMsgBuffer = NULL; + if (!APIClient_Http_Request(_X("POST"), lpszAPIUrl, Json::writeString(st_JsonBuilder, st_JsonRoot).c_str(), &nCode, &ptszMsgBuffer, &nLen)) + { + printf("发送投递失败!\n"); + return 0; + } + printf("接受到数据,大小:%d,内容:%s\n", nLen, ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + + return 0; +} +int test_list() +{ + int nLen = 0; + int nCode = 0; + LPCXSTR lpszAPIUrl = _X("http://127.0.0.1:5501/api?function=machine¶ms1=2"); + + XCHAR* ptszMsgBuffer = NULL; + if (!APIClient_Http_Request(_X("POST"), lpszAPIUrl, NULL, &nCode, &ptszMsgBuffer, &nLen)) + { + printf("发送投递失败!\n"); + return 0; + } + printf("接受到数据,大小:%d,内容:%s\n", nLen, ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + + return 0; +} +int test_delete() +{ + int nLen = 0; + int nCode = 0; + LPCXSTR lpszAPIUrl = _X("http://127.0.0.1:5501/api?function=machine¶ms1=1"); + + SYSTEMAPI_SERIAL_INFOMATION st_SDKSerial = {}; + SystemApi_HardWare_GetSerial(&st_SDKSerial); + + Json::Value st_JsonRoot; + st_JsonRoot["tszMachineCode"] = st_SDKSerial.tszSystemSerial; + + XCHAR* ptszMsgBuffer = NULL; + if (!APIClient_Http_Request(_X("POST"), lpszAPIUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) + { + printf("发送投递失败!\n"); + return 0; + } + printf("接受到数据,大小:%d,内容:%s\n", nLen, ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + + return 0; +} + +int main() +{ +#ifdef _MSC_BUILD + WSADATA st_WSAData; + WSAStartup(MAKEWORD(2, 2), &st_WSAData); +#endif + test_insert(); + test_insert(); + test_list(); + test_delete(); + +#ifdef _MSC_BUILD + WSACleanup(); +#endif + return 0; +} \ No newline at end of file diff --git a/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.vcxproj b/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.vcxproj new file mode 100644 index 0000000000000000000000000000000000000000..8b693b03bf41b484ea7975b707a2ca712008234c --- /dev/null +++ b/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.vcxproj @@ -0,0 +1,139 @@ + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {7b5fb530-dbe4-4954-bc02-6c9411825a1d} + APPClientMachineExample + 10.0 + + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + Application + true + v143 + Unicode + + + Application + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + $(XEngine_Include);../../XEngine_Source/XEngine_ThirdPart/jsoncpp;$(IncludePath) + $(XEngine_Lib64);../../XEngine_Source/x64/Debug;$(LibraryPath) + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + \ No newline at end of file diff --git a/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.vcxproj.filters b/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.vcxproj.filters new file mode 100644 index 0000000000000000000000000000000000000000..8f362cb425b5b8455f02ebd0480b8bb0003ead20 --- /dev/null +++ b/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.vcxproj.filters @@ -0,0 +1,22 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + 源文件 + + + \ No newline at end of file diff --git a/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.vcxproj.user b/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.vcxproj.user new file mode 100644 index 0000000000000000000000000000000000000000..88a550947edbc3c5003a41726f0749201fdb6822 --- /dev/null +++ b/XEngine_APPClient/APPClient_MachineExample/APPClient_MachineExample.vcxproj.user @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/XEngine_APPClient/APPClient_SLinkExample/APPClient_SLinkExample.cpp b/XEngine_APPClient/APPClient_SLinkExample/APPClient_SLinkExample.cpp index 59906d76deb4e5fa7d26d8261e9e498f7595c22a..80f62388a3e1d2ab2cc19055489d456cd4304633 100644 --- a/XEngine_APPClient/APPClient_SLinkExample/APPClient_SLinkExample.cpp +++ b/XEngine_APPClient/APPClient_SLinkExample/APPClient_SLinkExample.cpp @@ -65,6 +65,22 @@ int test_get() BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); return 0; } +int test_List() +{ + int nLen = 0; + int nCode = 0; + XCHAR* ptszMsgBuffer; + + LPCXSTR lpszAPIUrl = _X("http://127.0.0.1:5501/api?function=slink¶ms1=3"); + if (!APIClient_Http_Request(_X("POST"), lpszAPIUrl, NULL, &nCode, &ptszMsgBuffer, &nLen)) + { + printf("发送投递失败!\n"); + return 0; + } + printf("接受到数据,大小:%d,内容:%s\n", nLen, ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + return 0; +} int test_delete() { int nLen = 0; @@ -92,6 +108,7 @@ int main() #endif test_create(); test_get(); + test_List(); test_delete(); #ifdef _MSC_BUILD diff --git a/XEngine_APPClient/APPClient_WordFilter/APPClient_WordFilter.cpp b/XEngine_APPClient/APPClient_WordFilter/APPClient_WordFilter.cpp index 8701cf288f2a4e5cf70f76d8974bcd29ec86f3e1..14e385bdebc81833ebe8f5d8f3fc8957372bcf7b 100644 --- a/XEngine_APPClient/APPClient_WordFilter/APPClient_WordFilter.cpp +++ b/XEngine_APPClient/APPClient_WordFilter/APPClient_WordFilter.cpp @@ -69,6 +69,23 @@ int test_query() return 0; } +int test_List() +{ + int nLen = 0; + int nCode = 0; + LPCXSTR lpszAPIUrl = _X("http://127.0.0.1:5501/api?function=wordfilter¶ms1=3"); + + XCHAR* ptszMsgBuffer = NULL; + if (!APIClient_Http_Request(_X("POST"), lpszAPIUrl, NULL, &nCode, &ptszMsgBuffer, &nLen)) + { + printf("发送投递失败!\n"); + return 0; + } + printf("接受到数据,大小:%d,内容:%s\n", nLen, ptszMsgBuffer); + BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); + + return 0; +} int test_delete() { int nLen = 0; @@ -98,6 +115,7 @@ int main() #endif test_insert(); test_query(); + test_List(); test_delete(); #ifdef _MSC_BUILD diff --git a/XEngine_APPClient/VSCopy-x64.bat b/XEngine_APPClient/VSCopy-x64.bat index c82ea024f0cebbaa7190c6f0565e0d6801c76687..b32c3335b7558abb597b8d9c4151b0b133a5923e 100644 --- a/XEngine_APPClient/VSCopy-x64.bat +++ b/XEngine_APPClient/VSCopy-x64.bat @@ -1,2 +1,3 @@ copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" -copy /y "%XEngine_Lib64%\XEngine_Client\XClient_APIHelp.dll" "./" \ No newline at end of file +copy /y "%XEngine_Lib64%\XEngine_Client\XClient_APIHelp.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" \ No newline at end of file diff --git a/XEngine_APPClient/XEngine_APPClient.sln b/XEngine_APPClient/XEngine_APPClient.sln index dc1cce8fa743cf2f4ec93c8cc61081ff1bae036f..3715ad1814d74e5d74aad001e362baa9a344e581 100644 --- a/XEngine_APPClient/XEngine_APPClient.sln +++ b/XEngine_APPClient/XEngine_APPClient.sln @@ -43,6 +43,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "APPClient_BackExample", "AP EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "APPClient_DeamonExample", "APPClient_DeamonExample\APPClient_DeamonExample.vcxproj", "{5D064FEF-9B83-493A-B891-12E56B1B4C65}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "APPClient_MachineExample", "APPClient_MachineExample\APPClient_MachineExample.vcxproj", "{7B5FB530-DBE4-4954-BC02-6C9411825A1D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64 @@ -211,6 +213,14 @@ Global {5D064FEF-9B83-493A-B891-12E56B1B4C65}.Release|x64.Build.0 = Release|x64 {5D064FEF-9B83-493A-B891-12E56B1B4C65}.Release|x86.ActiveCfg = Release|Win32 {5D064FEF-9B83-493A-B891-12E56B1B4C65}.Release|x86.Build.0 = Release|Win32 + {7B5FB530-DBE4-4954-BC02-6C9411825A1D}.Debug|x64.ActiveCfg = Debug|x64 + {7B5FB530-DBE4-4954-BC02-6C9411825A1D}.Debug|x64.Build.0 = Debug|x64 + {7B5FB530-DBE4-4954-BC02-6C9411825A1D}.Debug|x86.ActiveCfg = Debug|Win32 + {7B5FB530-DBE4-4954-BC02-6C9411825A1D}.Debug|x86.Build.0 = Debug|Win32 + {7B5FB530-DBE4-4954-BC02-6C9411825A1D}.Release|x64.ActiveCfg = Release|x64 + {7B5FB530-DBE4-4954-BC02-6C9411825A1D}.Release|x64.Build.0 = Release|x64 + {7B5FB530-DBE4-4954-BC02-6C9411825A1D}.Release|x86.ActiveCfg = Release|Win32 + {7B5FB530-DBE4-4954-BC02-6C9411825A1D}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index 21866dcc3fa2154e03caf155462e0232771489b2..eca219da2e75a1b7e8a23c30a8c1c34ca1f8a0f4 100644 Binary files a/XEngine_Docment/Docment_en.docx and b/XEngine_Docment/Docment_en.docx differ diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index a445b39f86f632a3af2f91103832e66561fdef61..488e12515e8ac8d664b024618d356c3dfe14112b 100644 Binary files a/XEngine_Docment/Docment_zh.docx and b/XEngine_Docment/Docment_zh.docx differ diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index f6e2968cea7e757693f019dc55068332da53287c..ca2dcca0c84ff481bfde92c3cfd6f81c9e4286f5 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -23,7 +23,8 @@ "LogLeave":17 }, "XSql":{ - "SQLAddr":"10.0.3.155", + "bEnable":true, + "SQLAddr":"10.0.3.154", "SQLPort":3306, "SQLUser":"root", "SQLPass":"123123" @@ -61,6 +62,7 @@ } }, "XVer":[ + "3.4.0.1001 Build20240411", "3.3.0.1001 Build20240308", "3.2.0.1001 Build20231229", "3.1.0.1001 Build20231102", diff --git a/XEngine_Release/XEngine_Config/XEngine_PluginLua.json b/XEngine_Release/XEngine_Config/XEngine_PluginLua.json index c1e576594f189512a9944c04116e418f6f94f579..9c3dcccc32eeee28ca79e9d6174fe650f6881416 100644 --- a/XEngine_Release/XEngine_Config/XEngine_PluginLua.json +++ b/XEngine_Release/XEngine_Config/XEngine_PluginLua.json @@ -9,6 +9,11 @@ "PluginEnable":true, "PluginMethod":"time", "PluginFile":"./XEngine_LuaPlugin/ModulePlugin_OSTime.lua" + }, + { + "PluginEnable":true, + "PluginMethod":"heart", + "PluginFile":"./XEngine_LuaPlugin/ModulePlugin_Heart.lua" } ] } \ No newline at end of file diff --git a/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Heart.lua b/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Heart.lua new file mode 100644 index 0000000000000000000000000000000000000000..f18c52726fcbfc7c32b6d443c104b015b8466f78 --- /dev/null +++ b/XEngine_Release/XEngine_LuaPlugin/ModulePlugin_Heart.lua @@ -0,0 +1,24 @@ +function PluginCore_Init() + return true +end + +function PluginCore_UnInit() +end + +function PluginCore_Call(lpszStrUrl, nListCount, lpszMsgBuffer, nMsgLen) + + if 0 == nListCount then + PInt_HTTPCode = 200 + PInt_MsgLen = 0 + elseif nListCount > 0 then + PInt_HTTPCode = 200 + PtszMsgBuffer = "{\"code\":0,\"msg\":\"success\"}" + PInt_MsgLen = #PtszMsgBuffer + else + PInt_HTTPCode = 200 + PtszMsgBuffer = "{\"code\":1002,\"msg\":\"type does not support\"}" + PInt_MsgLen = #PtszMsgBuffer + end + + return true +end \ No newline at end of file diff --git a/XEngine_SQL/CreateDatabase.sql b/XEngine_SQL/CreateDatabase.sql index ac3997b62e25e94d32e8d57ba32c7e51b7f3309f..3723300797332e961c814a0ff1f38709102c7410 100644 --- a/XEngine_SQL/CreateDatabase.sql +++ b/XEngine_SQL/CreateDatabase.sql @@ -6,4 +6,5 @@ CREATE DATABASE `XEngine_APIInfo` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci; CREATE DATABASE `XEngine_APILog` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci; CREATE DATABASE `XEngine_APISLink` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci; -CREATE DATABASE `XEngine_APIWords` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci; \ No newline at end of file +CREATE DATABASE `XEngine_APIWords` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci; +CREATE DATABASE `XEngine_APIMachine` DEFAULT CHARACTER SET UTF8MB4 COLLATE utf8mb4_unicode_ci; \ No newline at end of file diff --git a/XEngine_SQL/XEngine_APIMachine.sql b/XEngine_SQL/XEngine_APIMachine.sql new file mode 100644 index 0000000000000000000000000000000000000000..fbd30c980262fd7c7fd108e01dd39ef63016e13c --- /dev/null +++ b/XEngine_SQL/XEngine_APIMachine.sql @@ -0,0 +1,35 @@ +/* + Navicat Premium Data Transfer + + Source Server : mysql + Source Server Type : MySQL + Source Server Version : 80036 (8.0.36-0ubuntu0.22.04.1) + Source Host : 10.0.3.154:3306 + Source Schema : XEngine_APIMachine + + Target Server Type : MySQL + Target Server Version : 80036 (8.0.36-0ubuntu0.22.04.1) + File Encoding : 65001 + + Date: 07/04/2024 14:19:54 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for XEngine_MachineList +-- ---------------------------- +DROP TABLE IF EXISTS `XEngine_MachineList`; +CREATE TABLE `XEngine_MachineList` ( + `ID` int NOT NULL AUTO_INCREMENT COMMENT 'ID', + `tszMachineName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '机器名称', + `tszMachineCode` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '机器序列', + `tszMachineSystem` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '系统名称', + `tszMachineText` varchar(2048) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '机器信息', + `nTimeNumber` bigint NOT NULL COMMENT '启动次数', + `tszCreateTime` datetime NOT NULL COMMENT '注册时间', + PRIMARY KEY (`ID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = DYNAMIC; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/XEngine_Source/Makefile b/XEngine_Source/Makefile index 8f8747af42f1c79a3bd9e71dbe05b2a3cb0a5f0f..a9e2bffd40826265bc83a0d29eec5ce5d4d7c140 100644 --- a/XEngine_Source/Makefile +++ b/XEngine_Source/Makefile @@ -2,10 +2,6 @@ RELEASE = 0 UNICODE = 0 PLATFORM=linux FLAGS= -#编译开关 -QR=1 -LUA=1 -OPENCV=1 #要编译的模块 THIRDPART_MODULE_JSONCPP = ./XEngine_ThirdPart/jsoncpp @@ -48,9 +44,9 @@ libXEngine_ModuleProtocol.so: libXEngine_ModuleSystem.so: make -C $(MODULE_SYSTEM_PATH) PLATFORM=$(PLATFORM) $(FLAGS) libXEngine_ModuleHelp.so: - make -C $(MODULE_HELP_PATH) SWITCHQR=$(QR) SWITCHCV=$(OPENCV) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(MODULE_HELP_PATH) PLATFORM=$(PLATFORM) $(FLAGS) libXEngine_ModulePlugin.so: - make -C $(MODULE_PLUGIN_PATH) SWITCHLUA=$(LUA) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(MODULE_PLUGIN_PATH) PLATFORM=$(PLATFORM) $(FLAGS) libModulePlugin_Zodiac.so: make -C $(PLUGIN_MODULE_ZODIAC) PLATFORM=$(PLATFORM) $(FLAGS) diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h index 12fceeec6f2c03d972c009397997239574cd021f..e7438ffa91c66ed333bbe06172e6ca503568f9c8 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h @@ -48,6 +48,7 @@ typedef struct XCHAR tszSQLPass[128]; //数据库密码 XCHAR tszDBName[128]; //数据库表明 int nSQLPort; //端口 + bool bEnable; //数据库支持开关 }st_XSql; struct { diff --git a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index 3f2db7f25c74a67d0d31f1f030e660a359c6b385..e9c3f46cd2e7880b2c6e1970d06164eb01e7b56e 100644 --- a/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -138,13 +138,15 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE _tcsxcpy(pSt_ServerConfig->st_XApi.st_TranslationInfo.tszAPPID, st_JsonTranslationInfo["appid"].asCString()); _tcsxcpy(pSt_ServerConfig->st_XApi.st_TranslationInfo.tszAPPKey, st_JsonTranslationInfo["key"].asCString()); - if (st_JsonRoot["XSql"].empty() || (4 != st_JsonRoot["XSql"].size())) + if (st_JsonRoot["XSql"].empty() || (5 != st_JsonRoot["XSql"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_XDB; return false; } Json::Value st_JsonXSql = st_JsonRoot["XSql"]; + + pSt_ServerConfig->st_XSql.bEnable = st_JsonXSql["bEnable"].asBool(); pSt_ServerConfig->st_XSql.nSQLPort = st_JsonXSql["SQLPort"].asInt(); _tcsxcpy(pSt_ServerConfig->st_XSql.tszSQLAddr, st_JsonXSql["SQLAddr"].asCString()); _tcsxcpy(pSt_ServerConfig->st_XSql.tszSQLUser, st_JsonXSql["SQLUser"].asCString()); diff --git a/XEngine_Source/XEngine_ModuleDatabase/Makefile b/XEngine_Source/XEngine_ModuleDatabase/Makefile index 5773e9ce7cc00791bf5f5c1f7efe6afda35f2a7a..cd9c1e68627ddd778d01863fc3f72c54c2033167 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/Makefile +++ b/XEngine_Source/XEngine_ModuleDatabase/Makefile @@ -10,7 +10,7 @@ LOADHDR = -I ./ LOADSO = LIB = -lXEngine_BaseLib -lHelpComponents_DataBase LIBEX = -OBJECTS = ModuleDatabase_IDCard.o ModuleDatabase_Bank.o ModuleDatabase_ZIPCode.o ModuleDatabase_XLog.o ModuleDatabase_ShortLink.o ModuleDatabase_WordFilter.o pch.o +OBJECTS = ModuleDatabase_IDCard.o ModuleDatabase_Bank.o ModuleDatabase_ZIPCode.o ModuleDatabase_XLog.o ModuleDatabase_ShortLink.o ModuleDatabase_WordFilter.o ModuleDatabase_Machine.o pch.o ifeq ($(RELEASE),1) FLAGS = -c @@ -64,6 +64,8 @@ ModuleDatabase_ShortLink.o:./ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.c $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.cpp ModuleDatabase_WordFilter.o:./ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.cpp +ModuleDatabase_Machine.o:./ModuleDatabase_Machine/ModuleDatabase_Machine.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModuleDatabase_Machine/ModuleDatabase_Machine.cpp pch.o:./pch.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./pch.cpp diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Define.h b/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Define.h index 31be19b82860b732d48c45984a8a48b5ef55147b..ce8fb3168a62dc2fce7e8c142b08dd02a8cf8e55 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Define.h +++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDB_Define.h @@ -361,6 +361,25 @@ extern "C" bool ModuleDatabase_ShortLink_Query(XENGINE_SHORTLINK* pSt_SLinkInfo) 备注: *********************************************************************/ extern "C" bool ModuleDatabase_ShortLink_Delete(XENGINE_SHORTLINK* pSt_SLinkInfo); +/******************************************************************** +函数名称:ModuleDatabase_ShortLink_List +函数功能:列举短连接信息列表 + 参数.一:pppSt_MachineInfo + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出短连接列表 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleDatabase_ShortLink_List(XENGINE_SHORTLINK*** pppSt_SLinkInfo, int* pInt_ListCount); /************************************************************************/ /* 导出的敏感词过滤数据库函数 */ /************************************************************************/ @@ -428,4 +447,124 @@ extern "C" bool ModuleDatabase_WordFilter_Insert(XENGINE_WORDFILTER* pSt_WordFil 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleDatabase_WordFilter_Delete(XENGINE_WORDFILTER* pSt_WordFilter); \ No newline at end of file +extern "C" bool ModuleDatabase_WordFilter_Delete(XENGINE_WORDFILTER* pSt_WordFilter); +/******************************************************************** +函数名称:ModuleDatabase_WordFilter_List +函数功能:列举敏感词信息列表 + 参数.一:pppSt_MachineInfo + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出敏感词列表 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleDatabase_WordFilter_List(XENGINE_WORDFILTER*** pppSt_WordFilter, int* pInt_ListCount); +/************************************************************************/ +/* 导出的机器信息收集数据库函数 */ +/************************************************************************/ +/******************************************************************** +函数名称:ModuleDatabase_Machine_Init +函数功能:初始化数据库 + 参数.一:pSt_DBConnector + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:数据数据库信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleDatabase_Machine_Init(DATABASE_MYSQL_CONNECTINFO * pSt_DBConnector); +/******************************************************************** +函数名称:ModuleDatabase_Machine_Destory +函数功能:销毁 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleDatabase_Machine_Destory(); +/******************************************************************** +函数名称:ModuleDatabase_Machine_Insert +函数功能:插入一条信息到数据库中 + 参数.一:pSt_SLinkInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleDatabase_Machine_Insert(XENGINE_MACHINEINFO * pSt_MachineInfo); +/******************************************************************** +函数名称:ModuleDatabase_Machine_Query +函数功能:查询数据 + 参数.一:pSt_SLinkInfo + In/Out:In/Out + 类型:数据结构指针 + 可空:N + 意思:输入查询的信息,输出完整的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleDatabase_Machine_Query(XENGINE_MACHINEINFO * pSt_MachineInfo); +/******************************************************************** +函数名称:ModuleDatabase_Machine_Delete +函数功能:删除数据 + 参数.一:pSt_SLinkInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要删除的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleDatabase_Machine_Delete(XENGINE_MACHINEINFO * pSt_MachineInfo); +/******************************************************************** +函数名称:ModuleDatabase_Machine_UPDate +函数功能:更新数据 + 参数.一:pSt_SLinkInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要更新的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleDatabase_Machine_UPDate(XENGINE_MACHINEINFO* pSt_MachineInfo); +/******************************************************************** +函数名称:ModuleDatabase_Machine_List +函数功能:列举收集的机器信息 + 参数.一:pppSt_MachineInfo + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出机器信息列表 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleDatabase_Machine_List(XENGINE_MACHINEINFO*** pppSt_MachineInfo, int* pInt_ListCount); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Machine/ModuleDatabase_Machine.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Machine/ModuleDatabase_Machine.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2de18b6a8e48c5e4dd811935633ef23d46b9c640 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Machine/ModuleDatabase_Machine.cpp @@ -0,0 +1,353 @@ +#include "pch.h" +#include "ModuleDatabase_Machine.h" +/******************************************************************** +// Created: 2024/04/07 10:37:48 +// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModuleDatabase\ModuleDatabase_Machine\ModuleDatabase_Machine.cpp +// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModuleDatabase\ModuleDatabase_Machine +// File Base: ModuleDatabase_Machine +// File Ext: cpp +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 机器信息收集数据库 +// History: +*********************************************************************/ +CModuleDatabase_Machine::CModuleDatabase_Machine() +{ +} +CModuleDatabase_Machine::~CModuleDatabase_Machine() +{ + +} +////////////////////////////////////////////////////////////////////////// +// 公有函数 +////////////////////////////////////////////////////////////////////////// +/******************************************************************** +函数名称:ModuleDatabase_Machine_Init +函数功能:初始化数据库 + 参数.一:pSt_DBConnector + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:数据数据库信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleDatabase_Machine::ModuleDatabase_Machine_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector) +{ + DBModule_IsErrorOccur = false; + + if (NULL == pSt_DBConnector) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PARAMENT; + return false; + } + //连接数据库 + _tcsxcpy(pSt_DBConnector->tszDBName, _X("XEngine_APIMachine")); + if (!DataBase_MySQL_Connect(&xhDBSQL, pSt_DBConnector)) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:ModuleDatabase_Machine_Destory +函数功能:销毁 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleDatabase_Machine::ModuleDatabase_Machine_Destory() +{ + DBModule_IsErrorOccur = false; + + DataBase_MySQL_Close(xhDBSQL); + return true; +} +/******************************************************************** +函数名称:ModuleDatabase_Machine_Insert +函数功能:插入一条信息到数据库中 + 参数.一:pSt_SLinkInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要插入的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleDatabase_Machine::ModuleDatabase_Machine_Insert(XENGINE_MACHINEINFO* pSt_MachineInfo) +{ + DBModule_IsErrorOccur = false; + + if (NULL == pSt_MachineInfo) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PARAMENT; + return false; + } + XCHAR tszSQLStatement[4096]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + + _xstprintf(tszSQLStatement, _X("INSERT INTO `XEngine_MachineList` (tszMachineName,tszMachineCode,tszMachineSystem,tszMachineText,nTimeNumber,tszCreateTime) VALUES('%s','%s','%s','%s',%lld,now())"), pSt_MachineInfo->tszMachineName, pSt_MachineInfo->tszMachineCode, pSt_MachineInfo->tszMachineSystem, pSt_MachineInfo->tszMachineText, pSt_MachineInfo->nTimeNumber); +#ifdef _MSC_BUILD + XCHAR tszUTFStr[4096] = {}; + int nSLen = _tcsxlen(tszSQLStatement); + BaseLib_OperatorCharset_AnsiToUTF(tszSQLStatement, tszUTFStr, &nSLen); + if (!DataBase_MySQL_Execute(xhDBSQL, tszUTFStr)) +#else + if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLStatement)) +#endif + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:ModuleDatabase_Machine_Query +函数功能:查询数据 + 参数.一:pSt_SLinkInfo + In/Out:In/Out + 类型:数据结构指针 + 可空:N + 意思:输入查询的信息,输出完整的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleDatabase_Machine::ModuleDatabase_Machine_Query(XENGINE_MACHINEINFO* pSt_MachineInfo) +{ + DBModule_IsErrorOccur = false; + + if ((NULL == pSt_MachineInfo)) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PARAMENT; + return false; + } + //查询 + XNETHANDLE xhTable = 0; + __int64u nllLine = 0; + __int64u nllRow = 0; + + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + + _xstprintf(tszSQLStatement, _X("SELECT * FROM `XEngine_MachineList` WHERE tszMachineCode = '%s'"), pSt_MachineInfo->tszMachineCode); + if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszSQLStatement, &nllLine, &nllRow)) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = DataBase_GetLastError(); + return false; + } + if (nllLine <= 0) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_NOTFOUND; + return false; + } + for (__int64u i = 0; i < nllLine; i++) + { + XCHAR** pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable); + + if (NULL != pptszResult[0]) + { + pSt_MachineInfo->nID = _ttxoi(pptszResult[0]); + } + if (NULL != pptszResult[1]) + { + _tcsxcpy(pSt_MachineInfo->tszMachineName, pptszResult[1]); + } + if (NULL != pptszResult[2]) + { + _tcsxcpy(pSt_MachineInfo->tszMachineCode, pptszResult[2]); + } + if (NULL != pptszResult[3]) + { + _tcsxcpy(pSt_MachineInfo->tszMachineSystem, pptszResult[3]); + } + if (NULL != pptszResult[4]) + { + _tcsxcpy(pSt_MachineInfo->tszMachineText, pptszResult[4]); + } + if (NULL != pptszResult[5]) + { + pSt_MachineInfo->nTimeNumber = _ttxoll(pptszResult[5]); + } + if (NULL != pptszResult[6]) + { + _tcsxcpy(pSt_MachineInfo->tszCreateTime, pptszResult[6]); + } + } + DataBase_MySQL_FreeResult(xhDBSQL, xhTable); + return true; +} +/******************************************************************** +函数名称:ModuleDatabase_Machine_Delete +函数功能:删除数据 + 参数.一:pSt_SLinkInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要删除的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleDatabase_Machine::ModuleDatabase_Machine_Delete(XENGINE_MACHINEINFO* pSt_MachineInfo) +{ + DBModule_IsErrorOccur = false; + + if (NULL == pSt_MachineInfo) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PARAMENT; + return false; + } + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + + if (_tcsxlen(pSt_MachineInfo->tszMachineCode) > 0) + { + _xstprintf(tszSQLStatement, _X("DELETE FROM `XEngine_MachineList` WHERE tszMachineCode = '%s'"), pSt_MachineInfo->tszMachineCode); + } + else + { + _xstprintf(tszSQLStatement, _X("DELETE FROM `XEngine_MachineList` WHERE tszMachineName = '%s'"), pSt_MachineInfo->tszMachineName); + } + + if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLStatement)) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:ModuleDatabase_Machine_UPDate +函数功能:更新数据 + 参数.一:pSt_SLinkInfo + In/Out:In + 类型:数据结构指针 + 可空:N + 意思:输入要更新的数据 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleDatabase_Machine::ModuleDatabase_Machine_UPDate(XENGINE_MACHINEINFO* pSt_MachineInfo) +{ + DBModule_IsErrorOccur = false; + + if (NULL == pSt_MachineInfo) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PARAMENT; + return false; + } + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + + _xstprintf(tszSQLStatement, _X("UPDATE `XEngine_MachineList` SET nTimeNumber = %lld WHERE tszMachineCode = '%s'"), pSt_MachineInfo->nTimeNumber, pSt_MachineInfo->tszMachineCode); + + if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLStatement)) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = DataBase_GetLastError(); + return false; + } + return true; +} +/******************************************************************** +函数名称:ModuleDatabase_Machine_List +函数功能:列举收集的机器信息 + 参数.一:pppSt_MachineInfo + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出机器信息列表 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleDatabase_Machine::ModuleDatabase_Machine_List(XENGINE_MACHINEINFO*** pppSt_MachineInfo, int* pInt_ListCount) +{ + DBModule_IsErrorOccur = false; + + //查询 + XNETHANDLE xhTable = 0; + __int64u nllLine = 0; + __int64u nllRow = 0; + + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + + _xstprintf(tszSQLStatement, _X("SELECT * FROM `XEngine_MachineList`")); + if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszSQLStatement, &nllLine, &nllRow)) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = DataBase_GetLastError(); + return false; + } + if (nllLine <= 0) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_NOTFOUND; + return false; + } + *pInt_ListCount = (int)nllLine; + BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_MachineInfo, *pInt_ListCount, sizeof(XENGINE_MACHINEINFO)); + for (__int64u i = 0; i < nllLine; i++) + { + XCHAR** pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable); + + if (NULL != pptszResult[0]) + { + (*pppSt_MachineInfo)[i]->nID = _ttxoi(pptszResult[0]); + } + if (NULL != pptszResult[1]) + { + _tcsxcpy((*pppSt_MachineInfo)[i]->tszMachineName, pptszResult[1]); + } + if (NULL != pptszResult[2]) + { + _tcsxcpy((*pppSt_MachineInfo)[i]->tszMachineCode, pptszResult[2]); + } + if (NULL != pptszResult[3]) + { + _tcsxcpy((*pppSt_MachineInfo)[i]->tszMachineSystem, pptszResult[3]); + } + if (NULL != pptszResult[4]) + { + _tcsxcpy((*pppSt_MachineInfo)[i]->tszMachineText, pptszResult[4]); + } + if (NULL != pptszResult[5]) + { + (*pppSt_MachineInfo)[i]->nTimeNumber = _ttxoll(pptszResult[5]); + } + if (NULL != pptszResult[6]) + { + _tcsxcpy((*pppSt_MachineInfo)[i]->tszCreateTime, pptszResult[6]); + } + } + DataBase_MySQL_FreeResult(xhDBSQL, xhTable); + return true; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Machine/ModuleDatabase_Machine.h b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Machine/ModuleDatabase_Machine.h new file mode 100644 index 0000000000000000000000000000000000000000..756aa6fa84c17b3412f927e4925d7516e90e04c6 --- /dev/null +++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_Machine/ModuleDatabase_Machine.h @@ -0,0 +1,31 @@ +#pragma once +/******************************************************************** +// Created: 2024/04/07 10:37:03 +// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModuleDatabase\ModuleDatabase_Machine\ModuleDatabase_Machine.h +// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModuleDatabase\ModuleDatabase_Machine +// File Base: ModuleDatabase_Machine +// File Ext: h +// Project: XEngine(网络通信引擎) +// Author: qyt +// Purpose: 机器信息收集数据库 +// History: +*********************************************************************/ + + +class CModuleDatabase_Machine +{ +public: + CModuleDatabase_Machine(); + ~CModuleDatabase_Machine(); +public: + bool ModuleDatabase_Machine_Init(DATABASE_MYSQL_CONNECTINFO* pSt_DBConnector); + bool ModuleDatabase_Machine_Destory(); + bool ModuleDatabase_Machine_Insert(XENGINE_MACHINEINFO* pSt_MachineInfo); + bool ModuleDatabase_Machine_Query(XENGINE_MACHINEINFO* pSt_MachineInfo); + bool ModuleDatabase_Machine_Delete(XENGINE_MACHINEINFO* pSt_MachineInfo); + bool ModuleDatabase_Machine_UPDate(XENGINE_MACHINEINFO* pSt_MachineInfo); + bool ModuleDatabase_Machine_List(XENGINE_MACHINEINFO*** pppSt_MachineInfo, int* pInt_ListCount); +protected: +private: + XNETHANDLE xhDBSQL; +}; \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.cpp index abdedf1d11ce7d1748ecc9aaa86dcacd9e0b13fe..f4f5b67152c96a3aa8041f16d9610f81f466573d 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.cpp +++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.cpp @@ -222,4 +222,82 @@ bool CModuleDatabase_ShortLink::ModuleDatabase_ShortLink_Delete(XENGINE_SHORTLIN return false; } return true; +} +/******************************************************************** +函数名称:ModuleDatabase_ShortLink_List +函数功能:列举短连接信息列表 + 参数.一:pppSt_MachineInfo + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出短连接列表 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleDatabase_ShortLink::ModuleDatabase_ShortLink_List(XENGINE_SHORTLINK*** pppSt_SLinkInfo, int* pInt_ListCount) +{ + DBModule_IsErrorOccur = false; + + //查询 + XNETHANDLE xhTable = 0; + __int64u nllLine = 0; + __int64u nllRow = 0; + + XCHAR tszSQLStatement[1024]; + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + //名称为,消息名为必填 + _xstprintf(tszSQLStatement, _X("SELECT * FROM `XEngine_ShortLink`")); + if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszSQLStatement, &nllLine, &nllRow)) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = DataBase_GetLastError(); + return false; + } + if (nllLine <= 0) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_NOTFOUND; + return false; + } + *pInt_ListCount = (int)nllLine; + BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_SLinkInfo, *pInt_ListCount, sizeof(XENGINE_SHORTLINK)); + + for (__int64u i = 0; i < nllLine; i++) + { + XCHAR** pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable); + + if (NULL != pptszResult[0]) + { + (*pppSt_SLinkInfo)[i]->nID = _ttxoi(pptszResult[0]); + } + if (NULL != pptszResult[1]) + { + _tcsxcpy((*pppSt_SLinkInfo)[i]->tszFullUrl, pptszResult[1]); + } + if (NULL != pptszResult[2]) + { + _tcsxcpy((*pppSt_SLinkInfo)[i]->tszShotUrl, pptszResult[2]); + } + if (NULL != pptszResult[3]) + { + _tcsxcpy((*pppSt_SLinkInfo)[i]->tszKeyUrl, pptszResult[3]); + } + if (NULL != pptszResult[4]) + { + _tcsxcpy((*pppSt_SLinkInfo)[i]->tszMapUrl, pptszResult[4]); + } + if (NULL != pptszResult[5]) + { + _tcsxcpy((*pppSt_SLinkInfo)[i]->tszCreateTime, pptszResult[5]); + } + } + DataBase_MySQL_FreeResult(xhDBSQL, xhTable); + return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.h b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.h index 7d17e60257d36516b66843814e251db8980bb6ed..513234c51c7b2a10ef35e98b14a2b02222ea9873 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.h +++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.h @@ -23,6 +23,7 @@ public: bool ModuleDatabase_ShortLink_Insert(XENGINE_SHORTLINK* pSt_SLinkInfo); bool ModuleDatabase_ShortLink_Query(XENGINE_SHORTLINK* pSt_SLinkInfo); bool ModuleDatabase_ShortLink_Delete(XENGINE_SHORTLINK* pSt_SLinkInfo); + bool ModuleDatabase_ShortLink_List(XENGINE_SHORTLINK*** pppSt_SLinkInfo, int* pInt_ListCount); protected: private: XNETHANDLE xhDBSQL; diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.cpp index 0385fb87ba74d7d4770bd2dbbe16e4c362bbc1e1..6c13d65e225633e18f67d468142005dbc85924d7 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.cpp +++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.cpp @@ -100,7 +100,14 @@ bool CModuleDatabase_WordFilter::ModuleDatabase_WordFilter_Query(XENGINE_WORDFIL memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); _xstprintf(tszSQLStatement, _X("SELECT * FROM `WordFilter` WHERE tszWordsFrom LIKE '%s'"), pSt_WordFilter->tszWordsFrom); +#ifdef _MSC_BUILD + XCHAR tszUTFStr[1024] = {}; + int nSLen = _tcsxlen(tszSQLStatement); + BaseLib_OperatorCharset_AnsiToUTF(tszSQLStatement, tszUTFStr, &nSLen); + if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszUTFStr, &nLine, &nRow)) +#else if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszSQLStatement, &nLine, &nRow)) +#endif { DBModule_IsErrorOccur = true; DBModule_dwErrorCode = DataBase_GetLastError(); @@ -143,11 +150,19 @@ bool CModuleDatabase_WordFilter::ModuleDatabase_WordFilter_Insert(XENGINE_WORDFI DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_PARAMENT; return false; } - XCHAR tszSQLStatement[11240]; + XCHAR tszSQLStatement[1024]; memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); _xstprintf(tszSQLStatement, _X("INSERT INTO `WordFilter` (tszWordsFrom,tszWordsTo,nLevel) VALUES('%s','%s',%d)"), pSt_WordFilter->tszWordsFrom, pSt_WordFilter->tszWordsTo, pSt_WordFilter->nLevel); + +#ifdef _MSC_BUILD + int nRet = _tcsxlen(tszSQLStatement); + XCHAR tszUTFStr[1024] = {}; + BaseLib_OperatorCharset_AnsiToUTF(tszSQLStatement, tszUTFStr, &nRet); + if (!DataBase_MySQL_Execute(xhDBSQL, tszUTFStr)) +#else if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLStatement)) +#endif { DBModule_IsErrorOccur = true; DBModule_dwErrorCode = DataBase_GetLastError(); @@ -182,11 +197,84 @@ bool CModuleDatabase_WordFilter::ModuleDatabase_WordFilter_Delete(XENGINE_WORDFI memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); _xstprintf(tszSQLStatement, _X("DELETE FROM `WordFilter` WHERE tszWordsFrom = '%s'"), pSt_WordFilter->tszWordsFrom); +#ifdef _MSC_BUILD + XCHAR tszUTFStr[1024] = {}; + int nSLen = _tcsxlen(tszSQLStatement); + BaseLib_OperatorCharset_AnsiToUTF(tszSQLStatement, tszUTFStr, &nSLen); + if (!DataBase_MySQL_Execute(xhDBSQL, tszUTFStr)) +#else if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLStatement)) +#endif { DBModule_IsErrorOccur = true; DBModule_dwErrorCode = DataBase_GetLastError(); return false; } return true; +} +/******************************************************************** +函数名称:ModuleDatabase_WordFilter_List +函数功能:列举敏感词信息列表 + 参数.一:pppSt_MachineInfo + In/Out:Out + 类型:三级指针 + 可空:N + 意思:输出敏感词列表 + 参数.二:pInt_ListCount + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出列表个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleDatabase_WordFilter::ModuleDatabase_WordFilter_List(XENGINE_WORDFILTER*** pppSt_WordFilter, int* pInt_ListCount) +{ + DBModule_IsErrorOccur = false; + + //查询 + __int64u nLine = 0; + __int64u nRow = 0; + XNETHANDLE xhTable = 0; + XCHAR tszSQLStatement[1024]; + + memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); + _xstprintf(tszSQLStatement, _X("SELECT * FROM `WordFilter`")); + + if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszSQLStatement, &nLine, &nRow)) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = DataBase_GetLastError(); + return false; + } + if (nLine <= 0) + { + DBModule_IsErrorOccur = true; + DBModule_dwErrorCode = ERROR_APISERVICE_MODULE_DATABASE_NOTFOUND; + return false; + } + *pInt_ListCount = (int)nLine; + BaseLib_OperatorMemory_Malloc((XPPPMEM)pppSt_WordFilter, *pInt_ListCount, sizeof(XENGINE_WORDFILTER)); + + for (__int64u i = 0; i < nLine; i++) + { + XCHAR** pptszResult = DataBase_MySQL_GetResult(xhDBSQL, xhTable); + + if (NULL != pptszResult[0]) + { + _tcsxcpy((*pppSt_WordFilter)[i]->tszWordsFrom, pptszResult[0]); + } + if (NULL != pptszResult[1]) + { + _tcsxcpy((*pppSt_WordFilter)[i]->tszWordsTo, pptszResult[1]); + } + if (NULL != pptszResult[2]) + { + (*pppSt_WordFilter)[i]->nLevel = _ttxoi(pptszResult[2]); + } + } + DataBase_MySQL_FreeResult(xhDBSQL, xhTable); + return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.h b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.h index 3be1ca69a739e553ba555bc3e3515389a881a16e..00c6ffaba238a257723534c42df7d8ec21549da4 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.h +++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.h @@ -23,6 +23,7 @@ public: bool ModuleDatabase_WordFilter_Query(XENGINE_WORDFILTER* pSt_WordFilter); bool ModuleDatabase_WordFilter_Insert(XENGINE_WORDFILTER* pSt_WordFilter); bool ModuleDatabase_WordFilter_Delete(XENGINE_WORDFILTER* pSt_WordFilter); + bool ModuleDatabase_WordFilter_List(XENGINE_WORDFILTER*** pppSt_WordFilter, int* pInt_ListCount); protected: private: XNETHANDLE xhDBSQL; diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_XLog/ModuleDatabase_XLog.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_XLog/ModuleDatabase_XLog.cpp index 6f92697073fbe06bd7ea69fc8d150aa8bb4a8594..19bbea00cc2b19987366bdc65db0789a33c164c5 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_XLog/ModuleDatabase_XLog.cpp +++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_XLog/ModuleDatabase_XLog.cpp @@ -148,7 +148,15 @@ bool CModuleDatabase_XLog::ModuleDatabase_XLog_Insert(XENGINE_XLOGINFO* pSt_XLog memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); _xstprintf(tszSQLStatement, _X("INSERT INTO `%s` (tszFileName,tszFuncName,nLogLine,nLogLevel,tszLogBuffer,tszLogTime) VALUES('%s','%s',%d,%d,'%s','%s')"), pSt_XLogInfo->tszTableName, pSt_XLogInfo->st_ProtocolLog.tszFileName, pSt_XLogInfo->st_ProtocolLog.tszFuncName, pSt_XLogInfo->st_ProtocolLog.nLogLine, pSt_XLogInfo->st_ProtocolLog.nLogLevel, pSt_XLogInfo->tszLogBuffer, pSt_XLogInfo->st_ProtocolLog.tszLogTimer); + +#ifdef _MSC_BUILD + XCHAR tszUTFStr[10240] = {}; + int nSLen = _tcsxlen(tszSQLStatement); + BaseLib_OperatorCharset_AnsiToUTF(tszSQLStatement, tszUTFStr, &nSLen); + if (!DataBase_MySQL_Execute(xhDBSQL, tszUTFStr)) +#else if (!DataBase_MySQL_Execute(xhDBSQL, tszSQLStatement)) +#endif { DBModule_IsErrorOccur = true; DBModule_dwErrorCode = DataBase_GetLastError(); @@ -208,7 +216,15 @@ bool CModuleDatabase_XLog::ModuleDatabase_XLog_Query(XENGINE_XLOGINFO*** pppSt_X memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); //名称为,消息名为必填 _xstprintf(tszSQLStatement, _X("SELECT * FROM `%s` WHERE tszLogTime BETWEEN '%s' AND '%s'"), lpszTableName, lpszTimeStart, lpszTimeEnd); + +#ifdef _MSC_BUILD + XCHAR tszUTFStr[1024] = {}; + int nSLen = _tcsxlen(tszSQLStatement); + BaseLib_OperatorCharset_AnsiToUTF(tszSQLStatement, tszUTFStr, &nSLen); + if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszUTFStr, &nllLine, &nllRow)) +#else if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszSQLStatement, &nllLine, &nllRow)) +#endif { DBModule_IsErrorOccur = true; DBModule_dwErrorCode = DataBase_GetLastError(); diff --git a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp index bec66a7225c556b91ede4bd866e94c2097cb9408..cc832b1e66bf0ac197b589400de72e78dac6738f 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp +++ b/XEngine_Source/XEngine_ModuleDatabase/ModuleDatabase_ZIPCode/ModuleDatabase_ZIPCode.cpp @@ -189,7 +189,14 @@ bool CModuleDatabase_ZIPCode::ModuleDatabase_ZIPCode_QueryName(XENGINE_ZIPINFO* return false; } //查询内容 +#ifdef _MSC_BUILD + XCHAR tszUTFStr[1024] = {}; + int nSLen = _tcsxlen(tszSQLStatement); + BaseLib_OperatorCharset_AnsiToUTF(tszSQLStatement, tszUTFStr, &nSLen); + if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszUTFStr, &nLine, &nRow)) +#else if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszSQLStatement, &nLine, &nRow)) +#endif { DBModule_IsErrorOccur = true; DBModule_dwErrorCode = DataBase_GetLastError(); @@ -315,7 +322,15 @@ bool CModuleDatabase_ZIPCode::ModuleDatabase_ZIPCode_QueryParentByName(LPCXSTR l memset(tszSQLStatement, '\0', sizeof(tszSQLStatement)); _xstprintf(tszSQLStatement, _X("SELECT * FROM `AdministrativeArea` WHERE name = '%s'"), lpszName); + +#ifdef _MSC_BUILD + XCHAR tszUTFStr[1024] = {}; + int nSLen = _tcsxlen(tszSQLStatement); + BaseLib_OperatorCharset_AnsiToUTF(tszSQLStatement, tszUTFStr, &nSLen); + if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszSQLStatement, &nLine, &nRow)) +#else if (!DataBase_MySQL_ExecuteQuery(xhDBSQL, &xhTable, tszSQLStatement, &nLine, &nRow)) +#endif { DBModule_IsErrorOccur = true; DBModule_dwErrorCode = DataBase_GetLastError(); diff --git a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.def b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.def index 770482d5e7bb1a145d7661c08126fe55535da6b5..13d23fdb625424717cc83852774a282116620941 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.def +++ b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.def @@ -30,9 +30,19 @@ EXPORTS ModuleDatabase_ShortLink_Insert ModuleDatabase_ShortLink_Query ModuleDatabase_ShortLink_Delete + ModuleDatabase_ShortLink_List ModuleDatabase_WordFilter_Init ModuleDatabase_WordFilter_Destory ModuleDatabase_WordFilter_Query ModuleDatabase_WordFilter_Insert - ModuleDatabase_WordFilter_Delete \ No newline at end of file + ModuleDatabase_WordFilter_Delete + ModuleDatabase_WordFilter_List + + ModuleDatabase_Machine_Init + ModuleDatabase_Machine_Destory + ModuleDatabase_Machine_Insert + ModuleDatabase_Machine_Query + ModuleDatabase_Machine_Delete + ModuleDatabase_Machine_UPDate + ModuleDatabase_Machine_List \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj index e4b330e47f5cc47103c0c1221a77405b6505699a..fd2d41ca70a8be748fa889eadeff2afa349cde9c 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj +++ b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj @@ -166,6 +166,7 @@ + @@ -178,6 +179,7 @@ + diff --git a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj.filters b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj.filters index bd3b62d70e84eec98da2c547912f57ee2ec5c549..73aa4f70b14e03368bf9c630c2a0ee92c7b58c49 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj.filters +++ b/XEngine_Source/XEngine_ModuleDatabase/XEngine_ModuleDatabase.vcxproj.filters @@ -49,6 +49,12 @@ {b4156605-0cb0-4272-a5ef-d109f2b20126} + + {9c528430-5577-47fb-9d81-e6569747c007} + + + {9c9f01db-e8c6-4abb-a375-23d8e78bb1ea} + @@ -81,6 +87,9 @@ 头文件\ModuleDatabase_WordFilter + + 头文件\ModuleDatabase_Machine + @@ -107,6 +116,9 @@ 源文件\ModuleDatabase_WordFilter + + 源文件\ModuleDatabase_Machine + diff --git a/XEngine_Source/XEngine_ModuleDatabase/pch.cpp b/XEngine_Source/XEngine_ModuleDatabase/pch.cpp index 8b0fb5246fffa302e1c507cfeb8a884d0adce262..47afa7bad33e184460efda1529993e8e485617e4 100644 --- a/XEngine_Source/XEngine_ModuleDatabase/pch.cpp +++ b/XEngine_Source/XEngine_ModuleDatabase/pch.cpp @@ -5,6 +5,7 @@ #include "ModuleDatabase_XLog/ModuleDatabase_XLog.h" #include "ModuleDatabase_ShortLink/ModuleDatabase_ShortLink.h" #include "ModuleDatabase_WordFilter/ModuleDatabase_WordFilter.h" +#include "ModuleDatabase_Machine/ModuleDatabase_Machine.h" /******************************************************************** // Created: 2022/02/28 13:26:15 // File Name: D:\XEngine_IPInfo\XEngine_Source\XEngine_ModuleDatabase\pch.cpp @@ -25,6 +26,7 @@ CModuleDatabase_ZIPCode m_ZIPCode; CModuleDatabase_XLog m_XLog; CModuleDatabase_ShortLink m_ShortLink; CModuleDatabase_WordFilter m_WordFilter; +CModuleDatabase_Machine m_MachineInfo; ////////////////////////////////////////////////////////////////////////// /// 导出的函数 ////////////////////////////////////////////////////////////////////////// @@ -143,6 +145,10 @@ extern "C" bool ModuleDatabase_ShortLink_Delete(XENGINE_SHORTLINK * pSt_SLinkInf { return m_ShortLink.ModuleDatabase_ShortLink_Delete(pSt_SLinkInfo); } +extern "C" bool ModuleDatabase_ShortLink_List(XENGINE_SHORTLINK * **pppSt_SLinkInfo, int* pInt_ListCount) +{ + return m_ShortLink.ModuleDatabase_ShortLink_List(pppSt_SLinkInfo, pInt_ListCount); +} /************************************************************************/ /* 导出的敏感词过滤数据库函数 */ /************************************************************************/ @@ -165,4 +171,39 @@ extern "C" bool ModuleDatabase_WordFilter_Insert(XENGINE_WORDFILTER * pSt_WordFi extern "C" bool ModuleDatabase_WordFilter_Delete(XENGINE_WORDFILTER * pSt_WordFilter) { return m_WordFilter.ModuleDatabase_WordFilter_Delete(pSt_WordFilter); +} +extern "C" bool ModuleDatabase_WordFilter_List(XENGINE_WORDFILTER * **pppSt_WordFilter, int* pInt_ListCount) +{ + return m_WordFilter.ModuleDatabase_WordFilter_List(pppSt_WordFilter, pInt_ListCount); +} +/************************************************************************/ +/* 导出的机器信息收集数据库函数 */ +/************************************************************************/ +extern "C" bool ModuleDatabase_Machine_Init(DATABASE_MYSQL_CONNECTINFO * pSt_DBConnector) +{ + return m_MachineInfo.ModuleDatabase_Machine_Init(pSt_DBConnector); +} +extern "C" bool ModuleDatabase_Machine_Destory() +{ + return m_MachineInfo.ModuleDatabase_Machine_Destory(); +} +extern "C" bool ModuleDatabase_Machine_Insert(XENGINE_MACHINEINFO * pSt_MachineInfo) +{ + return m_MachineInfo.ModuleDatabase_Machine_Insert(pSt_MachineInfo); +} +extern "C" bool ModuleDatabase_Machine_Query(XENGINE_MACHINEINFO * pSt_MachineInfo) +{ + return m_MachineInfo.ModuleDatabase_Machine_Query(pSt_MachineInfo); +} +extern "C" bool ModuleDatabase_Machine_Delete(XENGINE_MACHINEINFO * pSt_MachineInfo) +{ + return m_MachineInfo.ModuleDatabase_Machine_Delete(pSt_MachineInfo); +} +extern "C" bool ModuleDatabase_Machine_UPDate(XENGINE_MACHINEINFO * pSt_MachineInfo) +{ + return m_MachineInfo.ModuleDatabase_Machine_UPDate(pSt_MachineInfo); +} +extern "C" bool ModuleDatabase_Machine_List(XENGINE_MACHINEINFO * **pppSt_MachineInfo, int* pInt_ListCount) +{ + return m_MachineInfo.ModuleDatabase_Machine_List(pppSt_MachineInfo, pInt_ListCount); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleHelp/Makefile b/XEngine_Source/XEngine_ModuleHelp/Makefile index fd0b628eff6bbe0f2e402c13cb132c426bf581ba..e668711d720b79c073190a582b354172fa9efe7c 100644 --- a/XEngine_Source/XEngine_ModuleHelp/Makefile +++ b/XEngine_Source/XEngine_ModuleHelp/Makefile @@ -12,10 +12,13 @@ LIB = -lXEngine_BaseLib -lXClient_Socket LIBEX = OBJECTS = ModuleHelp_IDCard.o ModuleHelp_Language.o ModuleHelp_P2PClient.o ModuleHelp_Locker.o ModuleHelp_QRCode.o ModuleHelp_SocketTest.o ModuleHelp_ImageGet.o ModuleHelp_ImageSet.o pch.o -ifeq ($(SWITCHQR),1) +MACRO_QR_SUPPORT := $(shell gcc -E -dM ../XEngine_BuildSwitch.h | grep _XENGINE_BUILD_SWITCH_QRDECODEC | cut -d ' ' -f 3) +MACRO_OPENCV_SUPPORT := $(shell gcc -E -dM ../XEngine_BuildSwitch.h | grep _XENGINE_BUILD_SWITCH_OPENCV | cut -d ' ' -f 3) + +ifeq ($(MACRO_QR_SUPPORT),1) LIB += -lqrencode endif -ifeq ($(SWITCHCV),1) +ifeq ($(MACRO_OPENCV_SUPPORT),1) LIB += -llzma -lpng16 -lopencv_core -lopencv_imgcodecs -lopencv_imgproc -ltiff -lopencv_wechat_qrcode endif diff --git a/XEngine_Source/XEngine_ModulePlugin/Makefile b/XEngine_Source/XEngine_ModulePlugin/Makefile index 51af2b7f3f4437ed5aa4391168b36b1bf9103c94..d7b3c6fcd6ca482a2882edac4defb2b41e564e5d 100644 --- a/XEngine_Source/XEngine_ModulePlugin/Makefile +++ b/XEngine_Source/XEngine_ModulePlugin/Makefile @@ -12,6 +12,8 @@ LIB = -lXEngine_BaseLib LIBEX = OBJECTS = ModulePlugin_LibCore.o ModulePlugin_LuaCore.o ModulePlugin_Loader.o pch.o +MACRO_LUA_SUPPORT := $(shell gcc -E -dM ../XEngine_BuildSwitch.h | grep _XENGINE_BUILD_SWITCH_LUA | cut -d ' ' -f 3) + ifeq ($(RELEASE),1) FLAGS = -c DEBUG = @@ -36,7 +38,7 @@ ifeq ($(PLATFORM),linux) endif FILEEXT = so LIBFLAG = -shared - ifeq ($(SWITCHLUA),1) + ifeq ($(MACRO_LUA_SUPPORT),1) LIB += -llua5.4 endif LIBEX = -lpthread -lrt -ldl @@ -47,7 +49,7 @@ else ifeq ($(PLATFORM),mac) PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib - ifeq ($(SWITCHLUA),1) + ifeq ($(MACRO_LUA_SUPPORT),1) LIB += -llua endif LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp index 19dcd11e546fb02d9378565f068c31b7d36ede29..6f43e4924f644b1da0ff35402af69ac7d349df42 100644 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp +++ b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp @@ -168,14 +168,16 @@ bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR *pInt_HTTPCode = (int)lua_tonumber(stl_MapIterator->second.pSt_LuaState, -1); lua_pop(stl_MapIterator->second.pSt_LuaState, -1); - lua_getglobal(stl_MapIterator->second.pSt_LuaState, "PtszMsgBuffer"); - _tcsxcpy(ptszMsgBuffer, lua_tostring(stl_MapIterator->second.pSt_LuaState, -1)); - lua_pop(stl_MapIterator->second.pSt_LuaState, -1); - lua_getglobal(stl_MapIterator->second.pSt_LuaState, "PInt_MsgLen"); *pInt_MsgLen = (int)lua_tonumber(stl_MapIterator->second.pSt_LuaState, -1); lua_pop(stl_MapIterator->second.pSt_LuaState, -1); + if (*pInt_MsgLen > 0) + { + lua_getglobal(stl_MapIterator->second.pSt_LuaState, "PtszMsgBuffer"); + _tcsxcpy(ptszMsgBuffer, lua_tostring(stl_MapIterator->second.pSt_LuaState, -1)); + lua_pop(stl_MapIterator->second.pSt_LuaState, -1); + } st_csStl.unlock_shared(); #endif return true; diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h index deec84620487987bff253385abbd6fc6cc0da0c5..5ca3a3a7dde6165e28dc4a5d7dd48e50d45a4656 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h +++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h @@ -516,6 +516,35 @@ extern "C" bool ModuleProtocol_Packet_Weather(XCHAR* ptszMsgBuffer, int* pInt_Ms *********************************************************************/ extern "C" bool ModuleProtocol_Packet_ShortLink(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_SHORTLINK* pSt_ShortLink); /******************************************************************** +函数名称:ModuleProtocol_Packet_ShortLinkList +函数功能:短链接列表打包函数 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出打包的数据信息 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出打包大小 + 参数.三:pppSt_MachineList + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要打包的数据 + 参数.四:nListCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入打包数据个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleProtocol_Packet_ShortLinkList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_SHORTLINK*** pppSt_ShortLink, int nListCount); +/******************************************************************** 函数名称:ModuleProtocol_Packet_WordFilter 函数功能:敏感词生成协议打包函数 参数.一:ptszMsgBuffer @@ -540,6 +569,35 @@ extern "C" bool ModuleProtocol_Packet_ShortLink(XCHAR* ptszMsgBuffer, int* pInt_ *********************************************************************/ extern "C" bool ModuleProtocol_Packet_WordFilter(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WORDFILTER* pSt_WordFilter); /******************************************************************** +函数名称:ModuleProtocol_Packet_WordFilterList +函数功能:敏感词列表打包函数 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出打包的数据信息 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出打包大小 + 参数.三:pppSt_MachineList + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要打包的数据 + 参数.四:nListCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入打包数据个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleProtocol_Packet_WordFilterList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WORDFILTER*** pppSt_WordFilter, int nListCount); +/******************************************************************** 函数名称:ModuleProtocol_Packet_ImageAttr 函数功能:图片属性打包 参数.一:ptszMsgBuffer @@ -674,6 +732,35 @@ extern "C" bool ModuleProtocol_Packet_HardWare(XCHAR* ptszHWInfo, int* pInt_Len) 备注: *********************************************************************/ extern "C" bool ModuleProtocol_Packet_SoftWare(XCHAR* ptszSWInfo, int* pInt_Len); +/******************************************************************** +函数名称:ModuleProtocol_Packet_Machine +函数功能:机器信息列表打包函数 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出打包的数据信息 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出打包大小 + 参数.三:pppSt_MachineList + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要打包的数据 + 参数.四:nListCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入打包数据个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleProtocol_Packet_Machine(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, XENGINE_MACHINEINFO*** pppSt_MachineList, int nListCount); /************************************************************************/ /* 导出的协议解析函数 */ /************************************************************************/ @@ -1037,4 +1124,28 @@ extern "C" bool ModuleProtocol_Parse_Deamon(LPCXSTR lpszMsgBuffer, int nMsgLen, 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleProtocol_Parse_Weather(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo); \ No newline at end of file +extern "C" bool ModuleProtocol_Parse_Weather(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo); +/******************************************************************** +函数名称:ModuleProtocol_Parse_Machine +函数功能:解析机器信息收集协议 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入缓冲区大小 + 参数.三:pSt_MachineInfo + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:输出解析后的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleProtocol_Parse_Machine(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_MACHINEINFO* pSt_MachineInfo); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp index d8c6a6c0e70b07c53bc70cd6cf1ee12ca0fc5b4a..bd1861a3899539c93175557f2edaa08d680af4e0 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp +++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp @@ -855,6 +855,71 @@ bool CModuleProtocol_Packet::ModuleProtocol_Packet_ShortLink(XCHAR* ptszMsgBuffe return true; } /******************************************************************** +函数名称:ModuleProtocol_Packet_ShortLinkList +函数功能:短链接列表打包函数 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出打包的数据信息 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出打包大小 + 参数.三:pppSt_MachineList + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要打包的数据 + 参数.四:nListCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入打包数据个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleProtocol_Packet::ModuleProtocol_Packet_ShortLinkList(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, XENGINE_SHORTLINK*** pppSt_ShortLink, int nListCount) +{ + ModuleProtocol_IsErrorOccur = false; + + if ((NULL == ptszMSGBuffer) || (NULL == pInt_MSGLen)) + { + ModuleProtocol_IsErrorOccur = true; + ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PACKET_PARAMENT; + return false; + } + Json::Value st_JsonRoot; + Json::Value st_JsonArray; + Json::StreamWriterBuilder st_JsonBuilder; + + for (int i = 0; i < nListCount; i++) + { + Json::Value st_JsonObject; + + st_JsonObject["tszFullUrl"] = (*pppSt_ShortLink)[i]->tszFullUrl; + st_JsonObject["tszShotUrl"] = (*pppSt_ShortLink)[i]->tszShotUrl; + st_JsonObject["tszKeyUrl"] = (*pppSt_ShortLink)[i]->tszKeyUrl; + st_JsonObject["tszMapUrl"] = (*pppSt_ShortLink)[i]->tszMapUrl; + st_JsonObject["tszCvtUrl"] = (*pppSt_ShortLink)[i]->tszCvtUrl; + st_JsonObject["tszCreateTime"] = (*pppSt_ShortLink)[i]->tszCreateTime; + st_JsonObject["nLength"] = (*pppSt_ShortLink)[i]->nLength; + st_JsonObject["nID"] = (*pppSt_ShortLink)[i]->nID; + st_JsonArray.append(st_JsonObject); + } + st_JsonRoot["code"] = 0; + st_JsonRoot["msg"] = "success"; + st_JsonRoot["data"] = st_JsonArray; + st_JsonBuilder["emitUTF8"] = true; + + *pInt_MSGLen = Json::writeString(st_JsonBuilder, st_JsonRoot).length(); + memcpy(ptszMSGBuffer, Json::writeString(st_JsonBuilder, st_JsonRoot).c_str(), *pInt_MSGLen); + return true; +} +/******************************************************************** 函数名称:ModuleProtocol_Packet_WordFilter 函数功能:敏感词生成协议打包函数 参数.一:ptszMsgBuffer @@ -905,6 +970,66 @@ bool CModuleProtocol_Packet::ModuleProtocol_Packet_WordFilter(XCHAR* ptszMsgBuff return true; } /******************************************************************** +函数名称:ModuleProtocol_Packet_WordFilterList +函数功能:敏感词列表打包函数 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出打包的数据信息 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出打包大小 + 参数.三:pppSt_MachineList + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要打包的数据 + 参数.四:nListCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入打包数据个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleProtocol_Packet::ModuleProtocol_Packet_WordFilterList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WORDFILTER*** pppSt_WordFilter, int nListCount) +{ + ModuleProtocol_IsErrorOccur = false; + + if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) + { + ModuleProtocol_IsErrorOccur = true; + ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PACKET_PARAMENT; + return false; + } + Json::Value st_JsonRoot; + Json::Value st_JsonArray; + Json::StreamWriterBuilder st_JsonBuilder; + + for (int i = 0; i < nListCount; i++) + { + Json::Value st_JsonObject; + + st_JsonObject["tszWordsFrom"] = (*pppSt_WordFilter)[i]->tszWordsFrom; + st_JsonObject["tszWordsTo"] = (*pppSt_WordFilter)[i]->tszWordsTo; + st_JsonObject["nLevel"] = (*pppSt_WordFilter)[i]->nLevel; + st_JsonArray.append(st_JsonObject); + } + st_JsonRoot["code"] = 0; + st_JsonRoot["msg"] = "success"; + st_JsonRoot["data"] = st_JsonArray; + st_JsonBuilder["emitUTF8"] = true; + + *pInt_MsgLen = Json::writeString(st_JsonBuilder, st_JsonRoot).length(); + memcpy(ptszMsgBuffer, Json::writeString(st_JsonBuilder, st_JsonRoot).c_str(), *pInt_MsgLen); + return true; +} +/******************************************************************** 函数名称:ModuleProtocol_Packet_ImageAttr 函数功能:图片属性打包 参数.一:ptszMsgBuffer @@ -1227,7 +1352,7 @@ bool CModuleProtocol_Packet::ModuleProtocol_Packet_HardWare(XCHAR* ptszHWInfo, i st_JsonSerial["DiskSerial"] = st_SDKSerial.tszDiskSerial; st_JsonSerial["CpuSerial"] = st_SDKSerial.tszCpuSerial; st_JsonSerial["BoardSerial"] = st_SDKSerial.tszBoardSerial; - st_JsonSerial["SystemSerail"] = st_SDKSerial.tszSystemSerail; + st_JsonSerial["SystemSerial"] = st_SDKSerial.tszSystemSerial; int nListCount = 0; XSOCKET_CARDINFO** ppSt_ListIFInfo; @@ -1358,6 +1483,70 @@ bool CModuleProtocol_Packet::ModuleProtocol_Packet_SoftWare(XCHAR* ptszSWInfo, i return true; } /******************************************************************** +函数名称:ModuleProtocol_Packet_Machine +函数功能:机器信息列表打包函数 + 参数.一:ptszMsgBuffer + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出打包的数据信息 + 参数.二:pInt_MsgLen + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出打包大小 + 参数.三:pppSt_MachineList + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要打包的数据 + 参数.四:nListCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入打包数据个数 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleProtocol_Packet::ModuleProtocol_Packet_Machine(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, XENGINE_MACHINEINFO*** pppSt_MachineList, int nListCount) +{ + ModuleProtocol_IsErrorOccur = false; + + if ((NULL == ptszMSGBuffer) || (NULL == pInt_MSGLen)) + { + ModuleProtocol_IsErrorOccur = true; + ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PACKET_PARAMENT; + return false; + } + Json::Value st_JsonRoot; + Json::Value st_JsonArray; + Json::StreamWriterBuilder st_JsonBuilder; + + for (int i = 0; i < nListCount; i++) + { + Json::Value st_JsonObject; + + st_JsonObject["tszMachineText"] = (*pppSt_MachineList)[i]->tszMachineText; + st_JsonObject["tszMachineName"] = (*pppSt_MachineList)[i]->tszMachineName; + st_JsonObject["tszMachineCode"] = (*pppSt_MachineList)[i]->tszMachineCode; + st_JsonObject["tszMachineSystem"] = (*pppSt_MachineList)[i]->tszMachineSystem; + st_JsonObject["tszCreateTime"] = (*pppSt_MachineList)[i]->tszCreateTime; + st_JsonObject["nTimeNumber"] = (Json::Value::UInt64)(*pppSt_MachineList)[i]->nTimeNumber; + st_JsonObject["nID"] = (*pppSt_MachineList)[i]->nID; + st_JsonArray.append(st_JsonObject); + } + st_JsonRoot["code"] = 0; + st_JsonRoot["msg"] = "success"; + st_JsonRoot["data"] = st_JsonArray; + st_JsonBuilder["emitUTF8"] = true; + + *pInt_MSGLen = Json::writeString(st_JsonBuilder, st_JsonRoot).length(); + memcpy(ptszMSGBuffer, Json::writeString(st_JsonBuilder, st_JsonRoot).c_str(), *pInt_MSGLen); + return true; +} +/******************************************************************** 函数名称:ModuleProtocol_Packet_P2PLan 函数功能:响应同步局域网地址列表 参数.一:ptszMsgBuffer diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h index c32d54cfefe3b50fc38e1b2ee000c84b82b4bc43..840245d21abe92fcfdddbddb525b4a8d11ff1919 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h +++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h @@ -35,12 +35,15 @@ public: bool ModuleProtocol_Packet_TestReply(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken); bool ModuleProtocol_Packet_Weather(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo); bool ModuleProtocol_Packet_ShortLink(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_SHORTLINK* pSt_ShortLink); + bool ModuleProtocol_Packet_ShortLinkList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_SHORTLINK*** pppSt_ShortLink, int nListCount); bool ModuleProtocol_Packet_WordFilter(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WORDFILTER* pSt_WordFilter); + bool ModuleProtocol_Packet_WordFilterList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WORDFILTER*** pppSt_WordFilter, int nListCount); bool ModuleProtocol_Packet_ImageAttr(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IMGBASEATTR* pSt_BaseInfo, XENGINE_IMGEXTATTR* pSt_ExtAttr); bool ModuleProtocol_Packet_EnumDevice(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, AVHELP_DEVICEINFO*** pppSt_AudioList, AVHELP_DEVICEINFO*** pppSt_VideoList, int nACount, int nVCount); bool ModuleProtocol_Packet_ListFile(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XCHAR*** pppszFileList, int nListCount); bool ModuleProtocol_Packet_HardWare(XCHAR* ptszHWInfo, int* pInt_Len); bool ModuleProtocol_Packet_SoftWare(XCHAR* ptszSWInfo, int* pInt_Len); + bool ModuleProtocol_Packet_Machine(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, XENGINE_MACHINEINFO*** pppSt_MachineList, int nListCount); public: bool ModuleProtocol_Packet_P2PLan(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_P2XPPEER_PROTOCOL*** pppSt_ListClients, int nListCount); bool ModuleProtocol_Packet_P2PWLan(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, list* pStl_ListClients); diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp index 5ad39ae9b6abc5ad6d94531f7e0c409979a05af8..8ab8ee151c8223d56d55632d7ebf41827dffdf88 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp +++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp @@ -1070,4 +1070,67 @@ bool CModuleProtocol_Parse::ModuleProtocol_Parse_Weather(LPCXSTR lpszMsgBuffer, pSt_WeatherInfo->nHumidity = _ttxoi(st_JsonObject["humidity"].asCString()); } return true; +} +/******************************************************************** +函数名称:ModuleProtocol_Parse_Machine +函数功能:解析机器信息收集协议 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入缓冲区大小 + 参数.三:pSt_MachineInfo + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:输出解析后的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleProtocol_Parse::ModuleProtocol_Parse_Machine(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_MACHINEINFO* pSt_MachineInfo) +{ + ModuleProtocol_IsErrorOccur = false; + + if ((NULL == lpszMsgBuffer) || (0 == nMsgLen)) + { + ModuleProtocol_IsErrorOccur = true; + ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PARSE_PARAMENT; + return false; + } + Json::Value st_JsonRoot; + JSONCPP_STRING st_JsonError; + Json::CharReaderBuilder st_JsonBuilder; + + std::unique_ptr const pSt_JsonReader(st_JsonBuilder.newCharReader()); + if (!pSt_JsonReader->parse(lpszMsgBuffer, lpszMsgBuffer + nMsgLen, &st_JsonRoot, &st_JsonError)) + { + ModuleProtocol_IsErrorOccur = true; + ModuleProtocol_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PROTOCOL_PARSE_PARAMENT; + return false; + } + + if (!st_JsonRoot["tszMachineName"].isNull()) + { + _tcsxcpy(pSt_MachineInfo->tszMachineName, st_JsonRoot["tszMachineName"].asCString()); + } + if (!st_JsonRoot["tszMachineCode"].isNull()) + { + _tcsxcpy(pSt_MachineInfo->tszMachineCode, st_JsonRoot["tszMachineCode"].asCString()); + } + if (!st_JsonRoot["tszMachineSystem"].isNull()) + { + _tcsxcpy(pSt_MachineInfo->tszMachineSystem, st_JsonRoot["tszMachineSystem"].asCString()); + } + if (!st_JsonRoot["tszMachineText"].isNull()) + { + _tcsxcpy(pSt_MachineInfo->tszMachineText, st_JsonRoot["tszMachineText"].asCString()); + } + return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h index 02fe494a435c44d02eac8a5fb655a24c3548e8f8..2305f87c32f4cbb5675ddeedca4b2378e0fac167 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h +++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h @@ -32,5 +32,6 @@ public: bool ModuleProtocol_Parse_Verifcation(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszUserName, XCHAR* ptszUserPass); bool ModuleProtocol_Parse_Deamon(LPCXSTR lpszMsgBuffer, int nMsgLen, XCHAR* ptszAPPName, XCHAR* ptszAPPPath, int* pInt_Retime, bool* pbEnable); bool ModuleProtocol_Parse_Weather(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo); + bool ModuleProtocol_Parse_Machine(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_MACHINEINFO* pSt_MachineInfo); private: }; \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def index eef071f0a2b423f1c0af4f56c48b4326d102f8c6..56d69e6312ca9de9ea986538ceb4ad2c28c12773 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def +++ b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def @@ -16,12 +16,15 @@ EXPORTS ModuleProtocol_Packet_TestReply ModuleProtocol_Packet_Weather ModuleProtocol_Packet_ShortLink + ModuleProtocol_Packet_ShortLinkList ModuleProtocol_Packet_WordFilter + ModuleProtocol_Packet_WordFilterList ModuleProtocol_Packet_ImageAttr ModuleProtocol_Packet_EnumDevice ModuleProtocol_Packet_ListFile ModuleProtocol_Packet_HardWare ModuleProtocol_Packet_SoftWare + ModuleProtocol_Packet_Machine ModuleProtocol_Packet_P2PLan ModuleProtocol_Packet_P2PWLan ModuleProtocol_Packet_P2PWList @@ -39,4 +42,5 @@ EXPORTS ModuleProtocol_Parse_BackService ModuleProtocol_Parse_Verifcation ModuleProtocol_Parse_Deamon - ModuleProtocol_Parse_Weather \ No newline at end of file + ModuleProtocol_Parse_Weather + ModuleProtocol_Parse_Machine \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleProtocol/pch.cpp b/XEngine_Source/XEngine_ModuleProtocol/pch.cpp index ca82b5ec4cc9a2bb38c5ac57eff2d6147852fd8f..b6a02ae1731d1601558d3e964afc5ab63e181afb 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/pch.cpp +++ b/XEngine_Source/XEngine_ModuleProtocol/pch.cpp @@ -83,10 +83,18 @@ extern "C" bool ModuleProtocol_Packet_ShortLink(XCHAR * ptszMsgBuffer, int* pInt { return m_ProtocolPacket.ModuleProtocol_Packet_ShortLink(ptszMsgBuffer, pInt_MsgLen, pSt_ShortLink); } +extern "C" bool ModuleProtocol_Packet_ShortLinkList(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_SHORTLINK * **pppSt_ShortLink, int nListCount) +{ + return m_ProtocolPacket.ModuleProtocol_Packet_ShortLinkList(ptszMsgBuffer, pInt_MsgLen, pppSt_ShortLink, nListCount); +} extern "C" bool ModuleProtocol_Packet_WordFilter(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WORDFILTER * pSt_WordFilter) { return m_ProtocolPacket.ModuleProtocol_Packet_WordFilter(ptszMsgBuffer, pInt_MsgLen, pSt_WordFilter); } +extern "C" bool ModuleProtocol_Packet_WordFilterList(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_WORDFILTER * **pppSt_WordFilter, int nListCount) +{ + return m_ProtocolPacket.ModuleProtocol_Packet_WordFilterList(ptszMsgBuffer, pInt_MsgLen, pppSt_WordFilter, nListCount); +} extern "C" bool ModuleProtocol_Packet_ImageAttr(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_IMGBASEATTR * pSt_BaseInfo, XENGINE_IMGEXTATTR * pSt_ExtAttr) { return m_ProtocolPacket.ModuleProtocol_Packet_ImageAttr(ptszMsgBuffer, pInt_MsgLen, pSt_BaseInfo, pSt_ExtAttr); @@ -107,6 +115,10 @@ extern "C" bool ModuleProtocol_Packet_SoftWare(XCHAR * ptszSWInfo, int* pInt_Len { return m_ProtocolPacket.ModuleProtocol_Packet_SoftWare(ptszSWInfo, pInt_Len); } +extern "C" bool ModuleProtocol_Packet_Machine(XCHAR * ptszMSGBuffer, int* pInt_MSGLen, XENGINE_MACHINEINFO * **pppSt_MachineList, int nListCount) +{ + return m_ProtocolPacket.ModuleProtocol_Packet_Machine(ptszMSGBuffer, pInt_MSGLen, pppSt_MachineList, nListCount); +} extern "C" bool ModuleProtocol_Packet_P2PLan(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XENGINE_P2XPPEER_PROTOCOL * **pppSt_ListClients, int nListCount) { return m_ProtocolPacket.ModuleProtocol_Packet_P2PLan(ptszMsgBuffer, pInt_MsgLen, pppSt_ListClients, nListCount); @@ -177,4 +189,8 @@ extern "C" bool ModuleProtocol_Parse_Deamon(LPCXSTR lpszMsgBuffer, int nMsgLen, extern "C" bool ModuleProtocol_Parse_Weather(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_WEATHERINFO * pSt_WeatherInfo) { return m_ProtocolParse.ModuleProtocol_Parse_Weather(lpszMsgBuffer, nMsgLen, pSt_WeatherInfo); +} +extern "C" bool ModuleProtocol_Parse_Machine(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_MACHINEINFO * pSt_MachineInfo) +{ + return m_ProtocolParse.ModuleProtocol_Parse_Machine(lpszMsgBuffer, nMsgLen, pSt_MachineInfo); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile index e4ad3dc0e678dbac619e34739f2e40b52787f733..c4b4e10a008923149c7edc17a8600b8efd530c97 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile @@ -15,7 +15,7 @@ LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool LIBEX = OBJECTS = XEngine_Configure.o XEngine_Network.o XEngine_HTTPTask.o XEngine_PluginTask.o XEngine_HttpApp.o \ TaskGet_Bank.o TaskGet_IDCard.o TaskGet_Locker.o TaskGet_Translation.o TaskGet_Reload.o TaskGet_Weather.o TaskGet_IDRegion.o \ - TaskPost_DTest.o TaskPost_Log.o TaskPost_P2PClient.o TaskPost_PostCode.o TaskPost_QRCode.o TaskPost_ShortLink.o TaskPost_SocketTest.o TaskPost_WordFilter.o TaskPost_Image.o TaskPost_BackService.o TaskPost_Deamon.o + TaskPost_DTest.o TaskPost_Log.o TaskPost_P2PClient.o TaskPost_PostCode.o TaskPost_QRCode.o TaskPost_ShortLink.o TaskPost_SocketTest.o TaskPost_WordFilter.o TaskPost_Image.o TaskPost_BackService.o TaskPost_Deamon.o TaskPost_Machine.o ifeq ($(RELEASE),1) FLAGS = -c @@ -102,6 +102,8 @@ TaskPost_BackService.o:./XEngine_TaskPost/TaskPost_BackService.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_TaskPost/TaskPost_BackService.cpp TaskPost_Deamon.o:./XEngine_TaskPost/TaskPost_Deamon.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_TaskPost/TaskPost_Deamon.cpp +TaskPost_Machine.o:./XEngine_TaskPost/TaskPost_Machine.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_TaskPost/TaskPost_Machine.cpp XEngine_HttpApp.o:./XEngine_HttpApp.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_HttpApp.cpp diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp index 971e27f70f35f60584a6b534777cca6a97ef9dec..7f6ce0486f537b0a65fecafdaff83695b0eef01b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp @@ -125,6 +125,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST LPCXSTR lpszParamBack = _X("back"); LPCXSTR lpszParamImage = _X("image"); LPCXSTR lpszParamDeamon = _X("deamon"); + LPCXSTR lpszParamMachine = _X("machine"); memset(tszKey, '\0', MAX_PATH); memset(tszValue, '\0', MAX_PATH); @@ -296,7 +297,16 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST { //守护进程接口:http://app.xyry.org:5501/api?function=deamon¶ms1=0 HTTPTask_TaskPost_Deamon(lpszClientAddr, lpszRVBuffer, nRVLen); - } + } + else if (0 == _tcsxnicmp(lpszParamMachine, tszValue, _tcsxlen(lpszParamMachine))) + { + //信息收集接口:http://app.xyry.org:5501/api?function=machine¶ms1=0 + XCHAR tszType[64]; + memset(tszType, '\0', sizeof(tszType)); + + BaseLib_OperatorString_GetKeyValue(pptszList[1], "=", tszKey, tszType); + HTTPTask_TastPost_Machine(lpszClientAddr, lpszRVBuffer, nRVLen, _ttxoi(tszType)); + } else { st_HDRParam.nHttpCode = 404; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h index 27d28fcae2e7efb2e1e5af9e7b025d63765e88ed..fe6717d2ef8f57eb96db9a7fe6479b0dca9113cf 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h @@ -83,6 +83,7 @@ using namespace std; #include "XEngine_TaskPost/TaskPost_BackService.h" #include "XEngine_TaskPost/TaskPost_Image.h" #include "XEngine_TaskPost/TaskPost_Deamon.h" +#include "XEngine_TaskPost/TaskPost_Machine.h" //get #include "XEngine_TaskGet/TaskGet_IDCard.h" #include "XEngine_TaskGet/TaskGet_Bank.h" diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp index 103728f7797deebdffb445a48053047fb3ee0dfd..7493ddad6f5935e03290c70321092f88136dafb8 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp @@ -44,6 +44,7 @@ void ServiceApp_Stop(int signo) ModuleDatabase_XLog_Destory(); ModuleDatabase_ShortLink_Destory(); ModuleDatabase_WordFilter_Destory(); + ModuleDatabase_Machine_Destory(); //销毁其他 ModulePlugin_Loader_Destory(); ModuleHelp_P2PClient_Destory(); @@ -208,42 +209,55 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,插件系统被禁用")); } //初始化数据库 - if (!ModuleDatabase_IDCard_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) + if (st_ServiceConfig.st_XSql.bEnable) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化ID数据库失败,错误:%lX"), ModuleDB_GetLastError()); - goto XENGINE_SERVICEAPP_EXIT; - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化ID数据库成功")); - if (!ModuleDatabase_Bank_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化银行卡数据库失败,错误:%lX"), ModuleDB_GetLastError()); - goto XENGINE_SERVICEAPP_EXIT; - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化银行卡数据库成功")); - if (!ModuleDatabase_ZIPCode_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化行政邮编信息数据库失败,错误:%lX"), ModuleDB_GetLastError()); - goto XENGINE_SERVICEAPP_EXIT; - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化行政邮编信息数据库成功")); - if (!ModuleDatabase_XLog_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化日志信息数据库失败,错误:%lX"), ModuleDB_GetLastError()); - goto XENGINE_SERVICEAPP_EXIT; - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化日志信息数据库成功")); - if (!ModuleDatabase_ShortLink_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化短连接数据库失败,错误:%lX"), ModuleDB_GetLastError()); - goto XENGINE_SERVICEAPP_EXIT; + if (!ModuleDatabase_IDCard_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化ID数据库失败,错误:%lX"), ModuleDB_GetLastError()); + goto XENGINE_SERVICEAPP_EXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化ID数据库成功")); + if (!ModuleDatabase_Bank_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化银行卡数据库失败,错误:%lX"), ModuleDB_GetLastError()); + goto XENGINE_SERVICEAPP_EXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化银行卡数据库成功")); + if (!ModuleDatabase_ZIPCode_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化行政邮编信息数据库失败,错误:%lX"), ModuleDB_GetLastError()); + goto XENGINE_SERVICEAPP_EXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化行政邮编信息数据库成功")); + if (!ModuleDatabase_XLog_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化日志信息数据库失败,错误:%lX"), ModuleDB_GetLastError()); + goto XENGINE_SERVICEAPP_EXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化日志信息数据库成功")); + if (!ModuleDatabase_ShortLink_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化短连接数据库失败,错误:%lX"), ModuleDB_GetLastError()); + goto XENGINE_SERVICEAPP_EXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化短连接数据库成功")); + if (!ModuleDatabase_WordFilter_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化敏感词数据库失败,错误:%lX"), ModuleDB_GetLastError()); + goto XENGINE_SERVICEAPP_EXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化敏感词数据库成功")); + if (!ModuleDatabase_Machine_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化信息收集数据库失败,错误:%lX"), ModuleDB_GetLastError()); + goto XENGINE_SERVICEAPP_EXIT; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化信息收集数据库成功")); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化短连接数据库成功")); - if (!ModuleDatabase_WordFilter_Init((DATABASE_MYSQL_CONNECTINFO*)&st_ServiceConfig.st_XSql)) + else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化敏感词数据库失败,错误:%lX"), ModuleDB_GetLastError()); - goto XENGINE_SERVICEAPP_EXIT; + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,数据库操作被禁用,相关ID,银行卡,邮编,日志,短连接,敏感词,信息收集功能也被禁用")); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化敏感词数据库成功")); //启动HTTP服务相关代码 if (st_ServiceConfig.nHttpPort > 0) { @@ -416,6 +430,7 @@ XENGINE_SERVICEAPP_EXIT: ModuleDatabase_XLog_Destory(); ModuleDatabase_ShortLink_Destory(); ModuleDatabase_WordFilter_Destory(); + ModuleDatabase_Machine_Destory(); //销毁其他 ModulePlugin_Loader_Destory(); ModuleHelp_P2PClient_Destory(); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj index fc3e57810683ac735c6d7dee1850be86ff2bcb5d..c21656e6f7e1c164d65f8f7bff664bebfc6ea6da 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj @@ -170,6 +170,7 @@ + @@ -193,6 +194,7 @@ + diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters index 45e30d218ebe68b3e9fcc28cb034c85139960168..fce2bc8ea6c2b25b1b187d2d0202e5137606da54 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters @@ -96,6 +96,9 @@ 源文件\XEngine_TaskGet + + 源文件\XEngine_TaskPost + @@ -167,5 +170,8 @@ 头文件\XEngine_TaskGet + + 头文件\XEngine_TaskPost + \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Bank.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Bank.cpp index b8b7a087cde857b766e4ebbf576212f8225efe99..1e7d7186b9c84690813765a11039d85248e8a87f 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Bank.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Bank.cpp @@ -22,6 +22,14 @@ bool HTTPTask_TaskGet_BankInfo(LPCXSTR lpszClientAddr, LPCXSTR lpszBankNumber) st_HDRParam.nHttpCode = 200; //HTTP CODE码 st_HDRParam.bIsClose = true; //收到回复后就关闭 + if (!st_ServiceConfig.st_XSql.bEnable) + { + ModuleProtocol_Packet_Common(tszPktBuffer, &nPktLen, 501, _X("function is closed")); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen); + XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的银行卡查询功能已经被服务器关闭,无法继续"), lpszClientAddr); + return false; + } _tcsxcpy(st_BankInfo.tszBankNumber, lpszBankNumber); _xstprintf(tszUrlBuffer, st_ServiceConfig.st_XApi.tszBankUrl, lpszBankNumber); APIClient_Http_Request(_X("GET"), tszUrlBuffer, NULL, NULL, &ptszBodyBuffer, &nBLen); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_IDCard.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_IDCard.cpp index e0eadadb88a15217ef3ba2aa1ddf9a02564708c6..99ff8925a6257d884733c5557763f0b8d7d4ff56 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_IDCard.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_IDCard.cpp @@ -19,6 +19,14 @@ bool HTTPTask_TaskGet_IDCard(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer) st_HDRParam.nHttpCode = 200; //HTTP CODE码 st_HDRParam.bIsClose = true; //收到回复后就关闭 + if (!st_ServiceConfig.st_XSql.bEnable) + { + ModuleProtocol_Packet_Common(tszPktBuffer, &nPktLen, 501, _X("function is closed")); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, tszPktBuffer, nPktLen); + XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的ID查询功能已经被服务器关闭,无法继续"), lpszClientAddr); + return false; + } if (!ModuleProtocol_Parse_IDCard(lpszMsgBuffer, &st_IDCardInfo)) { ModuleProtocol_Packet_IDQuery(tszPktBuffer, &nPktLen, NULL, NULL, 1001, _X("idnumber is incorrent")); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Log.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Log.cpp index 17fc996ce1df0da5fb1794d8929751d2ccc4ddc5..b46e2539cb69276a2e802cb92ab1877b0f93c55b 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Log.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Log.cpp @@ -18,6 +18,14 @@ bool HTTPTask_TastPost_LogInfo(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in st_HDRParam.bIsClose = true; //收到回复后就关闭 ModuleProtocol_Parse_XLog(lpszMsgBuffer, nMsgLen, &st_XLogInfo); + if (!st_ServiceConfig.st_XSql.bEnable) + { + ModuleProtocol_Packet_Common(tszRVBuffer, &nRVLen, 501, _X("function is closed")); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的日志操作功能已经被服务器关闭,无法继续"), lpszClientAddr); + return false; + } if (0 == nType) { ModuleDatabase_XLog_Create(st_XLogInfo.tszTableName); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Machine.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Machine.cpp new file mode 100644 index 0000000000000000000000000000000000000000..cd1cd86c535342c045e41e1d792a51a0cf3c1399 --- /dev/null +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Machine.cpp @@ -0,0 +1,77 @@ +#include "../XEngine_Hdr.h" + +bool HTTPTask_TastPost_Machine(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nType) +{ + int nSDLen = 0; + int nRVLen = 0; + XCHAR tszSDBuffer[10240]; + XCHAR tszRVBuffer[10240]; + XENGINE_MACHINEINFO st_MachineInfo = {}; + RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; //发送给客户端的参数 + + memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); + memset(tszRVBuffer, '\0', sizeof(tszRVBuffer)); + + st_HDRParam.nHttpCode = 200; //HTTP CODE码 + st_HDRParam.bIsClose = true; //收到回复后就关闭 + ModuleProtocol_Parse_Machine(lpszMsgBuffer, nMsgLen, &st_MachineInfo); + + if (!st_ServiceConfig.st_XSql.bEnable) + { + ModuleProtocol_Packet_Common(tszRVBuffer, &nRVLen, 501, _X("function is closed")); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的信息收集操作功能已经被服务器关闭,无法继续"), lpszClientAddr); + return false; + } + if (0 == nType) + { + if (ModuleDatabase_Machine_Query(&st_MachineInfo)) + { + st_MachineInfo.nTimeNumber++; + if (!ModuleDatabase_Machine_UPDate(&st_MachineInfo)) + { + ModuleProtocol_Packet_Common(tszRVBuffer, &nRVLen, 400, _X("update is failed")); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的信息收集操作更新失败,错误:%lX"), lpszClientAddr, ModuleDB_GetLastError()); + return false; + } + } + else + { + if (!ModuleDatabase_Machine_Insert(&st_MachineInfo)) + { + ModuleProtocol_Packet_Common(tszRVBuffer, &nRVLen, 400, _X("update is failed")); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的信息收集操作插入失败,错误:%lX"), lpszClientAddr, ModuleDB_GetLastError()); + return false; + } + } + ModuleProtocol_Packet_Common(tszRVBuffer, &nRVLen); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求插入一条信息收集数据成功,机器名:%s,机器编码:%s"), lpszClientAddr, st_MachineInfo.tszMachineName, st_MachineInfo.tszMachineCode); + } + else if (1 == nType) + { + ModuleDatabase_Machine_Delete(&st_MachineInfo); + ModuleProtocol_Packet_Common(tszRVBuffer, &nRVLen); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求删除一条信息收集数据成功,机器名:%s,机器编码:%s"), lpszClientAddr, st_MachineInfo.tszMachineName, st_MachineInfo.tszMachineCode); + } + else + { + int nListCount = 0; + XENGINE_MACHINEINFO** ppSt_MachineInfo; + ModuleDatabase_Machine_List(&ppSt_MachineInfo, &nListCount); + ModuleProtocol_Packet_Machine(tszRVBuffer, &nRVLen, &ppSt_MachineInfo, nListCount); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_MachineInfo, nListCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求获取机器信息列表成功,个数:%d"), lpszClientAddr, nListCount); + } + return true; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Machine.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Machine.h new file mode 100644 index 0000000000000000000000000000000000000000..57ce5cdff3221d3e4aa08d050824ffac56a30a06 --- /dev/null +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_Machine.h @@ -0,0 +1,3 @@ +#pragma once + +bool HTTPTask_TastPost_Machine(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nType); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_PostCode.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_PostCode.cpp index d0833fd1b497a76ab474ff7b3f5ae0efddcff691..db6c14b92768435c797f712a01db6dc8836c7678 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_PostCode.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_PostCode.cpp @@ -17,6 +17,15 @@ bool HTTPTask_TastPost_PostCode(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, i st_HDRParam.nHttpCode = 200; //HTTP CODE码 st_HDRParam.bIsClose = true; //收到回复后就关闭 + if (!st_ServiceConfig.st_XSql.bEnable) + { + ModuleProtocol_Packet_Common(tszRVBuffer, &nRVLen, 501, _X("function is closed")); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的邮编查询功能已经被服务器关闭,无法继续"), lpszClientAddr); + return false; + } + ModuleProtocol_Parse_ZIPCode(lpszMsgBuffer, nMsgLen, &st_ZIPInfo); if (0 == nType) { diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_ShortLink.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_ShortLink.cpp index bb1a9b9b87af7d7b3a2421a2f975c3b68b6d68a7..a7d812a80fe36b712193e78a3f71d96eacca01a2 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_ShortLink.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_ShortLink.cpp @@ -65,6 +65,14 @@ bool HTTPTask_TaskPost_ShortLink(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, st_HDRParam.nHttpCode = 200; //HTTP CODE码 st_HDRParam.bIsClose = true; //收到回复后就关闭 + if (!st_ServiceConfig.st_XSql.bEnable) + { + ModuleProtocol_Packet_Common(tszRVBuffer, &nRVLen, 501, _X("function is closed")); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的短连接操作功能已经被服务器关闭,无法继续"), lpszClientAddr); + return false; + } ModuleProtocol_Parse_ShortLink(lpszMsgBuffer, nMsgLen, &st_ShortLink); //0生成,1还原,2删除 if (0 == nType) @@ -87,6 +95,10 @@ bool HTTPTask_TaskPost_ShortLink(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求生成短连接插入数据库错误,生成的连接:%s,替换的连接:%s,错误码:%lX"), lpszClientAddr, st_ShortLink.tszFullUrl, st_ShortLink.tszCvtUrl, ModuleDB_GetLastError()); return false; } + ModuleProtocol_Packet_ShortLink(tszRVBuffer, &nRVLen, &st_ShortLink); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求操作短连接插入成功,完整地址URL:%s,映射URL:%s"), lpszClientAddr, st_ShortLink.tszFullUrl, st_ShortLink.tszMapUrl); } else if (1 == nType) { @@ -98,8 +110,12 @@ bool HTTPTask_TaskPost_ShortLink(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求获取短连接错误,连接:%s,错误码:%lX"), lpszClientAddr, st_ShortLink.tszMapUrl, ModuleDB_GetLastError()); return false; } + ModuleProtocol_Packet_ShortLink(tszRVBuffer, &nRVLen, &st_ShortLink); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求操作短连接获取成功,完整地址URL:%s,映射URL:%s"), lpszClientAddr, st_ShortLink.tszFullUrl, st_ShortLink.tszMapUrl); } - else + else if (2 == nType) { if (!ModuleDatabase_ShortLink_Delete(&st_ShortLink)) { @@ -109,10 +125,21 @@ bool HTTPTask_TaskPost_ShortLink(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求删除短连接错误,完整地址:%s,映射地址:%s,错误码:%lX"), lpszClientAddr, st_ShortLink.tszFullUrl, st_ShortLink.tszMapUrl, ModuleDB_GetLastError()); return false; } + ModuleProtocol_Packet_ShortLink(tszRVBuffer, &nRVLen, &st_ShortLink); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求操作短连接删除成功,完整地址URL:%s,映射URL:%s"), lpszClientAddr, st_ShortLink.tszFullUrl, st_ShortLink.tszMapUrl); + } + else + { + int nListCount = 0; + XENGINE_SHORTLINK** ppSt_SLinkInfo; + ModuleDatabase_ShortLink_List(&ppSt_SLinkInfo, &nListCount); + ModuleProtocol_Packet_ShortLinkList(tszRVBuffer, &nRVLen, &ppSt_SLinkInfo, nListCount); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_SLinkInfo, nListCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求操作短连接查询成功,查询个数:%d"), lpszClientAddr, nListCount); } - ModuleProtocol_Packet_ShortLink(tszRVBuffer, &nRVLen, &st_ShortLink); - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求操作短连接成功,操作类型:%d,完整地址URL:%s,映射URL:%s"), lpszClientAddr, nType, st_ShortLink.tszFullUrl, st_ShortLink.tszMapUrl); return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_WordFilter.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_WordFilter.cpp index 35b4ae9937ca6ed7234b73b5f51da4f184498945..15c6673e0db0685963d10253ce90f9e1e325bb25 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_WordFilter.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_WordFilter.cpp @@ -18,13 +18,21 @@ bool HTTPTask_TastPost_WordFilter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, st_HDRParam.bIsClose = true; //收到回复后就关闭 ModuleProtocol_Parse_WordFilter(lpszMsgBuffer, nMsgLen, &st_WordFilter); + if (!st_ServiceConfig.st_XSql.bEnable) + { + ModuleProtocol_Packet_Common(tszRVBuffer, &nRVLen, 501, _X("function is closed")); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的敏感词操作功能已经被服务器关闭,无法继续"), lpszClientAddr); + return false; + } if (0 == nType) { ModuleDatabase_WordFilter_Insert(&st_WordFilter); ModuleProtocol_Packet_Common(tszRVBuffer, &nRVLen); HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求插入一条敏感词成功,敏感词:%s,"), lpszClientAddr, st_WordFilter.tszWordsFrom); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求插入一条敏感词成功,敏感词:%s"), lpszClientAddr, st_WordFilter.tszWordsFrom); } else if (1 == nType) { @@ -34,7 +42,7 @@ bool HTTPTask_TastPost_WordFilter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求删除一条敏感词成功,敏感词:%s"), lpszClientAddr, st_WordFilter.tszWordsFrom); } - else + else if (2 == nType) { if (!ModuleDatabase_WordFilter_Query(&st_WordFilter)) { @@ -48,5 +56,16 @@ bool HTTPTask_TastPost_WordFilter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求查询一条敏感词成功,敏感词:%s,过滤词:%s,级别:%d"), lpszClientAddr, st_WordFilter.tszWordsFrom, st_WordFilter.tszWordsTo, st_WordFilter.nLevel); } + else + { + int nListCount = 0; + XENGINE_WORDFILTER** ppSt_WordFilter; + ModuleDatabase_WordFilter_List(&ppSt_WordFilter, &nListCount); + ModuleProtocol_Packet_WordFilterList(tszRVBuffer, &nRVLen, &ppSt_WordFilter, nListCount); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + BaseLib_OperatorMemory_Free((XPPPMEM)&ppSt_WordFilter, nListCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求枚举敏感词列表成功,敏感词个数:%d"), lpszClientAddr, nListCount); + } return true; } \ No newline at end of file diff --git a/XEngine_Source/XEngine_UserProtocol.h b/XEngine_Source/XEngine_UserProtocol.h index a1827e31e6bf5722d0163a0fb3df945536e14b2d..fd4dc56fab5120123904b83083ea2a9bcc3a0198 100644 --- a/XEngine_Source/XEngine_UserProtocol.h +++ b/XEngine_Source/XEngine_UserProtocol.h @@ -229,6 +229,17 @@ typedef struct int nLength; int nID; }XENGINE_SHORTLINK; +//机器收集 +typedef struct +{ + XCHAR tszMachineText[2048]; + XCHAR tszMachineName[MAX_PATH]; + XCHAR tszMachineCode[MAX_PATH]; + XCHAR tszMachineSystem[MAX_PATH]; + XCHAR tszCreateTime[64]; + __int64x nTimeNumber; + int nID; +}XENGINE_MACHINEINFO; //敏感词过滤器 typedef struct {