diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 84580375..fd93452b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -56,7 +56,7 @@ jobs: sudo ./XEngine_LINEnv.sh -i 3 - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} @@ -66,6 +66,6 @@ jobs: make - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 with: category: "/language:${{ matrix.language }}" diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index b9663c50..d107048a 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -51,7 +51,7 @@ jobs: run: | cd vcpkg ./bootstrap-vcpkg.bat - ./vcpkg.exe install lua:x86-windows opencv[contrib]:x86-windows libqrencode:x86-windows + ./vcpkg.exe install lua:x86-windows opencv[contrib,freetype]:x86-windows libqrencode:x86-windows leptonica:x86-windows tesseract:x86-windows ./vcpkg.exe integrate install shell: pwsh - name: vcpkg install (x64) @@ -59,7 +59,7 @@ jobs: run: | cd vcpkg ./bootstrap-vcpkg.bat - ./vcpkg.exe install lua:x64-windows opencv[contrib]:x64-windows libqrencode:x64-windows + ./vcpkg.exe install lua:x64-windows opencv[contrib,freetype]:x64-windows libqrencode:x64-windows leptonica:x64-windows tesseract:x64-windows ./vcpkg.exe integrate install shell: pwsh - name: vcpkg install (ARM64) @@ -69,7 +69,7 @@ jobs: ./bootstrap-vcpkg.bat ./vcpkg.exe install lua:Arm64-windows ./vcpkg.exe integrate install - # ./vcpkg.exe install lua:Arm64-windows opencv[contrib]:Arm64-windows libqrencode:Arm64-windows Windows的opencv 有问题 + # ./vcpkg.exe install lua:Arm64-windows opencv[contrib,freetype]:Arm64-windows libqrencode:Arm64-windows Windows的opencv 有问题 cd .. $filePath = "XEngine_Source/XEngine_BuildSwitch.h" @@ -118,7 +118,7 @@ jobs: #编译 - name: Build Solution - run: msbuild XEngine_Source/XEngine.sln /p:Configuration=${{ matrix.configuration }} /p:Platform=${{ matrix.platform }} + run: msbuild XEngine_Source/XEngine.sln /p:Configuration=${{ matrix.configuration }} /p:Platform=${{ matrix.platform }} /p:ExtraDefines="_XENGINE_BUILD_SWITCH_LUA" #测试 - name: Conditional Step for x86 Release diff --git a/CHANGELOG b/CHANGELOG index b12f3696..2b5842c7 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,67 @@ +XEngine_APIService V3.14.0.1001 + +更新:依赖库 +修改:屏幕录像从后台服务中独立 +修改:不在区分http请求url函数的大小写 +修改:屏幕录像支持scale +修改:屏幕录像支持仅音频或者视频 +修改:调整插件参数顺序 +修正:插件没有加载http消息的问题 +修正:构建问题并且移除audio队列 +修正:验证响应状态不正确 +修正:http验证开关不支持 +删除:plugin模块使用submodule的依赖库替代 + +update:depend library +modify:Separated screen recording from the background service +modify:does not are case-insensitive for http function name +modify:screen capture format support scale +modify:support only audio or video for av record +modify:adjust plugin parameter order +fixed:plugin not load http message buffer +fixed:build error and remove audio fifo +fixed:verification reply status is incorrect +fixed:HTTP authentication switch does not support individual verification +delete:plugin module and use depend library plugin module instead +====================================================================================== +XEngine_APIService V3.13.0.1001 + +ci:增加centos和rockylinux以及debian13支持 +ci:MACOS仅支持arm64 +增加:http验证启动日志 +增加:dns协议服务支持 +增加:http验证的基本和摘要支持 +修改:ntp 协议服务单独提取 +修改:测试api消息输出 +修改:不在限制api请求的key名称 +修改:守护进程和后台管理验证方法 +修改:avformat模块替换了xstream模块 +修改:屏幕推流方法 +修改:系统声音推流方法 +更新:依赖库 +更新:启动参数不区分大小写 +修正:ntp宏错误 +修正:启动日志插件索引错误 +删除:不使用的代码 + +ci:added Centos_build.yml and improved Rocky_build.yml and debian 13 +ci:only support arm64 macos build +added:http verification start log +added:dns protocol service support +added:http basic and digest authorize support +modify:ntp protocol service extract individually +modify:print message for d-test api +modify:dont limit api key name +modify:deamon and back verification method +modify:avformat instead xstream +modify:screen stream push support +modify:system sound capture support for back service +update:depend library +update:start parameter are not case sensitive +fixed:ntp macro error +fixed:start log plugin index +delete:not use return +====================================================================================== XEngine_APIService V3.12.0.1001 增加:rockylinux 10 支持 diff --git a/README.en.md b/README.en.md index a3a2f492..066f4755 100644 --- a/README.en.md +++ b/README.en.md @@ -84,7 +84,7 @@ Modify the database configuration in XSQL in the configuration file to your The default configuration does not enable database support. If the database interface is required, you need to enable the database yourself #### Windows -need to vcpkg configure third-part env.refer vcpkg install guide.after installed and execution:vcpkg.exe install lua:x86-windows opencv[contrib,freetype]:x86-windows libqrencode:x86-windows lua:x64-windows opencv[contrib,freetype]:x64-windows libqrencode:x64-windows +need to vcpkg configure third-part env.refer vcpkg install guide.after installed and execution:vcpkg.exe install lua:x86-windows opencv[contrib,freetype]:x86-windows libqrencode:x86-windows leptonica:x86-windows tesseract:x86-windows lua:x64-windows opencv[contrib,freetype]:x64-windows libqrencode:x64-windows leptonica:x64-windows tesseract:x64-windows use vs open and compile,suport windows 7sp1 and above Just Run it diff --git a/README.md b/README.md index fecaa803..2b2b995c 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ git clone https://gitee.com/xengine/XEngine_IPMacData.git XEngine_Source/XEngine git clone https://gitee.com/xengine/XEngine_PhoneData.git XEngine_Source/XEngine_DependLibrary/XEngine_PhoneData #### Windows -需要vcpkg配置第三方环境,具体参考vcpkg安装方式,安装好后执行:vcpkg.exe install lua:x86-windows opencv[contrib,freetype]:x86-windows libqrencode:x86-windows lua:x64-windows opencv[contrib,freetype]:x64-windows libqrencode:x64-windows +需要vcpkg配置第三方环境,具体参考vcpkg安装方式,安装好后执行:vcpkg.exe install lua:x86-windows opencv[contrib,freetype]:x86-windows libqrencode:x86-windows leptonica:x86-windows tesseract:x86-windows lua:x64-windows opencv[contrib,freetype]:x64-windows libqrencode:x64-windows leptonica:x64-windows tesseract:x64-windows 使用VS打开并且编译,支持WINDOWS 7SP1以上系统 直接运行即可 diff --git a/XEngine_APPClient/APPClient_ImageExample/APPClient_ImageExample.cpp b/XEngine_APPClient/APPClient_ImageExample/APPClient_ImageExample.cpp index 5ab682df..b1392f17 100644 --- a/XEngine_APPClient/APPClient_ImageExample/APPClient_ImageExample.cpp +++ b/XEngine_APPClient/APPClient_ImageExample/APPClient_ImageExample.cpp @@ -22,7 +22,6 @@ #include #include #include -#include #include #include diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index c50abeac..62535cc7 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 2c14e611..d77af21c 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -69,8 +69,8 @@ "nVType": 1, "bEnable": false, "st_VerSwitch": { - "bBackService": false, - "bDeamon": false + "bBackService": true, + "bDeamon": true } }, "XReport": { diff --git a/XEngine_Source/Makefile b/XEngine_Source/Makefile index 57c3811e..2414e8fe 100644 --- a/XEngine_Source/Makefile +++ b/XEngine_Source/Makefile @@ -9,7 +9,6 @@ MODULE_DATABASE_PATH = ./XEngine_ModuleDatabase MODULE_PROTOCOL_PATH = ./XEngine_ModuleProtocol MODULE_SYSTEM_PATH = ./XEngine_ModuleSystem MODULE_HELP_PATH = ./XEngine_ModuleHelp -MODULE_PLUGIN_PATH = ./XEngine_ModulePlugin PLUGIN_MODULE_ZODIAC = ./XEngine_PluginModule/ModulePlugin_Zodiac PLUGIN_MODULE_PASSWORD = ./XEngine_PluginModule/ModulePlugin_Password @@ -20,6 +19,7 @@ PLUGIN_MODULE_METER = ./XEngine_PluginModule/ModulePlugin_Meter THIRDPART_MODULE_JSONCPP = ./XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/jsoncpp THIRDPART_MODULE_REPORT = ./XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_InfoReport THIRDPART_MODULE_VERIFICATION = ./XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_Verification +THIRDPART_MODULE_PLUGIN = ./XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_PluginExtension APIMODULE_PHONE_PATH = ./XEngine_DependLibrary/XEngine_PhoneData/XEngine_Source/XEngine_APIModulePhone APIMODULE_IPMAC_PATH = ./XEngine_DependLibrary/XEngine_IPMacData/XEngine_Source/XEngine_APIModuleIPMac @@ -31,8 +31,8 @@ else ifeq ($(PLATFORM),mac) FILEEXT = dylib endif -XENGINE_MODULES = libjsoncpp.so libXEngine_InfoReport.so libXEngine_Verification.so \ - libXEngine_ModuleConfigure.so libXEngine_ModuleDatabase.so libXEngine_ModuleProtocol.so libXEngine_ModuleSystem.so libXEngine_ModuleHelp.so libXEngine_ModulePlugin.so \ +XENGINE_MODULES = libjsoncpp.so libXEngine_InfoReport.so libXEngine_Verification.so libXEngine_PluginExtension.so \ + libXEngine_ModuleConfigure.so libXEngine_ModuleDatabase.so libXEngine_ModuleProtocol.so libXEngine_ModuleSystem.so libXEngine_ModuleHelp.so \ libModulePlugin_Zodiac.so libModulePlugin_Password.so libModulePlugin_Timezone.so libModulePlugin_BMIndex.so libModulePlugin_Meter.so \ libXEngine_APIModulePhone.so libXEngine_APIModuleIPMac.so \ XEngine_HttpApp.exe @@ -58,6 +58,12 @@ ifeq ($(FLAGS), InstallAll) else make -C $(THIRDPART_MODULE_VERIFICATION) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) endif +libXEngine_PluginExtension.so: +ifeq ($(FLAGS), InstallAll) + cp $(THIRDPART_MODULE_PLUGIN)/libXEngine_PluginExtension.$(FILEEXT) ../XEngine_Release/ +else + make -C $(THIRDPART_MODULE_PLUGIN) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) +endif libXEngine_APIModulePhone.so: ifeq ($(FLAGS), InstallAll) cp $(APIMODULE_PHONE_PATH)/libXEngine_APIModulePhone.$(FILEEXT) ../XEngine_Release/ @@ -81,8 +87,6 @@ libXEngine_ModuleSystem.so: make -C $(MODULE_SYSTEM_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) libXEngine_ModuleHelp.so: make -C $(MODULE_HELP_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) -libXEngine_ModulePlugin.so: - make -C $(MODULE_PLUGIN_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) libModulePlugin_Zodiac.so: make -C $(PLUGIN_MODULE_ZODIAC) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS) diff --git a/XEngine_Source/XEngine.sln b/XEngine_Source/XEngine.sln index a4746dd5..7d5df084 100644 --- a/XEngine_Source/XEngine.sln +++ b/XEngine_Source/XEngine.sln @@ -29,7 +29,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_HttpApp", "XEngine_ {A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A} = {A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A} {A8E43EC0-698A-4807-8A61-B2BE5FAB7256} = {A8E43EC0-698A-4807-8A61-B2BE5FAB7256} {BBC4B2B4-1143-45DF-8890-47CE26A61D0E} = {BBC4B2B4-1143-45DF-8890-47CE26A61D0E} - {CB443280-E283-44CD-B956-52C404A51DB6} = {CB443280-E283-44CD-B956-52C404A51DB6} + {D76B9C99-D002-4770-BB33-C24A91ED97E9} = {D76B9C99-D002-4770-BB33-C24A91ED97E9} {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} {F54F152C-594F-4465-A44E-2DB915B39760} = {F54F152C-594F-4465-A44E-2DB915B39760} {F6520D2C-BB8E-45BB-964B-F5D6A4318A89} = {F6520D2C-BB8E-45BB-964B-F5D6A4318A89} @@ -45,8 +45,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ModuleProtocol", "X EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ModuleHelp", "XEngine_ModuleHelp\XEngine_ModuleHelp.vcxproj", "{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ModulePlugin", "XEngine_ModulePlugin\XEngine_ModulePlugin.vcxproj", "{CB443280-E283-44CD-B956-52C404A51DB6}" -EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_PluginModule", "XEngine_PluginModule", "{D0473C03-9464-4C44-818A-AE212680CD05}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libModulePlugin_Zodiac", "XEngine_PluginModule\ModulePlugin_Zodiac\ModulePlugin_Zodiac.vcxproj", "{32BB166A-3D3D-45EF-8BED-2E0471274159}" @@ -88,7 +86,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_APIServiceApp", "XE {92F971AB-CAC9-4D9B-A9CA-AFD9CA17E505} = {92F971AB-CAC9-4D9B-A9CA-AFD9CA17E505} {A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A} = {A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A} {BBC4B2B4-1143-45DF-8890-47CE26A61D0E} = {BBC4B2B4-1143-45DF-8890-47CE26A61D0E} - {CB443280-E283-44CD-B956-52C404A51DB6} = {CB443280-E283-44CD-B956-52C404A51DB6} {E756B7D2-D40D-4106-9C14-1D90F20A712E} = {E756B7D2-D40D-4106-9C14-1D90F20A712E} {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} {F54F152C-594F-4465-A44E-2DB915B39760} = {F54F152C-594F-4465-A44E-2DB915B39760} @@ -114,6 +111,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_APIModulePhone", "X EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_Verification", "XEngine_DependLibrary\XEngine_OPenSource\XEngine_Module\XEngine_Verification\XEngine_Verification.vcxproj", "{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_PluginExtension", "XEngine_DependLibrary\XEngine_OPenSource\XEngine_Module\XEngine_PluginExtension\XEngine_PluginExtension.vcxproj", "{D76B9C99-D002-4770-BB33-C24A91ED97E9}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM64 = Debug|ARM64 @@ -184,18 +183,6 @@ Global {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x64.Build.0 = Release|x64 {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x86.ActiveCfg = Release|Win32 {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}.Release|x86.Build.0 = Release|Win32 - {CB443280-E283-44CD-B956-52C404A51DB6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CB443280-E283-44CD-B956-52C404A51DB6}.Debug|ARM64.Build.0 = Debug|ARM64 - {CB443280-E283-44CD-B956-52C404A51DB6}.Debug|x64.ActiveCfg = Debug|x64 - {CB443280-E283-44CD-B956-52C404A51DB6}.Debug|x64.Build.0 = Debug|x64 - {CB443280-E283-44CD-B956-52C404A51DB6}.Debug|x86.ActiveCfg = Debug|Win32 - {CB443280-E283-44CD-B956-52C404A51DB6}.Debug|x86.Build.0 = Debug|Win32 - {CB443280-E283-44CD-B956-52C404A51DB6}.Release|ARM64.ActiveCfg = Release|ARM64 - {CB443280-E283-44CD-B956-52C404A51DB6}.Release|ARM64.Build.0 = Release|ARM64 - {CB443280-E283-44CD-B956-52C404A51DB6}.Release|x64.ActiveCfg = Release|x64 - {CB443280-E283-44CD-B956-52C404A51DB6}.Release|x64.Build.0 = Release|x64 - {CB443280-E283-44CD-B956-52C404A51DB6}.Release|x86.ActiveCfg = Release|Win32 - {CB443280-E283-44CD-B956-52C404A51DB6}.Release|x86.Build.0 = Release|Win32 {32BB166A-3D3D-45EF-8BED-2E0471274159}.Debug|ARM64.ActiveCfg = Debug|ARM64 {32BB166A-3D3D-45EF-8BED-2E0471274159}.Debug|ARM64.Build.0 = Debug|ARM64 {32BB166A-3D3D-45EF-8BED-2E0471274159}.Debug|x64.ActiveCfg = Debug|x64 @@ -340,6 +327,18 @@ Global {A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Release|x64.Build.0 = Release|x64 {A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Release|x86.ActiveCfg = Release|Win32 {A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Release|x86.Build.0 = Release|Win32 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Debug|ARM64.Build.0 = Debug|ARM64 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Debug|x64.ActiveCfg = Debug|x64 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Debug|x64.Build.0 = Debug|x64 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Debug|x86.ActiveCfg = Debug|Win32 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Debug|x86.Build.0 = Debug|Win32 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Release|ARM64.ActiveCfg = Release|ARM64 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Release|ARM64.Build.0 = Release|ARM64 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Release|x64.ActiveCfg = Release|x64 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Release|x64.Build.0 = Release|x64 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Release|x86.ActiveCfg = Release|Win32 + {D76B9C99-D002-4770-BB33-C24A91ED97E9}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -357,6 +356,7 @@ Global {FFAC032D-4F8C-4C70-AF36-D79685A6961F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} {A8E43EC0-698A-4807-8A61-B2BE5FAB7256} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} + {D76B9C99-D002-4770-BB33-C24A91ED97E9} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {9B202F91-A601-429E-BB0F-880DDEE096FE} diff --git a/XEngine_Source/XEngine_DependLibrary/XEngine_IPMacData b/XEngine_Source/XEngine_DependLibrary/XEngine_IPMacData index 4e6e5aab..41d83d3c 160000 --- a/XEngine_Source/XEngine_DependLibrary/XEngine_IPMacData +++ b/XEngine_Source/XEngine_DependLibrary/XEngine_IPMacData @@ -1 +1 @@ -Subproject commit 4e6e5aabee8b8c42a6f148d8e50feb44fb6f7b5f +Subproject commit 41d83d3c9b5e53c9d7f6a0a97dc70672d654b477 diff --git a/XEngine_Source/XEngine_DependLibrary/XEngine_OPenSource b/XEngine_Source/XEngine_DependLibrary/XEngine_OPenSource index da4c1c30..adf48e22 160000 --- a/XEngine_Source/XEngine_DependLibrary/XEngine_OPenSource +++ b/XEngine_Source/XEngine_DependLibrary/XEngine_OPenSource @@ -1 +1 @@ -Subproject commit da4c1c30f9c7667e86b8e816560306b0882931a7 +Subproject commit adf48e22d68f741ec52f299945f8f8f8fb3df9d2 diff --git a/XEngine_Source/XEngine_DependLibrary/XEngine_PhoneData b/XEngine_Source/XEngine_DependLibrary/XEngine_PhoneData index ce3fd8d9..42aca9c4 160000 --- a/XEngine_Source/XEngine_DependLibrary/XEngine_PhoneData +++ b/XEngine_Source/XEngine_DependLibrary/XEngine_PhoneData @@ -1 +1 @@ -Subproject commit ce3fd8d987f79c89dbbb707771765de95bfd90ea +Subproject commit 42aca9c4dfeeb4f3e579bd49deb9cb390f0b7677 diff --git a/XEngine_Source/XEngine_ModulePlugin/Makefile b/XEngine_Source/XEngine_ModulePlugin/Makefile deleted file mode 100644 index 43b6e93f..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/Makefile +++ /dev/null @@ -1,81 +0,0 @@ -CC = g++ -Wall -std=c++20 -fPIC -PLATVER = -FILEEXT = -LIBFLAG = -LOADHDR = -I ./ -I /usr/include/lua5.4 -I /usr/local/include/lua -LOADSO = -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 -D _RELEASE -DEBUG = -O2 -else - ifeq ($(PLATFORM),mac) - FLAGS = -c - DEBUG = -g -D _DEBUG - else - FLAGS = -c -lc_p - DEBUG = -g -pg -D _DEBUG - endif -endif - -ifeq ($(UNICODE),1) -override UNICODE := -D __UNICODE__ -else -override UNICODE := -D __ANSI__ -endif - -ifeq ($(PLATFORM),linux) - ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) - PLATVER = -D __CENTOS__ - LIB += -llua - else - PLATVER = -D __UBUNTU__ - LIB += -llua5.4 - endif - FILEEXT = so - LIBFLAG = -shared - LIBEX = -lpthread -lrt -ldl - LOADBIN = -Wl,-rpath=./,--disable-new-dtags -else ifeq ($(PLATFORM),mac) - CC += -Wno-deprecated-declarations - PLATVER = -D __MACOS__ - FILEEXT = dylib - LIBFLAG = -dynamiclib - LOADHDR += -I /opt/homebrew/opt/lua/include/lua - LOADSO += -L /opt/homebrew/opt/lua/lib - ifeq ($(MACRO_LUA_SUPPORT),1) - LIB += -llua - endif - LIBEX = -lpthread -ldl - LOADBIN = -Wl,-rpath,@loader_path/./ -endif - -all:$(OBJECTS) - $(CC) $(DEBUG) $(OBJECTS) -o libXEngine_ModulePlugin.$(FILEEXT) $(LIBFLAG) $(LIB) $(LIBEX) $(LOADSO) $(LOADBIN) - -ModulePlugin_LibCore.o:./ModulePlugin_LibCore/ModulePlugin_LibCore.cpp - $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModulePlugin_LibCore/ModulePlugin_LibCore.cpp -ModulePlugin_LuaCore.o:./ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp - $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp -ModulePlugin_Loader.o:./ModulePlugin_Loader/ModulePlugin_Loader.cpp - $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./ModulePlugin_Loader/ModulePlugin_Loader.cpp - -pch.o:./pch.cpp - $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./pch.cpp - - -InstallAll:InstallSo -InstallSo:./libXEngine_ModulePlugin.$(FILEEXT) - cp ./libXEngine_ModulePlugin.$(FILEEXT) ../../XEngine_Release/libXEngine_ModulePlugin.$(FILEEXT) - - -CleanAll:CleanObj CleanMk -CleanObj: - rm *.o -CleanMk: - rm *.$(FILEEXT) \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Define.h b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Define.h deleted file mode 100644 index 74fe825f..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Define.h +++ /dev/null @@ -1,443 +0,0 @@ -#pragma once -/******************************************************************** -// Created: 2022/04/20 17:22:16 -// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_Define.h -// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin -// File Base: ModulePlugin_Define -// File Ext: h -// Project: XEngine(网络通信引擎) -// Author: qyt -// Purpose: 插件导出定义 -// History: -*********************************************************************/ -////////////////////////////////////////////////////////////////////////// -// 导出函数定义 -////////////////////////////////////////////////////////////////////////// -extern "C" XLONG ModulePlugin_GetLastError(int* pInt_SysError = NULL); -/********************************************************************************* -* LIB库插件框架导出函数定义 * -*********************************************************************************/ -/******************************************************************** -函数名称:ModulePlugin_LibCore_Init -函数功能:初始化插件核心系统 -返回值 - 类型:逻辑型 - 意思:是否成功初始化 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_LibCore_Init(); -/******************************************************************** -函数名称:ModulePlugin_LibCore_Push -函数功能:添加一个标准的插件到插件框架中 - 参数.一:pxhModule - In/Out:Out - 类型:模块句柄 - 可空:N - 意思:导出一个加载成功的模块句柄 - 参数.二:lpszPluginFile - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:插件模块路径 - 参数.三:pSt_PluginParameter - In/Out:In - 类型:数据结构指针 - 可空:Y - 意思:输入插件初始化参数 -返回值 - 类型:逻辑型 - 意思:是否成功添加 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_LibCore_Push(XNETHANDLE * pxhNet, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); -/******************************************************************** -函数名称:ModulePlugin_LibCore_Exec -函数功能:执行一次 - 参数.一:xhModule - In/Out:In - 类型:句柄 - 可空:N - 意思:输入模块句柄 - 参数.二:pppHDRList - In/Out:In - 类型:三级指针 - 可空:N - 意思:HTTP请求的URL参数列表 - 参数.三:nListCount - In/Out:In - 类型:整数型 - 可空:N - 意思:输入列表个数 - 参数.四:pInt_HTTPCode - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出返回的HTTPCODE值 - 参数.五:ptszMsgBuffer - In/Out:Out - 类型:字符指针 - 可空:N - 意思:输出负载的内容 - 参数.六:pInt_MsgLen - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出内容大小 - 参数.七:lpszMsgBufer - In/Out:Out - 类型:常量字符指针 - 可空:Y - 意思:输入负载内容 - 参数.八:nMsgLen - In/Out:Out - 类型:整数型指针 - 可空:Y - 意思:输入负载大小 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_LibCore_Exec(XNETHANDLE xhModule, XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer = NULL, int nMsgLen = 0); -/******************************************************************** -函数名称:ModulePlugin_LibCore_Get -函数功能:获取插件基础信息函数 - 参数.一:xhModule - In/Out:In - 类型:句柄 - 可空:N - 意思:要操作的模块句柄 - 参数.二:ptszPluginName - In/Out:Out - 类型:字符指针 - 可空:N - 意思:处理名称 - 参数.三:ptszPluginVersion - In/Out:Out - 类型:字符指针 - 可空:N - 意思:版本号.使用x.x.x.x 格式 - 参数.四:ptszPluginAuthor - In/Out:Out - 类型:字符指针 - 可空:N - 意思:作者 - 参数.五:ptszPluginDesc - In/Out:Out - 类型:字符指针 - 可空:N - 意思:插件描述 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_LibCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); -/******************************************************************** -函数名称:ModulePlugin_LibCore_Destroy -函数功能:销毁插件核心并且清理资源 -返回值 - 类型:逻辑型 - 意思:是否成功销毁 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_LibCore_Destroy(); -/********************************************************************************* -* LUA插件框架导出函数定义 * -*********************************************************************************/ -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Init -函数功能:初始化LUA插件核心系统 -返回值 - 类型:逻辑型 - 意思:是否成功初始化 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_LuaCore_Init(); -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Push -函数功能:添加一个标准的插件到插件框架中 - 参数.一:pxhModule - In/Out:Out - 类型:模块句柄 - 可空:N - 意思:导出一个加载成功的模块句柄 - 参数.二:lpszPluginFile - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:插件模块路径 - 参数.三:pSt_PluginParameter - In/Out:In - 类型:数据结构指针 - 可空:Y - 意思:输入插件初始化参数 -返回值 - 类型:逻辑型 - 意思:是否成功添加 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Exec -函数功能:执行一次 - 参数.一:xhModule - In/Out:In - 类型:句柄 - 可空:N - 意思:输入模块句柄 - 参数.二:pppHDRList - In/Out:In - 类型:三级指针 - 可空:N - 意思:HTTP请求的URL参数列表 - 参数.三:nListCount - In/Out:In - 类型:整数型 - 可空:N - 意思:输入列表个数 - 参数.四:pInt_HTTPCode - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出返回的HTTPCODE值 - 参数.五:ptszMsgBuffer - In/Out:Out - 类型:字符指针 - 可空:N - 意思:输出负载的内容 - 参数.六:pInt_MsgLen - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出内容大小 - 参数.七:lpszMsgBufer - In/Out:Out - 类型:常量字符指针 - 可空:Y - 意思:输入负载内容 - 参数.八:nMsgLen - In/Out:Out - 类型:整数型指针 - 可空:Y - 意思:输入负载大小 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer = NULL, int nMsgLen = 0); -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Get -函数功能:获取插件基础信息函数 - 参数.一:xhModule - In/Out:In - 类型:句柄 - 可空:N - 意思:要操作的模块句柄 - 参数.二:ptszPluginName - In/Out:Out - 类型:字符指针 - 可空:N - 意思:处理名称 - 参数.三:ptszPluginVersion - In/Out:Out - 类型:字符指针 - 可空:N - 意思:版本号.使用x.x.x.x 格式 - 参数.四:ptszPluginAuthor - In/Out:Out - 类型:字符指针 - 可空:N - 意思:作者 - 参数.五:ptszPluginDesc - In/Out:Out - 类型:字符指针 - 可空:N - 意思:插件描述 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_LuaCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Destroy -函数功能:销毁插件核心并且清理资源 -返回值 - 类型:逻辑型 - 意思:是否成功销毁 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_LuaCore_Destroy(); -/********************************************************************************* -* 加载器导出函数定义 * -*********************************************************************************/ -/******************************************************************** -函数名称:ModulePlugin_Loader_Init -函数功能:初始化插件加载器 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_Loader_Init(); -/******************************************************************** -函数名称:ModulePlugin_Loader_Insert -函数功能:插入一个模块到加载器 - 参数.一:lpszModuleName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:插件路径 - 参数.二:nType - In/Out:In - 类型:整数型 - 可空:N - 意思:0为lib,1为lua - 参数.三:pSt_PluginParameter - In/Out:In - 类型:数据结构指针 - 可空:Y - 意思:输入插件初始化参数 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleName, int nType, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); -/******************************************************************** -函数名称:ModulePlugin_Loader_Find -函数功能:查找方法是否注册 - 参数.一:lpszMethodName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要执行的方法 - 参数.二:pInt_Type - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出获取到的模块类型 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_Loader_Find(LPCXSTR lpszMethodName, int* pInt_Type); -/******************************************************************** -函数名称:ModulePlugin_LibCore_Get -函数功能:获取插件基础信息函数 - 参数.一:lpszMethodName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:要操作的模块句柄 - 参数.二:ptszPluginName - In/Out:Out - 类型:字符指针 - 可空:N - 意思:处理名称 - 参数.三:ptszPluginVersion - In/Out:Out - 类型:字符指针 - 可空:N - 意思:版本号.使用x.x.x.x 格式 - 参数.四:ptszPluginAuthor - In/Out:Out - 类型:字符指针 - 可空:N - 意思:作者 - 参数.五:ptszPluginDesc - In/Out:Out - 类型:字符指针 - 可空:N - 意思:插件描述 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_Loader_Get(LPCXSTR lpszMethodName, XCHAR* ptszPluginName = NULL, XCHAR* ptszPluginVersion = NULL, XCHAR* ptszPluginAuthor = NULL, XCHAR* ptszPluginDesc = NULL); -/******************************************************************** -函数名称:ModulePlugin_Loader_GetForModule -函数功能:通过模块名称获取模块信息 - 参数.一:lpszModuleName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:要操作的模块名称 - 参数.二:ptszPluginName - In/Out:Out - 类型:字符指针 - 可空:N - 意思:处理名称 - 参数.三:ptszPluginVersion - In/Out:Out - 类型:字符指针 - 可空:N - 意思:版本号.使用x.x.x.x 格式 - 参数.四:ptszPluginAuthor - In/Out:Out - 类型:字符指针 - 可空:N - 意思:作者 - 参数.五:ptszPluginDesc - In/Out:Out - 类型:字符指针 - 可空:N - 意思:插件描述 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_Loader_GetForModule(LPCXSTR lpszModuleName, XCHAR* ptszPluginName = NULL, XCHAR* ptszPluginVersion = NULL, XCHAR* ptszPluginAuthor = NULL, XCHAR* ptszPluginDesc = NULL); -/******************************************************************** -函数名称:ModulePlugin_Loader_Exec -函数功能:执行一次插件 - 参数.一:lpszMethodName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要执行的方法 - 参数.二:pppHDRList - In/Out:In - 类型:三级指针 - 可空:N - 意思:HTTP请求的URL参数列表 - 参数.三:nListCount - In/Out:In - 类型:整数型 - 可空:N - 意思:输入列表个数 - 参数.四:pInt_HTTPCode - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出返回的HTTPCODE值 - 参数.五:ptszMsgBuffer - In/Out:Out - 类型:字符指针 - 可空:N - 意思:输出负载的内容 - 参数.六:pInt_MsgLen - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出内容大小 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_Loader_Exec(LPCXSTR lpszMethodName, XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen); -/******************************************************************** -函数名称:ModulePlugin_Loader_Destory -函数功能:销毁加载器 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" bool ModulePlugin_Loader_Destory(); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Error.h b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Error.h deleted file mode 100644 index 45e487c1..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Error.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once -/******************************************************************** -// Created: 2022/04/20 16:19:38 -// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_Error.h -// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin -// File Base: ModulePlugin_Error -// File Ext: h -// Project: XEngine(网络通信引擎) -// Author: qyt -// Purpose: 插件核心错误导出定义 -// History: -*********************************************************************/ -////////////////////////////////////////////////////////////////////////// -// 错误定义 -////////////////////////////////////////////////////////////////////////// -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_PARAMENT 0xE1001 //参数错误 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_OPENDL 0xE1002 //打开模块插件失败 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPINIT 0xE1003 //查找初始化函数失败 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPUNINIT 0xE1004 //查找卸载函数失败 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPCALL 0xE1005 //查找调用执行功能函数失败 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPERROR 0xE1006 //获取错误函数失败 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_INIT 0xE1007 //初始化内部模块失败 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND 0xE1008 //没有找到句柄 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_ISINITED 0xE1009 //已经初始化了,不需要再次初始化 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION 0xE100A //插件执行失败 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_MALLOC 0xE100B //申请内存失败 -#define ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_GETINFO 0xE100C //获取插件信息失败 \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.cpp b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.cpp deleted file mode 100644 index 2d6ab947..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.cpp +++ /dev/null @@ -1,370 +0,0 @@ -#include "pch.h" -#include "ModulePlugin_LibCore.h" -/******************************************************************** -// Created: 2022/11/30 16:16:54 -// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_LibCore\ModulePlugin_LibCore.cpp -// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_LibCore -// File Base: ModulePlugin_LibCore -// File Ext: cpp -// Project: XEngine(网络通信引擎) -// Author: qyt -// Purpose: 插件核心架构实现 -// History: -*********************************************************************/ -CModulePlugin_LibCore::CModulePlugin_LibCore() -{ - bIsInit = false; -} -CModulePlugin_LibCore::~CModulePlugin_LibCore() -{ -} -////////////////////////////////////////////////////////////////////////// -// 公有函数 -////////////////////////////////////////////////////////////////////////// -/******************************************************************** -函数名称:ModulePlugin_LibCore_Init -函数功能:初始化插件核心系统 -返回值 - 类型:逻辑型 - 意思:是否成功初始化 -备注: -*********************************************************************/ -bool CModulePlugin_LibCore::ModulePlugin_LibCore_Init() -{ - ModulePlugin_IsErrorOccur = false; - //判断是否初始化 - if (bIsInit) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_ISINITED; - return false; - } - //启动线程 - bIsInit = true; - return true; -} -/******************************************************************** -函数名称:ModulePlugin_LibCore_Push -函数功能:添加一个标准的插件到插件框架中 - 参数.一:pxhModule - In/Out:Out - 类型:模块句柄 - 可空:N - 意思:导出一个加载成功的模块句柄 - 参数.二:lpszPluginFile - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:插件模块路径 - 参数.三:pSt_PluginParameter - In/Out:In - 类型:数据结构指针 - 可空:Y - 意思:输入插件初始化参数 -返回值 - 类型:逻辑型 - 意思:是否成功添加 -备注: -*********************************************************************/ -bool CModulePlugin_LibCore::ModulePlugin_LibCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter) -{ - ModulePlugin_IsErrorOccur = false; - - if (!BaseLib_Handle_Create(pxhModule)) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = BaseLib_GetLastError(); - return false; - } - if (!ModulePlugin_LibCore_Add(*pxhModule, lpszPluginFile, pSt_PluginParameter)) - { - return false; - } - return true; -} -/******************************************************************** -函数名称:ModulePlugin_LibCore_Exec -函数功能:执行一次 - 参数.一:xhModule - In/Out:In - 类型:句柄 - 可空:N - 意思:输入模块句柄 - 参数.二:pppHDRList - In/Out:In - 类型:三级指针 - 可空:N - 意思:HTTP请求的URL参数列表 - 参数.三:nListCount - In/Out:In - 类型:整数型 - 可空:N - 意思:输入列表个数 - 参数.四:pInt_HTTPCode - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出返回的HTTPCODE值 - 参数.五:ptszMsgBuffer - In/Out:Out - 类型:字符指针 - 可空:N - 意思:输出负载的内容 - 参数.六:pInt_MsgLen - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出内容大小 - 参数.七:lpszMsgBufer - In/Out:Out - 类型:常量字符指针 - 可空:Y - 意思:输入负载内容 - 参数.八:nMsgLen - In/Out:Out - 类型:整数型指针 - 可空:Y - 意思:输入负载大小 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_LibCore::ModulePlugin_LibCore_Exec(XNETHANDLE xhModule, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer /* = NULL */, int nMsgLen /* = 0 */) -{ - ModulePlugin_IsErrorOccur = false; - - st_csStl.lock_shared(); - //执行指定插件函数 - unordered_map::const_iterator stl_MapIterator = stl_MapFrameWork.find(xhModule); - if (stl_MapIterator == stl_MapFrameWork.end()) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; - st_csStl.unlock_shared(); - return false; - } - if (!stl_MapIterator->second.fpCall_PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBufer, nMsgLen)) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = stl_MapIterator->second.fpCall_PluginCore_GetLastError(); - st_csStl.unlock_shared(); - return false; - } - st_csStl.unlock_shared(); - - return true; -} -/******************************************************************** -函数名称:ModulePlugin_LibCore_Get -函数功能:获取插件基础信息函数 - 参数.一:xhModule - In/Out:In - 类型:句柄 - 可空:N - 意思:要操作的模块句柄 - 参数.二:ptszPluginName - In/Out:Out - 类型:字符指针 - 可空:N - 意思:处理名称 - 参数.三:ptszPluginVersion - In/Out:Out - 类型:字符指针 - 可空:N - 意思:版本号.使用x.x.x.x 格式 - 参数.四:ptszPluginAuthor - In/Out:Out - 类型:字符指针 - 可空:N - 意思:作者 - 参数.五:ptszPluginDesc - In/Out:Out - 类型:字符指针 - 可空:N - 意思:插件描述 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_LibCore::ModulePlugin_LibCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) -{ - ModulePlugin_IsErrorOccur = false; - - st_csStl.lock_shared(); - //执行指定插件函数 - unordered_map::const_iterator stl_MapIterator = stl_MapFrameWork.find(xhModule); - if (stl_MapIterator == stl_MapFrameWork.end()) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; - st_csStl.unlock_shared(); - return false; - } - _tcsxcpy(ptszPluginName, stl_MapIterator->second.tszModuleName); - _tcsxcpy(ptszPluginVersion, stl_MapIterator->second.tszModuleVer); - _tcsxcpy(ptszPluginAuthor, stl_MapIterator->second.tszModuleAuthor); - _tcsxcpy(ptszPluginDesc, stl_MapIterator->second.tszModuleDesc); - st_csStl.unlock_shared(); - - return true; -} -/******************************************************************** -函数名称:ModulePlugin_LibCore_Destroy -函数功能:销毁插件核心并且清理资源 -返回值 - 类型:逻辑型 - 意思:是否成功销毁 -备注: -*********************************************************************/ -bool CModulePlugin_LibCore::ModulePlugin_LibCore_Destroy() -{ - ModulePlugin_IsErrorOccur = false; - - //判断是否初始化 - if (!bIsInit) - { - return true; - } - bIsInit = false; - //清理STL元素空间 - st_csStl.lock(); - unordered_map::iterator stl_MapIterator = stl_MapFrameWork.begin(); - for (; stl_MapIterator != stl_MapFrameWork.end(); stl_MapIterator++) - { - stl_MapIterator->second.fpCall_PluginCore_UnInit(); - XFreeModule(stl_MapIterator->second.mhFile); - } - stl_MapFrameWork.clear(); - st_csStl.unlock(); - return true; -} -////////////////////////////////////////////////////////////////////////// -// 保护函数 -////////////////////////////////////////////////////////////////////////// -/******************************************************************** -函数名称:ModulePlugin_LibCore_Add -函数功能:添加一个指定模块到插件核心系统当中 - 参数.一:xhNet - In/Out:In - 类型:模块句柄 - 可空:N - 意思:输入一个新的模块句柄 - 参数.二:lpszPluginFile - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:插件模块路径 - 参数.三:pSt_PluginParameter - In/Out:In - 类型:数据结构指针 - 可空:Y - 意思:输入插件初始化参数 -返回值 - 类型:逻辑型 - 意思:是否成功执行 -备注: -*********************************************************************/ -bool CModulePlugin_LibCore::ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter) -{ - ModulePlugin_IsErrorOccur = false; - - if (NULL == lpszPluginFile) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_PARAMENT; - return false; - } - PLUGINCORE_FRAMEWORK st_FrameWork = {}; - //打开一个模块 -#ifdef _MSC_BUILD - st_FrameWork.mhFile = LoadLibraryA(lpszPluginFile); -#else - st_FrameWork.mhFile = dlopen(lpszPluginFile, RTLD_LAZY); -#endif - if (NULL == st_FrameWork.mhFile) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_OPENDL; - return false; - } - //开始查找模块中的函数 -#ifdef _MSC_BUILD - st_FrameWork.fpCall_PluginCore_Init = (FPCall_PluginCore_Init)GetProcAddress(st_FrameWork.mhFile, "PluginCore_Init"); -#else - * (void**)(&st_FrameWork.fpCall_PluginCore_Init) = dlsym(st_FrameWork.mhFile, _X("PluginCore_Init")); -#endif - if (NULL == st_FrameWork.fpCall_PluginCore_Init) - { - XFreeModule(st_FrameWork.mhFile); - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPINIT; - return false; - } -#ifdef _MSC_BUILD - st_FrameWork.fpCall_PluginCore_UnInit = (FPCall_PluginCore_UnInit)GetProcAddress(st_FrameWork.mhFile, "PluginCore_UnInit"); -#else - * (void**)(&st_FrameWork.fpCall_PluginCore_UnInit) = dlsym(st_FrameWork.mhFile, _X("PluginCore_UnInit")); -#endif - if (NULL == st_FrameWork.fpCall_PluginCore_UnInit) - { - XFreeModule(st_FrameWork.mhFile); - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPUNINIT; - return false; - } -#ifdef _MSC_BUILD - st_FrameWork.fpCall_PluginCore_Call = (FPCall_PluginCore_Call)GetProcAddress(st_FrameWork.mhFile, "PluginCore_Call"); -#else - * (void**)(&st_FrameWork.fpCall_PluginCore_Call) = dlsym(st_FrameWork.mhFile, _X("PluginCore_Call")); -#endif - if (NULL == st_FrameWork.fpCall_PluginCore_Call) - { - XFreeModule(st_FrameWork.mhFile); - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPCALL; - return false; - } -#ifdef _MSC_BUILD - st_FrameWork.fpCall_PluginCore_GetLastError = (FPCall_PluginCore_GetLastError)GetProcAddress(st_FrameWork.mhFile, _X("PluginCore_GetLastError")); -#else - * (void**)(&st_FrameWork.fpCall_PluginCore_GetLastError) = dlsym(st_FrameWork.mhFile, _X("PluginCore_GetLastError")); -#endif - if (NULL == st_FrameWork.fpCall_PluginCore_GetLastError) - { - XFreeModule(st_FrameWork.mhFile); - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPERROR; - return false; - } -#ifdef _MSC_BUILD - st_FrameWork.fpCall_PluginCore_GetInfo = (FPCall_PluginCore_GetInfo)GetProcAddress(st_FrameWork.mhFile, _X("PluginCore_GetInfo")); -#else - * (void**)(&st_FrameWork.fpCall_PluginCore_GetInfo) = dlsym(st_FrameWork.mhFile, _X("PluginCore_GetInfo")); -#endif - if (NULL == st_FrameWork.fpCall_PluginCore_GetInfo) - { - XFreeModule(st_FrameWork.mhFile); - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPERROR; - return false; - } - //初始化内部模块 - if (!st_FrameWork.fpCall_PluginCore_Init(pSt_PluginParameter)) - { - XFreeModule(st_FrameWork.mhFile); - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_INIT; - return false; - } - //获得内部模块信息 - st_FrameWork.fpCall_PluginCore_GetInfo(st_FrameWork.tszModuleName, st_FrameWork.tszModuleVer, st_FrameWork.tszModuleAuthor, st_FrameWork.tszModuleDesc); - _tcsxcpy(st_FrameWork.tszModuleFile, lpszPluginFile); - - //添加模块属性到STL函数中 - st_csStl.lock(); - stl_MapFrameWork.insert(make_pair(xhNet, st_FrameWork)); - st_csStl.unlock(); - return true; -} \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.h b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.h deleted file mode 100644 index c5d8c458..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LibCore/ModulePlugin_LibCore.h +++ /dev/null @@ -1,58 +0,0 @@ -#pragma once -/******************************************************************** -// Created: 2022/11/30 16:16:35 -// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_LibCore\ModulePlugin_LibCore.h -// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_LibCore -// File Base: ModulePlugin_LibCore -// File Ext: h -// Project: XEngine(网络通信引擎) -// Author: qyt -// Purpose: 插件核心架构定义 -// History: -*********************************************************************/ -typedef bool(*FPCall_PluginCore_Init)(XENGINE_PLUGINPARAM* pSt_PluginParameter); -typedef void(*FPCall_PluginCore_UnInit)(); -typedef void(*FPCall_PluginCore_GetInfo)(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); -typedef bool(*FPCall_PluginCore_Call)(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer, int nMsgLen); -typedef XLONG(*FPCall_PluginCore_GetLastError)(); - -typedef struct -{ -#ifdef _MSC_BUILD - HMODULE mhFile; -#else - void* mhFile; -#endif - XCHAR tszModuleFile[XPATH_MAX]; - XCHAR tszModuleName[128]; - XCHAR tszModuleAuthor[128]; - XCHAR tszModuleDesc[128]; - XCHAR tszModuleVer[64]; - - bool(*fpCall_PluginCore_Init)(XENGINE_PLUGINPARAM* pSt_PluginParameter); - void(*fpCall_PluginCore_UnInit)(); - void(*fpCall_PluginCore_GetInfo)(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); - bool(*fpCall_PluginCore_Call)(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer, int nMsgLen); - XLONG(*fpCall_PluginCore_GetLastError)(); -}PLUGINCORE_FRAMEWORK, * LPPLUGINCORE_FRAMEWORK; - -class CModulePlugin_LibCore -{ -public: - CModulePlugin_LibCore(); - ~CModulePlugin_LibCore(); -public: - bool ModulePlugin_LibCore_Init(); - bool ModulePlugin_LibCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); - bool ModulePlugin_LibCore_Exec(XNETHANDLE xhModule, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer = NULL, int nMsgLen = 0); - bool ModulePlugin_LibCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); - bool ModulePlugin_LibCore_Destroy(); -protected: - bool ModulePlugin_LibCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); -private: - bool bIsInit; -private: - shared_mutex st_csStl; -private: - unordered_map stl_MapFrameWork; -}; diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.cpp b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.cpp deleted file mode 100644 index 588bab81..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.cpp +++ /dev/null @@ -1,383 +0,0 @@ -#include "pch.h" -#include "ModulePlugin_Loader.h" -/******************************************************************** -// Created: 2022/04/20 16:36:01 -// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_Loader\ModulePlugin_Loader.cpp -// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_Loader -// File Base: ModulePlugin_Loader -// File Ext: cpp -// Project: XEngine(网络通信引擎) -// Author: qyt -// Purpose: 插件加载工具 -// History: -*********************************************************************/ -CModulePlugin_Loader::CModulePlugin_Loader() -{ -} -CModulePlugin_Loader::~CModulePlugin_Loader() -{ -} -////////////////////////////////////////////////////////////////////////// -// 公有函数 -////////////////////////////////////////////////////////////////////////// -/******************************************************************** -函数名称:ModulePlugin_Loader_Init -函数功能:初始化插件加载器 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_Loader::ModulePlugin_Loader_Init() -{ - ModulePlugin_LibCore_Init(); - ModulePlugin_LuaCore_Init(); - - return true; -} -/******************************************************************** -函数名称:ModulePlugin_Loader_Insert -函数功能:插入一个模块到加载器 - 参数.一:lpszModuleName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:插件路径 - 参数.二:nType - In/Out:In - 类型:整数型 - 可空:N - 意思:0为lib,1为lua - 参数.三:pSt_PluginParameter - In/Out:In - 类型:数据结构指针 - 可空:Y - 意思:输入插件初始化参数 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_Loader::ModulePlugin_Loader_Insert(LPCXSTR lpszModuleName, int nType, XENGINE_PLUGINPARAM* pSt_PluginParameter /* = NULL */) -{ - ModulePlugin_IsErrorOccur = false; - - if (NULL == lpszModuleName) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_PARAMENT; - return false; - } - PLUGINCORE_LOADER st_PluginLoader; - memset(&st_PluginLoader, '\0', sizeof(PLUGINCORE_LOADER)); - - st_PluginLoader.nType = nType; - _tcsxcpy(st_PluginLoader.tszModuleFile, lpszModuleName); - - if (0 == nType) - { - if (!ModulePlugin_LibCore_Push(&st_PluginLoader.xhToken, lpszModuleName, pSt_PluginParameter)) - { - return false; - } - ModulePlugin_LibCore_Get(st_PluginLoader.xhToken, st_PluginLoader.tszModuleName, st_PluginLoader.tszModuleVer, st_PluginLoader.tszModuleAuthor, st_PluginLoader.tszModuleDesc); - } - else - { - if (!ModulePlugin_LuaCore_Push(&st_PluginLoader.xhToken, lpszModuleName, pSt_PluginParameter)) - { - return false; - } - ModulePlugin_LuaCore_Get(st_PluginLoader.xhToken, st_PluginLoader.tszModuleName, st_PluginLoader.tszModuleVer, st_PluginLoader.tszModuleAuthor, st_PluginLoader.tszModuleDesc); - } - - st_Locker.lock(); - stl_MapLoader.insert(make_pair(st_PluginLoader.tszModuleName, st_PluginLoader)); - st_Locker.unlock(); - return true; -} -/******************************************************************** -函数名称:ModulePlugin_Loader_Find -函数功能:查找方法是否注册 - 参数.一:lpszMethodName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要执行的方法 - 参数.二:pInt_Type - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出获取到的模块类型 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_Loader::ModulePlugin_Loader_Find(LPCXSTR lpszMethodName, int* pInt_Type) -{ - ModulePlugin_IsErrorOccur = false; - - if (NULL == lpszMethodName) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_PARAMENT; - return false; - } - st_Locker.lock_shared(); - unordered_map::const_iterator stl_MapIterator = stl_MapLoader.find(lpszMethodName); - if (stl_MapIterator == stl_MapLoader.end()) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; - st_Locker.unlock_shared(); - return false; - } - if (NULL != pInt_Type) - { - *pInt_Type = stl_MapIterator->second.nType; - } - st_Locker.unlock_shared(); - return true; -} -/******************************************************************** -函数名称:ModulePlugin_LibCore_Get -函数功能:获取插件基础信息函数 - 参数.一:lpszMethodName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:要操作的模块句柄 - 参数.二:ptszPluginName - In/Out:Out - 类型:字符指针 - 可空:N - 意思:处理名称 - 参数.三:ptszPluginVersion - In/Out:Out - 类型:字符指针 - 可空:N - 意思:版本号.使用x.x.x.x 格式 - 参数.四:ptszPluginAuthor - In/Out:Out - 类型:字符指针 - 可空:N - 意思:作者 - 参数.五:ptszPluginDesc - In/Out:Out - 类型:字符指针 - 可空:N - 意思:插件描述 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_Loader::ModulePlugin_Loader_Get(LPCXSTR lpszMethodName, XCHAR* ptszPluginName /* = NULL */, XCHAR* ptszPluginVersion /* = NULL */, XCHAR* ptszPluginAuthor /* = NULL */, XCHAR* ptszPluginDesc /* = NULL */) -{ - ModulePlugin_IsErrorOccur = false; - - if (NULL == ptszPluginName || NULL == ptszPluginVersion || NULL == ptszPluginAuthor || NULL == ptszPluginDesc) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_PARAMENT; - return false; - } - st_Locker.lock_shared(); - unordered_map::const_iterator stl_MapIterator = stl_MapLoader.find(lpszMethodName); - if (stl_MapIterator == stl_MapLoader.end()) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; - st_Locker.unlock_shared(); - return false; - } - if (NULL != ptszPluginName) - { - _tcsxcpy(ptszPluginName, stl_MapIterator->second.tszModuleName); - } - if (NULL != ptszPluginVersion) - { - _tcsxcpy(ptszPluginVersion, stl_MapIterator->second.tszModuleVer); - } - if (NULL != ptszPluginAuthor) - { - _tcsxcpy(ptszPluginAuthor, stl_MapIterator->second.tszModuleAuthor); - } - if (NULL != ptszPluginDesc) - { - _tcsxcpy(ptszPluginDesc, stl_MapIterator->second.tszModuleDesc); - } - st_Locker.unlock_shared(); - return true; -} -/******************************************************************** -函数名称:ModulePlugin_Loader_GetForModule -函数功能:通过模块名称获取模块信息 - 参数.一:lpszModuleName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:要操作的模块名称 - 参数.二:ptszPluginName - In/Out:Out - 类型:字符指针 - 可空:N - 意思:处理名称 - 参数.三:ptszPluginVersion - In/Out:Out - 类型:字符指针 - 可空:N - 意思:版本号.使用x.x.x.x 格式 - 参数.四:ptszPluginAuthor - In/Out:Out - 类型:字符指针 - 可空:N - 意思:作者 - 参数.五:ptszPluginDesc - In/Out:Out - 类型:字符指针 - 可空:N - 意思:插件描述 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_Loader::ModulePlugin_Loader_GetForModule(LPCXSTR lpszModuleName, XCHAR* ptszPluginName /* = NULL */, XCHAR* ptszPluginVersion /* = NULL */, XCHAR* ptszPluginAuthor /* = NULL */, XCHAR* ptszPluginDesc /* = NULL */) -{ - ModulePlugin_IsErrorOccur = false; - - bool bFound = false; - st_Locker.lock_shared(); - for (auto stl_MapIterator = stl_MapLoader.begin(); stl_MapIterator != stl_MapLoader.end(); stl_MapIterator++) - { - if (0 == _tcsxnicmp(lpszModuleName, stl_MapIterator->second.tszModuleFile, _tcsxlen(stl_MapIterator->second.tszModuleFile))) - { - if (NULL != ptszPluginName) - { - _tcsxcpy(ptszPluginName, stl_MapIterator->second.tszModuleName); - } - if (NULL != ptszPluginVersion) - { - _tcsxcpy(ptszPluginVersion, stl_MapIterator->second.tszModuleVer); - } - if (NULL != ptszPluginAuthor) - { - _tcsxcpy(ptszPluginAuthor, stl_MapIterator->second.tszModuleAuthor); - } - if (NULL != ptszPluginDesc) - { - _tcsxcpy(ptszPluginDesc, stl_MapIterator->second.tszModuleDesc); - } - bFound = true; - break; - } - } - st_Locker.unlock_shared(); - - if (!bFound) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; - return false; - } - return true; -} -/******************************************************************** -函数名称:ModulePlugin_Loader_Exec -函数功能:执行一次插件 - 参数.一:lpszMethodName - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要执行的方法 - 参数.二:pppHDRList - In/Out:In - 类型:三级指针 - 可空:N - 意思:HTTP请求的URL参数列表 - 参数.三:nListCount - In/Out:In - 类型:整数型 - 可空:N - 意思:输入列表个数 - 参数.四:pInt_HTTPCode - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出返回的HTTPCODE值 - 参数.五:ptszMsgBuffer - In/Out:Out - 类型:字符指针 - 可空:N - 意思:输出负载的内容 - 参数.六:pInt_MsgLen - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出内容大小 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_Loader::ModulePlugin_Loader_Exec(LPCXSTR lpszMethodName, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen) -{ - ModulePlugin_IsErrorOccur = false; - - if (NULL == lpszMethodName) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_PARAMENT; - return false; - } - st_Locker.lock_shared(); - unordered_map::const_iterator stl_MapIterator = stl_MapLoader.find(lpszMethodName); - if (stl_MapIterator == stl_MapLoader.end()) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; - st_Locker.unlock_shared(); - return false; - } - - if (0 == stl_MapIterator->second.nType) - { - if (!ModulePlugin_LibCore_Exec(stl_MapIterator->second.xhToken, pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen)) - { - st_Locker.unlock_shared(); - return false; - } - } - else - { - if (!ModulePlugin_LuaCore_Exec(stl_MapIterator->second.xhToken, pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen)) - { - st_Locker.unlock_shared(); - return false; - } - } - st_Locker.unlock_shared(); - return true; -} -/******************************************************************** -函数名称:ModulePlugin_Loader_Destory -函数功能:销毁加载器 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_Loader::ModulePlugin_Loader_Destory() -{ - ModulePlugin_IsErrorOccur = false; - - ModulePlugin_LibCore_Destroy(); - ModulePlugin_LuaCore_Destroy(); - - st_Locker.lock(); - stl_MapLoader.clear(); - st_Locker.unlock(); - return true; -} \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.h b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.h deleted file mode 100644 index 35247ad5..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_Loader/ModulePlugin_Loader.h +++ /dev/null @@ -1,43 +0,0 @@ -#pragma once -/******************************************************************** -// Created: 2022/04/20 16:35:38 -// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_Loader\ModulePlugin_Loader.h -// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_Loader -// File Base: ModulePlugin_Loader -// File Ext: h -// Project: XEngine(网络通信引擎) -// Author: qyt -// Purpose: 插件加载工具 -// History: -*********************************************************************/ -typedef struct -{ - XCHAR tszModuleFile[XPATH_MAX]; - XCHAR tszModuleName[128]; - XCHAR tszModuleAuthor[128]; - XCHAR tszModuleDesc[128]; - XCHAR tszModuleVer[128]; - - XNETHANDLE xhToken; - int nType; -}PLUGINCORE_LOADER, * LPPLUGINCORE_LOADER; - -class CModulePlugin_Loader -{ -public: - CModulePlugin_Loader(); - ~CModulePlugin_Loader(); -public: - bool ModulePlugin_Loader_Init(); - bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleName, int nType, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); - bool ModulePlugin_Loader_Find(LPCXSTR lpszMethodName, int* pInt_Type); - bool ModulePlugin_Loader_Get(LPCXSTR lpszMethodName, XCHAR* ptszPluginName = NULL, XCHAR* ptszPluginVersion = NULL, XCHAR* ptszPluginAuthor = NULL, XCHAR* ptszPluginDesc = NULL); - bool ModulePlugin_Loader_GetForModule(LPCXSTR lpszModuleName, XCHAR* ptszPluginName = NULL, XCHAR* ptszPluginVersion = NULL, XCHAR* ptszPluginAuthor = NULL, XCHAR* ptszPluginDesc = NULL); - bool ModulePlugin_Loader_Exec(LPCXSTR lpszMethodName, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen); - bool ModulePlugin_Loader_Destory(); -protected: -private: - shared_mutex st_Locker; -private: - unordered_map stl_MapLoader; -}; diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp deleted file mode 100644 index dd98a5bc..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.cpp +++ /dev/null @@ -1,390 +0,0 @@ -#include "pch.h" -#include "ModulePlugin_LuaCore.h" -/******************************************************************** -// Created: 2022/11/30 16:18:24 -// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_LuaCore\ModulePlugin_LuaCore.cpp -// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_LuaCore -// File Base: ModulePlugin_LuaCore -// File Ext: cpp -// Project: XEngine(网络通信引擎) -// Author: qyt -// Purpose: LUA脚本你插件 -// History: -*********************************************************************/ -CModulePlugin_LuaCore::CModulePlugin_LuaCore() -{ -} -CModulePlugin_LuaCore::~CModulePlugin_LuaCore() -{ -} -////////////////////////////////////////////////////////////////////////// -// 公有函数 -////////////////////////////////////////////////////////////////////////// -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Init -函数功能:初始化插件核心系统 -返回值 - 类型:逻辑型 - 意思:是否成功初始化 -备注: -*********************************************************************/ -bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Init() -{ - ModulePlugin_IsErrorOccur = false; - return true; -} -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Push -函数功能:添加一个标准的插件到插件框架中 - 参数.一:pxhModule - In/Out:Out - 类型:模块句柄 - 可空:N - 意思:导出一个加载成功的模块句柄 - 参数.二:lpszPluginFile - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:插件模块路径 - 参数.三:pSt_PluginParameter - In/Out:In - 类型:数据结构指针 - 可空:Y - 意思:输入插件初始化参数 -返回值 - 类型:逻辑型 - 意思:是否成功添加 -备注: -*********************************************************************/ -bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter) -{ - ModulePlugin_IsErrorOccur = false; - - if (!BaseLib_Handle_Create(pxhModule)) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = BaseLib_GetLastError(); - return false; - } - if (!ModulePlugin_LuaCore_Add(*pxhModule, lpszPluginFile, pSt_PluginParameter)) - { - return false; - } - return true; -} -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Exec -函数功能:执行一次 - 参数.一:xhModule - In/Out:In - 类型:句柄 - 可空:N - 意思:输入模块句柄 - 参数.二:pppHDRList - In/Out:In - 类型:三级指针 - 可空:N - 意思:HTTP请求的URL参数列表 - 参数.三:nListCount - In/Out:In - 类型:整数型 - 可空:N - 意思:输入列表个数 - 参数.四:pInt_HTTPCode - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出返回的HTTPCODE值 - 参数.五:ptszMsgBuffer - In/Out:Out - 类型:字符指针 - 可空:N - 意思:输出负载的内容 - 参数.六:pInt_MsgLen - In/Out:Out - 类型:整数型指针 - 可空:N - 意思:输出内容大小 - 参数.七:lpszMsgBufer - In/Out:Out - 类型:常量字符指针 - 可空:Y - 意思:输入负载内容 - 参数.八:nMsgLen - In/Out:Out - 类型:整数型指针 - 可空:Y - 意思:输入负载大小 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer /* = NULL */, int nMsgLen /* = 0 */) -{ - ModulePlugin_IsErrorOccur = false; - - st_csStl.lock_shared(); - //执行指定插件函数 - unordered_map::const_iterator stl_MapIterator = stl_MapFrameWork.find(xhModule); - if (stl_MapIterator == stl_MapFrameWork.end()) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; - st_csStl.unlock_shared(); - return false; - } -#if (1 == _XENGINE_BUILD_SWITCH_LUA) - if (0 == lua_getglobal(stl_MapIterator->second.pSt_LuaState, "PluginCore_Call")) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPCALL; - st_csStl.unlock_shared(); - return false; - } - XCHAR tszURLParam[XPATH_MAX]; - memset(tszURLParam, '\0', XPATH_MAX); - - for (int i = 1; i < nListCount; i++) - { - if (i > 1) - { - _tcsxcat(tszURLParam, "&"); - } - _tcsxcat(tszURLParam, (*pppHDRList)[i]); - } - lua_pushstring(stl_MapIterator->second.pSt_LuaState, tszURLParam); - lua_pushinteger(stl_MapIterator->second.pSt_LuaState, nListCount - 1); - lua_pushstring(stl_MapIterator->second.pSt_LuaState, lpszMsgBufer); - lua_pushinteger(stl_MapIterator->second.pSt_LuaState, nMsgLen); - if (LUA_OK != lua_pcall(stl_MapIterator->second.pSt_LuaState, 4, 1, 0)) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; - st_csStl.unlock_shared(); - return false; - } - lua_getglobal(stl_MapIterator->second.pSt_LuaState, "PInt_HTTPCode"); - *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, "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; -} -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Get -函数功能:获取插件基础信息函数 - 参数.一:xhModule - In/Out:In - 类型:句柄 - 可空:N - 意思:要操作的模块句柄 - 参数.二:ptszPluginName - In/Out:Out - 类型:字符指针 - 可空:N - 意思:处理名称 - 参数.三:ptszPluginVersion - In/Out:Out - 类型:字符指针 - 可空:N - 意思:版本号.使用x.x.x.x 格式 - 参数.四:ptszPluginAuthor - In/Out:Out - 类型:字符指针 - 可空:N - 意思:作者 - 参数.五:ptszPluginDesc - In/Out:Out - 类型:字符指针 - 可空:N - 意思:插件描述 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) -{ - ModulePlugin_IsErrorOccur = false; - - st_csStl.lock_shared(); - unordered_map::const_iterator stl_MapIterator = stl_MapFrameWork.find(xhModule); - if (stl_MapIterator == stl_MapFrameWork.end()) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_NOTFOUND; - st_csStl.unlock_shared(); - return false; - } - _tcsxcpy(ptszPluginName, stl_MapIterator->second.tszModuleName); - _tcsxcpy(ptszPluginVersion, stl_MapIterator->second.tszModuleVer); - _tcsxcpy(ptszPluginAuthor, stl_MapIterator->second.tszModuleAuthor); - _tcsxcpy(ptszPluginDesc, stl_MapIterator->second.tszModuleDesc); - st_csStl.unlock_shared(); - return true; -} -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Destroy -函数功能:销毁插件核心并且清理资源 -返回值 - 类型:逻辑型 - 意思:是否成功销毁 -备注: -*********************************************************************/ -bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Destroy() -{ - ModulePlugin_IsErrorOccur = false; - -#if (1 == _XENGINE_BUILD_SWITCH_LUA) - //清理STL元素空间 - st_csStl.lock(); - unordered_map::iterator stl_MapIterator = stl_MapFrameWork.begin(); - for (; stl_MapIterator != stl_MapFrameWork.end(); stl_MapIterator++) - { - lua_getglobal(stl_MapIterator->second.pSt_LuaState, "PluginCore_UnInit"); - lua_pcall(stl_MapIterator->second.pSt_LuaState, 0, 0, 0); - - lua_close(stl_MapIterator->second.pSt_LuaState); - } - stl_MapFrameWork.clear(); - st_csStl.unlock(); -#endif - return true; -} -////////////////////////////////////////////////////////////////////////// -// 保护函数 -////////////////////////////////////////////////////////////////////////// -/******************************************************************** -函数名称:ModulePlugin_LuaCore_Add -函数功能:添加一个指定模块到插件核心系统当中 - 参数.一:xhNet - In/Out:In - 类型:模块句柄 - 可空:N - 意思:输入一个新的模块句柄 - 参数.二:lpszPluginFile - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:插件模块路径 - 参数.三:pSt_PluginParameter - In/Out:In - 类型:数据结构指针 - 可空:Y - 意思:输入插件初始化参数 -返回值 - 类型:逻辑型 - 意思:是否成功执行 -备注: -*********************************************************************/ -bool CModulePlugin_LuaCore::ModulePlugin_LuaCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter /* = NULL */) -{ - ModulePlugin_IsErrorOccur = false; - - if (NULL == lpszPluginFile) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_PARAMENT; - return false; - } -#if (1 == _XENGINE_BUILD_SWITCH_LUA) - PLUGINCORE_LUAFRAMEWORK st_LuaCore; - memset(&st_LuaCore, '\0', sizeof(PLUGINCORE_LUAFRAMEWORK)); - - st_LuaCore.pSt_LuaState = luaL_newstate(); - _tcsxcpy(st_LuaCore.tszModuleFile, lpszPluginFile); - - if (NULL == st_LuaCore.pSt_LuaState) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_MALLOC; - return false; - } - luaL_openlibs(st_LuaCore.pSt_LuaState); - - if (LUA_OK != luaL_loadfile(st_LuaCore.pSt_LuaState, lpszPluginFile)) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_OPENDL; - return false; - } - if (LUA_OK != lua_pcall(st_LuaCore.pSt_LuaState, 0, 0, 0)) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; - return false; - } - //得到初始化函数 - if (0 == lua_getglobal(st_LuaCore.pSt_LuaState, "PluginCore_Init")) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPINIT; - return false; - } - lua_newtable(st_LuaCore.pSt_LuaState); - - lua_pushstring(st_LuaCore.pSt_LuaState, "APIVersion"); - lua_pushstring(st_LuaCore.pSt_LuaState, pSt_PluginParameter->tszAPIVersion); - lua_settable(st_LuaCore.pSt_LuaState, -3); - - lua_pushstring(st_LuaCore.pSt_LuaState, "XEngineVer"); - lua_pushstring(st_LuaCore.pSt_LuaState, pSt_PluginParameter->tszXEngineVer); - lua_settable(st_LuaCore.pSt_LuaState, -3); - - if (LUA_OK != lua_pcall(st_LuaCore.pSt_LuaState, 1, 1, 0)) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; - return false; - } - if (!lua_toboolean(st_LuaCore.pSt_LuaState, -1)) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; - return false; - } - lua_pop(st_LuaCore.pSt_LuaState, 1); - //得到信息函数 - if (0 == lua_getglobal(st_LuaCore.pSt_LuaState, "PluginCore_GetInfo")) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_FPINIT; - return false; - } - if (LUA_OK != lua_pcall(st_LuaCore.pSt_LuaState, 0, 4, 0)) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; - return false; - } - if (!lua_toboolean(st_LuaCore.pSt_LuaState, -1)) - { - ModulePlugin_IsErrorOccur = true; - ModulePlugin_dwErrorCode = ERROR_XENGINE_APISERVICE_MODULE_PLUGIN_EXECTION; - return false; - } - // Lua 栈从右到左是逆序压栈的,所以要从 -4 开始取 - _tcsxcpy(st_LuaCore.tszModuleName, lua_tostring(st_LuaCore.pSt_LuaState, -4)); - _tcsxcpy(st_LuaCore.tszModuleVer, lua_tostring(st_LuaCore.pSt_LuaState, -3)); - _tcsxcpy(st_LuaCore.tszModuleAuthor, lua_tostring(st_LuaCore.pSt_LuaState, -2)); - _tcsxcpy(st_LuaCore.tszModuleDesc, lua_tostring(st_LuaCore.pSt_LuaState, -1)); - lua_pop(st_LuaCore.pSt_LuaState, 4); - - st_csStl.lock(); - stl_MapFrameWork.insert(make_pair(xhNet, st_LuaCore)); - st_csStl.unlock(); -#endif - return true; -} \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.h b/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.h deleted file mode 100644 index 5e231cd1..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/ModulePlugin_LuaCore/ModulePlugin_LuaCore.h +++ /dev/null @@ -1,42 +0,0 @@ -#pragma once -/******************************************************************** -// Created: 2022/11/30 16:18:00 -// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_LuaCore\ModulePlugin_LuaCore.h -// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\ModulePlugin_LuaCore -// File Base: ModulePlugin_LuaCore -// File Ext: h -// Project: XEngine(网络通信引擎) -// Author: qyt -// Purpose: LUA脚本你插件 -// History: -*********************************************************************/ -typedef struct -{ - XCHAR tszModuleFile[XPATH_MAX]; - XCHAR tszModuleName[128]; - XCHAR tszModuleAuthor[128]; - XCHAR tszModuleDesc[128]; - XCHAR tszModuleVer[64]; -#if (1 == _XENGINE_BUILD_SWITCH_LUA) - lua_State* pSt_LuaState; -#endif -}PLUGINCORE_LUAFRAMEWORK; - -class CModulePlugin_LuaCore -{ -public: - CModulePlugin_LuaCore(); - ~CModulePlugin_LuaCore(); -public: - bool ModulePlugin_LuaCore_Init(); - bool ModulePlugin_LuaCore_Push(XNETHANDLE* pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); - bool ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer = NULL, int nMsgLen = 0); - bool ModulePlugin_LuaCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); - bool ModulePlugin_LuaCore_Destroy(); -protected: - bool ModulePlugin_LuaCore_Add(XNETHANDLE xhNet, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter = NULL); -private: - shared_mutex st_csStl; -private: - unordered_map stl_MapFrameWork; -}; diff --git a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.def b/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.def deleted file mode 100644 index 8ebbc956..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.def +++ /dev/null @@ -1,24 +0,0 @@ -LIBRARY - -EXPORTS - ModulePlugin_GetLastError - - ModulePlugin_LibCore_Init - ModulePlugin_LibCore_Push - ModulePlugin_LibCore_Exec - ModulePlugin_LibCore_Get - ModulePlugin_LibCore_Destroy - - ModulePlugin_LuaCore_Init - ModulePlugin_LuaCore_Push - ModulePlugin_LuaCore_Exec - ModulePlugin_LuaCore_Get - ModulePlugin_LuaCore_Destroy - - ModulePlugin_Loader_Init - ModulePlugin_Loader_Insert - ModulePlugin_Loader_Find - ModulePlugin_Loader_Get - ModulePlugin_Loader_GetForModule - ModulePlugin_Loader_Exec - ModulePlugin_Loader_Destory \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj b/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj deleted file mode 100644 index 81d91424..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj +++ /dev/null @@ -1,270 +0,0 @@ - - - - - Debug - ARM64 - - - Debug - Win32 - - - Release - ARM64 - - - Release - Win32 - - - Debug - x64 - - - Release - x64 - - - - 16.0 - Win32Proj - {cb443280-e283-44cd-b956-52c404a51db6} - XEngineModulePlugin - 10.0 - - - - DynamicLibrary - true - v143 - Unicode - - - DynamicLibrary - false - v143 - true - Unicode - - - DynamicLibrary - true - v143 - Unicode - - - DynamicLibrary - true - v143 - Unicode - - - DynamicLibrary - false - v143 - true - Unicode - - - DynamicLibrary - false - v143 - true - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - true - $(XEngine_Include);..\XEngine_ModulePlugin;$(IncludePath) - $(XEngine_Lib32);$(LibraryPath) - - - false - $(XEngine_Include);$(IncludePath) - $(XEngine_Lib32);$(LibraryPath) - - - true - $(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;..\XEngine_ModulePlugin;$(IncludePath) - $(XEngine_Lib64);$(LibraryPath) - - - true - $(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;..\XEngine_ModulePlugin;$(IncludePath) - $(XEngine_LibArm64);$(LibraryPath) - - - false - $(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath) - $(XEngine_Lib64);$(LibraryPath) - - - false - $(XEngine_Include);../../XEngine_ThirdPart/jsoncpp;$(IncludePath) - $(XEngine_LibArm64);$(LibraryPath) - - - - Level3 - true - WIN32;_DEBUG;XENGINEMODULEPLUGIN_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - Use - pch.h - - - Windows - true - false - XEngine_ModulePlugin.def - - - - - Level3 - true - true - true - WIN32;NDEBUG;XENGINEMODULEPLUGIN_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - Use - pch.h - /utf-8 %(AdditionalOptions) - - - Windows - true - true - true - false - XEngine_ModulePlugin.def - - - - - Level3 - true - _DEBUG;XENGINEMODULEPLUGIN_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - Use - pch.h - - - Windows - true - false - XEngine_ModulePlugin.def - - - - - Level3 - true - _DEBUG;XENGINEMODULEPLUGIN_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - Use - pch.h - - - Windows - true - false - XEngine_ModulePlugin.def - - - - - Level3 - true - true - true - NDEBUG;XENGINEMODULEPLUGIN_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - Use - pch.h - /utf-8 %(AdditionalOptions) - - - Windows - true - true - true - false - XEngine_ModulePlugin.def - - - - - Level3 - true - true - true - NDEBUG;XENGINEMODULEPLUGIN_EXPORTS;_WINDOWS;_USRDLL;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) - true - Use - pch.h - /utf-8 %(AdditionalOptions) - - - Windows - true - true - true - false - XEngine_ModulePlugin.def - - - - - - - - - - - - - - - - - - Create - Create - Create - Create - Create - Create - - - - - - - - - \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj.filters b/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj.filters deleted file mode 100644 index 85756ef3..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj.filters +++ /dev/null @@ -1,80 +0,0 @@ - - - - - {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 - - - {5fd6b4af-2a78-499a-ab04-ab8643823743} - - - {c2bcf30b-a119-4ab5-85e5-2c16ca255b9a} - - - {716c1e27-8905-4321-a369-67cf7462cb08} - - - {c455a41d-68d1-42be-a090-0df10d4de4ed} - - - {41da9b84-643e-4284-9018-62fae573d971} - - - {8a2f82d7-3a16-438f-8533-84d44cee2ff2} - - - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件 - - - 头文件\ModulePlugin_Loader - - - 头文件\ModulePlugin_LibCore - - - 头文件\ModulePlugin_LuaCore - - - - - 源文件 - - - 源文件 - - - 源文件\ModulePlugin_Loader - - - 源文件\ModulePlugin_LibCore - - - 源文件\ModulePlugin_LuaCore - - - - - 源文件 - - - \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj.user b/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj.user deleted file mode 100644 index 88a55094..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/XEngine_ModulePlugin.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/dllmain.cpp b/XEngine_Source/XEngine_ModulePlugin/dllmain.cpp deleted file mode 100644 index 594ff212..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/dllmain.cpp +++ /dev/null @@ -1,19 +0,0 @@ -// dllmain.cpp : 定义 DLL 应用程序的入口点。 -#include "pch.h" - -bool APIENTRY DllMain( HMODULE hModule, - XLONG ul_reason_for_call, - XPVOID lpReserved - ) -{ - switch (ul_reason_for_call) - { - case DLL_PROCESS_ATTACH: - case DLL_THREAD_ATTACH: - case DLL_THREAD_DETACH: - case DLL_PROCESS_DETACH: - break; - } - return true; -} - diff --git a/XEngine_Source/XEngine_ModulePlugin/framework.h b/XEngine_Source/XEngine_ModulePlugin/framework.h deleted file mode 100644 index 80cbbc9b..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/framework.h +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once - -#define WIN32_LEAN_AND_MEAN // 从 Windows 头文件中排除极少使用的内容 -// Windows 头文件 -#include diff --git a/XEngine_Source/XEngine_ModulePlugin/pch.cpp b/XEngine_Source/XEngine_ModulePlugin/pch.cpp deleted file mode 100644 index a5bd4264..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/pch.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include "pch.h" -#include "ModulePlugin_LibCore/ModulePlugin_LibCore.h" -#include "ModulePlugin_LuaCore/ModulePlugin_LuaCore.h" -#include "ModulePlugin_Loader/ModulePlugin_Loader.h" -/******************************************************************** -// Created: 2022/04/20 16:39:27 -// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\pch.cpp -// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin -// File Base: pch -// File Ext: cpp -// Project: XEngine(网络通信引擎) -// Author: qyt -// Purpose: 插件核心导出函数实现 -// History: -*********************************************************************/ -bool ModulePlugin_IsErrorOccur = false; -XLONG ModulePlugin_dwErrorCode = 0; -////////////////////////////////////////////////////////////////////////// -CModulePlugin_LibCore m_PluginLib; -CModulePlugin_LuaCore m_PluginLua; -CModulePlugin_Loader m_PluginLoader; -////////////////////////////////////////////////////////////////////////// -// 导出函数实现 -////////////////////////////////////////////////////////////////////////// -extern "C" XLONG ModulePlugin_GetLastError(int* pInt_SysError) -{ - if (NULL != pInt_SysError) - { - *pInt_SysError = errno; - } - return ModulePlugin_dwErrorCode; -} -/********************************************************************************* -* 插件框架导出函数定义 * -*********************************************************************************/ -extern "C" bool ModulePlugin_LibCore_Init() -{ - return m_PluginLib.ModulePlugin_LibCore_Init(); -} -extern "C" bool ModulePlugin_LibCore_Push(XNETHANDLE * pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter) -{ - return m_PluginLib.ModulePlugin_LibCore_Push(pxhModule, lpszPluginFile, pSt_PluginParameter); -} -extern "C" bool ModulePlugin_LibCore_Exec(XNETHANDLE xhModule, XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer, int nMsgLen) -{ - return m_PluginLib.ModulePlugin_LibCore_Exec(xhModule, pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen); -} -extern "C" bool ModulePlugin_LibCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) -{ - return m_PluginLib.ModulePlugin_LibCore_Get(xhModule, ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); -} -extern "C" bool ModulePlugin_LibCore_Destroy() -{ - return m_PluginLib.ModulePlugin_LibCore_Destroy(); -} -/********************************************************************************* -* LUA插件框架导出函数定义 * -*********************************************************************************/ -extern "C" bool ModulePlugin_Loader_Init() -{ - return m_PluginLoader.ModulePlugin_Loader_Init(); -} -extern "C" bool ModulePlugin_LuaCore_Init() -{ - return m_PluginLua.ModulePlugin_LuaCore_Init(); -} -extern "C" bool ModulePlugin_LuaCore_Push(XNETHANDLE * pxhModule, LPCXSTR lpszPluginFile, XENGINE_PLUGINPARAM* pSt_PluginParameter) -{ - return m_PluginLua.ModulePlugin_LuaCore_Push(pxhModule, lpszPluginFile, pSt_PluginParameter); -} -extern "C" bool ModulePlugin_LuaCore_Exec(XNETHANDLE xhModule, XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBufer, int nMsgLen) -{ - return m_PluginLua.ModulePlugin_LuaCore_Exec(xhModule, pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBufer, nMsgLen); -} -extern "C" bool ModulePlugin_LuaCore_Get(XNETHANDLE xhModule, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) -{ - return m_PluginLua.ModulePlugin_LuaCore_Get(xhModule, ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); -} -extern "C" bool ModulePlugin_LuaCore_Destroy() -{ - return m_PluginLua.ModulePlugin_LuaCore_Destroy(); -} -/********************************************************************************* -* 加载器导出函数定义 * -*********************************************************************************/ -extern "C" bool ModulePlugin_Loader_Insert(LPCXSTR lpszModuleName, int nType, XENGINE_PLUGINPARAM* pSt_PluginParameter) -{ - return m_PluginLoader.ModulePlugin_Loader_Insert(lpszModuleName, nType, pSt_PluginParameter); -} -extern "C" bool ModulePlugin_Loader_Find(LPCXSTR lpszMethodName, int* pInt_Type) -{ - return m_PluginLoader.ModulePlugin_Loader_Find(lpszMethodName, pInt_Type); -} -extern "C" bool ModulePlugin_Loader_Get(LPCXSTR lpszMethodName, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) -{ - return m_PluginLoader.ModulePlugin_Loader_Get(lpszMethodName, ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); -} -extern "C" bool ModulePlugin_Loader_GetForModule(LPCXSTR lpszModuleName, XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc) -{ - return m_PluginLoader.ModulePlugin_Loader_GetForModule(lpszModuleName, ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); -} -extern "C" bool ModulePlugin_Loader_Exec(LPCXSTR lpszMethodName, XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen) -{ - return m_PluginLoader.ModulePlugin_Loader_Exec(lpszMethodName, pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen); -} -extern "C" bool ModulePlugin_Loader_Destory() -{ - return m_PluginLoader.ModulePlugin_Loader_Destory(); -} \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModulePlugin/pch.h b/XEngine_Source/XEngine_ModulePlugin/pch.h deleted file mode 100644 index bbc0e4a0..00000000 --- a/XEngine_Source/XEngine_ModulePlugin/pch.h +++ /dev/null @@ -1,61 +0,0 @@ -// pch.h: 这是预编译标头文件。 -// 下方列出的文件仅编译一次,提高了将来生成的生成性能。 -// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 -// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。 -// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。 - -#ifndef PCH_H -#define PCH_H - -#ifdef _MSC_BUILD -// 添加要在此处预编译的标头 -#include "framework.h" -#include -#else -#include -#endif -#endif //PCH_H -#include "../XEngine_BuildSwitch.h" -#if (1 == _XENGINE_BUILD_SWITCH_LUA) -#include -#endif -#include -#include -#include -#include -#include -#include -#include -#include -#include -using namespace std; -#include -#include -#include -#include -#include -#include "../XEngine_UserProtocol.h" -#include "ModulePlugin_Define.h" -#include "ModulePlugin_Error.h" -/******************************************************************** -// Created: 2022/04/20 16:17:24 -// File Name: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin\pch.h -// File Path: D:\XEngine_APIService\XEngine_Source\XEngine_ModulePlugin -// File Base: pch -// File Ext: h -// Project: XEngine(网络通信引擎) -// Author: qyt -// Purpose: 插件核心公有头文件 -// History: -*********************************************************************/ -extern bool ModulePlugin_IsErrorOccur; -extern XLONG ModulePlugin_dwErrorCode; - - -#ifdef _MSC_BUILD -#pragma comment(lib,"XEngine_BaseLib/XEngine_BaseLib") - -#define XFreeModule FreeLibrary -#else -#define XFreeModule dlclose -#endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h index 273e5178..2a64688c 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h +++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h @@ -1293,4 +1293,28 @@ extern "C" bool ModuleProtocol_Parse_Machine(LPCXSTR lpszMsgBuffer, int nMsgLen, 意思:是否成功 备注: *********************************************************************/ -extern "C" bool ModuleProtocol_Parse_Oil(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_OILINFO* pSt_OilInfo); \ No newline at end of file +extern "C" bool ModuleProtocol_Parse_Oil(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_OILINFO* pSt_OilInfo); +/******************************************************************** +函数名称:ModuleProtocol_Parse_AVRecord +函数功能:解析屏幕录制协议 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入缓冲区大小 + 参数.三:pSt_AVRecord + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:输出解析后的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool ModuleProtocol_Parse_AVRecord(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_AVRECORD* pSt_AVRecord); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp index 084e2d04..7add32f6 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp +++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.cpp @@ -1277,4 +1277,69 @@ bool CModuleProtocol_Parse::ModuleProtocol_Parse_Oil(LPCXSTR lpszMsgBuffer, int _tcsxcpy(pSt_OilInfo->tszNextTime, st_JsonObject["next_update_time"].asCString()); } return true; +} +/******************************************************************** +函数名称:ModuleProtocol_Parse_AVRecord +函数功能:解析屏幕录制协议 + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的缓冲区 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入缓冲区大小 + 参数.三:pSt_AVRecord + In/Out:Out + 类型:数据结构指针 + 可空:N + 意思:输出解析后的信息 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CModuleProtocol_Parse::ModuleProtocol_Parse_AVRecord(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_AVRECORD* pSt_AVRecord) +{ + 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; + } + + Json::Value st_JsonObject = st_JsonRoot["data"]; + + if (!st_JsonObject["tszVideoDevice"].isNull()) + { + _tcsxcpy(pSt_AVRecord->tszVideoDevice, st_JsonObject["tszVideoDevice"].asCString()); + } + if (!st_JsonObject["tszAudioDevice"].isNull()) + { + _tcsxcpy(pSt_AVRecord->tszAudioDevice, st_JsonObject["tszAudioDevice"].asCString()); + } + if (!st_JsonObject["tszFilePath"].isNull()) + { + _tcsxcpy(pSt_AVRecord->tszFilePath, st_JsonObject["tszFilePath"].asCString()); + } + if (!st_JsonObject["tszRsolution"].isNull()) + { + _tcsxcpy(pSt_AVRecord->tszRsolution, st_JsonObject["tszRsolution"].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 7ebf228f..bc2ae23c 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h +++ b/XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Parse/ModuleProtocol_Parse.h @@ -34,5 +34,6 @@ class CModuleProtocol_Parse bool ModuleProtocol_Parse_Weather(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_WEATHERINFO* pSt_WeatherInfo); bool ModuleProtocol_Parse_Machine(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_MACHINEINFO* pSt_MachineInfo); bool ModuleProtocol_Parse_Oil(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_OILINFO* pSt_OilInfo); + bool ModuleProtocol_Parse_AVRecord(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_AVRECORD* pSt_AVRecord); 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 86952f3b..eec4012c 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def +++ b/XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def @@ -48,4 +48,5 @@ EXPORTS ModuleProtocol_Parse_Deamon ModuleProtocol_Parse_Weather ModuleProtocol_Parse_Machine - ModuleProtocol_Parse_Oil \ No newline at end of file + ModuleProtocol_Parse_Oil + ModuleProtocol_Parse_AVRecord \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleProtocol/pch.cpp b/XEngine_Source/XEngine_ModuleProtocol/pch.cpp index 925217b3..e72da38d 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/pch.cpp +++ b/XEngine_Source/XEngine_ModuleProtocol/pch.cpp @@ -213,4 +213,8 @@ extern "C" bool ModuleProtocol_Parse_Machine(LPCXSTR lpszMsgBuffer, int nMsgLen, extern "C" bool ModuleProtocol_Parse_Oil(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_OILINFO* pSt_OilInfo) { return m_ProtocolParse.ModuleProtocol_Parse_Oil(lpszMsgBuffer, nMsgLen, pSt_OilInfo); +} +extern "C" bool ModuleProtocol_Parse_AVRecord(LPCXSTR lpszMsgBuffer, int nMsgLen, XENGINE_AVRECORD* pSt_AVRecord) +{ + return m_ProtocolParse.ModuleProtocol_Parse_AVRecord(lpszMsgBuffer, nMsgLen, pSt_AVRecord); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_ModuleProtocol/pch.h b/XEngine_Source/XEngine_ModuleProtocol/pch.h index c5292004..f65ef432 100644 --- a/XEngine_Source/XEngine_ModuleProtocol/pch.h +++ b/XEngine_Source/XEngine_ModuleProtocol/pch.h @@ -29,7 +29,6 @@ #include #include #include -#include #include #include #include "../XEngine_DependLibrary/XEngine_IPMacData/XEngine_Source/XIPMac_CommHdr.h" diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/BMIndex_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/BMIndex_Define.h index 303bfafc..1a5cdd69 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/BMIndex_Define.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/BMIndex_Define.h @@ -77,4 +77,4 @@ extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersi 意思:是否成功 备注: *********************************************************************/ -extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer = NULL, int nMsgLen = 0); \ No newline at end of file +extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer = NULL, int nMsgLen = 0, int* pInt_HTTPCode = NULL); \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.cpp index 4d40c692..412feb48 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.cpp @@ -95,11 +95,11 @@ void CPlugin_BMIndex::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPlugi 意思:是否成功 备注: *********************************************************************/ -bool CPlugin_BMIndex::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) +bool CPlugin_BMIndex::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode) { BMIndex_IsErrorOccur = false; - if ((NULL == pInt_HTTPCode) || (NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) + if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) { BMIndex_IsErrorOccur = true; BMIndex_dwErrorCode = ERROR_XENGINE_APISERVICE_PLUGIN_MODULE_BMINDEX_PARAMENT; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.h index cd27d6be..94f1f11b 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/Plugin_BMIndex/Plugin_BMIndex.h @@ -20,7 +20,7 @@ class CPlugin_BMIndex bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); void PluginCore_UnInit(); void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); - bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen); + bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode); protected: bool Plugin_Timezone_BMIndex(LPCXSTR lpszHigh, LPCXSTR lpszWeight, XCHAR* ptszMsgBufer, int* pInt_Len); private: diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.cpp index 1aeceb58..a94f30fb 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.cpp @@ -37,7 +37,7 @@ extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersi { return m_PluginBMIndex.PluginCore_GetInfo(ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); } -extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) +extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode) { - return m_PluginBMIndex.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen); + return m_PluginBMIndex.PluginCore_Call(pppHDRList, nListCount, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen, pInt_HTTPCode); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.h index bb8b5ac2..d579c232 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_BMIndex/pch.h @@ -25,7 +25,7 @@ #include #include #include -#include "../../XEngine_UserProtocol.h" +#include "../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_PluginExtension/PluginExtension_Define.h" #include "BMIndex_Define.h" #include "BMIndex_Error.h" using namespace std; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h index 36b849d3..d601d836 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/PluginMeter_Define.h @@ -130,4 +130,4 @@ extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersi 意思:是否成功 备注: *********************************************************************/ -extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer = NULL, int nMsgLen = 0); \ No newline at end of file +extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer = NULL, int nMsgLen = 0, int* pInt_HTTPCode = NULL); \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp index f5e8aafe..7fb0b1b8 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.cpp @@ -96,11 +96,11 @@ void CPlugin_Meter::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginV 意思:是否成功 备注: *********************************************************************/ -bool CPlugin_Meter::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) +bool CPlugin_Meter::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode) { Meter_IsErrorOccur = false; - if ((NULL == pInt_HTTPCode) || (NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) + if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) { Meter_IsErrorOccur = true; Meter_dwErrorCode = ERROR_XENGINE_APISERVICE_PLUGIN_MODULE_METER_PARAMENT; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h index cc60c973..b1292968 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/Plugin_Meter/Plugin_Meter.h @@ -20,7 +20,7 @@ class CPlugin_Meter bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); void PluginCore_UnInit(); void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); - bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen); + bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode); protected: bool Plugin_Meter_LengthConvert(int nSource, __int64x nValue, Json::Value *pSt_JsonObject); bool Plugin_Meter_TemperatureConvert(int nSource, __int64x nValue, Json::Value* pSt_JsonObject); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp index 3cd3db65..a96a7db6 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.cpp @@ -37,7 +37,7 @@ extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersi { return m_PluginMeter.PluginCore_GetInfo(ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); } -extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) +extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode) { - return m_PluginMeter.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen); + return m_PluginMeter.PluginCore_Call(pppHDRList, nListCount, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen, pInt_HTTPCode); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h index 023b8433..7475524c 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Meter/pch.h @@ -24,7 +24,7 @@ #include #include #include -#include "../../XEngine_UserProtocol.h" +#include "../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_PluginExtension/PluginExtension_Define.h" #include "PluginMeter_Define.h" #include "PluginMeter_Error.h" /******************************************************************** diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/PluginPass_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/PluginPass_Define.h index 2ab9815c..040f8c82 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/PluginPass_Define.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/PluginPass_Define.h @@ -77,4 +77,4 @@ extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersi 意思:是否成功 备注: *********************************************************************/ -extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer = NULL, int nMsgLen = 0); \ No newline at end of file +extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer = NULL, int nMsgLen = 0, int* pInt_HTTPCode = NULL); \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.cpp index 028989a9..215e49bc 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.cpp @@ -96,11 +96,11 @@ void CPlugin_Password::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPlug 意思:是否成功 备注: *********************************************************************/ -bool CPlugin_Password::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) +bool CPlugin_Password::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode) { Pass_IsErrorOccur = false; - if ((NULL == pInt_HTTPCode) || (NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) + if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) { Pass_IsErrorOccur = true; Pass_dwErrorCode = ERROR_XENGINE_APISERVICE_PLUGIN_MODULE_PASS_PARAMENT; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.h index b717fc53..732bc564 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/Plugin_Password/Plugin_Password.h @@ -20,7 +20,7 @@ class CPlugin_Password bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); void PluginCore_UnInit(); void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); - bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen); + bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode); protected: bool Plugin_Password_Creator(LPCXSTR lpszPassType, LPCXSTR lpszLength, XCHAR* ptszPassStr); private: diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.cpp index b62a0e52..a3d28bdd 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.cpp @@ -37,7 +37,7 @@ extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersi { return m_PluginPass.PluginCore_GetInfo(ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); } -extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) +extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode) { - return m_PluginPass.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen); + return m_PluginPass.PluginCore_Call(pppHDRList, nListCount, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen, pInt_HTTPCode); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.h index 4eb6ab8e..cd968651 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Password/pch.h @@ -20,7 +20,7 @@ #include #include #include -#include "../../XEngine_UserProtocol.h" +#include "../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_PluginExtension/PluginExtension_Define.h" #include "PluginPass_Define.h" #include "PluginPass_Error.h" using namespace std; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.cpp index cc3548dc..0ccf6471 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.cpp @@ -558,11 +558,11 @@ void CPlugin_Timezone::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPlug 意思:是否成功 备注: *********************************************************************/ -bool CPlugin_Timezone::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) +bool CPlugin_Timezone::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode) { Timezone_IsErrorOccur = false; - if ((NULL == pInt_HTTPCode) || (NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) + if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) { Timezone_IsErrorOccur = true; Timezone_dwErrorCode = ERROR_XENGINE_APISERVICE_PLUGIN_MODULE_TIMEZONE_PARAMENT; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.h index 5ccf34d8..f13ea2c1 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Plugin_Timezone/Plugin_Timezone.h @@ -26,7 +26,7 @@ class CPlugin_Timezone bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); void PluginCore_UnInit(); void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); - bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen); + bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode); protected: bool Plugin_Timezone_Count(XCHAR* ptszMsgBufer, int* pInt_Len); bool Plugin_Timezone_List(LPCXSTR lpszConvert, XCHAR* ptszMsgBufer, int* pInt_Len); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Timezone_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Timezone_Define.h index 2da5000f..643f4c5c 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Timezone_Define.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/Timezone_Define.h @@ -77,4 +77,4 @@ extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersi 意思:是否成功 备注: *********************************************************************/ -extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer = NULL, int nMsgLen = 0); \ No newline at end of file +extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer = NULL, int nMsgLen = 0, int* pInt_HTTPCode = NULL); \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.cpp index 21c52523..ca20ed60 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.cpp @@ -37,7 +37,7 @@ extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersi { return m_PluginTimes.PluginCore_GetInfo(ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); } -extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) +extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode) { - return m_PluginTimes.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen); + return m_PluginTimes.PluginCore_Call(pppHDRList, nListCount, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen, pInt_HTTPCode); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.h index e8af4870..23a0d442 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Timezone/pch.h @@ -24,7 +24,7 @@ #include #include #include -#include "../../XEngine_UserProtocol.h" +#include "../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_PluginExtension/PluginExtension_Define.h" #include "Timezone_Define.h" #include "Timezone_Error.h" using namespace std; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/PluginZodiac_Define.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/PluginZodiac_Define.h index 38401837..b9c95f45 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/PluginZodiac_Define.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/PluginZodiac_Define.h @@ -77,4 +77,4 @@ extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersi 意思:是否成功 备注: *********************************************************************/ -extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer = NULL, int nMsgLen = 0); \ No newline at end of file +extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer = NULL, int nMsgLen = 0, int* pInt_HTTPCode = NULL); \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.cpp index 09e36297..7a94f24f 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.cpp @@ -108,11 +108,11 @@ void CPlugin_Zodiac::PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPlugin 意思:是否成功 备注: *********************************************************************/ -bool CPlugin_Zodiac::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) +bool CPlugin_Zodiac::PluginCore_Call(XCHAR*** pppHDRList, int nListCount, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode) { Zodiac_IsErrorOccur = false; - if ((NULL == pInt_HTTPCode) || (NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) + if ((NULL == ptszMsgBuffer) || (NULL == pInt_MsgLen)) { Zodiac_IsErrorOccur = true; Zodiac_dwErrorCode = ERROR_XENGINE_APISERVICE_PLUGIN_MODULE_ZODIAC_PARAMENT; diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.h index 0ba49d9c..b1214d7d 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/Plugin_Zodiac/Plugin_Zodiac.h @@ -20,7 +20,7 @@ class CPlugin_Zodiac bool PluginCore_Init(XENGINE_PLUGINPARAM *pSt_PluginParameter); void PluginCore_UnInit(); void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersion, XCHAR* ptszPluginAuthor, XCHAR* ptszPluginDesc); - bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen); + bool PluginCore_Call(XCHAR*** pppHDRList, int nListCount, XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode); protected: bool Plugin_Zodiac_Chinese(LPCXSTR lpszDate, XCHAR* ptszCZodiac); bool Plugin_Zodiac_English(LPCXSTR lpszDate, XCHAR* ptszEZodiac); diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.cpp b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.cpp index 387fde30..0af64bba 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.cpp +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.cpp @@ -37,7 +37,7 @@ extern "C" void PluginCore_GetInfo(XCHAR* ptszPluginName, XCHAR* ptszPluginVersi { return m_PluginZodiac.PluginCore_GetInfo(ptszPluginName, ptszPluginVersion, ptszPluginAuthor, ptszPluginDesc); } -extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, int* pInt_HTTPCode, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen) +extern "C" bool PluginCore_Call(XCHAR * **pppHDRList, int nListCount, XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszMsgBuffer, int nMsgLen, int* pInt_HTTPCode) { - return m_PluginZodiac.PluginCore_Call(pppHDRList, nListCount, pInt_HTTPCode, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen); + return m_PluginZodiac.PluginCore_Call(pppHDRList, nListCount, ptszMsgBuffer, pInt_MsgLen, lpszMsgBuffer, nMsgLen, pInt_HTTPCode); } \ No newline at end of file diff --git a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.h b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.h index 618a478a..ff2d75a6 100644 --- a/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.h +++ b/XEngine_Source/XEngine_PluginModule/ModulePlugin_Zodiac/pch.h @@ -22,7 +22,7 @@ #include #include #include -#include "../../XEngine_UserProtocol.h" +#include "../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_PluginExtension/PluginExtension_Define.h" #include "PluginZodiac_Define.h" #include "PluginZodiac_Error.h" using namespace std; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile index 44780e39..e4b74cb7 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile @@ -3,18 +3,18 @@ PLATVER = FILEEXT = LIBFLAG = LOADHDR = -I ./ -LOADSO = -L ../../XEngine_ModuleConfigure -L ../../XEngine_ModuleDatabase -L ../../XEngine_ModuleProtocol -L ../../XEngine_ModuleSystem -L ../../XEngine_ModuleHelp -L ../../XEngine_ModulePlugin \ - -L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/jsoncpp -L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_InfoReport -L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_Verification \ +LOADSO = -L ../../XEngine_ModuleConfigure -L ../../XEngine_ModuleDatabase -L ../../XEngine_ModuleProtocol -L ../../XEngine_ModuleSystem -L ../../XEngine_ModuleHelp \ + -L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/jsoncpp -L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_InfoReport -L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_Verification -L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_PluginExtension \ -L ../../XEngine_DependLibrary/XEngine_IPMacData/XEngine_Source/XEngine_APIModuleIPMac -L ../../XEngine_DependLibrary/XEngine_PhoneData/XEngine_Source/XEngine_APIModulePhone -LIB = -lXEngine_BaseSafe -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_Cryption -lXClient_APIHelp -lXClient_Socket -lNetHelp_APIAddr -lNetHelp_XSocket -lHelpComponents_XLog -lRfcComponents_HttpProtocol -lRfcComponents_NatProtocol -lRfcComponents_NTPProtocol -lRfcComponents_DNSProtocol -lXEngine_ProcFile -lXEngine_SystemApi -lXEngine_AVHelp -lXEngine_VideoCodec -lXEngine_AudioCodec -lXEngine_AVFilter -lXEngine_AVCollect -lXEngine_AVFormat \ - -lXEngine_ModuleConfigure -lXEngine_ModuleDatabase -lXEngine_ModuleProtocol -lXEngine_ModuleSystem -lXEngine_ModuleHelp -lXEngine_ModulePlugin \ - -ljsoncpp -lXEngine_InfoReport -lXEngine_Verification \ +LIB = -lXEngine_BaseSafe -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_Cryption -lXClient_APIHelp -lXClient_Socket -lNetHelp_APIAddr -lNetHelp_XSocket -lHelpComponents_XLog -lRfcComponents_HttpProtocol -lRfcComponents_NatProtocol -lRfcComponents_NTPProtocol -lRfcComponents_DNSProtocol -lXEngine_SystemApi -lXEngine_AVHelp -lXEngine_VideoCodec -lXEngine_AudioCodec -lXEngine_AVFilter -lXEngine_AVCollect -lXEngine_AVFormat \ + -lXEngine_ModuleConfigure -lXEngine_ModuleDatabase -lXEngine_ModuleProtocol -lXEngine_ModuleSystem -lXEngine_ModuleHelp \ + -ljsoncpp -lXEngine_InfoReport -lXEngine_Verification -lXEngine_PluginExtension \ -lXEngine_APIModuleIPMac -lXEngine_APIModulePhone LIBEX = OBJECTS = XEngine_Configure.o XEngine_Network.o XEngine_HTTPTask.o XEngine_PluginTask.o XEngine_HttpApp.o \ RFCTask_Ntp.o RFCTask_Stun.o RFCTask_Dns.o \ TaskGet_Bank.o TaskGet_IDCard.o TaskGet_Locker.o TaskGet_Translation.o TaskGet_Reload.o TaskGet_Weather.o TaskGet_IDRegion.o TaskGet_Oil.o TaskGet_APIModule.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 + 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 TaskPost_AVRecord.o ifeq ($(RELEASE),1) FLAGS = -c -D _RELEASE @@ -117,6 +117,8 @@ 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 +TaskPost_AVRecord.o:./XEngine_TaskPost/TaskPost_AVRecord.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./XEngine_TaskPost/TaskPost_AVRecord.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 96b0d8bb..5fef5b1e 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp @@ -55,6 +55,114 @@ XHTHREAD XCALLBACK HTTPTask_TastPost_Thread(XPVOID lParam) } return 0; } +bool HTTPTask_TastPost_Verification(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, XCHAR** pptszHDRList, int nHDRCount) +{ + //http验证 + int nVType = 0; + int nSDLen = 0; + XCHAR tszSDBuffer[XPATH_MAX] = {}; + RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; + + st_HDRParam.nHttpCode = 401; + st_HDRParam.bIsClose = true; + st_HDRParam.bAuth = true; + //打包验证信息 + int nHDRLen = 0; + XCHAR tszHDRBuffer[XPATH_MAX] = {}; + if (1 == st_ServiceConfig.st_XVerifcation.nVType) + { + Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen); + } + else + { + XCHAR tszNonceStr[64] = {}; + XCHAR tszOpaqueStr[64] = {}; + Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr); + } + //后去验证方法 + if (!Verification_HTTP_GetType(pptszHDRList, nHDRCount, &nVType)) + { + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceConfig.st_XVerifcation.nVType, Verification_GetLastError()); + return false; + } + //验证方式是否一致 + if (st_ServiceConfig.st_XVerifcation.nVType != nVType) + { + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceConfig.st_XVerifcation.nVType); + return false; + } + bool bRet = false; + + if (_tcsxlen(st_ServiceConfig.st_XVerifcation.tszAPIAuth) > 0) + { + int nHTTPCode = 0; + int nMSGLen = 0; + XCLIENT_APIHTTP st_APIHttp = {}; + XCHAR* ptszMSGBuffer = NULL; + if (!APIClient_Http_Request(_X("GET"), st_ServiceConfig.st_XVerifcation.tszAPIAuth, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp)) + { + st_HDRParam.nHttpCode = 500; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, st_ServiceConfig.st_XVerifcation.tszAPIAuth, APIClient_GetLastError()); + return false; + } + if (200 != nHTTPCode) + { + st_HDRParam.nHttpCode = 500; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, st_ServiceConfig.st_XVerifcation.tszAPIAuth, nHTTPCode); + return false; + } + XENGINE_PROTOCOL_USERAUTH st_UserAuth = {}; + if (!ModuleProtocol_Parse_Verifcation(ptszMSGBuffer, nSDLen, st_UserAuth.tszUserName, st_UserAuth.tszUserPass)) + { + st_HDRParam.nHttpCode = 500; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); + return false; + } + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); + + if (1 == nVType) + { + bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszHDRList, nHDRCount); + } + else if (2 == nVType) + { + bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszHDRList, nHDRCount); + } + } + else + { + if (1 == nVType) + { + bRet = Verification_HTTP_Basic(st_ServiceConfig.st_XVerifcation.tszUserName, st_ServiceConfig.st_XVerifcation.tszUserPass, pptszHDRList, nHDRCount); + } + else if (2 == nVType) + { + bRet = Verification_HTTP_Digest(st_ServiceConfig.st_XVerifcation.tszUserName, st_ServiceConfig.st_XVerifcation.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszHDRList, nHDRCount); + } + } + + if (!bRet) + { + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); + XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType); + return false; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType); + return true; +} + bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMSGBuffer, int nMSGLen, XCHAR** pptszHDRList, int nHDRCount) { bool bVerification = false; @@ -103,107 +211,12 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST //http验证 if (st_ServiceConfig.st_XVerifcation.bEnable) { - int nVType = 0; - RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; - - st_HDRParam.nHttpCode = 401; - st_HDRParam.bIsClose = true; - st_HDRParam.bAuth = true; - //打包验证信息 - int nHDRLen = 0; - XCHAR tszHDRBuffer[XPATH_MAX] = {}; - if (1 == st_ServiceConfig.st_XVerifcation.nVType) - { - Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen); - } - else - { - XCHAR tszNonceStr[64] = {}; - XCHAR tszOpaqueStr[64] = {}; - Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr); - } - //后去验证方法 - if (!Verification_HTTP_GetType(pptszHDRList, nHDRCount, &nVType)) - { - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceConfig.st_XVerifcation.nVType, Verification_GetLastError()); - return false; - } - //验证方式是否一致 - if (st_ServiceConfig.st_XVerifcation.nVType != nVType) - { - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceConfig.st_XVerifcation.nVType); - return false; - } - bool bRet = false; - - if (_tcsxlen(st_ServiceConfig.st_XVerifcation.tszAPIAuth) > 0) - { - int nHTTPCode = 0; - int nMSGLen = 0; - XCLIENT_APIHTTP st_APIHttp = {}; - XCHAR* ptszMSGBuffer = NULL; - if (!APIClient_Http_Request(_X("GET"), st_ServiceConfig.st_XVerifcation.tszAPIAuth, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp)) - { - st_HDRParam.nHttpCode = 500; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, st_ServiceConfig.st_XVerifcation.tszAPIAuth, APIClient_GetLastError()); - return false; - } - if (200 != nHTTPCode) - { - st_HDRParam.nHttpCode = 500; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, st_ServiceConfig.st_XVerifcation.tszAPIAuth, nHTTPCode); - return false; - } - XENGINE_PROTOCOL_USERAUTH st_UserAuth = {}; - if (!ModuleProtocol_Parse_Verifcation(ptszMSGBuffer, nSDLen, st_UserAuth.tszUserName, st_UserAuth.tszUserPass)) - { - st_HDRParam.nHttpCode = 500; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer); - BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); - return false; - } - BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); - - if (1 == nVType) - { - bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszHDRList, nHDRCount); - } - else if (2 == nVType) - { - bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszHDRList, nHDRCount); - } - } - else - { - if (1 == nVType) - { - bRet = Verification_HTTP_Basic(st_ServiceConfig.st_XVerifcation.tszUserName, st_ServiceConfig.st_XVerifcation.tszUserPass, pptszHDRList, nHDRCount); - } - else if (2 == nVType) - { - bRet = Verification_HTTP_Digest(st_ServiceConfig.st_XVerifcation.tszUserName, st_ServiceConfig.st_XVerifcation.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszHDRList, nHDRCount); - } - } - - if (!bRet) + //全面验证 + if (!HTTPTask_TastPost_Verification(pSt_HTTPParam, lpszClientAddr, pptszHDRList, nHDRCount)) { - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType); return false; } bVerification = true; - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType); } XCHAR tszKey[XPATH_MAX]; @@ -235,11 +248,12 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST LPCXSTR lpszParamImage = _X("image"); LPCXSTR lpszParamDeamon = _X("deamon"); LPCXSTR lpszParamMachine = _X("machine"); + LPCXSTR lpszParamAVRecord = _X("avrecord"); memset(tszKey, '\0', XPATH_MAX); memset(tszValue, '\0', XPATH_MAX); - if (0 != _tcsxnicmp(lpszFuncName, tszUrlName, _tcsxlen(lpszFuncName))) + if (0 != _tcsxncmp(lpszFuncName, tszUrlName, _tcsxlen(lpszFuncName))) { st_HDRParam.nHttpCode = 404; HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam); @@ -250,7 +264,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST } //获得函数名 BaseLib_String_GetKeyValue(pptszList[0], "=", tszKey, tszValue); - if (0 != _tcsxnicmp(lpszParamFuncKey, tszKey, _tcsxlen(lpszParamFuncKey))) + if (0 != _tcsxncmp(lpszParamFuncKey, tszKey, _tcsxlen(lpszParamFuncKey))) { st_HDRParam.nHttpCode = 404; HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam); @@ -261,14 +275,14 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST } //首先处理插件 int nPluginType = 0; - if (ModulePlugin_Loader_Find(tszValue, &nPluginType)) + if (PluginExtension_Loader_Find(tszValue, &nPluginType)) { XEngine_PluginTask_Handle(tszValue, lpszClientAddr, lpszMSGBuffer, nMSGLen, &pptszList, nListCount, nPluginType); return true; } - if (0 == _tcsxnicmp(lpszMethodPost, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodPost))) + if (0 == _tcsxncmp(lpszMethodPost, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodPost))) { - if (0 == _tcsxnicmp(lpszParamP2PClient, tszValue, _tcsxlen(lpszParamP2PClient))) + if (0 == _tcsxncmp(lpszParamP2PClient, tszValue, _tcsxlen(lpszParamP2PClient))) { //是不是P2P memset(tszKey, '\0', sizeof(tszKey)); @@ -276,7 +290,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszValue); HTTPTask_TastPost_P2PClient(lpszClientAddr, lpszMSGBuffer, nMSGLen, _ttxoi(tszValue)); } - else if (0 == _tcsxnicmp(lpszParamZIPCode, tszValue, _tcsxlen(lpszParamZIPCode))) + else if (0 == _tcsxncmp(lpszParamZIPCode, tszValue, _tcsxlen(lpszParamZIPCode))) { //邮政信息:http://app.xyry.org:5501/api?function=zipcode¶ms1=0 memset(tszKey, '\0', sizeof(tszKey)); @@ -284,7 +298,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszValue); HTTPTask_TastPost_PostCode(lpszClientAddr, lpszMSGBuffer, nMSGLen, _ttxoi(tszValue)); } - else if (0 == _tcsxnicmp(lpszParamXLog, tszValue, _tcsxlen(lpszParamXLog))) + else if (0 == _tcsxncmp(lpszParamXLog, tszValue, _tcsxlen(lpszParamXLog))) { //日志信息:http://app.xyry.org:5501/api?function=log¶ms1=0 memset(tszKey, '\0', sizeof(tszKey)); @@ -292,7 +306,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszValue); HTTPTask_TastPost_LogInfo(lpszClientAddr, lpszMSGBuffer, nMSGLen, _ttxoi(tszValue)); } - else if (0 == _tcsxnicmp(lpszParamQRCode, tszValue, _tcsxlen(lpszParamQRCode))) + else if (0 == _tcsxncmp(lpszParamQRCode, tszValue, _tcsxlen(lpszParamQRCode))) { //二维码生成:http://app.xyry.org:5501/api?function=qrcode¶ms1=0 或者 1 memset(tszKey, '\0', sizeof(tszKey)); @@ -300,7 +314,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszValue); HTTPTask_TaskPost_QRCode(lpszClientAddr, lpszMSGBuffer, nMSGLen, _ttxoi(tszValue)); } - else if (0 == _tcsxnicmp(lpszParamSocket, tszValue, _tcsxlen(lpszParamSocket))) + else if (0 == _tcsxncmp(lpszParamSocket, tszValue, _tcsxlen(lpszParamSocket))) { //网络测试:http://app.xyry.org:5501/api?function=socket¶ms1=0 或者 1 memset(tszKey, '\0', sizeof(tszKey)); @@ -308,7 +322,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszValue); HTTPTask_TastPost_SocketTest(lpszClientAddr, lpszMSGBuffer, nMSGLen, _ttxoi(tszValue)); } - else if (0 == _tcsxnicmp(lpszParamDTest, tszValue, _tcsxlen(lpszParamDTest))) + else if (0 == _tcsxncmp(lpszParamDTest, tszValue, _tcsxlen(lpszParamDTest))) { //数据测试:http://app.xyry.org:5501/api?function=dtest¶ms1=0 或者 1 memset(tszKey, '\0', sizeof(tszKey)); @@ -316,7 +330,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszValue); HTTPTask_TastPost_DTest(lpszClientAddr, lpszMSGBuffer, nMSGLen, _ttxoi(tszValue)); } - else if (0 == _tcsxnicmp(lpszParamShortLink, tszValue, _tcsxlen(lpszParamShortLink))) + else if (0 == _tcsxncmp(lpszParamShortLink, tszValue, _tcsxlen(lpszParamShortLink))) { //短连接:http://app.xyry.org:5501/api?function=slink¶ms1=0 XCHAR tszType[64]; @@ -325,7 +339,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszType); HTTPTask_TaskPost_ShortLink(lpszClientAddr, lpszMSGBuffer, nMSGLen, _ttxoi(tszType)); } - else if (0 == _tcsxnicmp(lpszParamWordFilter, tszValue, _tcsxlen(lpszParamWordFilter))) + else if (0 == _tcsxncmp(lpszParamWordFilter, tszValue, _tcsxlen(lpszParamWordFilter))) { //敏感词:http://app.xyry.org:5501/api?function=wordfilter¶ms1=0 XCHAR tszType[64]; @@ -334,42 +348,40 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszType); HTTPTask_TastPost_WordFilter(lpszClientAddr, lpszMSGBuffer, nMSGLen, _ttxoi(tszType)); } - else if (0 == _tcsxnicmp(lpszParamBack, tszValue, _tcsxlen(lpszParamBack))) + else if (0 == _tcsxncmp(lpszParamBack, tszValue, _tcsxlen(lpszParamBack))) { //后台管理接口:http://app.xyry.org:5501/api?function=back¶ms1=0 XCHAR tszType[64]; memset(tszType, '\0', sizeof(tszType)); - + //单独验证 if (st_ServiceConfig.st_XVerifcation.st_VerSwitch.bBackService && !bVerification) { - ModuleProtocol_Packet_Common(tszRVBuffer, &nSDLen, 403, _X("User verification required")); - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求后台协议失败,此模式需要进行验证,但是请求未验证"), lpszClientAddr); - return false; + if (!HTTPTask_TastPost_Verification(pSt_HTTPParam, lpszClientAddr, pptszHDRList, nHDRCount)) + { + return false; + } } BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszType); HTTPTask_TaskPost_BackService(lpszClientAddr, lpszMSGBuffer, nMSGLen, _ttxoi(tszType)); } - else if (0 == _tcsxnicmp(lpszParamImage, tszValue, _tcsxlen(lpszParamImage))) + else if (0 == _tcsxncmp(lpszParamImage, tszValue, _tcsxlen(lpszParamImage))) { //图像处理接口:http://app.xyry.org:5501/api?function=image¶ms1=0 HTTPTask_TaskPost_Image(lpszClientAddr, lpszMSGBuffer, nMSGLen, &pptszList, nListCount); } - else if (0 == _tcsxnicmp(lpszParamDeamon, tszValue, _tcsxlen(lpszParamDeamon))) + else if (0 == _tcsxncmp(lpszParamDeamon, tszValue, _tcsxlen(lpszParamDeamon))) { //守护进程接口:http://app.xyry.org:5501/api?function=deamon¶ms1=0 if (st_ServiceConfig.st_XVerifcation.st_VerSwitch.bDeamon && !bVerification) { - ModuleProtocol_Packet_Common(tszRVBuffer, &nSDLen, 403, _X("User verification required")); - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); - XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求守护进程协议失败,此模式需要进行验证,但是请求未验证"), lpszClientAddr); - return false; + if (!HTTPTask_TastPost_Verification(pSt_HTTPParam, lpszClientAddr, pptszHDRList, nHDRCount)) + { + return false; + } } HTTPTask_TaskPost_Deamon(lpszClientAddr, lpszMSGBuffer, nMSGLen); } - else if (0 == _tcsxnicmp(lpszParamMachine, tszValue, _tcsxlen(lpszParamMachine))) + else if (0 == _tcsxncmp(lpszParamMachine, tszValue, _tcsxlen(lpszParamMachine))) { //信息收集接口:http://app.xyry.org:5501/api?function=machine¶ms1=0 XCHAR tszType[64]; @@ -378,6 +390,22 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszType); HTTPTask_TastPost_Machine(lpszClientAddr, lpszMSGBuffer, nMSGLen, _ttxoi(tszType)); } + else if (0 == _tcsxncmp(lpszParamAVRecord, tszValue, _tcsxlen(lpszParamAVRecord))) + { + //信息收集接口:http://app.xyry.org:5501/api?function=avrecord¶ms1=start 或者 stop + XCHAR tszType[64]; + memset(tszType, '\0', sizeof(tszType)); + + BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszType); + if (0 == _tcsxncmp(_X("start"), tszType, 5)) + { + HTTPTask_TaskPost_AVRecordStart(lpszClientAddr, lpszMSGBuffer, nMSGLen); + } + else + { + HTTPTask_TaskPost_AVRecordStop(lpszClientAddr); + } + } else { st_HDRParam.nHttpCode = 404; @@ -386,16 +414,16 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,发送的请求不支持:%s,内容:\r\n%s"), lpszClientAddr, tszGBKBuffer, lpszMSGBuffer); } } - else if (0 == _tcsxnicmp(lpszMethodGet, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodGet))) + else if (0 == _tcsxncmp(lpszMethodGet, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodGet))) { - if (0 == _tcsxnicmp(lpszParamReload, tszValue, _tcsxlen(lpszParamReload))) + if (0 == _tcsxncmp(lpszParamReload, tszValue, _tcsxlen(lpszParamReload))) { //是不是配置重载 memset(tszKey, '\0', sizeof(tszKey)); BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszValue); HTTPTask_TaskGet_Reload(lpszClientAddr, tszValue); } - else if (0 == _tcsxnicmp(lpszParamIDCard, tszValue, _tcsxlen(lpszParamIDCard))) + else if (0 == _tcsxncmp(lpszParamIDCard, tszValue, _tcsxlen(lpszParamIDCard))) { //是不是身份证查询 memset(tszKey, '\0', sizeof(tszKey)); @@ -403,7 +431,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszValue); HTTPTask_TaskGet_IDCard(lpszClientAddr, tszValue); } - else if (0 == _tcsxnicmp(lpszParamBank, tszValue, _tcsxlen(lpszParamBank))) + else if (0 == _tcsxncmp(lpszParamBank, tszValue, _tcsxlen(lpszParamBank))) { //是不是银行卡信息 memset(tszKey, '\0', sizeof(tszKey)); @@ -411,7 +439,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszValue); HTTPTask_TaskGet_BankInfo(lpszClientAddr, tszValue); } - else if (0 == _tcsxnicmp(lpszParamTranslation, tszValue, _tcsxlen(lpszParamTranslation))) + else if (0 == _tcsxncmp(lpszParamTranslation, tszValue, _tcsxlen(lpszParamTranslation))) { //是不是翻译 XCHAR tszMSGBuffer[2048] = {}; @@ -423,7 +451,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[3], "=", tszKey, tszDstBuffer); HTTPTask_TaskGet_Translation(lpszClientAddr, tszMSGBuffer, tszSrcBuffer, tszDstBuffer); } - else if (0 == _tcsxnicmp(lpszParamLocker, tszValue, _tcsxlen(lpszParamLocker))) + else if (0 == _tcsxncmp(lpszParamLocker, tszValue, _tcsxlen(lpszParamLocker))) { //是不是分布式锁 XCHAR tszLockToken[128]; @@ -437,7 +465,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[2], "=", tszKey, tszLockType); HTTPTask_TaskGet_Locker(lpszClientAddr, _ttxoll(tszLockToken), (ENUM_XENGINE_APISERVICE_LOCKER_TYPE)_ttxoi(tszLockType)); } - else if (0 == _tcsxnicmp(lpszParamWeather, tszValue, _tcsxlen(lpszParamWeather))) + else if (0 == _tcsxncmp(lpszParamWeather, tszValue, _tcsxlen(lpszParamWeather))) { //天气:http://127.0.0.1:5501/api?function=weather¶ms1=110101 XCHAR tszIDAddr[128] = {}; @@ -445,7 +473,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszIDAddr); HTTPTask_TaskGet_WeatherInfo(lpszClientAddr, tszIDAddr); } - else if (0 == _tcsxnicmp(lpszParamRegion, tszValue, _tcsxlen(lpszParamRegion))) + else if (0 == _tcsxncmp(lpszParamRegion, tszValue, _tcsxlen(lpszParamRegion))) { //地区ID:http://127.0.0.1:5501/api?function=region&type=1¶ms=省份¶ms=市区¶ms=县级 int nType = 0; @@ -489,7 +517,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST } } } - else if (0 == _tcsxnicmp(lpszParamOil, tszValue, _tcsxlen(lpszParamOil))) + else if (0 == _tcsxncmp(lpszParamOil, tszValue, _tcsxlen(lpszParamOil))) { //油价:http://127.0.0.1:5501/api?function=oil¶m=地区 memset(tszValue, '\0', sizeof(tszValue)); @@ -497,7 +525,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST BaseLib_String_GetKeyValue(pptszList[1], "=", tszKey, tszValue); HTTPTask_TaskGet_Oil(lpszClientAddr, tszValue); } - else if ((0 == _tcsxnicmp(lpszParamPhone, tszValue, _tcsxlen(lpszParamPhone))) || (0 == _tcsxnicmp(lpszParamIPAddr, tszValue, _tcsxlen(lpszParamIPAddr))) || (0 == _tcsxnicmp(lpszParamMacInfo, tszValue, _tcsxlen(lpszParamMacInfo)))) + else if ((0 == _tcsxncmp(lpszParamPhone, tszValue, _tcsxlen(lpszParamPhone))) || (0 == _tcsxncmp(lpszParamIPAddr, tszValue, _tcsxlen(lpszParamIPAddr))) || (0 == _tcsxncmp(lpszParamMacInfo, tszValue, _tcsxlen(lpszParamMacInfo)))) { //phone:http://127.0.0.1:5501/api?function=phone¶m=1369943 //ip:http://127.0.0.1:5501/api?function=ip¶m=117.172.221.14&language=en diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.h index 5ace63af..901189c2 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.h @@ -13,4 +13,5 @@ //任务处理池,用来获取一个完整包 XHTHREAD XCALLBACK HTTPTask_TastPost_Thread(XPVOID lParam); //任务处理相关函数,处理包的内容 +bool HTTPTask_TastPost_Verification(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, XCHAR** pptszHDRList, int nHDRCount); bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszMSGBuffer, int nMSGLen, XCHAR** pptszHDRList, int nHDRCount); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h index 9bf2f010..51837eed 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_Hdr.h @@ -71,6 +71,8 @@ using namespace std; #include "../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_InfoReport/InfoReport_Error.h" #include "../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_Verification/Verification_Define.h" #include "../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_Verification/Verification_Error.h" +#include "../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_PluginExtension/PluginExtension_Define.h" +#include "../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_PluginExtension/PluginExtension_Error.h" #include "../../XEngine_DependLibrary/XEngine_IPMacData/XEngine_Source/XIPMac_CommHdr.h" #include "../../XEngine_DependLibrary/XEngine_IPMacData/XEngine_Source/XEngine_APIModuleIPMac/APIIPMac_Define.h" #include "../../XEngine_DependLibrary/XEngine_IPMacData/XEngine_Source/XEngine_APIModuleIPMac/APIIPMac_Error.h" @@ -90,8 +92,6 @@ using namespace std; #include "../../XEngine_ModuleSystem/ModuleSystem_Error.h" #include "../../XEngine_ModuleHelp/ModuleHelp_Define.h" #include "../../XEngine_ModuleHelp/ModuleHelp_Error.h" -#include "../../XEngine_ModulePlugin/ModulePlugin_Define.h" -#include "../../XEngine_ModulePlugin/ModulePlugin_Error.h" //加载自己的头文件 #include "XEngine_Configure.h" #include "XEngine_Network.h" @@ -110,6 +110,7 @@ using namespace std; #include "XEngine_TaskPost/TaskPost_Image.h" #include "XEngine_TaskPost/TaskPost_Deamon.h" #include "XEngine_TaskPost/TaskPost_Machine.h" +#include "XEngine_TaskPost/TaskPost_AVRecord.h" //get #include "XEngine_TaskGet/TaskGet_IDCard.h" #include "XEngine_TaskGet/TaskGet_Bank.h" @@ -184,6 +185,7 @@ extern XENGINE_DEAMONAPPLIST st_DeamonAppConfig; #ifdef _M_X64 #pragma comment(lib,"../../x64/Debug/XEngine_InfoReport.lib") #pragma comment(lib,"../../x64/Debug/XEngine_Verification.lib") +#pragma comment(lib,"../../x64/Debug/XEngine_PluginExtension.lib") #pragma comment(lib,"../../x64/Debug/XEngine_APIModuleIPMac.lib") #pragma comment(lib,"../../x64/Debug/XEngine_APIModulePhone.lib") #pragma comment(lib,"../../x64/Debug/XEngine_ModuleConfigure.lib") @@ -191,10 +193,10 @@ extern XENGINE_DEAMONAPPLIST st_DeamonAppConfig; #pragma comment(lib,"../../x64/Debug/XEngine_ModuleProtocol.lib") #pragma comment(lib,"../../x64/Debug/XEngine_ModuleSystem.lib") #pragma comment(lib,"../../x64/Debug/XEngine_ModuleHelp.lib") -#pragma comment(lib,"../../x64/Debug/XEngine_ModulePlugin.lib") #elif _M_ARM64 #pragma comment(lib,"../../ARM64/Debug/XEngine_InfoReport.lib") #pragma comment(lib,"../../ARM64/Debug/XEngine_Verification.lib") +#pragma comment(lib,"../../ARM64/Debug/XEngine_PluginExtension.lib") #pragma comment(lib,"../../ARM64/Debug/XEngine_APIModuleIPMac.lib") #pragma comment(lib,"../../ARM64/Debug/XEngine_APIModulePhone.lib") #pragma comment(lib,"../../ARM64/Debug/XEngine_ModuleConfigure.lib") @@ -202,10 +204,10 @@ extern XENGINE_DEAMONAPPLIST st_DeamonAppConfig; #pragma comment(lib,"../../ARM64/Debug/XEngine_ModuleProtocol.lib") #pragma comment(lib,"../../ARM64/Debug/XEngine_ModuleSystem.lib") #pragma comment(lib,"../../ARM64/Debug/XEngine_ModuleHelp.lib") -#pragma comment(lib,"../../ARM64/Debug/XEngine_ModulePlugin.lib") #elif _M_IX86 #pragma comment(lib,"../../Debug/XEngine_InfoReport.lib") #pragma comment(lib,"../../Debug/XEngine_Verification.lib") +#pragma comment(lib,"../../Debug/XEngine_PluginExtension.lib") #pragma comment(lib,"../../Debug/XEngine_APIModuleIPMac.lib") #pragma comment(lib,"../../Debug/XEngine_APIModulePhone.lib") #pragma comment(lib,"../../Debug/XEngine_ModuleConfigure.lib") @@ -213,12 +215,12 @@ extern XENGINE_DEAMONAPPLIST st_DeamonAppConfig; #pragma comment(lib,"../../Debug/XEngine_ModuleProtocol.lib") #pragma comment(lib,"../../Debug/XEngine_ModuleSystem.lib") #pragma comment(lib,"../../Debug/XEngine_ModuleHelp.lib") -#pragma comment(lib,"../../Debug/XEngine_ModulePlugin.lib") #endif #else #ifdef _M_X64 #pragma comment(lib,"../../x64/Release/XEngine_InfoReport.lib") #pragma comment(lib,"../../x64/Release/XEngine_Verification.lib") +#pragma comment(lib,"../../x64/Release/XEngine_PluginExtension.lib") #pragma comment(lib,"../../x64/Release/XEngine_APIModuleIPMac.lib") #pragma comment(lib,"../../x64/Release/XEngine_APIModulePhone.lib") #pragma comment(lib,"../../x64/Release/XEngine_ModuleConfigure.lib") @@ -226,10 +228,10 @@ extern XENGINE_DEAMONAPPLIST st_DeamonAppConfig; #pragma comment(lib,"../../x64/Release/XEngine_ModuleProtocol.lib") #pragma comment(lib,"../../x64/Release/XEngine_ModuleSystem.lib") #pragma comment(lib,"../../x64/Release/XEngine_ModuleHelp.lib") -#pragma comment(lib,"../../x64/Release/XEngine_ModulePlugin.lib") #elif _M_ARM64 #pragma comment(lib,"../../ARM64/Release/XEngine_InfoReport.lib") #pragma comment(lib,"../../ARM64/Release/XEngine_Verification.lib") +#pragma comment(lib,"../../ARM64/Release/XEngine_PluginExtension.lib") #pragma comment(lib,"../../ARM64/Release/XEngine_APIModuleIPMac.lib") #pragma comment(lib,"../../ARM64/Release/XEngine_APIModulePhone.lib") #pragma comment(lib,"../../ARM64/Release/XEngine_ModuleConfigure.lib") @@ -237,10 +239,10 @@ extern XENGINE_DEAMONAPPLIST st_DeamonAppConfig; #pragma comment(lib,"../../ARM64/Release/XEngine_ModuleProtocol.lib") #pragma comment(lib,"../../ARM64/Release/XEngine_ModuleSystem.lib") #pragma comment(lib,"../../ARM64/Release/XEngine_ModuleHelp.lib") -#pragma comment(lib,"../../ARM64/Release/XEngine_ModulePlugin.lib") #elif _M_IX86 #pragma comment(lib,"../../Release/XEngine_InfoReport.lib") #pragma comment(lib,"../../Release/XEngine_Verification.lib") +#pragma comment(lib,"../../Release/XEngine_PluginExtension.lib") #pragma comment(lib,"../../Release/XEngine_APIModuleIPMac.lib") #pragma comment(lib,"../../Release/XEngine_APIModulePhone.lib") #pragma comment(lib,"../../Release/XEngine_ModuleConfigure.lib") @@ -248,7 +250,6 @@ extern XENGINE_DEAMONAPPLIST st_DeamonAppConfig; #pragma comment(lib,"../../Release/XEngine_ModuleProtocol.lib") #pragma comment(lib,"../../Release/XEngine_ModuleSystem.lib") #pragma comment(lib,"../../Release/XEngine_ModuleHelp.lib") -#pragma comment(lib,"../../Release/XEngine_ModulePlugin.lib") #endif #endif #endif \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp index 9aad8f3c..0bdaedf0 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.cpp @@ -57,7 +57,7 @@ void ServiceApp_Stop(int signo) APIModule_IPAddr_UnInit(); APIModule_MACInfo_UnInit(); APIModule_PhoneNumber_UnInit(); - ModulePlugin_Loader_Destory(); + PluginExtension_Loader_Destory(); ModuleHelp_P2PClient_Destory(); ModuleHelp_ImageGet_TextDestory(); ModuleHelp_DNSAddr_Destroy(); @@ -459,9 +459,9 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化插件配置文件成功")); //启动插件 - if (!ModulePlugin_Loader_Init()) + if (!PluginExtension_Loader_Init()) { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化插件系统失败,错误:%lX"), ModulePlugin_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,初始化插件系统失败,错误:%lX"), PluginExtension_GetLastError()); goto XENGINE_SERVICEAPP_EXIT; } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化插件系统成功,开始加载插件")); @@ -478,17 +478,17 @@ int main(int argc, char** argv) { nLibCount++; //加载插件 - if (ModulePlugin_Loader_Insert(pptszListFile[i], 0, &st_PluginParam)) + if (PluginExtension_Loader_Insert(pptszListFile[i], 0, &st_PluginParam)) { XCHAR tszModuleName[128] = {}; XCHAR tszModuleAuthor[64] = {}; XCHAR tszModuleVer[64] = {}; - ModulePlugin_Loader_GetForModule(pptszListFile[i], tszModuleName, tszModuleVer, tszModuleAuthor); + PluginExtension_Loader_GetForModule(pptszListFile[i], tszModuleName, tszModuleVer, tszModuleAuthor); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载Lib模块插件中,当前第:%d 个加载成功,路径:%s,方法名:%s,作者:%s,版本:V%s"), nLibCount, pptszListFile[i], tszModuleName, tszModuleAuthor, tszModuleVer); } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,加载Lib模块插件中,当前第:%d 个加载失败,路径:%s,错误:%lX"), nLibCount, pptszListFile[i], ModulePlugin_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,加载Lib模块插件中,当前第:%d 个加载失败,路径:%s,错误:%lX"), nLibCount, pptszListFile[i], PluginExtension_GetLastError()); } } } @@ -505,17 +505,17 @@ int main(int argc, char** argv) if (0 == _tcsxnicmp(tszFileExt, _X("lua"), 3)) { nLuaCount++; - if (ModulePlugin_Loader_Insert(pptszListFile[i], 1, &st_PluginParam)) + if (PluginExtension_Loader_Insert(pptszListFile[i], 1, &st_PluginParam)) { XCHAR tszModuleName[128] = {}; XCHAR tszModuleAuthor[64] = {}; XCHAR tszModuleVer[64] = {}; - ModulePlugin_Loader_GetForModule(pptszListFile[i], tszModuleName, tszModuleVer, tszModuleAuthor); + PluginExtension_Loader_GetForModule(pptszListFile[i], tszModuleName, tszModuleVer, tszModuleAuthor); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加载Lua模块插件中,当前第:%d 个加载成功,路径:%s,方法名:%s,作者:%s,版本:V%s"), nLuaCount, pptszListFile[i], tszModuleName, tszModuleAuthor, tszModuleVer); } else { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,加载Lua模块插件中,当前第:%d 个加载失败,路径:%s,错误:%lX"), nLuaCount, pptszListFile[i], ModulePlugin_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,加载Lua模块插件中,当前第:%d 个加载失败,路径:%s,错误:%lX"), nLuaCount, pptszListFile[i], PluginExtension_GetLastError()); } } } @@ -630,7 +630,7 @@ int main(int argc, char** argv) APIModule_IPAddr_UnInit(); APIModule_MACInfo_UnInit(); APIModule_PhoneNumber_UnInit(); - ModulePlugin_Loader_Destory(); + PluginExtension_Loader_Destory(); ModuleHelp_P2PClient_Destory(); ModuleHelp_ImageGet_TextDestory(); ModuleHelp_DNSAddr_Destroy(); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj index 55e051f9..982e5bbe 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj @@ -238,6 +238,7 @@ + @@ -270,6 +271,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 aab67b73..f101055f 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HttpApp.vcxproj.filters @@ -120,6 +120,9 @@ 源文件\XEngine_TaskRfc + + 源文件\XEngine_TaskPost + @@ -212,5 +215,8 @@ 头文件\XEngine_TaskRfc + + 头文件\XEngine_TaskPost + \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_PluginTask.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_PluginTask.cpp index d1eac691..2ccdaa46 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_PluginTask.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_PluginTask.cpp @@ -26,7 +26,7 @@ bool XEngine_PluginTask_Handle(LPCXSTR lpszMethodName, LPCXSTR lpszClientAddr, L st_HDRParament.nHttpCode = 200; _tcsxcpy(st_HDRParament.tszMimeType, "json"); - if (ModulePlugin_Loader_Exec(lpszMethodName, ppptszList, nListCount, &st_HDRParament.nHttpCode, tszPktBuffer, &nPktLen)) + if (PluginExtension_Loader_Exec(lpszMethodName, ppptszList, nListCount, tszPktBuffer, &nPktLen, lpszRVBuffer, nRVLen, &st_HDRParament.nHttpCode)) { HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParament, tszPktBuffer, nPktLen); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的方法:%s,由%s插件模块处理成功"), lpszClientAddr, lpszMethodName, 0 == nPluginType ? "Lib" : "Lua"); @@ -35,7 +35,7 @@ bool XEngine_PluginTask_Handle(LPCXSTR lpszMethodName, LPCXSTR lpszClientAddr, L { st_HDRParament.nHttpCode = 400; HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParament); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的方法:%s,由%s插件模块处理失败,错误:%lX"), lpszClientAddr, lpszMethodName, 0 == nPluginType ? "Lib" : "Lua", ModulePlugin_GetLastError()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求的方法:%s,由%s插件模块处理失败,错误:%lX"), lpszClientAddr, lpszMethodName, 0 == nPluginType ? "Lib" : "Lua", PluginExtension_GetLastError()); } XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen); return true; diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Reload.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Reload.cpp index d178d9ea..ea84265a 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Reload.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskGet/TaskGet_Reload.cpp @@ -28,15 +28,15 @@ bool HTTPTask_TaskGet_Reload(LPCXSTR lpszClientAddr, LPCXSTR lpszOPCode) _tcsxcpy(st_PluginParam.tszAPIVersion, st_ServiceConfig.st_XVer.pStl_ListVer->front().c_str()); _tcsxcpy(st_PluginParam.tszXEngineVer, BaseLib_Version_XNumberStr()); - ModulePlugin_Loader_Destory(); - ModulePlugin_Loader_Init(); + PluginExtension_Loader_Destory(); + PluginExtension_Loader_Init(); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求操作配置重载成功,加载插件配置成功"), lpszClientAddr); { SystemApi_File_EnumFileA(st_ServiceConfig.st_XPlugin.tszLibPlugin, &pptszListFile, &nLibCount, false, 1); for (int i = 0; i < nLibCount; i++) { //加载插件 - ModulePlugin_Loader_Insert(pptszListFile[i], 0, &st_PluginParam); + PluginExtension_Loader_Insert(pptszListFile[i], 0, &st_PluginParam); } BaseLib_Memory_Free((XPPPMEM)&pptszListFile, nLibCount); } @@ -44,7 +44,7 @@ bool HTTPTask_TaskGet_Reload(LPCXSTR lpszClientAddr, LPCXSTR lpszOPCode) SystemApi_File_EnumFileA(st_ServiceConfig.st_XPlugin.tszLuaPlugin, &pptszListFile, &nLuaCount, false, 1); for (int i = 0; i < nLuaCount; i++) { - ModulePlugin_Loader_Insert(pptszListFile[i], 1, &st_PluginParam); + PluginExtension_Loader_Insert(pptszListFile[i], 1, &st_PluginParam); } } HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam); diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_AVRecord.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_AVRecord.cpp new file mode 100644 index 00000000..f30e6f27 --- /dev/null +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_AVRecord.cpp @@ -0,0 +1,238 @@ +#include "../XEngine_Hdr.h" + +static bool bRecord = false; +static XHANDLE xhVideo = NULL; +static XHANDLE xhAudio = NULL; +static XHANDLE xhSound = NULL; +static XHANDLE xhScreen = NULL; +static XHANDLE xhPacket = NULL; +static XHANDLE xhFilter = NULL; +static XHANDLE xhScale = NULL; +static int nVideoIndex = -1; +static int nAudioIndex = -1; + +void XCALLBACK HTTPTask_TaskPost_CBVideo(XHANDLE*** pppSt_AVBuffer, XPVOID lParam) +{ + XHANDLE** ppSt_AVFrame; + if (VideoCodec_Help_ScaleConvert(xhScale, (*pppSt_AVBuffer)[0], &ppSt_AVFrame)) + { + int nListCount = 0; + XHANDLE** ppSt_AVPacket; + VideoCodec_Stream_EnCodec(xhVideo, ppSt_AVFrame[0], &ppSt_AVPacket, &nListCount); + for (int j = 0; j < nListCount; j++) + { + AVFormat_Packet_StreamWrite(xhPacket, nVideoIndex, ppSt_AVPacket[j]); + } + AVHelp_Memory_FreeAVList(&ppSt_AVPacket, nListCount); + } + AVHelp_Memory_FreeAVList(&ppSt_AVFrame, 1, false); +} +void XCALLBACK HTTPTask_TaskPost_CBAudio(XHANDLE*** pppSt_AVBuffer, XPVOID lParam) +{ + int nListCount = 0; + XHANDLE** ppSt_MSGBuffer; + AVFilter_Audio_Cvt(xhFilter, pppSt_AVBuffer, &ppSt_MSGBuffer, &nListCount); + for (int i = 0; i < nListCount; i++) + { + int nAudioCount = 0; + XHANDLE** ppSt_AVPacket; + AudioCodec_Stream_EnCodec(xhAudio, ppSt_MSGBuffer[i], &ppSt_AVPacket, &nAudioCount); + for (int j = 0; j < nAudioCount; j++) + { + AVFormat_Packet_StreamWrite(xhPacket, nAudioIndex, ppSt_AVPacket[j]); + } + AVHelp_Memory_FreeAVList(&ppSt_AVPacket, nAudioCount); + } + AVHelp_Memory_FreeAVList(&ppSt_MSGBuffer, nListCount, false); +} + +bool HTTPTask_TaskPost_AVRecordStart(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen) +{ + int nSDLen = 0; + int nRVLen = 0; + CXEngine_MemoryPoolEx m_MemorySend(XENGINE_MEMORY_SIZE_MAX); + CXEngine_MemoryPoolEx m_MemoryRecv(XENGINE_MEMORY_SIZE_MAX); + + RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; //发送给客户端的参数 + + st_HDRParam.nHttpCode = 200; //HTTP CODE码 + st_HDRParam.bIsClose = true; //收到回复后就关闭 + if (bRecord) + { + st_HDRParam.nHttpCode = 400; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); + XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求屏幕录制失败,因为已经在录制中了"), lpszClientAddr); + return false; + } + XENGINE_AVRECORD st_AVRecord = {}; + XENGINE_PROTOCOL_AVINFO st_AVInfo = {}; + + if (!ModuleProtocol_Parse_AVRecord(lpszMsgBuffer, nMsgLen, &st_AVRecord)) + { + st_HDRParam.nHttpCode = 400; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); + XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求屏幕录制失败,解析协议失败,错误码:%lX"), lpszClientAddr, ModuleProtocol_GetLastError()); + return false; + } + xhPacket = AVFormat_Packet_Init(); + if (!AVFormat_Packet_Output(xhPacket, st_AVRecord.tszFilePath, _X("flv"))) + { + st_HDRParam.nHttpCode = 400; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); + XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求屏幕录制失败,推流服务端:%s 连接失败,错误码:%lX"), lpszClientAddr, st_AVRecord.tszFilePath, AVFormat_GetLastError()); + return false; + } + //屏幕采集 + if (_tcsxlen(st_AVRecord.tszVideoDevice) > 0) + { + AVCOLLECT_SCREENINFO st_AVScreen = {}; + + st_AVScreen.nFrameRate = 24; + st_AVScreen.nPosX = 0; + st_AVScreen.nPosY = 0; + _xstprintf(st_AVScreen.tszVideoSize, _X("%s"), st_AVRecord.tszRsolution); +#ifdef _MSC_BUILD + xhScreen = AVCollect_Video_Init("gdigrab", st_AVRecord.tszVideoDevice, &st_AVScreen, HTTPTask_TaskPost_CBVideo); +#elif __linux__ + xhScreen = AVCollect_Video_Init("x11grab", st_AVRecord.tszVideoDevice, &st_AVScreen, HTTPTask_TaskPost_CBVideo); +#else + xhScreen = AVCollect_Video_Init("avfoundation", st_AVRecord.tszVideoDevice, &st_AVScreen, HTTPTask_TaskPost_CBVideo); +#endif + if (NULL == xhScreen) + { + st_HDRParam.nHttpCode = 400; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); + XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,屏幕采集器请求失败,错误码:%lX"), lpszClientAddr, AVCollect_GetLastError()); + return false; + } + XHANDLE xhVideoCodec = NULL; + //初始化屏幕编码器 + AVCollect_Video_GetInfo(xhScreen, &st_AVInfo); + + xhScale = VideoCodec_Help_ScaleInit(st_AVInfo.st_VideoInfo.nWidth, st_AVInfo.st_VideoInfo.nHeight, st_AVInfo.st_VideoInfo.nFormat, st_AVInfo.st_VideoInfo.nWidth, st_AVInfo.st_VideoInfo.nHeight, ENUM_AVCODEC_VIDEO_SAMPLEFMT_YUV420P); + + st_AVInfo.st_VideoInfo.nFormat = 0; + st_AVInfo.st_VideoInfo.enAVCodec = ENUM_XENGINE_AVCODEC_VIDEO_TYPE_H264; + xhVideo = VideoCodec_Stream_EnInit(&st_AVInfo.st_VideoInfo); + if (NULL == xhVideo) + { + st_HDRParam.nHttpCode = 500; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); + XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求屏幕录制失败,打开编码器视频编码器失败,错误码:%lX"), lpszClientAddr, VideoCodec_GetLastError()); + return false; + } + VideoCodec_Stream_GetAVCodec(xhVideo, &xhVideoCodec); + AVFormat_Packet_StreamCreate(xhPacket, xhVideoCodec); + BaseLib_Memory_FreeCStyle((XPPMEM)&xhVideoCodec); + nVideoIndex = 0; + } + //启用音频 + if (_tcsxlen(st_AVRecord.tszAudioDevice) > 0) + { +#ifdef _MSC_BUILD + xhSound = AVCollect_Audio_Init("dshow", st_AVRecord.tszAudioDevice, HTTPTask_TaskPost_CBAudio); +#elif __linux__ + xhSound = AVCollect_Audio_Init("alsa", st_AVRecord.tszAudioDevice, HTTPTask_TaskPost_CBAudio); +#else + xhSound = AVCollect_Audio_Init("avfoundation", st_AVRecord.tszAudioDevice, HTTPTask_TaskPost_CBAudio); +#endif + if (NULL == xhSound) + { + st_HDRParam.nHttpCode = 400; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); + XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,初始化音频采集器请求失败,错误码:%lX"), lpszClientAddr, AVCollect_GetLastError()); + return false; + } + AVCollect_Audio_GetInfo(xhSound, &st_AVInfo); + AVFILTER_AUDIO_INFO st_AudioFilter = {}; + st_AudioFilter.nIndex = 0; + st_AudioFilter.st_AudioInfo = st_AVInfo.st_AudioInfo; + AVCollect_Audio_GetTimeBase(xhSound, &st_AudioFilter.st_AudioTime); + xhFilter = AVFilter_Audio_Init(_X("aresample=44100,aformat=sample_fmts=fltp:channel_layouts=stereo"), &st_AudioFilter); + if (NULL == xhFilter) + { + st_HDRParam.nHttpCode = 400; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); + XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,初始化音频滤镜失败,错误码:%lX"), lpszClientAddr, AVFilter_GetLastError()); + return false; + } + st_AVInfo.st_AudioInfo.nSampleRate = 44100; + st_AVInfo.st_AudioInfo.nSampleFmt = ENUM_AVCODEC_AUDIO_SAMPLEFMT_FLTP; + st_AVInfo.st_AudioInfo.enAVCodec = ENUM_XENGINE_AVCODEC_AUDIO_TYPE_AAC; + xhAudio = AudioCodec_Stream_EnInit(&st_AVInfo.st_AudioInfo); + if (NULL == xhAudio) + { + st_HDRParam.nHttpCode = 400; + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); + XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,初始化音频采集器请求失败,错误码:%lX"), lpszClientAddr, AudioCodec_GetLastError()); + return false; + } + XHANDLE xhAudioCodec = NULL; + AudioCodec_Stream_GetAVCodec(xhAudio, &xhAudioCodec); + AVFormat_Packet_StreamCreate(xhPacket, xhAudioCodec); + //使用了滤镜,需要单独设置 + AVCODEC_TIMEBASE st_TimeBase = {}; + st_TimeBase.nDen = 44100; + st_TimeBase.nNum = 1; + AVFormat_Packet_TimeBase(xhPacket, 1, &st_TimeBase); + BaseLib_Memory_FreeCStyle((XPPMEM)&xhAudioCodec); + + if (-1 == nVideoIndex) + { + nAudioIndex = 0; + } + else + { + nAudioIndex = 1; + } + } + bRecord = true; + AVFormat_Packet_Start(xhPacket); + AVCollect_Audio_Start(xhSound); + AVCollect_Video_Start(xhScreen); + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); + XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,开始屏幕录制,音频:%s,视频:%s 推流:%s 请求成功"), lpszClientAddr, st_AVRecord.tszAudioDevice, st_AVRecord.tszVideoDevice, st_AVRecord.tszFilePath); + return true; +} +bool HTTPTask_TaskPost_AVRecordStop(LPCXSTR lpszClientAddr) +{ + bRecord = false; + + AVCollect_Video_Destory(xhScreen); + AVCollect_Audio_Destory(xhSound); + + VideoCodec_Stream_Destroy(xhVideo); + AudioCodec_Stream_Destroy(xhAudio); + + AVFilter_Audio_Destroy(xhFilter); + + AVFormat_Packet_Stop(xhPacket); + VideoCodec_Help_ScaleUninit(xhScale); + xhScreen = NULL; + xhSound = NULL; + xhVideo = NULL; + xhAudio = NULL; + xhPacket = NULL; + + int nMSGLen = 0; + XCHAR tszMSGBuffer[XPATH_MAX] = {}; + RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; //发送给客户端的参数 + + st_HDRParam.nHttpCode = 200; //HTTP CODE码 + st_HDRParam.bIsClose = true; //收到回复后就关闭 + + HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMSGBuffer, &nMSGLen, &st_HDRParam); + XEngine_Network_Send(lpszClientAddr, tszMSGBuffer, nMSGLen); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,停止屏幕录制推流请求成功"), lpszClientAddr); + + return true; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_AVRecord.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_AVRecord.h new file mode 100644 index 00000000..fa6511fa --- /dev/null +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_AVRecord.h @@ -0,0 +1,6 @@ +#pragma once +void XCALLBACK HTTPTask_TaskPost_CBVideo(XHANDLE*** pppSt_AVBuffer, XPVOID lParam); +void XCALLBACK HTTPTask_TaskPost_CBAudio(XHANDLE*** pppSt_AVBuffer, XPVOID lParam); + +bool HTTPTask_TaskPost_AVRecordStart(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen); +bool HTTPTask_TaskPost_AVRecordStop(LPCXSTR lpszClientAddr); \ No newline at end of file diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.cpp b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.cpp index 7ef2024d..dc50f1a8 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.cpp +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.cpp @@ -1,57 +1,5 @@ #include "../XEngine_Hdr.h" -static bool bRecord = false; -static XHANDLE xhVideo = NULL; -static XHANDLE xhAudio = NULL; -static XHANDLE xhSound = NULL; -static XHANDLE xhScreen = NULL; -static XHANDLE xhPacket = NULL; -static XHANDLE xhAudioFifo = NULL; -static XHANDLE xhFilter = 0; - -void XCALLBACK HTTPTask_TaskPost_CBVideo(AVCODEC_VIDEO_MSGBUFFER* pSt_MSGBuffer, XPVOID lParam) -{ - int nListCount = 0; - AVCODEC_VIDEO_MSGBUFFER** ppSt_MSGBuffer; - pSt_MSGBuffer->st_TimeStamp = {}; - VideoCodec_Stream_EnCodec(xhVideo, pSt_MSGBuffer, &ppSt_MSGBuffer, &nListCount); - for (int i = 0; i < nListCount; i++) - { - AVFormat_Packet_StreamWrite(xhPacket, 0, ppSt_MSGBuffer[i]->st_MSGBuffer.unData.ptszMSGBuffer, ppSt_MSGBuffer[i]->st_MSGBuffer.nMSGLen[0], &ppSt_MSGBuffer[i]->st_TimeStamp); - BaseLib_Memory_MSGFree(&ppSt_MSGBuffer[i]->st_MSGBuffer); - } - BaseLib_Memory_Free((XPPPMEM)&ppSt_MSGBuffer, nListCount); -} -void XCALLBACK HTTPTask_TaskPost_CBAudio(AVCODEC_AUDIO_MSGBUFFER* pSt_MSGBuffer, XPVOID lParam) -{ - int nListCount = 0; - AVCODEC_AUDIO_MSGBUFFER** ppSt_MSGBuffer; - AVFilter_Audio_Cvt(xhFilter, pSt_MSGBuffer, &ppSt_MSGBuffer, &nListCount); - for (int i = 0; i < nListCount; i++) - { - AudioCodec_Help_FifoSend(xhAudioFifo, ppSt_MSGBuffer[i]); - while (true) - { - AVCODEC_AUDIO_MSGBUFFER st_MSGBuffer = {}; - if (!AudioCodec_Help_FifoRecv(xhAudioFifo, &st_MSGBuffer)) - { - break; - } - int nAudioCount = 0; - AVCODEC_AUDIO_MSGBUFFER** ppSt_AudioBuffer; - AudioCodec_Stream_EnCodec(xhAudio, &st_MSGBuffer, &ppSt_AudioBuffer, &nAudioCount); - for (int j = 0; j < nAudioCount; j++) - { - AVFormat_Packet_StreamWrite(xhPacket, 1, ppSt_AudioBuffer[j]->st_MSGBuffer.unData.ptszMSGArray[0], ppSt_AudioBuffer[j]->st_MSGBuffer.nMSGLen[0], &ppSt_AudioBuffer[j]->st_TimeStamp); - BaseLib_Memory_MSGFree(&ppSt_AudioBuffer[j]->st_MSGBuffer); - } - BaseLib_Memory_Free((XPPPMEM)&ppSt_AudioBuffer, nAudioCount); - } - BaseLib_Memory_MSGFree(&ppSt_MSGBuffer[i]->st_MSGBuffer); - } - BaseLib_Memory_Free((XPPPMEM)&ppSt_MSGBuffer, nListCount); -} - bool HTTPTask_TaskPost_BackService(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nType) { int nSDLen = 0; @@ -308,162 +256,6 @@ bool HTTPTask_TaskPost_BackService(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s:请求上报信息成功,上报类型:%d"), lpszClientAddr, nBSType); } break; - case XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_BS_RECORDSTART: - { - if (bRecord) - { - st_HDRParam.nHttpCode = 400; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求屏幕录制失败,因为已经在录制中了"), lpszClientAddr); - return false; - } - //屏幕采集 - AVCOLLECT_SCREENINFO st_AVScreen; - memset(&st_AVScreen, '\0', sizeof(AVCOLLECT_SCREENINFO)); - - st_AVScreen.nFrameRate = 24; - st_AVScreen.nPosX = 0; - st_AVScreen.nPosY = 0; - _xstprintf(st_AVScreen.tszVideoSize, _X("%s"), _X("1920x1080")); -#ifdef _MSC_BUILD - xhScreen = AVCollect_Video_Init("gdigrab", tszDstBuffer, &st_AVScreen, HTTPTask_TaskPost_CBVideo); -#elif __linux__ - xhScreen = AVCollect_Video_Init("x11grab", tszDstBuffer, &st_AVScreen, HTTPTask_TaskPost_CBVideo); -#else - xhScreen = AVCollect_Video_Init("avfoundation", tszDstBuffer, &st_AVScreen, HTTPTask_TaskPost_CBVideo); -#endif - if (NULL == xhScreen) - { - st_HDRParam.nHttpCode = 400; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,屏幕采集器请求失败,错误码:%lX"), lpszClientAddr, AVCollect_GetLastError()); - return false; - } - xhPacket = AVFormat_Packet_Init(); - if (!AVFormat_Packet_Output(xhPacket, tszAPIBuffer, _X("flv"))) - { - st_HDRParam.nHttpCode = 400; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求屏幕录制失败,推流服务端:%s 连接失败,错误码:%lX"), lpszClientAddr, tszAPIBuffer, AVFormat_GetLastError()); - return false; - } - XHANDLE xhVideoCodec = NULL; - //初始化屏幕编码器 - XENGINE_PROTOCOL_AVINFO st_AVInfo = {}; - AVCollect_Video_GetInfo(xhScreen, &st_AVInfo); - st_AVInfo.st_VideoInfo.enAVCodec = ENUM_XENGINE_AVCODEC_VIDEO_TYPE_H264; - xhVideo = VideoCodec_Stream_EnInit(&st_AVInfo.st_VideoInfo); - if (NULL == xhVideo) - { - st_HDRParam.nHttpCode = 500; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求屏幕录制失败,打开编码器视频编码器失败,错误码:%lX"), lpszClientAddr, VideoCodec_GetLastError()); - return false; - } - VideoCodec_Stream_GetAVCodec(xhVideo, &xhVideoCodec); - AVFormat_Packet_StreamCreate(xhPacket, xhVideoCodec); - BaseLib_Memory_FreeCStyle((XPPMEM)&xhVideoCodec); - //启用音频 - if (1 == nBSType) - { -#ifdef _MSC_BUILD - xhSound = AVCollect_Audio_Init("dshow", tszSrcBuffer, HTTPTask_TaskPost_CBAudio); -#elif __linux__ - xhSound = AVCollect_Audio_Init("alsa", tszSrcBuffer, HTTPTask_TaskPost_CBAudio); -#else - xhSound = AVCollect_Audio_Init("avfoundation", tszSrcBuffer, HTTPTask_TaskPost_CBAudio); -#endif - if (NULL == xhSound) - { - st_HDRParam.nHttpCode = 400; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,初始化音频采集器请求失败,错误码:%lX"), lpszClientAddr, AVCollect_GetLastError()); - return false; - } - AVCollect_Audio_GetInfo(xhSound, &st_AVInfo); - AVFILTER_AUDIO_INFO st_AudioFilter = {}; - st_AudioFilter.nIndex = 0; - st_AudioFilter.st_AudioInfo = st_AVInfo.st_AudioInfo; - AVCollect_Audio_GetTimeBase(xhSound, &st_AudioFilter.st_AudioTime); - xhFilter = AVFilter_Audio_Init(_X("aresample=44100,aformat=sample_fmts=fltp:channel_layouts=stereo"), &st_AudioFilter); - if (NULL == xhFilter) - { - st_HDRParam.nHttpCode = 400; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,初始化音频滤镜失败,错误码:%lX"), lpszClientAddr, AVFilter_GetLastError()); - return false; - } - st_AVInfo.st_AudioInfo.nSampleRate = 44100; - st_AVInfo.st_AudioInfo.nSampleFmt = ENUM_AVCODEC_AUDIO_SAMPLEFMT_FLTP; - st_AVInfo.st_AudioInfo.enAVCodec = ENUM_XENGINE_AVCODEC_AUDIO_TYPE_AAC; - xhAudio = AudioCodec_Stream_EnInit(&st_AVInfo.st_AudioInfo); - if (NULL == xhAudio) - { - st_HDRParam.nHttpCode = 400; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,初始化音频采集器请求失败,错误码:%lX"), lpszClientAddr, AudioCodec_GetLastError()); - return false; - } - xhAudioFifo = AudioCodec_Help_FifoInit(ENUM_AVCODEC_AUDIO_SAMPLEFMT_FLTP, 2); - if (NULL == xhAudioFifo) - { - st_HDRParam.nHttpCode = 400; - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,初始化音频采集器请求失败,错误码:%lX"), lpszClientAddr, AudioCodec_GetLastError()); - return false; - } - XHANDLE xhAudioCodec = NULL; - AudioCodec_Stream_GetAVCodec(xhAudio, &xhAudioCodec); - AVFormat_Packet_StreamCreate(xhPacket, xhAudioCodec); - //使用了滤镜,需要单独设置 - AVCODEC_TIMEBASE st_TimeBase = {}; - st_TimeBase.nDen = 44100; - st_TimeBase.nNum = 1; - AVFormat_Packet_TimeBase(xhPacket, 1, &st_TimeBase); - BaseLib_Memory_FreeCStyle((XPPMEM)&xhAudioCodec); - } - bRecord = true; - AVFormat_Packet_Start(xhPacket); - AVCollect_Audio_Start(xhSound); - AVCollect_Video_Start(xhScreen); - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,开始屏幕录制,音频:%s,视频:%s 推流:%s 请求成功"), lpszClientAddr, tszSrcBuffer, tszDstBuffer, tszAPIBuffer); - } - break; - case XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_BS_RECORDSTOP: - { - bRecord = false; - - AVCollect_Video_Destory(xhScreen); - AVCollect_Audio_Destory(xhSound); - - VideoCodec_Stream_Destroy(xhVideo); - AudioCodec_Stream_Destroy(xhAudio); - AudioCodec_Help_FifoClose(xhAudioFifo); - - AVFilter_Audio_Destroy(xhFilter); - - AVFormat_Packet_Stop(xhPacket); - xhScreen = NULL; - xhSound = NULL; - xhVideo = NULL; - xhAudio = NULL; - xhPacket = NULL; - - HttpProtocol_Server_SendMsgEx(xhHTTPPacket, m_MemorySend.get(), &nSDLen, &st_HDRParam); - XEngine_Network_Send(lpszClientAddr, m_MemorySend.get(), nSDLen); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,停止屏幕录制推流请求成功"), lpszClientAddr); - } - break; case XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_BS_NOTHINGTODO: break; default: diff --git a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.h b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.h index d47cb876..cf6c14f7 100644 --- a/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.h +++ b/XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_TaskPost/TaskPost_BackService.h @@ -1,5 +1,2 @@ #pragma once -void XCALLBACK HTTPTask_TaskPost_CBVideo(XENGINE_MSGBUFFER* pSt_MSGBuffer, AVCODEC_TIMESTAMP* pSt_TimeInfo, int nNBSample, int nSampleFmt, XPVOID lParam); -void XCALLBACK HTTPTask_TaskPost_CBAudio(XENGINE_MSGBUFFER* pSt_MSGBuffer, AVCODEC_TIMESTAMP* pSt_TimeInfo, int nNBSample, int nSampleFmt, XPVOID lParam); - bool HTTPTask_TaskPost_BackService(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nType); \ No newline at end of file diff --git a/XEngine_Source/XEngine_UserProtocol.h b/XEngine_Source/XEngine_UserProtocol.h index dddaa056..9ae21b01 100644 --- a/XEngine_Source/XEngine_UserProtocol.h +++ b/XEngine_Source/XEngine_UserProtocol.h @@ -84,8 +84,6 @@ typedef enum #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_BS_SHUTDOWN 0x5008 //远程关闭计算机 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_BS_ECMD 0x5009 //执行命令 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_BS_REPORT 0x5010 //报告信息 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_BS_RECORDSTART 0x5011 //开始视频录制 -#define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_BS_RECORDSTOP 0x5012 //停止视频录制 //P2XP协议 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_P2XP_REQLOGIN 0x6001 //登录 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_P2XP_REPLOGIN 0x6002 @@ -283,10 +281,11 @@ typedef struct XCHAR tszUPTime[64]; //更新时间 XCHAR tszNextTime[64]; //更新时间 }XENGINE_OILINFO; -//插件参数 typedef struct { - XCHAR tszAPIVersion[64]; //API服务版本 - XCHAR tszXEngineVer[64]; //XEngine版本 -}XENGINE_PLUGINPARAM; + XCHAR tszFilePath[XPATH_MID]; //文件路径 + XCHAR tszVideoDevice[XPATH_MIN]; //视频设备 + XCHAR tszAudioDevice[XPATH_MIN]; //音频设备 + XCHAR tszRsolution[64]; //分辨率 +}XENGINE_AVRECORD; #pragma pack(pop) \ No newline at end of file