From 0a914eb89f56acedb85a9266158f20914e019e04 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 6 Mar 2025 13:49:30 +0800 Subject: [PATCH 01/29] ci:modify release packet name --- .github/workflows/RockyArm64_build.yml | 2 +- .github/workflows/RockyX86_64_build.yml | 2 +- .github/workflows/UbuntuArm64_build.yml | 2 +- .github/workflows/UbuntuX86_64_build.yml | 4 ++-- .github/workflows/macbuild.yml | 4 ++-- .github/workflows/msbuild.yml | 6 +++--- CHANGELOG | 2 ++ 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/.github/workflows/RockyArm64_build.yml b/.github/workflows/RockyArm64_build.yml index 43b7db5..1076e40 100644 --- a/.github/workflows/RockyArm64_build.yml +++ b/.github/workflows/RockyArm64_build.yml @@ -73,6 +73,6 @@ jobs: - name: Upload folder as artifact with RockyLinux uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-RockyLinux-9-Arm64 + name: XEngine_AuthorizeService-RockyLinux_9_Arm64 path: XEngine_Release/ retention-days: 1 diff --git a/.github/workflows/RockyX86_64_build.yml b/.github/workflows/RockyX86_64_build.yml index 0110fdf..80d4a02 100644 --- a/.github/workflows/RockyX86_64_build.yml +++ b/.github/workflows/RockyX86_64_build.yml @@ -78,6 +78,6 @@ jobs: - name: Upload folder as artifact with RockyLinux uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-RockyLinux-9-x86_64 + name: XEngine_AuthorizeService-RockyLinux_9_x86_64 path: XEngine_Release/ retention-days: 1 diff --git a/.github/workflows/UbuntuArm64_build.yml b/.github/workflows/UbuntuArm64_build.yml index 6fa5c39..38bd5f4 100644 --- a/.github/workflows/UbuntuArm64_build.yml +++ b/.github/workflows/UbuntuArm64_build.yml @@ -69,6 +69,6 @@ jobs: - name: Upload folder as artifact with ubuntu Arm64 uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Ubuntu-24.04-Arm64 + name: XEngine_AuthorizeService-Ubuntu_24.04_Arm64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/UbuntuX86_64_build.yml b/.github/workflows/UbuntuX86_64_build.yml index 308c771..4c2dd5b 100644 --- a/.github/workflows/UbuntuX86_64_build.yml +++ b/.github/workflows/UbuntuX86_64_build.yml @@ -79,13 +79,13 @@ jobs: if: matrix.os == 'ubuntu-22.04' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-x86_64-Ubuntu-22.04 + name: XEngine_AuthorizeService-Ubuntu_22.04_x86_64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with ubuntu24.04 if: matrix.os == 'ubuntu-24.04' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Ubuntu-24.04-x86_64 + name: XEngine_AuthorizeService-Ubuntu_24.04_x86_64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 1af2a40..242bc52 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -84,13 +84,13 @@ jobs: if: matrix.os == 'macos-13' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-x86_64-Mac + name: XEngine_AuthorizeService-Mac_x86_64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with mac arm if: matrix.os == 'macos-14' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Mac-Arm64 + name: XEngine_AuthorizeService-Mac_Arm64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index a88d1b8..d0c7fb7 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -113,20 +113,20 @@ jobs: if: matrix.configuration == 'Release' && matrix.platform == 'x86' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Windows-x86_32 + name: XEngine_AuthorizeService-Windows_x86_32 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with x64 if: matrix.configuration == 'Release' && matrix.platform == 'x64' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Windows-x86_64 + name: XEngine_AuthorizeService-Windows_x86_64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with Arm64 if: matrix.configuration == 'Release' && matrix.platform == 'Arm64' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Windows-Arm64 + name: XEngine_AuthorizeService-Windows_Arm64 path: XEngine_Release/ retention-days: 1 \ No newline at end of file diff --git a/CHANGELOG b/CHANGELOG index 18e9296..0c34e8c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ XEngine_Authorize V3.17.0.1001 +added:more ci release arm64 support added:option method for http added:tcp and websocket and http heartbeat and disable and enable support added:multi login for day supported @@ -10,6 +11,7 @@ update:depend library improved:parameter parse and more parameter supported delete:not used time function for help module +增加:更多CI发布ARM64版本支持 增加:HTTP OPTION方法支持 增加:tcp websocket,http 心跳支持并且支持启用禁用 增加:多端登录天数卡支持 -- Gitee From bbfdb3418832efc2acbba5a785c521f008cd43ca Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 18 Apr 2025 16:00:09 +0800 Subject: [PATCH 02/29] update:depend library --- XEngine_Source/XEngine_Depend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index fda9f7d..865c50f 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit fda9f7d9140cc6a32eecb499e2acb67e8e1c7e6f +Subproject commit 865c50f5199f3330ba8a3df48c6397363993fd36 -- Gitee From f19fc34f7c43b20cc613c306e98350ac42f54ebf Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 19 Apr 2025 13:40:02 +0800 Subject: [PATCH 03/29] modify:use XENGINE_MEMORY_SIZE_MAX instead XENGINE_MEMORY_SIZE_MAX --- .../AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp | 4 ++-- .../AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp | 4 ++-- .../AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp | 4 ++-- .../XEngine_AuthorizeService/Authorize_Hdr.h | 1 - .../XEngine_AuthorizeService/Authorize_Net.cpp | 8 ++++---- 5 files changed, 10 insertions(+), 11 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp index f5d8abe..c364cb9 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp @@ -48,7 +48,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L AUTHREG_USERTABLE** ppSt_UserInfo; AUTHSESSION_NETCLIENT** ppSt_ListClient; - XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_AUTH_MAX_BUFFER); + XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); if (NULL == ptszMsgBuffer) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 500, "internal server error"); @@ -56,7 +56,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户列表失败,申请内存失败,错误:%d"), lpszClientAddr, errno); return false; } - memset(ptszMsgBuffer, '\0', XENGINE_AUTH_MAX_BUFFER); + memset(ptszMsgBuffer, '\0', XENGINE_MEMORY_SIZE_MAX); Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); if ((nPosEnd - nPosStart) > 100) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp index 7b30319..f3acd60 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp @@ -16,12 +16,12 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L int nPosStart = 0; int nPosEnd = 0; int nListCount = 0; - XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_AUTH_MAX_BUFFER); + XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); if (NULL == ptszMsgBuffer) { return false; } - memset(ptszMsgBuffer, '\0', XENGINE_AUTH_MAX_BUFFER); + memset(ptszMsgBuffer, '\0', XENGINE_MEMORY_SIZE_MAX); Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); if ((nPosEnd - nPosStart) > 100) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp index 30e6428..e226e82 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp @@ -16,7 +16,7 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX int nPosStart = 0; int nPosEnd = 0; - XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_AUTH_MAX_BUFFER); + XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); if (NULL == ptszMsgBuffer) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 500, "internal server error"); @@ -24,7 +24,7 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户列表失败,申请内存失败,错误:%d"), lpszClientAddr, errno); return false; } - memset(ptszMsgBuffer, '\0', XENGINE_AUTH_MAX_BUFFER); + memset(ptszMsgBuffer, '\0', XENGINE_MEMORY_SIZE_MAX); Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); int nListCount = 0; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index 16a61bb..f00fdc5 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -87,7 +87,6 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #define XENGINE_AUTH_APP_NETTYPE_TCP 0 #define XENGINE_AUTH_APP_NETTYPE_WS 1 #define XENGINE_AUTH_APP_NETTYPE_HTTP 2 -#define XENGINE_AUTH_MAX_BUFFER (1024 * 1024 * 10) #include "Authorize_Config.h" #include "Authorize_Net.h" diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index 09a7f90..e726c26 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -162,7 +162,7 @@ bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType, LPCXSTR lpszPass) { - XCHAR* ptszMsgBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemPool, XENGINE_AUTH_MAX_BUFFER); + XCHAR* ptszMsgBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemPool, XENGINE_MEMORY_SIZE_MAX); if (NULL == ptszMsgBuffer) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,网络类型:%d 发送数据失败,内存申请失败,错误码:%d"), lpszClientAddr, nNetType, errno); @@ -177,7 +177,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, } else { - XCHAR* ptszCodecBuffer = (XCHAR*)malloc(XENGINE_AUTH_MAX_BUFFER); + XCHAR* ptszCodecBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); if (NULL == ptszCodecBuffer) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,网络类型:%d 发送数据失败,内存申请失败,错误码:%d"), lpszClientAddr, nNetType, errno); @@ -198,7 +198,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, } else { - int nSDSize = XENGINE_AUTH_MAX_BUFFER; + int nSDSize = XENGINE_MEMORY_SIZE_MAX; RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam; memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM)); @@ -210,7 +210,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, } else { - XCHAR* ptszCodecBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemPool, XENGINE_AUTH_MAX_BUFFER); + XCHAR* ptszCodecBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemPool, XENGINE_MEMORY_SIZE_MAX); if (NULL == ptszCodecBuffer) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,网络类型:%d 发送数据失败,内存申请失败,错误码:%d"), lpszClientAddr, nNetType, errno); -- Gitee From 1b77a687990ba67f0161c7fbcdb516dd0fea553c Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 19 Apr 2025 13:40:58 +0800 Subject: [PATCH 04/29] fixed:web socket memory malloc is incorrect --- .../XEngine_AuthorizeService/Authorize_Net.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index e726c26..bb14040 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -177,7 +177,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, } else { - XCHAR* ptszCodecBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); + XCHAR* ptszCodecBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemPool, XENGINE_MEMORY_SIZE_MAX); if (NULL == ptszCodecBuffer) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,网络类型:%d 发送数据失败,内存申请失败,错误码:%d"), lpszClientAddr, nNetType, errno); -- Gitee From 6ad8abda9bcad16224d307f7fe3e5d631540cd3d Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 19 Apr 2025 16:36:47 +0800 Subject: [PATCH 05/29] modify:add memory class file and modify http reply msg buffer to memory buffer --- .../AuthorizeHTTP_Announcement.cpp | 33 +++++++------ .../AuthorizeHTTP_Banned.cpp | 26 +++++------ .../AuthorizeHTTP_CDKey.cpp | 43 ++++++++--------- .../AuthorizeHTTP_Client.cpp | 46 +++++++++---------- .../AuthorizeHTTP_Serial.cpp | 34 +++++++------- .../XEngine_AuthorizeService/Authorize_Hdr.h | 1 + .../Authorize_HttpMemory.h | 44 ++++++++++++++++++ .../XEngine_AuthorizeService.vcxproj | 1 + .../XEngine_AuthorizeService.vcxproj.filters | 3 ++ 9 files changed, 135 insertions(+), 96 deletions(-) create mode 100644 XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpMemory.h diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp index 879a503..e6cb7a3 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp @@ -2,21 +2,20 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCXSTR lpszMsgBuffer, int nMsgLen) { - int nSDLen = 8196; - XCHAR tszSDBuffer[8196]; + int nSDLen = 0; LPCXSTR lpszAPIInsert = _X("insert"); LPCXSTR lpszAPIDelete = _X("delete"); LPCXSTR lpszAPIList = _X("list"); - - memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - + + CHttpMemory_PoolEx m_MemoryPool(XENGINE_MEMORY_SIZE_MAX); if (!st_FunSwitch.bSwitchNotice) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 503, "the function is closed"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,公告系统协议处理失败,功能已经被服务器关闭!"), lpszClientAddr); return false; } + if (0 == _tcsxnicmp(lpszAPIInsert, lpszAPIName, _tcsxlen(lpszAPIInsert))) { int nListCount = 0; @@ -33,16 +32,16 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN } if (nListCount > 10) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 510, "server limited"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 510, "server limited"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,公告系统协议处理失败,超过了服务器限制的公告数量!"), lpszClientAddr); return false; } Protocol_Parse_HttpParseAnnouncement(lpszMsgBuffer, nMsgLen, &st_Announcement); if (_tcsxlen(st_Announcement.tszContext) <= 1) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 510, "server limited"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 510, "server limited"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,公告系统协议处理失败,内容不能小于1个字节!"), lpszClientAddr); return false; } @@ -54,8 +53,8 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN { DBModule_MySQL_AnnouncementInsert(&st_Announcement); } - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,插入公告成功,公告信息:%s"), lpszClientAddr, st_Announcement.tszContext); } else if (0 == _tcsxnicmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) @@ -72,8 +71,8 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN { DBModule_MySQL_AnnouncementDelete(&st_Announcement); } - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,删除公告成功.删除公告ID:%lld"), lpszClientAddr, st_Announcement.nID); } else if (0 == _tcsxnicmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) @@ -89,8 +88,8 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN { DBModule_MySQL_AnnouncementList(&ppSt_Announcement, &nListCount); } - Protocol_Packet_HttpAnnouncement(tszSDBuffer, &nSDLen, &ppSt_Announcement, nListCount); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpAnnouncement(m_MemoryPool.get(), &nSDLen, &ppSt_Announcement, nListCount); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); BaseLib_Memory_Free((XPPPMEM)&ppSt_Announcement, nListCount); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,查询公告列表成功,公告个数:%d"), lpszClientAddr, nListCount); } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp index ce7316b..f8e66ec 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp @@ -2,19 +2,17 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCXSTR lpszMsgBuffer, int nMsgLen) { - int nSDLen = 8196; - XCHAR tszSDBuffer[8196]; + int nSDLen = 0; LPCXSTR lpszAPIInsert = _X("insert"); LPCXSTR lpszAPIDelete = _X("delete"); LPCXSTR lpszAPIList = _X("list"); LPCXSTR lpszAPIModify = _X("modify"); - memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - + CHttpMemory_PoolEx m_MemoryPool(XENGINE_MEMORY_SIZE_MAX); if (!st_FunSwitch.bSwitchBanned) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 503, "the function is closed"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,黑名单协议处理失败,功能已经被服务器关闭!"), lpszClientAddr); return false; } @@ -33,8 +31,8 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L { DBModule_MySQL_BannedInsert(&st_Banned); } - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,插入禁用列表成功,禁用的用户:%s,禁用的IP地址:%s"), lpszClientAddr, st_Banned.tszUserName, st_Banned.tszIPAddr); } else if (0 == _tcsxnicmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) @@ -51,8 +49,8 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L { DBModule_MySQL_BannedDelete(&st_Banned); } - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,删除禁用列表成功,删除禁用的用户:%s,删除禁用的IP地址:%s"), lpszClientAddr, st_Banned.tszUserName, st_Banned.tszIPAddr); } else if (0 == _tcsxnicmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) @@ -74,8 +72,8 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L { DBModule_MySQL_BannedList(&ppSt_BannedUser, &nCountUser, &ppSt_BannedAddr, &nCountAddr, nPosStart, nPosEnd); } - Protocol_Packet_HttpBanned(tszSDBuffer, &nSDLen, &ppSt_BannedUser, nCountUser, &ppSt_BannedAddr, nCountAddr); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpBanned(m_MemoryPool.get(), &nSDLen, &ppSt_BannedUser, nCountUser, &ppSt_BannedAddr, nCountAddr); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); BaseLib_Memory_Free((XPPPMEM)&ppSt_BannedAddr, nCountAddr); BaseLib_Memory_Free((XPPPMEM)&ppSt_BannedUser, nCountUser); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,查询禁用列表成功,禁用的用户个数:%d,禁用的IP地址个数:%d"), lpszClientAddr, nCountUser, nCountAddr); @@ -94,8 +92,8 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L { DBModule_MySQL_BannedUPDate(&st_Banned); } - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,修改禁用列表成功,修改的用户:%s,修改的IP地址:%s"), lpszClientAddr, st_Banned.tszUserName, st_Banned.tszIPAddr); } return true; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp index 5441249..94d4321 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp @@ -2,21 +2,18 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCXSTR lpszMsgBuffer, int nMsgLen) { - int nSDLen = 8196; - int nRVLen = 8196; - XCHAR tszSDBuffer[8196]; - XCHAR tszRVBuffer[8196]; + int nSDLen = 0; + int nRVLen = 0; LPCXSTR lpszAPICreate = _X("create"); LPCXSTR lpszAPIAuth = _X("auth"); LPCXSTR lpszAPIVer = _X("ver"); - memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - memset(tszRVBuffer, '\0', sizeof(tszRVBuffer)); - + CHttpMemory_PoolEx m_MemoryPoolSend(XENGINE_MEMORY_SIZE_MAX); + CHttpMemory_PoolEx m_MemoryPoolRecv(XENGINE_MEMORY_SIZE_MAX); if (!st_FunSwitch.bSwitchCDKey) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, 503, "the function is closed"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,CDKey验证授权失败,功能已经被服务器关闭!"), lpszClientAddr); return false; } @@ -50,14 +47,14 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP BaseLib_Memory_Free((XPPPMEM)&pptszSerialList, nSerialCount); } - if (!Authorize_CDKey_WriteMemory(tszRVBuffer, &nRVLen, &st_Authorize)) + if (!Authorize_CDKey_WriteMemory(m_MemoryPoolRecv.get(), &nRVLen, &st_Authorize)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 406, "Not Acceptable,write key failed"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, 406, "Not Acceptable,write key failed"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求创建CDKEY协议失败,服务器内部错误:%lX"), lpszClientAddr, Authorize_GetLastError()); return false; } - XEngine_Client_TaskSend(lpszClientAddr, tszRVBuffer, nRVLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolRecv.get(), nRVLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求创建CDKEY成功,APP名:%s,APP版本:%s"), lpszClientAddr, st_Authorize.st_AuthAppInfo.tszAppName, st_Authorize.st_AuthAppInfo.tszAppVer); } else if (0 == _tcsxnicmp(lpszAPIAuth, lpszAPIName, _tcsxlen(lpszAPIAuth))) @@ -79,8 +76,8 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP { Authorize_CDKey_BuildKeyTime(&st_Authorize, _ttxoll(st_Authorize.st_AuthRegInfo.tszLeftTime)); } - Authorize_CDKey_WriteMemory(tszRVBuffer, &nRVLen, &st_Authorize); - XEngine_Client_TaskSend(lpszClientAddr, tszRVBuffer, nRVLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Authorize_CDKey_WriteMemory(m_MemoryPoolRecv.get(), &nRVLen, &st_Authorize); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolRecv.get(), nRVLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求授权CDKEY成功,APP名:%s,APP版本:%s,授权期限:%s"), lpszClientAddr, st_Authorize.st_AuthAppInfo.tszAppName, st_Authorize.st_AuthAppInfo.tszAppVer, st_Authorize.st_AuthRegInfo.tszLeftTime); } else if (0 == _tcsxnicmp(lpszAPIVer, lpszAPIName, _tcsxlen(lpszAPIVer))) @@ -92,26 +89,26 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP if (ENUM_AUTHORIZE_MODULE_VERMODE_TYPE_NETWORK != st_Authorize.st_AuthRegInfo.enVModeType) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "unsupport,cdkey is not authorized"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, 400, "unsupport,cdkey is not authorized"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求验证CDKEY失败,cdkey未授权或者已超时,错误:%lX"), lpszClientAddr, Authorize_GetLastError()); return false; } if (!Authorize_CDKey_GetLeftTimer(&st_Authorize)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "Unauthorized,cdkey is not authorized"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, 401, "Unauthorized,cdkey is not authorized"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求验证CDKEY失败,cdkey未授权或者已超时,错误:%lX"), lpszClientAddr, Authorize_GetLastError()); return false; } - Authorize_CDKey_WriteMemory(tszRVBuffer, &nRVLen, &st_Authorize); - XEngine_Client_TaskSend(lpszClientAddr, tszRVBuffer, nRVLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Authorize_CDKey_WriteMemory(m_MemoryPoolRecv.get(), &nRVLen, &st_Authorize); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolRecv.get(), nRVLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求验证CDKEY成功,APP名:%s,APP版本:%s,授权期限:%s"), lpszClientAddr, st_Authorize.st_AuthAppInfo.tszAppName, st_Authorize.st_AuthAppInfo.tszAppVer, st_Authorize.st_AuthRegInfo.tszLeftTime); } else { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "Not support protocol"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, 404, "Not support protocol"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求了一条未知的子协议:%s"), lpszClientAddr, lpszAPIName); } return true; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp index c364cb9..d427d56 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp @@ -2,16 +2,14 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCXSTR lpszMsgBuffer, int nMsgLen) { - int nSDLen = 8196; - XCHAR tszSDBuffer[8196]; + int nSDLen = 0; LPCXSTR lpszAPIGet = _X("get"); LPCXSTR lpszAPIList = _X("list"); LPCXSTR lpszAPIClose = _X("close"); LPCXSTR lpszAPIModify = _X("modify"); LPCXSTR lpszAPIDelete = _X("delete"); - memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - + CHttpMemory_PoolEx m_MemoryPool(XENGINE_MEMORY_SIZE_MAX); if (0 == _tcsxnicmp(lpszAPIGet, lpszAPIName, _tcsxlen(lpszAPIGet))) { AUTHREG_USERTABLE st_UserTable; @@ -29,13 +27,13 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } if (!bSuccess) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "not found client"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 404, "not found client"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户:%s 信息失败,错误码:%lX"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, DBModule_GetLastError()); return false; } - Protocol_Packet_HttpClientInfo(tszSDBuffer, &nSDLen, &st_UserTable); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpClientInfo(m_MemoryPool.get(), &nSDLen, &st_UserTable); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求客户端:%s 信息成功"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName); } else if (0 == _tcsxnicmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) @@ -51,8 +49,8 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); if (NULL == ptszMsgBuffer) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 500, "internal server error"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 500, "internal server error"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户列表失败,申请内存失败,错误:%d"), lpszClientAddr, errno); return false; } @@ -61,8 +59,8 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); if ((nPosEnd - nPosStart) > 100) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "pos parament is not rigth"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 400, "pos parament is not rigth"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户列表失败,POS参数不正确,%d - %d"), lpszClientAddr, nPosStart, nPosEnd); return false; } @@ -101,8 +99,8 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L Protocol_Parse_HttpParseUser(lpszMsgBuffer, nMsgLen, &st_UserInfo); if (!Session_Authorize_GetClient(&ppSt_ListClient, &nListCount, st_UserInfo.tszUserName)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "not found client"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 404, "not found client"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求剔除用户:%s 没有找到,可能不在线"), lpszClientAddr, st_UserInfo.tszUserName); return false; } @@ -111,8 +109,8 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr, true); } BaseLib_Memory_Free((XPPPMEM)&ppSt_ListClient, nListCount); - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求剔除用户:%s 成功,在线用户数:%d"), lpszClientAddr, st_UserInfo.tszUserName, nListCount); } else if (0 == _tcsxnicmp(lpszAPIModify, lpszAPIName, _tcsxlen(lpszAPIModify))) @@ -141,14 +139,14 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } if (!bSuccess) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "not found client"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 404, "not found client"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求修改用户信息失败:%s 错误码:%lX"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, DBModule_GetLastError()); return false; } Session_Authorize_SetUser(&st_UserTable); - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求修改用户信息:%s 成功"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName); } else if (0 == _tcsxnicmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) @@ -177,13 +175,13 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } if (!bSuccess) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "not found client"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 404, "not found client"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求删除用户失败:%s 错误码:%lX"), lpszClientAddr, st_UserInfo.tszUserName, DBModule_GetLastError()); return false; } - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求删除用户:%s 成功"), lpszClientAddr, st_UserInfo.tszUserName); } return true; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp index f3acd60..6446b82 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp @@ -2,15 +2,13 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCXSTR lpszMsgBuffer, int nMsgLen) { - int nSDLen = 8196; - XCHAR tszSDBuffer[8196]; + int nSDLen = 0; LPCXSTR lpszAPIList = _X("list"); LPCXSTR lpszAPIInsert = _X("insert"); LPCXSTR lpszAPIDelete = _X("delete"); LPCXSTR lpszAPIPush = _X("push"); - memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - + CHttpMemory_PoolEx m_MemoryPool(XENGINE_MEMORY_SIZE_MAX); if (0 == _tcsxnicmp(lpszAPIList, lpszAPIName, _tcsxlen(lpszAPIList))) { int nPosStart = 0; @@ -26,8 +24,8 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); if ((nPosEnd - nPosStart) > 100) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "pos parament is not rigth"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 400, "pos parament is not rigth"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求序列号列表失败,POS参数不正确,%d - %d"), lpszClientAddr, nPosStart, nPosEnd); return false; } @@ -76,16 +74,16 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L { if (6 != _stxscanf(tszHasTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), &st_AuthTimer.wYear, &st_AuthTimer.wMonth, &st_AuthTimer.wDay, &st_AuthTimer.wHour, &st_AuthTimer.wMinute, &st_AuthTimer.wSecond)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "time request is failed"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 400, "time request is failed"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求插入序列卡失败,时间格式错误"), lpszClientAddr); return false; } } else { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 415, "not support serial types"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 415, "not support serial types"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求插入序列卡失败,不支持的类型格式:%d"), lpszClientAddr, enSerialType); return false; } @@ -94,8 +92,8 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L LPCXSTR lpszUserHdr = _X("XAUTH"); if (!Authorize_Serial_Creator(&pptszSerialNumber, lpszUserHdr, nSerialCount, nNumberCount, &st_AuthTimer, enSerialType)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 500, "Internal Server Error"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 500, "Internal Server Error"); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,创建序列卡失败,错误码:%lX"), lpszClientAddr, Authorize_GetLastError()); return false; } @@ -115,8 +113,8 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } } BaseLib_Memory_Free((XPPPMEM)&pptszSerialNumber, nSerialCount); - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求插入序列号成功,个数:%d"), lpszClientAddr, nSerialCount); } else if (0 == _tcsxnicmp(lpszAPIDelete, lpszAPIName, _tcsxlen(lpszAPIDelete))) @@ -140,8 +138,8 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } } BaseLib_Memory_Free((XPPPMEM)&ppSt_SerialTable, nListCount); - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求删除序列号成功,删除个数:%d"), lpszClientAddr, nListCount); } else if (0 == _tcsxnicmp(lpszAPIPush, lpszAPIName, _tcsxlen(lpszAPIPush))) @@ -165,8 +163,8 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } } BaseLib_Memory_Free((XPPPMEM)&ppSt_SerialTable, nListCount); - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求推送自定义序列号成功,个数:%d"), lpszClientAddr, nListCount); } return true; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h index f00fdc5..025ac4e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Hdr.h @@ -88,6 +88,7 @@ extern XENGINE_FUNCTIONSWITCH st_FunSwitch; #define XENGINE_AUTH_APP_NETTYPE_WS 1 #define XENGINE_AUTH_APP_NETTYPE_HTTP 2 +#include "Authorize_HttpMemory.h" #include "Authorize_Config.h" #include "Authorize_Net.h" #include "Authorize_Task.h" diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpMemory.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpMemory.h new file mode 100644 index 0000000..08e89fe --- /dev/null +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpMemory.h @@ -0,0 +1,44 @@ +#pragma once +/******************************************************************** +// Created: 2025/04/19 14:02:23 +// File Name: D:\XEngine_Authorize\XEngine_Source\XEngine_APPService\XEngine_AuthorizeService\Authorize_HttpMemory.h +// File Path: D:\XEngine_Authorize\XEngine_Source\XEngine_APPService\XEngine_AuthorizeService +// File Base: Authorize_HttpMemory +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: 内存池封装 +// History: +*********************************************************************/ +class CHttpMemory_PoolEx +{ +public: + CHttpMemory_PoolEx(size_t nSize) + { + lPtr = ManagePool_Memory_Alloc(xhMemPool, nSize); + if (NULL == lPtr) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ALERT, _X("内存池分配失败,系统面临崩溃!")); + return; + } + } + ~CHttpMemory_PoolEx() + { + if (NULL != lPtr) + { + ManagePool_Memory_Free(xhMemPool, lPtr); + } + } +public: + // 支持类型转换 + template + T* as() { + return static_cast(lPtr); + } + XCHAR* get() + { + return static_cast(lPtr); + } +private: + XPVOID lPtr = NULL; +}; \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj index ea5d3b0..264a063 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj @@ -264,6 +264,7 @@ + diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters index d0de6cb..54e46c7 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.vcxproj.filters @@ -137,5 +137,8 @@ 头文件\AuthorizeHTTP_Get + + 头文件 + \ No newline at end of file -- Gitee From cd2f55c5ad4d2d116e3c866aeb65a2675d831687 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 21 Apr 2025 11:13:01 +0800 Subject: [PATCH 06/29] ci:test ubuntu arm images --- .github/workflows/UbuntuArm64_build.yml | 2 +- .github/workflows/UbuntuX86_64_build.yml | 36 +++++++++++++++++++++--- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/.github/workflows/UbuntuArm64_build.yml b/.github/workflows/UbuntuArm64_build.yml index 38bd5f4..96c47ae 100644 --- a/.github/workflows/UbuntuArm64_build.yml +++ b/.github/workflows/UbuntuArm64_build.yml @@ -3,7 +3,7 @@ name: ubuntu Arm64 build workflows on: push: branches: - - 'develop' + - 'develop1' paths: - 'XEngine_Source/**' - 'XEngine_Release/**' diff --git a/.github/workflows/UbuntuX86_64_build.yml b/.github/workflows/UbuntuX86_64_build.yml index 4c2dd5b..95fd377 100644 --- a/.github/workflows/UbuntuX86_64_build.yml +++ b/.github/workflows/UbuntuX86_64_build.yml @@ -18,6 +18,7 @@ jobs: include: - os: ubuntu-22.04 - os: ubuntu-24.04 + - os: ubuntu-24.04-arm runs-on: ${{ matrix.os }} steps: @@ -43,6 +44,21 @@ jobs: cd libxengine chmod 777 * sudo ./XEngine_LINEnv.sh -i 3 + - name: Set up Dependency ubuntu24.04 ARM64 Environment + if: matrix.os == 'ubuntu-24.04-arm' + run: | + cd libxengine + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 0 + + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_24.04_Arm64.zip + unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 + cd XEngine_UBuntu_24.04_Arm64 + + sudo cp -rf ./XEngine_Include /usr/local/include + sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + sudo ldconfig - name: Set up Dependency ubuntu22.04 Environment if: matrix.os == 'ubuntu-22.04' run: | @@ -59,14 +75,19 @@ jobs: sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig - - name: make + - name: make x86 + if: matrix.os == 'ubuntu-24.04' || matrix.os == 'ubuntu-22.04' run: | cd XEngine_Source - make + make RELEASE=1 make FLAGS=InstallAll make FLAGS=CleanAll - - make RELEASE=1 + cd .. + - name: make arm + if: matrix.os == 'ubuntu-24.04-arm' + run: | + cd XEngine_Source + make ARCH=Arm64 RELEASE=1 make FLAGS=InstallAll make FLAGS=CleanAll cd .. @@ -88,4 +109,11 @@ jobs: with: name: XEngine_AuthorizeService-Ubuntu_24.04_x86_64 path: XEngine_Release/ + retention-days: 1 + - name: Upload folder as artifact with ubuntu24.04 arm64 + if: matrix.os == 'ubuntu-24.04-arm' + uses: actions/upload-artifact@v4 + with: + name: XEngine_AuthorizeService-Ubuntu_24.04_Arm64 + path: XEngine_Release/ retention-days: 1 \ No newline at end of file -- Gitee From ce688a2e44440a76e0c52886a8a8dc6c8df05277 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 21 Apr 2025 11:24:40 +0800 Subject: [PATCH 07/29] ci:mac test --- .github/workflows/UbuntuArm64_build.yml | 74 ------------------- ...buntuX86_64_build.yml => Ubuntu_build.yml} | 0 .github/workflows/macbuild.yml | 12 +-- .github/workflows/release.yml | 13 +--- 4 files changed, 8 insertions(+), 91 deletions(-) delete mode 100644 .github/workflows/UbuntuArm64_build.yml rename .github/workflows/{UbuntuX86_64_build.yml => Ubuntu_build.yml} (100%) diff --git a/.github/workflows/UbuntuArm64_build.yml b/.github/workflows/UbuntuArm64_build.yml deleted file mode 100644 index 96c47ae..0000000 --- a/.github/workflows/UbuntuArm64_build.yml +++ /dev/null @@ -1,74 +0,0 @@ -name: ubuntu Arm64 build workflows - -on: - push: - branches: - - 'develop1' - paths: - - 'XEngine_Source/**' - - 'XEngine_Release/**' - - '.github/**' - -jobs: - build: - runs-on: ubuntu-24.04 - env: - IMAGE_NAME: ubuntu:24.04 - - strategy: - fail-fast: false - matrix: - arch: [linux/arm64] - - steps: - - name: Checkout main repository code - uses: actions/checkout@v4 - with: - ref: 'develop' - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Build ${{ matrix.arch }} - run: | - docker run --platform ${{ matrix.arch }} --rm \ - -v ${{ github.workspace }}:/workspace \ - -w /workspace ${{ env.IMAGE_NAME }} /bin/sh -c ' - set -e - apt update -y - apt install git make g++ wget curl jq unzip -y - - git config --global --add safe.directory /workspace - git submodule init - git submodule update - - latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) - wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_24.04_Arm64.zip - unzip ./XEngine_UBuntu_24.04_Arm64.zip -d ./XEngine_UBuntu_24.04_Arm64 - cd XEngine_UBuntu_24.04_Arm64 - - chmod 777 ./XEngine_LINEnv.sh - ./XEngine_LINEnv.sh -i 0 - - cp -rf ./XEngine_Include /usr/local/include - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; - ldconfig - cd .. - - cd XEngine_Source - make ARCH=Arm64 RELEASE=1 - make FLAGS=InstallAll - make FLAGS=CleanAll - cd .. - - cd XEngine_Release - ./XEngine_AuthorizeService -t - chown -R $(id -u):$(id -g) . - chmod -R a+r . ' - - - name: Upload folder as artifact with ubuntu Arm64 - uses: actions/upload-artifact@v4 - with: - name: XEngine_AuthorizeService-Ubuntu_24.04_Arm64 - path: XEngine_Release/ - retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/UbuntuX86_64_build.yml b/.github/workflows/Ubuntu_build.yml similarity index 100% rename from .github/workflows/UbuntuX86_64_build.yml rename to .github/workflows/Ubuntu_build.yml diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 242bc52..1081c2c 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -14,8 +14,8 @@ jobs: strategy: matrix: include: - - os: macos-13 - - os: macos-14 + - os: macos-14-large + - os: macos-14-xlarge runs-on: ${{ matrix.os }} steps: @@ -40,13 +40,13 @@ jobs: run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - name: Set up Dependency x86_64 Environment - if: matrix.os == 'macos-13' + if: matrix.os == 'macos-14-large' run: | cd libxengine chmod 777 * ./XEngine_LINEnv.sh -i 3 - name: Set up Dependency Arm64 Environment - if: matrix.os == 'macos-14' + if: matrix.os == 'macos-14-xlarge' run: | cd libxengine chmod 777 * @@ -81,14 +81,14 @@ jobs: ./XEngine_AuthorizeService -t - name: Upload folder as artifact with mac x64 - if: matrix.os == 'macos-13' + if: matrix.os == 'macos-14-large' uses: actions/upload-artifact@v4 with: name: XEngine_AuthorizeService-Mac_x86_64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with mac arm - if: matrix.os == 'macos-14' + if: matrix.os == 'macos-14-xlarge' uses: actions/upload-artifact@v4 with: name: XEngine_AuthorizeService-Mac_Arm64 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7ca74d7..bab05ba 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,19 +16,10 @@ jobs: with: fetch-depth: 0 - - name: Download Ubuntu x86_64 build + - name: Download Ubuntu build uses: dawidd6/action-download-artifact@v6 with: - workflow: UbuntuX86_64_build.yml - workflow_conclusion: success - check_artifacts: false - skip_unpack: true - if_no_artifact_found: fail - path: ./XRelease/ - - name: Download Ubuntu Arm64 build - uses: dawidd6/action-download-artifact@v6 - with: - workflow: UbuntuArm64_build.yml + workflow: Ubuntu_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true -- Gitee From 4d52393010ce2d9081ad5326483c3c8bc505d768 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 6 May 2025 10:05:23 +0800 Subject: [PATCH 08/29] update:depend library ci:macos update --- .github/workflows/macbuild.yml | 12 ++++++------ XEngine_Source/XEngine_Depend | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 1081c2c..242bc52 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -14,8 +14,8 @@ jobs: strategy: matrix: include: - - os: macos-14-large - - os: macos-14-xlarge + - os: macos-13 + - os: macos-14 runs-on: ${{ matrix.os }} steps: @@ -40,13 +40,13 @@ jobs: run: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - name: Set up Dependency x86_64 Environment - if: matrix.os == 'macos-14-large' + if: matrix.os == 'macos-13' run: | cd libxengine chmod 777 * ./XEngine_LINEnv.sh -i 3 - name: Set up Dependency Arm64 Environment - if: matrix.os == 'macos-14-xlarge' + if: matrix.os == 'macos-14' run: | cd libxengine chmod 777 * @@ -81,14 +81,14 @@ jobs: ./XEngine_AuthorizeService -t - name: Upload folder as artifact with mac x64 - if: matrix.os == 'macos-14-large' + if: matrix.os == 'macos-13' uses: actions/upload-artifact@v4 with: name: XEngine_AuthorizeService-Mac_x86_64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with mac arm - if: matrix.os == 'macos-14-xlarge' + if: matrix.os == 'macos-14' uses: actions/upload-artifact@v4 with: name: XEngine_AuthorizeService-Mac_Arm64 diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index 865c50f..66e9b81 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit 865c50f5199f3330ba8a3df48c6397363993fd36 +Subproject commit 66e9b81f47f5d9476e2e5cecf919d0b6ee4b5e9d -- Gitee From 32c7264ff84f9f3b11ff0b0e5f9dfe19885c5b78 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 6 May 2025 10:23:48 +0800 Subject: [PATCH 09/29] fixed:build failed --- .../Authorize_CDKey/Authorize_CDKey.cpp | 6 +++--- .../Session_Authorize/Session_Authorize.cpp | 4 ++-- .../AuthorizeModule_Session/Session_Token/Session_Token.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp b/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp index 370a155..4d57d36 100644 --- a/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp +++ b/XEngine_Source/AuthorizeModule_CDKey/Authorize_CDKey/Authorize_CDKey.cpp @@ -97,7 +97,7 @@ bool CAuthorize_CDKey::Authorize_CDKey_WriteKey(LPCXSTR lpszFileKey, XENGINE_AUT memset(tszTimeStart, '\0', sizeof(tszTimeStart)); memset(tszTimeEnd, '\0', sizeof(tszTimeEnd)); BaseLib_Time_TimeToStr(tszTimeEnd); - BaseLib_TimeSpan_GetForStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime, tszTimeEnd, &nUsedTime, ENUM_XENGINE_BASELIB_TIME_SPAN_TYPE_SECOND); + BaseLib_TimeSpan_GetForStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime, tszTimeEnd, &nUsedTime, ENUM_XENGINE_BASELIB_TIME_TYPE_SECOND); pSt_AuthLocal->st_AuthRegInfo.nHasTime -= nUsedTime; } //添加注册信息 @@ -472,7 +472,7 @@ bool CAuthorize_CDKey::Authorize_CDKey_WriteMemory(XCHAR* ptszMsgBuffer, int* pI memset(tszTimeStart, '\0', sizeof(tszTimeStart)); memset(tszTimeEnd, '\0', sizeof(tszTimeEnd)); BaseLib_Time_TimeToStr(tszTimeEnd); - BaseLib_TimeSpan_GetForStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime, tszTimeEnd, &nUsedTime, ENUM_XENGINE_BASELIB_TIME_SPAN_TYPE_SECOND); + BaseLib_TimeSpan_GetForStr(pSt_AuthLocal->st_AuthRegInfo.tszStartTime, tszTimeEnd, &nUsedTime, ENUM_XENGINE_BASELIB_TIME_TYPE_SECOND); pSt_AuthLocal->st_AuthRegInfo.nHasTime -= nUsedTime; } //添加注册信息 @@ -1009,7 +1009,7 @@ bool CAuthorize_CDKey::Authorize_CDKey_GetLeftTimer(XENGINE_AUTHORIZE_LOCAL* pSt else if (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_CUSTOM == pSt_AuthLocal->st_AuthRegInfo.enSerialType) { _stxscanf(pSt_AuthLocal->st_AuthRegInfo.tszLeftTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), &st_EndTimer.wYear, &st_EndTimer.wMonth, &st_EndTimer.wDay, &st_EndTimer.wHour, &st_EndTimer.wMinute, &st_EndTimer.wSecond); - BaseLib_TimeSpan_GetForStu(&st_SysTimer, &st_EndTimer, &pSt_AuthLocal->st_AuthRegInfo.nHasTime, ENUM_XENGINE_BASELIB_TIME_SPAN_TYPE_SECOND); + BaseLib_TimeSpan_GetForStu(&st_SysTimer, &st_EndTimer, &pSt_AuthLocal->st_AuthRegInfo.nHasTime, ENUM_XENGINE_BASELIB_TIME_TYPE_SECOND); } else { diff --git a/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp b/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp index 5aac6f2..4bd8a60 100644 --- a/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp +++ b/XEngine_Source/AuthorizeModule_Session/Session_Authorize/Session_Authorize.cpp @@ -407,7 +407,7 @@ XHTHREAD CSession_Authorize::Session_Authorize_ActiveThread(XPVOID lParam) //获取现在的系统时间 BaseLib_Time_GetSysTime(&st_LibTimer); //用户登录了多少秒钟 - BaseLib_TimeSpan_GetForStu(&stl_ListIterator->st_LibTimer, &st_LibTimer, &nOnlineSpan, ENUM_XENGINE_BASELIB_TIME_SPAN_TYPE_SECOND); + BaseLib_TimeSpan_GetForStu(&stl_ListIterator->st_LibTimer, &st_LibTimer, &nOnlineSpan, ENUM_XENGINE_BASELIB_TIME_TYPE_SECOND); nTimeCount += nOnlineSpan; //登陆成功的。我们要处理他过期 switch (stl_ListIterator->st_UserTable.enSerialType) @@ -471,7 +471,7 @@ XHTHREAD CSession_Authorize::Session_Authorize_ActiveThread(XPVOID lParam) break; } //剩余天数,通过秒钟来处理 - BaseLib_TimeSpan_GetForStu(&st_LibTimer, &st_TimeLeft, &nLeftTime, ENUM_XENGINE_BASELIB_TIME_SPAN_TYPE_SECOND); + BaseLib_TimeSpan_GetForStu(&st_LibTimer, &st_TimeLeft, &nLeftTime, ENUM_XENGINE_BASELIB_TIME_TYPE_SECOND); //获取过期时间 stl_ListIterator->nLeftTime = nLeftTime; stl_ListIterator->nOnlineTime = nOnlineSpan; diff --git a/XEngine_Source/AuthorizeModule_Session/Session_Token/Session_Token.cpp b/XEngine_Source/AuthorizeModule_Session/Session_Token/Session_Token.cpp index a0fec87..5e6f743 100644 --- a/XEngine_Source/AuthorizeModule_Session/Session_Token/Session_Token.cpp +++ b/XEngine_Source/AuthorizeModule_Session/Session_Token/Session_Token.cpp @@ -342,7 +342,7 @@ XHTHREAD CSession_Token::Session_Token_Thread(XPVOID lParam) BaseLib_Time_GetSysTime(&st_LibTimer); //获取现在的系统时间 __int64x nOnlineSpan = 0; //在线时间 //用户登录了多少秒 - BaseLib_TimeSpan_GetForStu(&stl_MapIterator->second.st_LibTimer, &st_LibTimer, &nOnlineSpan, ENUM_XENGINE_BASELIB_TIME_SPAN_TYPE_SECOND); + BaseLib_TimeSpan_GetForStu(&stl_MapIterator->second.st_LibTimer, &st_LibTimer, &nOnlineSpan, ENUM_XENGINE_BASELIB_TIME_TYPE_SECOND); if (stl_MapIterator->second.nTimeout > 0) { if (nOnlineSpan > stl_MapIterator->second.nTimeout) -- Gitee From 220408b25b4c75fa8813affcbda3ff8f1b8e8f0f Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 6 May 2025 10:50:50 +0800 Subject: [PATCH 10/29] ci:ubuntu 22.04 arm64 support --- .github/workflows/Ubuntu_build.yml | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/.github/workflows/Ubuntu_build.yml b/.github/workflows/Ubuntu_build.yml index 95fd377..52cb3e9 100644 --- a/.github/workflows/Ubuntu_build.yml +++ b/.github/workflows/Ubuntu_build.yml @@ -1,4 +1,4 @@ -name: ubuntu x86_64 build workflows +name: ubuntu build workflows on: push: @@ -18,6 +18,7 @@ jobs: include: - os: ubuntu-22.04 - os: ubuntu-24.04 + - os: ubuntu-22.04-arm - os: ubuntu-24.04-arm runs-on: ${{ matrix.os }} @@ -71,6 +72,21 @@ jobs: unzip ./XEngine_UBuntu_22.04_x86-64.zip -d ./XEngine_UBuntu_22.04_x86-64 cd XEngine_UBuntu_22.04_x86-64 + sudo cp -rf ./XEngine_Include /usr/local/include + sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + sudo ldconfig + - name: Set up Dependency ubuntu22.04 arm64 Environment + if: matrix.os == 'ubuntu-22.04-arm' + run: | + cd libxengine + chmod 777 * + sudo ./XEngine_LINEnv.sh -i 0 + + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_UBuntu_22.04_Arm64.zip + unzip ./XEngine_UBuntu_22.04_Arm64.zip -d ./XEngine_UBuntu_22.04_Arm64 + cd XEngine_UBuntu_22.04_Arm64 + sudo cp -rf ./XEngine_Include /usr/local/include sudo find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; sudo ldconfig @@ -84,7 +100,7 @@ jobs: make FLAGS=CleanAll cd .. - name: make arm - if: matrix.os == 'ubuntu-24.04-arm' + if: matrix.os == 'ubuntu-24.04-arm' || matrix.os == 'ubuntu-22.04-arm' run: | cd XEngine_Source make ARCH=Arm64 RELEASE=1 @@ -116,4 +132,11 @@ jobs: with: name: XEngine_AuthorizeService-Ubuntu_24.04_Arm64 path: XEngine_Release/ + retention-days: 1 + - name: Upload folder as artifact with ubuntu22.04 arm64 + if: matrix.os == 'ubuntu-22.04-arm' + uses: actions/upload-artifact@v4 + with: + name: XEngine_AuthorizeService-Ubuntu_22.04_Arm64 + path: XEngine_Release/ retention-days: 1 \ No newline at end of file -- Gitee From e00fd0aaa719a6927fc6a625c09b714a4905d8ea Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 6 May 2025 11:31:25 +0800 Subject: [PATCH 11/29] added:unified error code --- XEngine_Source/XAuth_BuildSwitch.h | 2 +- XEngine_Source/XAuth_Protocol.h | 22 +++++++++++ .../AuthorizeHTTP_GetTask.cpp | 8 ++-- .../AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp | 14 +++---- .../AuthorizeHTTP_Announcement.cpp | 6 +-- .../AuthorizeHTTP_Banned.cpp | 2 +- .../AuthorizeHTTP_CDKey.cpp | 10 ++--- .../AuthorizeHTTP_Client.cpp | 12 +++--- .../AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp | 4 +- .../AuthorizeHTTP_Serial.cpp | 8 ++-- .../AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp | 2 +- .../AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp | 37 +++++++++---------- .../Authorize_HttpTask.cpp | 26 ++++++------- .../Authorize_TCPTask.cpp | 28 +++++++------- 14 files changed, 101 insertions(+), 80 deletions(-) diff --git a/XEngine_Source/XAuth_BuildSwitch.h b/XEngine_Source/XAuth_BuildSwitch.h index f71e021..7ec160f 100644 --- a/XEngine_Source/XAuth_BuildSwitch.h +++ b/XEngine_Source/XAuth_BuildSwitch.h @@ -14,5 +14,5 @@ #define _XAUTH_BUILD_SWITCH_CLIENT_HTTP 1 #if (XENGINE_VERSION_KERNEL <= 9) && (XENGINE_VERSION_MAIN < 10) - typedef XENGINE_LIBTIMER XENGINE_LIBTIME; +typedef XENGINE_LIBTIMER XENGINE_LIBTIME; #endif \ No newline at end of file diff --git a/XEngine_Source/XAuth_Protocol.h b/XEngine_Source/XAuth_Protocol.h index 64d2370..b9438c0 100644 --- a/XEngine_Source/XAuth_Protocol.h +++ b/XEngine_Source/XAuth_Protocol.h @@ -32,6 +32,28 @@ #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REPDCODE 0x2011 #define XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_TIMEDOUT 0x2FFF //通知客户端时间到期 ////////////////////////////////////////////////////////////////////////// +// 导出的错误码 +////////////////////////////////////////////////////////////////////////// +#define ERROR_AUTHORIZE_PROTOCOL_USER 0x100 //用户错误 +#define ERROR_AUTHORIZE_PROTOCOL_PASS 0x101 //密码错误 +#define ERROR_AUTHORIZE_PROTOCOL_CLOSED 0x102 //此功能关闭 +#define ERROR_AUTHORIZE_PROTOCOL_DEVICE 0x103 //设备类型未知 +#define ERROR_AUTHORIZE_PROTOCOL_DYNAMICCODE 0x104 //动态码错误 +#define ERROR_AUTHORIZE_PROTOCOL_PASSVER 0x105 //三方验证错误 +#define ERROR_AUTHORIZE_PROTOCOL_BANNED 0x106 //用户被禁用 +#define ERROR_AUTHORIZE_PROTOCOL_HARDCODE 0x107 //硬件码错误 +#define ERROR_AUTHORIZE_PROTOCOL_LOGINED 0x108 //已经登录 +#define ERROR_AUTHORIZE_PROTOCOL_TIMELEFT 0x109 //时间耗尽 +#define ERROR_AUTHORIZE_PROTOCOL_REQUEST 0x110 //请求内容错误 +#define ERROR_AUTHORIZE_PROTOCOL_UNAUTHORIZE 0x111 //未授权 +#define ERROR_AUTHORIZE_PROTOCOL_NOTFOUND 0x112 //未找到请求的数据 +#define ERROR_AUTHORIZE_PROTOCOL_NOTSUPPORT 0x113 //不支持 +#define ERROR_AUTHORIZE_PROTOCOL_NOTMATCH 0x114 //数据不匹配 +#define ERROR_AUTHORIZE_PROTOCOL_TIMEOUT 0x115 //超时 + +#define ERROR_AUTHORIZE_PROTOCOL_SERVER 0x201 //服务端内部错误 +#define ERROR_AUTHORIZE_PROTOCOL_LIMIT 0x202 //服务端内部限制,数据过大后者过小 +////////////////////////////////////////////////////////////////////////// // 导出的枚举型 ////////////////////////////////////////////////////////////////////////// #ifndef _MSC_BUILD diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp index cf3a8d1..624e4c7 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp @@ -22,7 +22,7 @@ bool XEngine_AuthorizeHTTP_GetTask(LPCXSTR lpszClientAddr, XCHAR** pptszList, in AUTHREG_USERTABLE st_UserTable = {}; if (!Session_Token_Get(_ttxoll(tszUserToken), &st_UserTable)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "user not found"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,获取时间失败,无法继续,错误:%X"), lpszClientAddr, Session_GetLastError()); return false; @@ -31,7 +31,7 @@ bool XEngine_AuthorizeHTTP_GetTask(LPCXSTR lpszClientAddr, XCHAR** pptszList, in AUTHSESSION_NETCLIENT** ppSt_ListClient; if (!Session_Authorize_GetClient(&ppSt_ListClient, &nListCount, st_UserTable.st_UserInfo.tszUserName)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "user not found"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,获取时间失败,无法继续,错误:%X"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, Session_GetLastError()); return false; @@ -45,7 +45,7 @@ bool XEngine_AuthorizeHTTP_GetTask(LPCXSTR lpszClientAddr, XCHAR** pptszList, in { if (!st_FunSwitch.bSwitchDCode) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, "the function is closed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求获得动态验证码失败,服务器已经关闭此功能!"), lpszClientAddr); return false; @@ -67,7 +67,7 @@ bool XEngine_AuthorizeHTTP_GetTask(LPCXSTR lpszClientAddr, XCHAR** pptszList, in AUTHREG_USERTABLE st_UserTable = {}; if (!Session_Token_Get(_ttxoll(tszUserToken), &st_UserTable)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "user not found"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,获取通告失败,无法继续,错误:%X"), lpszClientAddr, Session_GetLastError()); return false; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp index 9bc702e..0ee1f68 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_Token.cpp @@ -31,7 +31,7 @@ bool XEngine_AuthorizeHTTP_Token(LPCXSTR lpszClientAddr, XCHAR** pptszList, int if (nListCount < 4) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "request parament is incorrent"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "request parament is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录失败,请求参数不正确"), lpszClientAddr); return false; @@ -45,7 +45,7 @@ bool XEngine_AuthorizeHTTP_Token(LPCXSTR lpszClientAddr, XCHAR** pptszList, int //+ &token=1000112345&dcode=123456 if (nListCount != 6) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "request parament is incorrent"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "request parament is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录失败,登录参数错误,验证码或者TOKEN未填写"), lpszClientAddr); return false; @@ -62,7 +62,7 @@ bool XEngine_AuthorizeHTTP_Token(LPCXSTR lpszClientAddr, XCHAR** pptszList, int xhToken = _ttxoll(tszTokenStr); if (!AuthHelp_DynamicCode_Get(xhToken, _ttxoi(tszDCodeStr))) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "request parament is incorrent"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_DYNAMICCODE, "request parament is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录失败,验证动态码失败,句柄:%llu,动态码;%s,错误码:%lX"), lpszClientAddr, xhToken, tszDCodeStr, AuthHelp_GetLastError()); return false; @@ -79,14 +79,14 @@ bool XEngine_AuthorizeHTTP_Token(LPCXSTR lpszClientAddr, XCHAR** pptszList, int } if (!bSuccess) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_USER, "user not found"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,登录失败,用户名不存在"), lpszClientAddr); return false; } if ((_tcsxlen(tszUserPass) != _tcsxlen(st_UserTable.st_UserInfo.tszUserPass)) || (0 != _tcsxncmp(tszUserPass, st_UserTable.st_UserInfo.tszUserPass, _tcsxlen(tszUserPass)))) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "password is incorrent"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_PASS, "password is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,登录失败,密码错误"), lpszClientAddr); return false; @@ -102,7 +102,7 @@ bool XEngine_AuthorizeHTTP_Token(LPCXSTR lpszClientAddr, XCHAR** pptszList, int //权限是否正确 if (0 != st_UserTable.st_UserInfo.nUserLevel) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "User Permission Verification is failed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_BANNED, "User Permission Verification is failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,登录失败,客户端权限不足够"), lpszClientAddr, tszUserName); return false; @@ -126,7 +126,7 @@ bool XEngine_AuthorizeHTTP_Token(LPCXSTR lpszClientAddr, XCHAR** pptszList, int if (!Session_Token_UPDate(_ttxoll(tszUserToken))) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "user not found"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,更新TOKEN失败,不存在的Token:%s"), lpszClientAddr, tszUserToken); return false; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp index e6cb7a3..a192494 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Announcement.cpp @@ -10,7 +10,7 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN CHttpMemory_PoolEx m_MemoryPool(XENGINE_MEMORY_SIZE_MAX); if (!st_FunSwitch.bSwitchNotice) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 503, "the function is closed"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, "the function is closed"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,公告系统协议处理失败,功能已经被服务器关闭!"), lpszClientAddr); return false; @@ -32,7 +32,7 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN } if (nListCount > 10) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 510, "server limited"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_LIMIT, "server limited"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,公告系统协议处理失败,超过了服务器限制的公告数量!"), lpszClientAddr); return false; @@ -40,7 +40,7 @@ bool XEngine_AuthorizeHTTP_Announcement(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIN Protocol_Parse_HttpParseAnnouncement(lpszMsgBuffer, nMsgLen, &st_Announcement); if (_tcsxlen(st_Announcement.tszContext) <= 1) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 510, "server limited"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_LIMIT, "server limited"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,公告系统协议处理失败,内容不能小于1个字节!"), lpszClientAddr); return false; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp index f8e66ec..4a743aa 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Banned.cpp @@ -11,7 +11,7 @@ bool XEngine_AuthorizeHTTP_Banned(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L CHttpMemory_PoolEx m_MemoryPool(XENGINE_MEMORY_SIZE_MAX); if (!st_FunSwitch.bSwitchBanned) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 503, "the function is closed"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, "the function is closed"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,黑名单协议处理失败,功能已经被服务器关闭!"), lpszClientAddr); return false; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp index 94d4321..3574881 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_CDKey.cpp @@ -12,7 +12,7 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP CHttpMemory_PoolEx m_MemoryPoolRecv(XENGINE_MEMORY_SIZE_MAX); if (!st_FunSwitch.bSwitchCDKey) { - Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, 503, "the function is closed"); + Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, "the function is closed"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,CDKey验证授权失败,功能已经被服务器关闭!"), lpszClientAddr); return false; @@ -49,7 +49,7 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP if (!Authorize_CDKey_WriteMemory(m_MemoryPoolRecv.get(), &nRVLen, &st_Authorize)) { - Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, 406, "Not Acceptable,write key failed"); + Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_SERVER, "Not Acceptable,write key failed"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求创建CDKEY协议失败,服务器内部错误:%lX"), lpszClientAddr, Authorize_GetLastError()); return false; @@ -89,14 +89,14 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP if (ENUM_AUTHORIZE_MODULE_VERMODE_TYPE_NETWORK != st_Authorize.st_AuthRegInfo.enVModeType) { - Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, 400, "unsupport,cdkey is not authorized"); + Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_UNAUTHORIZE, "unsupport,cdkey is not authorized"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求验证CDKEY失败,cdkey未授权或者已超时,错误:%lX"), lpszClientAddr, Authorize_GetLastError()); return false; } if (!Authorize_CDKey_GetLeftTimer(&st_Authorize)) { - Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, 401, "Unauthorized,cdkey is not authorized"); + Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_UNAUTHORIZE, "Unauthorized,cdkey is not authorized"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求验证CDKEY失败,cdkey未授权或者已超时,错误:%lX"), lpszClientAddr, Authorize_GetLastError()); return false; @@ -107,7 +107,7 @@ bool XEngine_AuthorizeHTTP_CDKey(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LP } else { - Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, 404, "Not support protocol"); + Protocol_Packet_HttpComm(m_MemoryPoolSend.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTSUPPORT, "Not support protocol"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPoolSend.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,请求了一条未知的子协议:%s"), lpszClientAddr, lpszAPIName); } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp index d427d56..77143fc 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp @@ -27,7 +27,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } if (!bSuccess) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 404, "not found client"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "not found client"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户:%s 信息失败,错误码:%lX"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, DBModule_GetLastError()); return false; @@ -49,7 +49,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); if (NULL == ptszMsgBuffer) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 500, "internal server error"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_SERVER, "internal server error"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户列表失败,申请内存失败,错误:%d"), lpszClientAddr, errno); return false; @@ -59,7 +59,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); if ((nPosEnd - nPosStart) > 100) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 400, "pos parament is not rigth"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "pos parament is not rigth"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户列表失败,POS参数不正确,%d - %d"), lpszClientAddr, nPosStart, nPosEnd); return false; @@ -99,7 +99,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L Protocol_Parse_HttpParseUser(lpszMsgBuffer, nMsgLen, &st_UserInfo); if (!Session_Authorize_GetClient(&ppSt_ListClient, &nListCount, st_UserInfo.tszUserName)) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 404, "not found client"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "not found client"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求剔除用户:%s 没有找到,可能不在线"), lpszClientAddr, st_UserInfo.tszUserName); return false; @@ -139,7 +139,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } if (!bSuccess) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 404, "not found client"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "not found client"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求修改用户信息失败:%s 错误码:%lX"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, DBModule_GetLastError()); return false; @@ -175,7 +175,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } if (!bSuccess) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 404, "not found client"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "not found client"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求删除用户失败:%s 错误码:%lX"), lpszClientAddr, st_UserInfo.tszUserName, DBModule_GetLastError()); return false; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp index 4dcafaf..5a24347 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Pass.cpp @@ -30,14 +30,14 @@ bool XEngine_AuthorizeHTTP_Pass(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPC } if (!bSuccess) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user notfound"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_USER, "user notfound"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("PASS客户端:%s,用户名:%s,登录失败,用户名不存在"), lpszClientAddr, st_UserAuth.tszUserName); return false; } if ((_tcsxlen(st_UserAuth.tszUserPass) != _tcsxlen(st_UserTable.st_UserInfo.tszUserPass)) || (0 != _tcsxncmp(st_UserAuth.tszUserPass, st_UserTable.st_UserInfo.tszUserPass, _tcsxlen(st_UserTable.st_UserInfo.tszUserPass)))) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "password is incorrent"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_PASS, "password is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("PASS客户端:%s,用户名:%s,登录失败,密码错误"), lpszClientAddr, st_UserAuth.tszUserName); return false; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp index 6446b82..4510318 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Serial.cpp @@ -24,7 +24,7 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); if ((nPosEnd - nPosStart) > 100) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 400, "pos parament is not rigth"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "pos parament is not rigth"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求序列号列表失败,POS参数不正确,%d - %d"), lpszClientAddr, nPosStart, nPosEnd); return false; @@ -74,7 +74,7 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L { if (6 != _stxscanf(tszHasTime, _X("%04d-%02d-%02d %02d:%02d:%02d"), &st_AuthTimer.wYear, &st_AuthTimer.wMonth, &st_AuthTimer.wDay, &st_AuthTimer.wHour, &st_AuthTimer.wMinute, &st_AuthTimer.wSecond)) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 400, "time request is failed"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "time request is failed"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求插入序列卡失败,时间格式错误"), lpszClientAddr); return false; @@ -82,7 +82,7 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } else { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 415, "not support serial types"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTSUPPORT, "not support serial types"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求插入序列卡失败,不支持的类型格式:%d"), lpszClientAddr, enSerialType); return false; @@ -92,7 +92,7 @@ bool XEngine_AuthorizeHTTP_Serial(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L LPCXSTR lpszUserHdr = _X("XAUTH"); if (!Authorize_Serial_Creator(&pptszSerialNumber, lpszUserHdr, nSerialCount, nNumberCount, &st_AuthTimer, enSerialType)) { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, 500, "Internal Server Error"); + Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_SERVER, "Internal Server Error"); XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,创建序列卡失败,错误码:%lX"), lpszClientAddr, Authorize_GetLastError()); return false; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp index e226e82..aecf101 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp @@ -19,7 +19,7 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); if (NULL == ptszMsgBuffer) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 500, "internal server error"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_SERVER, "internal server error"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户列表失败,申请内存失败,错误:%d"), lpszClientAddr, errno); return false; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp index b3a4b62..cc2b047 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp @@ -16,7 +16,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX { if (!st_FunSwitch.bSwitchDelete) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, "the function is closed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,删除失败,删除功能已经被服务器关闭!"), lpszClientAddr); return false; @@ -38,7 +38,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX //安全验证判断 if ((0 != _tcsxnicmp(st_UserInfo.tszEMailAddr, st_UserTable.st_UserInfo.tszEMailAddr, _tcsxlen(st_UserInfo.tszEMailAddr))) || (st_UserTable.st_UserInfo.nIDNumber != st_UserInfo.nIDNumber)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "user information is incorrent"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "user information is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,删除用户失败,验证信息失败"), lpszClientAddr, st_UserInfo.tszUserName); return false; @@ -81,7 +81,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX if (!st_FunSwitch.bSwitchRegister) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, "the function is closed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,注册失败,注册功能已经被服务器关闭!"), lpszClientAddr); return false; @@ -103,7 +103,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX } if (!bSuccess && st_FunSwitch.bSwitchBanned) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 423, "user name is banned"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_BANNED, "user name is banned"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,注册失败,用户名或IP地址已经被禁用!"), lpszClientAddr, st_Banned.tszUserName); return false; @@ -121,7 +121,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX } if (_tcsxlen(st_UserTable.st_UserInfo.tszUserName) <= 0 || _tcsxlen(st_UserTable.st_UserInfo.tszUserPass) <= 0) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "user and pass does not set"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "user and pass does not set"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,注册失败,没有设置用户和密码"), lpszClientAddr); return false; @@ -147,10 +147,9 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX } if (!bSuccess) { - XLONG dwRet = DBModule_GetLastError(); - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, dwRet, "user register is failed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "user register is failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,注册失败,无法继续,错误:%X"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, dwRet); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,注册失败,无法继续,错误:%X"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, DBModule_GetLastError()); return false; } Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen); @@ -167,7 +166,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX if (!st_FunSwitch.bSwitchPay) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, "the function is closed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,充值失败,充值功能已经被服务器关闭!"), lpszClientAddr); return false; @@ -184,7 +183,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX } if (!bSuccess) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "Serial number not available"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "Serial number not available"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,充值失败,无法继续,错误:%X"), lpszClientAddr, st_UserPay.tszUserName, DBModule_GetLastError()); return false; @@ -212,7 +211,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX if (!st_FunSwitch.bSwitchPass) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 503, "the function is closed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, "the function is closed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,找回重置密码失败,密码找回重置功能已经被服务器关闭!"), lpszClientAddr); return false; @@ -230,7 +229,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX } if (!bSuccess) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "user not found"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "user not found"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,找回重置密码失败,用户不存在"), lpszClientAddr, st_UserInfo.tszUserName); return false; @@ -238,7 +237,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX //安全验证判断 if ((0 != _tcsxnicmp(st_UserInfo.tszEMailAddr, st_UserTable.st_UserInfo.tszEMailAddr, _tcsxlen(st_UserInfo.tszEMailAddr))) || (st_UserTable.st_UserInfo.nIDNumber != st_UserInfo.nIDNumber)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "user information is incorrent"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTMATCH, "user information is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,找回重置密码失败,验证信息失败"), lpszClientAddr, st_UserInfo.tszUserName); return false; @@ -263,7 +262,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX } if (!bSuccess) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 404, "not found client"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "not found client"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求修改密码失败:%s 错误码:%lX"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, DBModule_GetLastError()); return false; @@ -283,7 +282,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX if (!st_FunSwitch.bSwitchTry) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 501, "user not found"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, "the function is closed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求临时试用失败,服务器关闭了此服务"), lpszClientAddr); return false; @@ -291,7 +290,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX Protocol_Parse_HttpParseTry(lpszMsgBuffer, nMsgLen, &st_VERTemp); if (_tcsxlen(st_VERTemp.tszVSerial) < 1) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "serial is to short"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "serial is to short"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求临时试用失败,请求的序列号:%s 太短"), lpszClientAddr, st_VERTemp.tszVSerial); return false; @@ -351,7 +350,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX } else { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "timeout"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_TIMEOUT, "timeout"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,序列号:%s,临时验证失败,此序列号已经试用到期"), lpszClientAddr, st_VERTemp.tszVSerial); } @@ -364,7 +363,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX //看下是否启用了此功能,不支持分钟,因为不登录 if ((ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW == st_VERTemp.enVMode) || (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_SECOND == st_VERTemp.enVMode) || (st_VERTemp.nVTime <= 0)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 501, "the function server unavailable"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_CLOSED, "the function server unavailable"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,序列号:%s,临时验证插入失败,因为服务器关闭了此功能"), lpszClientAddr, st_VERTemp.tszVSerial); return false; @@ -380,7 +379,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX } if (!bSuccess) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 500, "Internal Server Error"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_SERVER, "Internal Server Error"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,序列号:%s,临时验证插入失败,无法继续,错误:%X"), lpszClientAddr, st_VERTemp.tszVSerial, DBModule_GetLastError()); } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp index f1a9678..9aa7a45 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_HttpTask.cpp @@ -75,7 +75,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } if (!bSuccess && st_FunSwitch.bSwitchBanned) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 423, "ip address is banned"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_BANNED, "ip address is banned"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录连接被阻止,用户名或IP地址被禁用!"), lpszClientAddr); return false; @@ -104,7 +104,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int HttpProtocol_ServerHelp_GetUrlApi(pSt_HTTPParament->tszHttpUri, tszAPIType, tszAPIVer, tszAPIName); if (0 != _tcsxnicmp(lpszAPIType, tszAPIType, _tcsxlen(lpszAPIType))) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "request url is incorrent"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "request url is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 不支持"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; @@ -116,7 +116,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int { if (!Session_Token_Get(xhToken, &st_UserTable)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "Unauthorized"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_UNAUTHORIZE, "Unauthorized"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 失败,因为没有经过验证"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; @@ -127,7 +127,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "permission is failed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_UNAUTHORIZE, "permission is failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; @@ -139,7 +139,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "permission is failed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_UNAUTHORIZE, "permission is failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; @@ -151,7 +151,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "permission is failed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_UNAUTHORIZE, "permission is failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; @@ -163,7 +163,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "permission is failed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_UNAUTHORIZE, "permission is failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; @@ -175,7 +175,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "permission is failed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_UNAUTHORIZE, "permission is failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; @@ -187,7 +187,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int //验证权限 if (0 != st_UserTable.st_UserInfo.nUserLevel) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "permission is failed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_UNAUTHORIZE, "permission is failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 失败,因为TOKEN权限不足"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; @@ -196,7 +196,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } else { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "reqeust api is not support"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "reqeust api is not support"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 失败,因为不被支持"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; @@ -218,7 +218,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } else { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "reqeust api is not support"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "reqeust api is not support"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求的API:%s 失败,因为不被支持"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); return false; @@ -239,7 +239,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int HttpProtocol_ServerHelp_GetParament(pSt_HTTPParament->tszHttpUri, &pptszList, &nListCount, tszUrlName); if ((nListCount < 1) || (0 != _tcsxnicmp(lpszFuncName, tszUrlName, _tcsxlen(lpszFuncName)))) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 400, "request is failed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "request is failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); BaseLib_Memory_Free((XPPPMEM)&pptszList, nListCount); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, pSt_HTTPParament->tszHttpUri); @@ -271,7 +271,7 @@ bool XEngine_Client_HttpTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } else { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 405, "method not allow"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "method not allow"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,发送的方法:%s 不支持"), lpszClientAddr, pSt_HTTPParament->tszHttpMethod); return false; diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index 0373980..e410890 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -94,7 +94,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } if (!bSuccess && st_FunSwitch.bSwitchBanned) { - pSt_ProtocolHdr->wReserve = 423; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_BANNED; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录连接被阻止,用户名或IP地址被禁用!"), lpszClientAddr); @@ -106,7 +106,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n //是否允许登录 if (!st_FunSwitch.bSwitchLogin) { - pSt_ProtocolHdr->wReserve = 503; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_CLOSED; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,登录失败,因为登录功能被服务器关闭!"), lpszClientAddr); @@ -114,7 +114,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } if (ENUM_PROTOCOL_FOR_DEVICE_TYPE_UNKNOW == st_AuthProtocol.enDeviceType) { - pSt_ProtocolHdr->wReserve = 250; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_DEVICE; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,没有填写设备类型,无法继续"), lpszClientAddr, st_AuthProtocol.tszUserName); @@ -125,7 +125,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n { if (!AuthHelp_DynamicCode_Get(pSt_ProtocolHdr->xhToken, _ttxoi(st_AuthProtocol.tszDCode))) { - pSt_ProtocolHdr->wReserve = 257; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_DYNAMICCODE; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,验证动态码失败,句柄:%llu,动态码;%s,错误码:%lX"), lpszClientAddr, st_AuthProtocol.tszUserName, pSt_ProtocolHdr->xhToken, st_AuthProtocol.tszDCode, AuthHelp_GetLastError()); @@ -143,7 +143,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n APIClient_Http_Request(_X("POST"), st_AuthConfig.st_XLogin.st_PassUrl.tszPassLogin, tszSDBuffer, &nHTTPCode, &ptszMsgBuffer, &nHTTPLen); if (200 != nHTTPCode) { - pSt_ProtocolHdr->wReserve = 251; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_PASSVER; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,三方验证失败,错误码:%d"), lpszClientAddr, st_AuthProtocol.tszUserName, nHTTPCode); @@ -169,7 +169,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } if (!bSuccess) { - pSt_ProtocolHdr->wReserve = 251; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_USER; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,用户名不存在"), lpszClientAddr, st_AuthProtocol.tszUserName); @@ -177,7 +177,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } if ((_tcsxlen(st_AuthProtocol.tszUserPass) != _tcsxlen(st_UserTable.st_UserInfo.tszUserPass)) || (0 != _tcsxncmp(st_AuthProtocol.tszUserPass, st_UserTable.st_UserInfo.tszUserPass, _tcsxlen(st_AuthProtocol.tszUserPass)))) { - pSt_ProtocolHdr->wReserve = 252; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_PASS; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,密码错误"), lpszClientAddr, st_AuthProtocol.tszUserName); @@ -188,7 +188,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n { if (!st_FunSwitch.bSwitchHCLogin) { - pSt_ProtocolHdr->wReserve = 251; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_CLOSED; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,硬件码:%s,登录失败,服务端关闭此功能"), lpszClientAddr, st_AuthProtocol.tszUserName); @@ -205,7 +205,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } if ((_tcsxlen(st_AuthProtocol.tszUserName) != _tcsxlen(st_UserTable.tszHardCode)) || (0 != _tcsxncmp(st_AuthProtocol.tszUserName, st_UserTable.tszHardCode, _tcsxlen(st_AuthProtocol.tszUserName)))) { - pSt_ProtocolHdr->wReserve = 252; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_HARDCODE; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,硬件码:%s,登录失败,硬件码错误"), lpszClientAddr, st_AuthProtocol.tszUserName); @@ -249,7 +249,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n } else { - pSt_ProtocolHdr->wReserve = 257; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_SERVER; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,服务端设置不正确"), lpszClientAddr, st_AuthProtocol.tszUserName); @@ -296,7 +296,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n //判断这次登录是否允许 if (bLogin) { - pSt_ProtocolHdr->wReserve = 253; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_LOGINED; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,多端登录失败,用户已经登录,类型:%d"), lpszClientAddr, st_AuthProtocol.tszUserName, st_AuthProtocol.enDeviceType); @@ -305,7 +305,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n //是否被封禁 if (-1 == st_UserTable.st_UserInfo.nUserLevel) { - pSt_ProtocolHdr->wReserve = 254; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_BANNED; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,客户端已被封禁"), lpszClientAddr, st_AuthProtocol.tszUserName); @@ -314,7 +314,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n //分析充值类型 if ((ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW == st_UserTable.enSerialType) || ('0' == st_UserTable.tszLeftTime[0])) { - pSt_ProtocolHdr->wReserve = 255; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_TIMELEFT; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,客户端时间已经耗尽,需要充值才能使用"), lpszClientAddr, st_AuthProtocol.tszUserName); @@ -376,7 +376,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n st_UserTable.enDeviceType = st_AuthProtocol.enDeviceType; if (!Session_Authorize_Insert(lpszClientAddr, &st_UserTable, pSt_ProtocolHdr->xhToken, nNetType)) { - pSt_ProtocolHdr->wReserve = 256; + pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_SERVER; Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,插入会话管理失败,错误:%lX"), lpszClientAddr, st_AuthProtocol.tszUserName); -- Gitee From 87086144fac6817edfadcca1570a8497c21f9ded Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 6 May 2025 11:39:21 +0800 Subject: [PATCH 12/29] modify:large memory use memory pool instead --- .../AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp | 16 ++-------------- .../AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp | 16 +++------------- .../AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp | 6 +++--- 3 files changed, 8 insertions(+), 30 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp index 77143fc..c0309b6 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp @@ -45,16 +45,6 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L bool bOnline = false; AUTHREG_USERTABLE** ppSt_UserInfo; AUTHSESSION_NETCLIENT** ppSt_ListClient; - - XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); - if (NULL == ptszMsgBuffer) - { - Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen, ERROR_AUTHORIZE_PROTOCOL_SERVER, "internal server error"); - XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户列表失败,申请内存失败,错误:%d"), lpszClientAddr, errno); - return false; - } - memset(ptszMsgBuffer, '\0', XENGINE_MEMORY_SIZE_MAX); Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); if ((nPosEnd - nPosStart) > 100) @@ -80,13 +70,11 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L DBModule_MySQL_UserList(&ppSt_UserInfo, &nOffCount, nPosStart, nPosEnd); } } - Protocol_Packet_HttpClientList(ptszMsgBuffer, &nSDLen, &ppSt_ListClient, nOnCount, &ppSt_UserInfo, nOffCount); + Protocol_Packet_HttpClientList(m_MemoryPool.get(), &nSDLen, &ppSt_ListClient, nOnCount, &ppSt_UserInfo, nOffCount); BaseLib_Memory_Free((XPPPMEM)&ppSt_ListClient, nOnCount); BaseLib_Memory_Free((XPPPMEM)&ppSt_UserInfo, nOffCount); - XEngine_Client_TaskSend(lpszClientAddr, ptszMsgBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - free(ptszMsgBuffer); - ptszMsgBuffer = NULL; + XEngine_Client_TaskSend(lpszClientAddr, m_MemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,请求客户端列表成功,在线用户:%d,离线用户:%d,显示标志:%d"), lpszClientAddr, nOnCount, nOffCount - nOnCount, bOnline); } else if (0 == _tcsxnicmp(lpszAPIClose, lpszAPIName, _tcsxlen(lpszAPIClose))) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp index aecf101..e8feb6c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Try.cpp @@ -16,15 +16,7 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX int nPosStart = 0; int nPosEnd = 0; - XCHAR* ptszMsgBuffer = (XCHAR*)malloc(XENGINE_MEMORY_SIZE_MAX); - if (NULL == ptszMsgBuffer) - { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_SERVER, "internal server error"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求用户列表失败,申请内存失败,错误:%d"), lpszClientAddr, errno); - return false; - } - memset(ptszMsgBuffer, '\0', XENGINE_MEMORY_SIZE_MAX); + CHttpMemory_PoolEx m_HTTPMemoryPool(XENGINE_MEMORY_SIZE_MAX); Protocol_Parse_HttpParsePos(lpszMsgBuffer, nMsgLen, &nPosStart, &nPosEnd); int nListCount = 0; @@ -37,11 +29,9 @@ bool XEngine_AuthorizeHTTP_Try(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, LPCX { DBModule_MySQL_TryList(&ppSt_AuthVer, &nListCount); } - Protocol_Packet_HttpTryList(ptszMsgBuffer, &nSDLen, &ppSt_AuthVer, nListCount); + Protocol_Packet_HttpTryList(m_HTTPMemoryPool.get(), &nSDLen, &ppSt_AuthVer, nListCount); BaseLib_Memory_Free((XPPPMEM)&ppSt_AuthVer, nListCount); - XEngine_Client_TaskSend(lpszClientAddr, ptszMsgBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - free(ptszMsgBuffer); - ptszMsgBuffer = NULL; + XEngine_Client_TaskSend(lpszClientAddr, m_HTTPMemoryPool.get(), nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,临时验证获取列表成功,列表个数:%d"), lpszClientAddr, nListCount); } else if (0 == _tcsxnicmp(lpszAPIName, lpszAPIDelete, _tcsxlen(lpszAPIName))) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp index cc2b047..323425b 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp @@ -38,7 +38,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX //安全验证判断 if ((0 != _tcsxnicmp(st_UserInfo.tszEMailAddr, st_UserTable.st_UserInfo.tszEMailAddr, _tcsxlen(st_UserInfo.tszEMailAddr))) || (st_UserTable.st_UserInfo.nIDNumber != st_UserInfo.nIDNumber)) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "user information is incorrent"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTMATCH, "user information is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,删除用户失败,验证信息失败"), lpszClientAddr, st_UserInfo.tszUserName); return false; @@ -54,7 +54,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX } if (!bRet) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, 401, "user delete failed,maybe user verification failed"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_SERVER, "user delete failed,maybe user verification failed"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,删除用户:%s 失败,删除用户信息数据库错误,数据验证失败!"), lpszClientAddr, st_UserInfo.tszUserName); return false; @@ -183,7 +183,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX } if (!bSuccess) { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "Serial number not available"); + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTMATCH, "Serial number not available"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,充值失败,无法继续,错误:%X"), lpszClientAddr, st_UserPay.tszUserName, DBModule_GetLastError()); return false; -- Gitee From c82da3fbc006421ffc67f8f48e2a2b501695349b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 6 May 2025 13:48:39 +0800 Subject: [PATCH 13/29] fixed:Window exception in some dpi --- .../XEngineAuthorizeApp.rc | Bin 49166 -> 49166 bytes .../XEngine_AuthorizeAppDlg.cpp | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.rc b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/XEngineAuthorizeApp.rc index 15f027a72c6e48de12d7b548c38a4e97cb2de48e..94012f1fd42f838aed991632b0db167d8039c57d 100644 GIT binary patch delta 48 zcmV-00MGx9fCG+z1F) Date: Tue, 6 May 2025 17:37:42 +0800 Subject: [PATCH 14/29] modify:user register level is 20 modify:level choice range for management app --- XEngine_Source/XAuth_Protocol.h | 1 + .../Authorize_Dialog/Dialog_Modify.cpp | 4 ++-- .../AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp | 9 +++++++-- .../XEngine_AuthorizeService/Authorize_TCPTask.cpp | 9 --------- 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/XEngine_Source/XAuth_Protocol.h b/XEngine_Source/XAuth_Protocol.h index b9438c0..3f7f969 100644 --- a/XEngine_Source/XAuth_Protocol.h +++ b/XEngine_Source/XAuth_Protocol.h @@ -50,6 +50,7 @@ #define ERROR_AUTHORIZE_PROTOCOL_NOTSUPPORT 0x113 //不支持 #define ERROR_AUTHORIZE_PROTOCOL_NOTMATCH 0x114 //数据不匹配 #define ERROR_AUTHORIZE_PROTOCOL_TIMEOUT 0x115 //超时 +#define ERROR_AUTHORIZE_PROTOCOL_PERMISSION 0x116 //用户权限错误 #define ERROR_AUTHORIZE_PROTOCOL_SERVER 0x201 //服务端内部错误 #define ERROR_AUTHORIZE_PROTOCOL_LIMIT 0x202 //服务端内部限制,数据过大后者过小 diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp index af6bdcb..759d9d3 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeApp/Authorize_Dialog/Dialog_Modify.cpp @@ -63,7 +63,7 @@ BOOL CDialog_Modify::OnInitDialog() for (int i = 0; i < 21; i++) { USES_CONVERSION; - m_ComboLeave.InsertString(i, A2W(lpszXLevelType[i])); + m_ComboLeave.InsertString(i, A2W(lpszXLevelType[i + 1])); } m_DateTimeRegister.SetFormat(_T("yyyy-MM-dd HH:mm:ss")); POSITION pSt_Sition = pUserWnd->m_ListCtrlClient.GetFirstSelectedItemPosition(); @@ -168,7 +168,7 @@ BOOL CDialog_Modify::OnInitDialog() m_EditLeftTime.SetWindowText(A2W(st_JsonObject["tszLeftTime"].asCString())); m_ComboSerial.SetCurSel(st_JsonObject["enSerialType"].asInt()); - m_ComboLeave.SetCurSel(st_JsonObject["st_UserInfo"]["nUserLevel"].asInt() + 1); + m_ComboLeave.SetCurSel(st_JsonObject["st_UserInfo"]["nUserLevel"].asInt()); if (ENUM_XENGINE_PROTOCOLHDR_LEVEL_TYPE_ROOT == st_JsonObject["st_UserInfo"]["nUserLevel"].asInt()) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp index 323425b..a6eed4d 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp @@ -115,10 +115,15 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX st_UserTable.enSerialType = (ENUM_AUTHORIZE_MODULE_SERIAL_TYPE)st_AuthConfig.st_XVerification.nTryMode; } //禁止权限0和1注册 - if (st_UserTable.st_UserInfo.nUserLevel <= 1) + if (st_UserTable.st_UserInfo.nUserLevel < 10) { - st_UserTable.st_UserInfo.nUserLevel = ENUM_XENGINE_PROTOCOLHDR_LEVEL_TYPE_USER; + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_PERMISSION, "user and pass does not set"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,注册失败,没有设置用户和密码"), lpszClientAddr); + return false; } + //默认普通用户 + st_UserTable.st_UserInfo.nUserLevel = 20; if (_tcsxlen(st_UserTable.st_UserInfo.tszUserName) <= 0 || _tcsxlen(st_UserTable.st_UserInfo.tszUserPass) <= 0) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_REQUEST, "user and pass does not set"); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index e410890..20bd2cd 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -302,15 +302,6 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,多端登录失败,用户已经登录,类型:%d"), lpszClientAddr, st_AuthProtocol.tszUserName, st_AuthProtocol.enDeviceType); return false; } - //是否被封禁 - if (-1 == st_UserTable.st_UserInfo.nUserLevel) - { - pSt_ProtocolHdr->wReserve = ERROR_AUTHORIZE_PROTOCOL_BANNED; - Protocol_Packet_HDRComm(tszSDBuffer, &nSDLen, pSt_ProtocolHdr, nNetType); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, nNetType); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,用户名:%s,登录失败,客户端已被封禁"), lpszClientAddr, st_AuthProtocol.tszUserName); - return false; - } //分析充值类型 if ((ENUM_AUTHORIZE_MODULE_SERIAL_TYPE_UNKNOW == st_UserTable.enSerialType) || ('0' == st_UserTable.tszLeftTime[0])) { -- Gitee From c81cd40b0f54325c86d88017580865169f9c71f1 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 7 May 2025 10:41:38 +0800 Subject: [PATCH 15/29] improved:send message use class memory instead --- .../Authorize_Net.cpp | 32 ++++++------------- 1 file changed, 9 insertions(+), 23 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index bb14040..55e12d8 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -162,33 +162,20 @@ bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int } bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType, LPCXSTR lpszPass) { - XCHAR* ptszMsgBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemPool, XENGINE_MEMORY_SIZE_MAX); - if (NULL == ptszMsgBuffer) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,网络类型:%d 发送数据失败,内存申请失败,错误码:%d"), lpszClientAddr, nNetType, errno); - return false; - } - + CHttpMemory_PoolEx m_HTTPMemory(XENGINE_MEMORY_SIZE_MAX); if (XENGINE_AUTH_APP_NETTYPE_WS == nNetType) { if (NULL == lpszPass) { - RfcComponents_WSCodec_EncodeMsg(lpszMsgBuffer, ptszMsgBuffer, &nMsgLen, ENUM_XENGINE_RFCOMPONENTS_WEBSOCKET_OPCODE_TEXT); + RfcComponents_WSCodec_EncodeMsg(lpszMsgBuffer, m_HTTPMemory.get(), &nMsgLen, ENUM_XENGINE_RFCOMPONENTS_WEBSOCKET_OPCODE_TEXT); } else { - XCHAR* ptszCodecBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemPool, XENGINE_MEMORY_SIZE_MAX); - if (NULL == ptszCodecBuffer) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,网络类型:%d 发送数据失败,内存申请失败,错误码:%d"), lpszClientAddr, nNetType, errno); - return false; - } - Cryption_XCrypto_Encoder(lpszMsgBuffer, &nMsgLen, (XBYTE*)ptszCodecBuffer, lpszPass); - RfcComponents_WSCodec_EncodeMsg(ptszCodecBuffer, ptszMsgBuffer, &nMsgLen, ENUM_XENGINE_RFCOMPONENTS_WEBSOCKET_OPCODE_TEXT); - ManagePool_Memory_Free(xhMemPool, ptszCodecBuffer); - ptszCodecBuffer = NULL; + CHttpMemory_PoolEx m_CodecMemory(XENGINE_MEMORY_SIZE_MAX); + Cryption_XCrypto_Encoder(lpszMsgBuffer, &nMsgLen, (XBYTE*)m_CodecMemory.get(), lpszPass); + RfcComponents_WSCodec_EncodeMsg(m_CodecMemory.get(), m_HTTPMemory.get(), &nMsgLen, ENUM_XENGINE_RFCOMPONENTS_WEBSOCKET_OPCODE_TEXT); } - NetCore_TCPXCore_SendEx(xhWSSocket, lpszClientAddr, ptszMsgBuffer, nMsgLen); + NetCore_TCPXCore_SendEx(xhWSSocket, lpszClientAddr, m_HTTPMemory.get(), nMsgLen); SocketOpt_HeartBeat_ActiveAddrEx(xhWSHeart, lpszClientAddr); } else if (XENGINE_AUTH_APP_NETTYPE_TCP == nNetType) @@ -206,7 +193,7 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, st_HDRParam.bIsClose = true; if (NULL == lpszPass) { - HttpProtocol_Server_SendMsgEx(xhHttpPacket, ptszMsgBuffer, &nSDSize, &st_HDRParam, lpszMsgBuffer, nMsgLen); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, m_HTTPMemory.get(), &nSDSize, &st_HDRParam, lpszMsgBuffer, nMsgLen); } else { @@ -218,12 +205,11 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, } Cryption_XCrypto_Encoder(lpszMsgBuffer, &nMsgLen, (XBYTE*)ptszCodecBuffer, lpszPass); - HttpProtocol_Server_SendMsgEx(xhHttpPacket, ptszMsgBuffer, &nSDSize, &st_HDRParam, ptszCodecBuffer, nMsgLen); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, m_HTTPMemory.get(), &nSDSize, &st_HDRParam, ptszCodecBuffer, nMsgLen); ManagePool_Memory_Free(xhMemPool, ptszCodecBuffer); } - NetCore_TCPXCore_SendEx(xhHttpSocket, lpszClientAddr, ptszMsgBuffer, nSDSize); + NetCore_TCPXCore_SendEx(xhHttpSocket, lpszClientAddr, m_HTTPMemory.get(), nSDSize); SocketOpt_HeartBeat_ActiveAddrEx(xhHTTPHeart, lpszClientAddr); } - ManagePool_Memory_Free(xhMemPool, ptszMsgBuffer); return true; } \ No newline at end of file -- Gitee From a90c97c43a0ea0d1f947960383e8c9d4b0d10250 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 7 May 2025 11:22:38 +0800 Subject: [PATCH 16/29] modify:pass encrypt via client only --- .../XEngine_Config/XEngine_Config.json | 4 -- .../AuthClient_Connector.cpp | 20 +++++++- .../AuthClient_Connector.h | 2 +- .../AuthClient_Define.h | 7 ++- XEngine_Source/AuthorizeModule_Client/pch.cpp | 4 +- .../AuthorizeModule_Configure/Config_Define.h | 5 -- .../ModuleConfigure_Json.cpp | 5 +- .../AuthorizeHTTP_Client.cpp | 9 ---- .../AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp | 51 ++++++------------- .../Authorize_Net.cpp | 13 ++--- 10 files changed, 47 insertions(+), 73 deletions(-) diff --git a/XEngine_Release/XEngine_Config/XEngine_Config.json b/XEngine_Release/XEngine_Config/XEngine_Config.json index ce771e8..1982d09 100644 --- a/XEngine_Release/XEngine_Config/XEngine_Config.json +++ b/XEngine_Release/XEngine_Config/XEngine_Config.json @@ -29,10 +29,6 @@ "tszKeyFile":"./APPVer.key", "tszKeyPass":"123123qa" }, - "st_PassCrypto":{ - "bEnable":false, - "nCodec":2 - }, "st_XToken":{ "bAutoRenewal":false, "nRenewalTime":-1 diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp index 5835bba..f70dc7d 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp @@ -140,12 +140,17 @@ bool CAuthClient_Connector::AuthClient_Connector_GetAuth(bool* pbAuth /* = NULL 类型:句柄型 可空:Y 意思:输入动态码绑定的句柄 + 参数.五:dwCryption + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入密码加密类型 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -bool CAuthClient_Connector::AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode /* = 0 */, XNETHANDLE xhToken /* = 0 */) +bool CAuthClient_Connector::AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode /* = 0 */, XNETHANDLE xhToken /* = 0 */, XLONG dwCryption /* = 0 */) { AuthClient_IsErrorOccur = false; @@ -174,7 +179,18 @@ bool CAuthClient_Connector::AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR st_AuthUser.enDeviceType = ENUM_PROTOCOL_FOR_DEVICE_TYPE_PC_MACOS; #endif _tcsxcpy(st_AuthUser.tszUserName, lpszUser); - _tcsxcpy(st_AuthUser.tszUserPass, lpszPass); + + if (dwCryption > 0) + { + int nPLen = _tcsxlen(lpszPass); + XBYTE byMD5Buffer[MAX_PATH] = {}; + Cryption_Api_Digest(lpszPass, byMD5Buffer, &nPLen, false, dwCryption); + BaseLib_String_StrToHex((LPCXSTR)byMD5Buffer, nPLen, st_AuthUser.tszUserPass); + } + else + { + _tcsxcpy(st_AuthUser.tszUserPass, lpszPass); + } //是否有动态码 if (nDYCode > 0) { diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h index 88f9e38..656a8c4 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h @@ -26,7 +26,7 @@ public: bool AuthClient_Connector_Connect(LPCXSTR lpszClientAddr, int nPort, LPCXSTR lpszPass = NULL); bool AuthClient_Connector_Close(); bool AuthClient_Connector_GetAuth(bool* pbAuth = NULL); - bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode = 0, XNETHANDLE xhToken = 0); + bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode = 0, XNETHANDLE xhToken = 0, XLONG dwCryption = 0); bool AuthClient_Connector_Heart(bool bEnable = true); protected: static XHTHREAD CALLBACK AuthClient_Connector_Thread(XPVOID lParam); diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h b/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h index f67f63f..6837f85 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h @@ -87,12 +87,17 @@ extern "C" bool AuthClient_Connector_GetAuth(bool* pbAuth = NULL); 类型:句柄型 可空:Y 意思:输入动态码绑定的句柄 + 参数.五:dwCryption + In/Out:In + 类型:整数型 + 可空:Y + 意思:输入密码加密类型 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode = 0, XNETHANDLE xhToken = 0); +extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode = 0, XNETHANDLE xhToken = 0, XLONG dwCryption = 0); /******************************************************************** 函数名称:AuthClient_Connector_Heart 函数功能:启用禁用客户端心跳 diff --git a/XEngine_Source/AuthorizeModule_Client/pch.cpp b/XEngine_Source/AuthorizeModule_Client/pch.cpp index 18899b6..1da93d1 100644 --- a/XEngine_Source/AuthorizeModule_Client/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Client/pch.cpp @@ -43,9 +43,9 @@ extern "C" bool AuthClient_Connector_GetAuth(bool* pbAuth) { return m_Connector.AuthClient_Connector_GetAuth(pbAuth); } -extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode, XNETHANDLE xhToken) +extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode, XNETHANDLE xhToken, XLONG dwCryption) { - return m_Connector.AuthClient_Connector_Login(lpszUser, lpszPass, nDYCode, xhToken); + return m_Connector.AuthClient_Connector_Login(lpszUser, lpszPass, nDYCode, xhToken, dwCryption); } extern "C" bool AuthClient_Connector_Heart(bool bEnable) { diff --git a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h index 46bc893..2cc0e88 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Config_Define.h +++ b/XEngine_Source/AuthorizeModule_Configure/Config_Define.h @@ -45,11 +45,6 @@ typedef struct XCHAR tszKeyFile[MAX_PATH]; //本地CDKEY文件地址 XCHAR tszKeyPass[MAX_PATH]; //本地CDKEY密码 }st_XCDKey; - struct - { - bool bEnable; //是否启用 - int nCodec; //加密方法:ENUM_XENGINE_OPENSSL_DIGEST - }st_PassCrypto; struct { bool bAutoRenewal; //自动续期 diff --git a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp index c30b95e..c21f251 100644 --- a/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp +++ b/XEngine_Source/AuthorizeModule_Configure/ModuleConfigure_Json/ModuleConfigure_Json.cpp @@ -113,7 +113,7 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE pSt_ServerConfig->st_XTime.nWSTime = st_JsonXTime["nWSTime"].asInt(); pSt_ServerConfig->st_XTime.nHTTPTime = st_JsonXTime["nHTTPTime"].asInt(); //验证配置 - if (st_JsonRoot["XVerification"].empty() || (9 != st_JsonRoot["XVerification"].size())) + if (st_JsonRoot["XVerification"].empty() || (8 != st_JsonRoot["XVerification"].size())) { Config_IsErrorOccur = true; Config_dwErrorCode = ERROR_AUTHORIZE_MODULE_CONFIGURE_XVER; @@ -130,9 +130,6 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE _tcsxcpy(pSt_ServerConfig->st_XVerification.st_XCDKey.tszKeyFile, st_JsonXVerification["st_XCDKey"]["tszKeyFile"].asCString()); _tcsxcpy(pSt_ServerConfig->st_XVerification.st_XCDKey.tszKeyPass, st_JsonXVerification["st_XCDKey"]["tszKeyPass"].asCString()); - pSt_ServerConfig->st_XVerification.st_PassCrypto.bEnable = st_JsonXVerification["st_PassCrypto"]["bEnable"].asBool(); - pSt_ServerConfig->st_XVerification.st_PassCrypto.nCodec = st_JsonXVerification["st_PassCrypto"]["nCodec"].asInt(); - pSt_ServerConfig->st_XVerification.st_XToken.bAutoRenewal = st_JsonXVerification["st_XToken"]["bAutoRenewal"].asBool(); pSt_ServerConfig->st_XVerification.st_XToken.nRenewalTime = st_JsonXVerification["st_XToken"]["nRenewalTime"].asInt(); //登录配置 diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp index c0309b6..f64dabf 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp @@ -107,15 +107,6 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L memset(&st_UserTable, '\0', sizeof(AUTHREG_USERTABLE)); Protocol_Parse_HttpParseTable(lpszMsgBuffer, nMsgLen, &st_UserTable); - - if (st_AuthConfig.st_XVerification.st_PassCrypto.bEnable) - { - int nPLen = _tcsxlen(st_UserTable.st_UserInfo.tszUserPass); - XBYTE byMD5Buffer[MAX_PATH] = {}; - Cryption_Api_Digest(st_UserTable.st_UserInfo.tszUserPass, byMD5Buffer, &nPLen, false, st_AuthConfig.st_XVerification.st_PassCrypto.nCodec); - memset(st_UserTable.st_UserInfo.tszUserPass, '\0', sizeof(st_UserTable.st_UserInfo.tszUserPass)); - BaseLib_String_StrToHex((LPCXSTR)byMD5Buffer, nPLen, st_UserTable.st_UserInfo.tszUserPass); - } bool bSuccess = false; if (0 == st_AuthConfig.st_XSql.nDBType) { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp index a6eed4d..59e26a4 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp @@ -132,16 +132,6 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX return false; } bSuccess = false; - - if (st_AuthConfig.st_XVerification.st_PassCrypto.bEnable) - { - int nPLen = _tcsxlen(st_UserTable.st_UserInfo.tszUserPass); - XBYTE byMD5Buffer[MAX_PATH] = {}; - Cryption_Api_Digest(st_UserTable.st_UserInfo.tszUserPass, byMD5Buffer, &nPLen, false, st_AuthConfig.st_XVerification.st_PassCrypto.nCodec); - memset(st_UserTable.st_UserInfo.tszUserPass, '\0', sizeof(st_UserTable.st_UserInfo.tszUserPass)); - BaseLib_String_StrToHex((LPCXSTR)byMD5Buffer, nPLen, st_UserTable.st_UserInfo.tszUserPass); - } - if (0 == st_AuthConfig.st_XSql.nDBType) { bSuccess = DBModule_SQLite_UserRegister(&st_UserTable); @@ -247,32 +237,23 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户名:%s,找回重置密码失败,验证信息失败"), lpszClientAddr, st_UserInfo.tszUserName); return false; } - //是否开启了密码加密 - if (st_AuthConfig.st_XVerification.st_PassCrypto.bEnable) - { - //开启了,密码重置 - int nPLen = _tcsxlen(st_UserInfo.tszUserPass); - XBYTE byMD5Buffer[MAX_PATH] = {}; - Cryption_Api_Digest(st_UserInfo.tszUserPass, byMD5Buffer, &nPLen, false, st_AuthConfig.st_XVerification.st_PassCrypto.nCodec); - memset(st_UserTable.st_UserInfo.tszUserPass, '\0', sizeof(st_UserTable.st_UserInfo.tszUserPass)); - BaseLib_String_StrToHex((LPCXSTR)byMD5Buffer, nPLen, st_UserTable.st_UserInfo.tszUserPass); - //重置密码 - if (0 == st_AuthConfig.st_XSql.nDBType) - { - bSuccess = DBModule_SQLite_UserSet(&st_UserTable); - } - else - { - bSuccess = DBModule_MySQL_UserSet(&st_UserTable); - } - if (!bSuccess) - { - Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTFOUND, "not found client"); - XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求修改密码失败:%s 错误码:%lX"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, DBModule_GetLastError()); - return false; - } + //重置密码 + if (0 == st_AuthConfig.st_XSql.nDBType) + { + bSuccess = DBModule_SQLite_UserSet(&st_UserTable); + } + else + { + bSuccess = DBModule_MySQL_UserSet(&st_UserTable); } + if (!bSuccess) + { + Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_SERVER, "server set db failed"); + XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,请求修改密码失败:%s 错误码:%lX"), lpszClientAddr, st_UserTable.st_UserInfo.tszUserName, DBModule_GetLastError()); + return false; + } + XENGINE_PROTOCOL_USERAUTH st_AuthProtocol = {}; _tcsxcpy(st_AuthProtocol.tszUserName, st_UserTable.st_UserInfo.tszUserName); _tcsxcpy(st_AuthProtocol.tszUserPass, st_UserTable.st_UserInfo.tszUserPass); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index 55e12d8..c93388c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -197,16 +197,9 @@ bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, } else { - XCHAR* ptszCodecBuffer = (XCHAR*)ManagePool_Memory_Alloc(xhMemPool, XENGINE_MEMORY_SIZE_MAX); - if (NULL == ptszCodecBuffer) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("客户端:%s,网络类型:%d 发送数据失败,内存申请失败,错误码:%d"), lpszClientAddr, nNetType, errno); - return false; - } - - Cryption_XCrypto_Encoder(lpszMsgBuffer, &nMsgLen, (XBYTE*)ptszCodecBuffer, lpszPass); - HttpProtocol_Server_SendMsgEx(xhHttpPacket, m_HTTPMemory.get(), &nSDSize, &st_HDRParam, ptszCodecBuffer, nMsgLen); - ManagePool_Memory_Free(xhMemPool, ptszCodecBuffer); + CHttpMemory_PoolEx m_CodecMemory(XENGINE_MEMORY_SIZE_MAX); + Cryption_XCrypto_Encoder(lpszMsgBuffer, &nMsgLen, (XBYTE*)m_CodecMemory.get(), lpszPass); + HttpProtocol_Server_SendMsgEx(xhHttpPacket, m_HTTPMemory.get(), &nSDSize, &st_HDRParam, m_CodecMemory.get(), nMsgLen); } NetCore_TCPXCore_SendEx(xhHttpSocket, lpszClientAddr, m_HTTPMemory.get(), nSDSize); SocketOpt_HeartBeat_ActiveAddrEx(xhHTTPHeart, lpszClientAddr); -- Gitee From daed8b9b268ffaa46354af430a5c69c885b634f7 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 7 May 2025 14:08:24 +0800 Subject: [PATCH 17/29] fixed:print log is incorrect when client leave --- .../Authorize_APPClient.cpp | 56 ++++++++++++++++--- .../AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp | 2 +- .../Authorize_Net.cpp | 2 +- .../Authorize_TCPTask.cpp | 2 +- 4 files changed, 52 insertions(+), 10 deletions(-) diff --git a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp index 4270a60..d6ecdc7 100644 --- a/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp +++ b/XEngine_Apps/Authorize_APPClient/Authorize_APPClient.cpp @@ -35,7 +35,7 @@ using namespace std; //Linux::g++ -std=c++17 -Wall -g Authorize_APPClient.cpp -o Authorize_APPClient.exe -I ../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp -L ../../XEngine_Release -lXEngine_Cryption -lXClient_Socket -lXEngine_BaseLib -lXClient_APIHelp -lpthread -ljsoncpp -Wl,-rpath=../../XEngine_Release //#define _DYNAMIC_CODE -//#define _PASS_ENCRYPT +#define _PASS_ENCRYPT bool bRun = true; bool bLogin = true; bool bTimeOut = true; @@ -128,12 +128,22 @@ int AuthClient_Register() Json::Value st_JsonUserTable; LPCXSTR lpszUrl = _X("http://127.0.0.1:5302/auth/user/register"); - st_JsonUserInfo["tszUserName"] = lpszUser; +#ifdef _PASS_ENCRYPT + XCHAR tszPassCodec[128] = {}; + int nPLen = _tcsxlen(lpszPass); + XBYTE byMD5Buffer[MAX_PATH] = {}; + Cryption_Api_Digest(lpszPass, byMD5Buffer, &nPLen); + BaseLib_String_StrToHex((LPCXSTR)byMD5Buffer, nPLen, tszPassCodec); + st_JsonUserInfo["tszUserPass"] = tszPassCodec; +#else st_JsonUserInfo["tszUserPass"] = lpszPass; +#endif + + st_JsonUserInfo["tszUserName"] = lpszUser; st_JsonUserInfo["tszEMailAddr"] = lpszEmail; st_JsonUserInfo["nPhoneNumber"] = (Json::Value::Int64)nPhoneNumber; st_JsonUserInfo["nIDNumber"] = (Json::Value::Int64)nIDNumber; - st_JsonUserInfo["nUserLevel"] = 5; + st_JsonUserInfo["nUserLevel"] = ENUM_XENGINE_PROTOCOLHDR_LEVEL_TYPE_USER; st_JsonUserTable["tszHardCode"] = "2FDWAD02JD2091"; st_JsonUserTable["st_UserInfo"] = st_JsonUserInfo; @@ -266,9 +276,9 @@ int AuthClient_Login() #ifdef _PASS_ENCRYPT int nPLen = _tcsxlen(st_AuthUser.tszUserPass); XBYTE byMD5Buffer[MAX_PATH] = {}; - OPenSsl_Api_Digest(st_AuthUser.tszUserPass, byMD5Buffer, &nPLen, false, XENGINE_OPENSSL_API_DIGEST_MD5); + Cryption_Api_Digest(st_AuthUser.tszUserPass, byMD5Buffer, &nPLen); memset(st_AuthUser.tszUserPass, '\0', sizeof(st_AuthUser.tszUserPass)); - BaseLib_OperatorString_StrToHex((LPCXSTR)byMD5Buffer, nPLen, st_AuthUser.tszUserPass); + BaseLib_String_StrToHex((LPCXSTR)byMD5Buffer, nPLen, st_AuthUser.tszUserPass); #endif if (nDYCode > 0) @@ -366,6 +376,17 @@ int AuthClient_GetPass() Json::Value st_JsonObject; LPCXSTR lpszUrl = _X("http://127.0.0.1:5302/auth/user/pass"); +#ifdef _PASS_ENCRYPT + XCHAR tszPASSCodec[128] = {}; + int nPLen = _tcsxlen(lpszPass); + XBYTE byMD5Buffer[MAX_PATH] = {}; + Cryption_Api_Digest(lpszPass, byMD5Buffer, &nPLen); + BaseLib_String_StrToHex((LPCXSTR)byMD5Buffer, nPLen, tszPASSCodec); + st_JsonObject["tszUserPass"] = tszPASSCodec; +#else + st_JsonObject["tszUserPass"] = lpszPass; +#endif + st_JsonObject["tszUserName"] = lpszUser; st_JsonObject["tszEMailAddr"] = lpszEmail; st_JsonObject["nPhoneNumber"] = (Json::Value::Int64)nPhoneNumber; @@ -406,7 +427,18 @@ int AuthClient_GetTime() _xstprintf(tszURLStr, _X("http://127.0.0.1:5302/api?function=time&token=%lld"),xhToken); st_JsonObject["tszUserName"] = lpszUser; + +#ifdef _PASS_ENCRYPT + XCHAR tszPASSCodec[128] = {}; + int nPLen = _tcsxlen(lpszPass); + XBYTE byMD5Buffer[MAX_PATH] = {}; + Cryption_Api_Digest(lpszPass, byMD5Buffer, &nPLen); + BaseLib_String_StrToHex((LPCXSTR)byMD5Buffer, nPLen, tszPASSCodec); + st_JsonObject["tszUserPass"] = tszPASSCodec; +#else st_JsonObject["tszUserPass"] = lpszPass; +#endif + st_JsonRoot["st_UserAuth"] = st_JsonObject; int nMsgLen = 0; @@ -440,8 +472,18 @@ int AuthClient_Delete() Json::Value st_JsonObject; LPCXSTR lpszUrl = _X("http://127.0.0.1:5302/auth/user/delete"); - st_JsonObject["tszUserName"] = lpszUser; +#ifdef _PASS_ENCRYPT + XCHAR tszPASSCodec[128] = {}; + int nPLen = _tcsxlen(lpszPass); + XBYTE byMD5Buffer[MAX_PATH] = {}; + Cryption_Api_Digest(lpszPass, byMD5Buffer, &nPLen); + BaseLib_String_StrToHex((LPCXSTR)byMD5Buffer, nPLen, tszPASSCodec); + st_JsonObject["tszUserPass"] = tszPASSCodec; +#else st_JsonObject["tszUserPass"] = lpszPass; +#endif + + st_JsonObject["tszUserName"] = lpszUser; st_JsonObject["tszEMailAddr"] = lpszEmail; st_JsonObject["nPhoneNumber"] = (Json::Value::Int64)nPhoneNumber; st_JsonObject["nIDNumber"] = (Json::Value::Int64)nIDNumber; @@ -532,7 +574,7 @@ int main() AuthClient_GetPass(); AuthClient_GetTime(); - std::this_thread::sleep_for(std::chrono::seconds(100)); + std::this_thread::sleep_for(std::chrono::seconds(10)); AuthClient_Delete(); AuthClient_Try(); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp index 59e26a4..c934dcd 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp @@ -230,7 +230,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX return false; } //安全验证判断 - if ((0 != _tcsxnicmp(st_UserInfo.tszEMailAddr, st_UserTable.st_UserInfo.tszEMailAddr, _tcsxlen(st_UserInfo.tszEMailAddr))) || (st_UserTable.st_UserInfo.nIDNumber != st_UserInfo.nIDNumber)) + if ((0 != _tcsxnicmp(st_UserInfo.tszEMailAddr, st_UserTable.st_UserInfo.tszEMailAddr, _tcsxlen(st_UserInfo.tszEMailAddr))) || (st_UserTable.st_UserInfo.nIDNumber != st_UserInfo.nIDNumber) || (st_UserTable.st_UserInfo.nPhoneNumber != st_UserInfo.nPhoneNumber)) { Protocol_Packet_HttpComm(tszSDBuffer, &nSDLen, ERROR_AUTHORIZE_PROTOCOL_NOTMATCH, "user information is incorrent"); XEngine_Client_TaskSend(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_AUTH_APP_NETTYPE_HTTP); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index c93388c..5f55b50 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -135,7 +135,7 @@ bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart) } Session_Token_Delete(st_NETClient.xhToken); Session_Authorize_CloseAddr(lpszClientAddr); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("客户端:%s,用户名:%s,Token:%llu,离开服务器,在线时长:%d,离开方式:%s"), lpszClientAddr, st_NETClient.st_UserTable.st_UserInfo.tszUserName, st_NETClient.xhToken, st_AuthTime.nTimeONLine, m_StrLeave.c_str()); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("客户端:%s,用户名:%s,Token:%llu,离开服务器,在线时长:%lld,离开方式:%s"), lpszClientAddr, st_NETClient.st_UserTable.st_UserInfo.tszUserName, st_NETClient.xhToken, st_AuthTime.nTimeONLine, m_StrLeave.c_str()); } else { diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp index 20bd2cd..842bcd9 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_TCPTask.cpp @@ -68,7 +68,7 @@ bool XEngine_Client_TCPTask(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int n { Session_Token_UPDate(pSt_ProtocolHdr->xhToken); } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("客户端:%s,句柄:%llu 心跳处理成功"), lpszClientAddr, pSt_ProtocolHdr->xhToken); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_DEBUG, _X("客户端:%s,句柄:%llu 心跳处理成功"), lpszClientAddr, pSt_ProtocolHdr->xhToken); } else if (XENGINE_COMMUNICATION_PROTOCOL_OPERATOR_CODE_AUTH_REQLOGIN == pSt_ProtocolHdr->unOperatorCode) { -- Gitee From 66fdc44ba3b7eff4a2d13f2e97556a055bead243 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 7 May 2025 14:18:18 +0800 Subject: [PATCH 18/29] fixed:close client clear is incorrect when actively close client --- .../AuthorizeHTTP_Client.cpp | 4 +-- .../AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp | 2 +- .../Authorize_Net.cpp | 31 +++++++++++++------ .../XEngine_AuthorizeService/Authorize_Net.h | 2 +- .../Authorize_Task.cpp | 2 +- 5 files changed, 26 insertions(+), 15 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp index f64dabf..0611ec9 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_Client.cpp @@ -94,7 +94,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L } for (int i = 0; i < nListCount; i++) { - XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr, true); + XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr); } BaseLib_Memory_Free((XPPPMEM)&ppSt_ListClient, nListCount); Protocol_Packet_HttpComm(m_MemoryPool.get(), &nSDLen); @@ -139,7 +139,7 @@ bool XEngine_AuthorizeHTTP_Client(LPCXSTR lpszClientAddr, LPCXSTR lpszAPIName, L Session_Authorize_GetClient(&ppSt_ListClient, &nListCount, st_UserInfo.tszUserName); for (int i = 0; i < nListCount; i++) { - XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr, true); + XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr); } BaseLib_Memory_Free((XPPPMEM)&ppSt_ListClient, nListCount); //删除数据库 diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp index c934dcd..df6bcd7 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Post/AuthorizeHTTP_User.cpp @@ -65,7 +65,7 @@ bool XEngine_AuthorizeHTTP_User(XNETHANDLE xhToken, LPCXSTR lpszClientAddr, LPCX Session_Authorize_GetClient(&ppSt_ListClient, &nListCount, st_UserInfo.tszUserName); for (int i = 0; i < nListCount; i++) { - XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr, true); + XEngine_CloseClient(ppSt_ListClient[i]->tszClientAddr); } BaseLib_Memory_Free((XPPPMEM)&ppSt_ListClient, nListCount); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp index 5f55b50..20c0092 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.cpp @@ -17,11 +17,11 @@ void CALLBACK XEngine_Client_TCPRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LP } void CALLBACK XEngine_Client_TCPClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { - XEngine_CloseClient(lpszClientAddr, false); + XEngine_CloseClient(lpszClientAddr, 1); } void CALLBACK XEngine_Client_TCPHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) { - XEngine_CloseClient(lpszClientAddr, true); + XEngine_CloseClient(lpszClientAddr, 2); } ////////////////////////////////////////////////////////////////////////// bool CALLBACK XEngine_Client_WSAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) @@ -57,11 +57,11 @@ void CALLBACK XEngine_Client_WSRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, LPC } void CALLBACK XEngine_Client_WSClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { - XEngine_CloseClient(lpszClientAddr, false); + XEngine_CloseClient(lpszClientAddr, 1); } void CALLBACK XEngine_Client_WSHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) { - XEngine_CloseClient(lpszClientAddr, true); + XEngine_CloseClient(lpszClientAddr, 2); } ////////////////////////////////////////////////////////////////////////// bool CALLBACK XEngine_Client_HttpAccept(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) @@ -81,30 +81,41 @@ void CALLBACK XEngine_Client_HttpRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, L } void CALLBACK XEngine_Client_HttpClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam) { - XEngine_CloseClient(lpszClientAddr, false); + XEngine_CloseClient(lpszClientAddr, 1); } void CALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam) { - XEngine_CloseClient(lpszClientAddr, true); + XEngine_CloseClient(lpszClientAddr, 2); } ////////////////////////////////////////////////////////////////////////// -bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart) +bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType) { xstring m_StrLeave; - if (bHeart) + if (0 == nLeaveType) { NetCore_TCPXCore_CloseForClientEx(xhTCPSocket, lpszClientAddr); NetCore_TCPXCore_CloseForClientEx(xhWSSocket, lpszClientAddr); NetCore_TCPXCore_CloseForClientEx(xhHttpSocket, lpszClientAddr); - m_StrLeave = _X("心跳断开"); + + SocketOpt_HeartBeat_DeleteAddrEx(xhTCPHeart, lpszClientAddr); + SocketOpt_HeartBeat_DeleteAddrEx(xhWSHeart, lpszClientAddr); + SocketOpt_HeartBeat_DeleteAddrEx(xhHTTPHeart, lpszClientAddr); + m_StrLeave = _X("主动断开"); } - else + else if (1 == nLeaveType) { SocketOpt_HeartBeat_DeleteAddrEx(xhTCPHeart, lpszClientAddr); SocketOpt_HeartBeat_DeleteAddrEx(xhWSHeart, lpszClientAddr); SocketOpt_HeartBeat_DeleteAddrEx(xhHTTPHeart, lpszClientAddr); m_StrLeave = _X("正常断开"); } + else + { + NetCore_TCPXCore_CloseForClientEx(xhTCPSocket, lpszClientAddr); + NetCore_TCPXCore_CloseForClientEx(xhWSSocket, lpszClientAddr); + NetCore_TCPXCore_CloseForClientEx(xhHttpSocket, lpszClientAddr); + m_StrLeave = _X("心跳断开"); + } HelpComponents_Datas_DeleteEx(xhTCPPacket, lpszClientAddr); RfcComponents_WSPacket_DeleteEx(xhWSPacket, lpszClientAddr); HttpProtocol_Server_CloseClinetEx(xhHttpPacket, lpszClientAddr); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h index 6a6b3ad..143ae7a 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Net.h @@ -15,6 +15,6 @@ void CALLBACK XEngine_Client_HttpRecv(LPCXSTR lpszClientAddr, XSOCKET hSocket, L void CALLBACK XEngine_Client_HttpClose(LPCXSTR lpszClientAddr, XSOCKET hSocket, XPVOID lParam); void CALLBACK XEngine_Client_HttpHeart(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); -bool XEngine_CloseClient(LPCXSTR lpszClientAddr, bool bHeart); +bool XEngine_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType = 0); bool XEngine_Client_TaskSend(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType); bool XEngine_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nNetType, LPCXSTR lpszPass = NULL); \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp index 8642a3f..6b1208c 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Authorize_Task.cpp @@ -38,7 +38,7 @@ void CALLBACK XEngine_TaskEvent_Client(LPCXSTR lpszUserAddr, LPCXSTR lpszUserNam XEngine_Client_TaskSend(lpszUserAddr, tszMsgBuffer, nMsgLen, nNetType); if (!st_AuthConfig.bTimeNotify) { - XEngine_CloseClient(lpszUserAddr, true); + XEngine_CloseClient(lpszUserAddr); } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("地址:%s,用户:%s,网络类型:%d,没有剩余时间,已经通知客户单超时,三方通知设置:%d"), lpszUserName, lpszUserAddr, nNetType, st_AuthConfig.st_XLogin.bPassAuth); } -- Gitee From d04c6a746e11d762854236cc85fef0c32d11a15c Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 7 May 2025 15:21:28 +0800 Subject: [PATCH 19/29] update:make file and build --- XEngine_Source/AuthorizeModule_CDKey/Makefile | 6 ++---- .../AuthClient_Connector.cpp | 2 +- .../AuthClient_Connector/AuthClient_Connector.h | 2 +- .../AuthorizeModule_Client/AuthClient_Define.h | 2 +- XEngine_Source/AuthorizeModule_Client/Makefile | 6 ++---- XEngine_Source/AuthorizeModule_Client/pch.cpp | 2 +- .../AuthorizeModule_Configure/Makefile | 6 ++---- .../DBModule_MySQL/DBModule_MySQL.cpp | 3 +-- XEngine_Source/AuthorizeModule_Database/Makefile | 6 ++---- XEngine_Source/AuthorizeModule_Help/Makefile | 6 ++---- XEngine_Source/AuthorizeModule_Protocol/Makefile | 6 ++---- XEngine_Source/AuthorizeModule_Session/Makefile | 6 ++---- XEngine_Source/Makefile | 16 ++++++++-------- .../XEngine_AuthorizeService/Makefile | 6 ++---- 14 files changed, 29 insertions(+), 46 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_CDKey/Makefile b/XEngine_Source/AuthorizeModule_CDKey/Makefile index 13dae64..6309788 100644 --- a/XEngine_Source/AuthorizeModule_CDKey/Makefile +++ b/XEngine_Source/AuthorizeModule_CDKey/Makefile @@ -4,8 +4,6 @@ PLATVER = PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ LIB = -lXEngine_BaseLib -lXEngine_SystemConfig LIBEX = @@ -26,9 +24,9 @@ else endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp index f70dc7d..ab57a93 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.cpp @@ -150,7 +150,7 @@ bool CAuthClient_Connector::AuthClient_Connector_GetAuth(bool* pbAuth /* = NULL 意思:是否成功 备注: *********************************************************************/ -bool CAuthClient_Connector::AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode /* = 0 */, XNETHANDLE xhToken /* = 0 */, XLONG dwCryption /* = 0 */) +bool CAuthClient_Connector::AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, XSHOT nDYCode /* = 0 */, XNETHANDLE xhToken /* = 0 */, XLONG dwCryption /* = 0 */) { AuthClient_IsErrorOccur = false; diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h index 656a8c4..aaebe89 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Connector/AuthClient_Connector.h @@ -26,7 +26,7 @@ public: bool AuthClient_Connector_Connect(LPCXSTR lpszClientAddr, int nPort, LPCXSTR lpszPass = NULL); bool AuthClient_Connector_Close(); bool AuthClient_Connector_GetAuth(bool* pbAuth = NULL); - bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode = 0, XNETHANDLE xhToken = 0, XLONG dwCryption = 0); + bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, XSHOT nDYCode = 0, XNETHANDLE xhToken = 0, XLONG dwCryption = 0); bool AuthClient_Connector_Heart(bool bEnable = true); protected: static XHTHREAD CALLBACK AuthClient_Connector_Thread(XPVOID lParam); diff --git a/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h b/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h index 6837f85..b8a3762 100644 --- a/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h +++ b/XEngine_Source/AuthorizeModule_Client/AuthClient_Define.h @@ -97,7 +97,7 @@ extern "C" bool AuthClient_Connector_GetAuth(bool* pbAuth = NULL); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode = 0, XNETHANDLE xhToken = 0, XLONG dwCryption = 0); +extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, XSHOT nDYCode = 0, XNETHANDLE xhToken = 0, XLONG dwCryption = 0); /******************************************************************** 函数名称:AuthClient_Connector_Heart 函数功能:启用禁用客户端心跳 diff --git a/XEngine_Source/AuthorizeModule_Client/Makefile b/XEngine_Source/AuthorizeModule_Client/Makefile index d1db73d..41f85c8 100644 --- a/XEngine_Source/AuthorizeModule_Client/Makefile +++ b/XEngine_Source/AuthorizeModule_Client/Makefile @@ -4,8 +4,6 @@ PLATVER = PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_Depend/XEngine_Module/jsoncpp LIB = -ljsoncpp -lXEngine_BaseLib -lXEngine_Cryption -lXClient_Socket -lXClient_APIHelp -lXEngine_SystemApi @@ -26,9 +24,9 @@ else endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) diff --git a/XEngine_Source/AuthorizeModule_Client/pch.cpp b/XEngine_Source/AuthorizeModule_Client/pch.cpp index 1da93d1..69b56a9 100644 --- a/XEngine_Source/AuthorizeModule_Client/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Client/pch.cpp @@ -43,7 +43,7 @@ extern "C" bool AuthClient_Connector_GetAuth(bool* pbAuth) { return m_Connector.AuthClient_Connector_GetAuth(pbAuth); } -extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, int nDYCode, XNETHANDLE xhToken, XLONG dwCryption) +extern "C" bool AuthClient_Connector_Login(LPCXSTR lpszUser, LPCXSTR lpszPass, XSHOT nDYCode, XNETHANDLE xhToken, XLONG dwCryption) { return m_Connector.AuthClient_Connector_Login(lpszUser, lpszPass, nDYCode, xhToken, dwCryption); } diff --git a/XEngine_Source/AuthorizeModule_Configure/Makefile b/XEngine_Source/AuthorizeModule_Configure/Makefile index f3edf6e..dbe99ff 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Makefile +++ b/XEngine_Source/AuthorizeModule_Configure/Makefile @@ -4,8 +4,6 @@ PLATVER = PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_Depend/XEngine_Module/jsoncpp LIB = -ljsoncpp @@ -26,9 +24,9 @@ else endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) diff --git a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp index f7a7abe..c2241c2 100644 --- a/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp +++ b/XEngine_Source/AuthorizeModule_Database/DBModule_MySQL/DBModule_MySQL.cpp @@ -622,7 +622,6 @@ bool CDBModule_MySQL::DBModule_MySQL_QueryLogin(LPCXSTR lpszUserName, LPCXSTR lp SQLPacket_IsErrorOccur = false; XCHAR tszSQLStatement[1024]; //SQL语句 - char** ppszResult = NULL; __int64u nRow = 0; __int64u nColumn = 0; XNETHANDLE xhTable = 0; @@ -644,7 +643,7 @@ bool CDBModule_MySQL::DBModule_MySQL_QueryLogin(LPCXSTR lpszUserName, LPCXSTR lp SQLPacket_dwErrorCode = ERROR_AUTHORIZE_MODULE_DATABASE_NOTMATCH; return false; } - ppszResult = DataBase_MySQL_GetResult(xhData, xhTable); + DataBase_MySQL_FreeResult(xhData, xhTable); return true; } /******************************************************************** diff --git a/XEngine_Source/AuthorizeModule_Database/Makefile b/XEngine_Source/AuthorizeModule_Database/Makefile index 42ca1fa..f960968 100644 --- a/XEngine_Source/AuthorizeModule_Database/Makefile +++ b/XEngine_Source/AuthorizeModule_Database/Makefile @@ -4,8 +4,6 @@ PLATVER = PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ LOADSO = -L ../AuthorizeModule_CDKey LIB = -lXEngine_BaseLib -lHelpComponents_DataBase -lAuthorizeModule_CDKey @@ -26,9 +24,9 @@ else endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) diff --git a/XEngine_Source/AuthorizeModule_Help/Makefile b/XEngine_Source/AuthorizeModule_Help/Makefile index d80c10e..727f3b6 100644 --- a/XEngine_Source/AuthorizeModule_Help/Makefile +++ b/XEngine_Source/AuthorizeModule_Help/Makefile @@ -4,8 +4,6 @@ PLATVER = PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ LOADSO = -L LIB = -lXEngine_BaseLib @@ -26,9 +24,9 @@ else endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) diff --git a/XEngine_Source/AuthorizeModule_Protocol/Makefile b/XEngine_Source/AuthorizeModule_Protocol/Makefile index 1aa6af0..3586731 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Makefile +++ b/XEngine_Source/AuthorizeModule_Protocol/Makefile @@ -4,8 +4,6 @@ PLATVER = PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp LOADSO = -L ../XEngine_Depend/XEngine_Module/jsoncpp LIB = -ljsoncpp -lXEngine_BaseLib @@ -26,9 +24,9 @@ else endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) diff --git a/XEngine_Source/AuthorizeModule_Session/Makefile b/XEngine_Source/AuthorizeModule_Session/Makefile index dee9184..dd35e17 100644 --- a/XEngine_Source/AuthorizeModule_Session/Makefile +++ b/XEngine_Source/AuthorizeModule_Session/Makefile @@ -4,8 +4,6 @@ PLATVER = PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ LOADSO = LIB = -lXEngine_BaseLib @@ -26,9 +24,9 @@ else endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) diff --git a/XEngine_Source/Makefile b/XEngine_Source/Makefile index d6c4c6f..3436b2c 100644 --- a/XEngine_Source/Makefile +++ b/XEngine_Source/Makefile @@ -44,19 +44,19 @@ else endif libAuthorizeModule_CDKey.so: - make -C $(AUTH_CDKEY_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(AUTH_CDKEY_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) $(FLAGS) libAuthorizeModule_Session.so: - make -C $(AUTH_SESSION_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(AUTH_SESSION_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) $(FLAGS) libAuthorizeModule_Database.so: - make -C $(AUTH_DATABASE_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(AUTH_DATABASE_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) $(FLAGS) libAuthorizeModule_Protocol.so: - make -C $(AUTH_PROTOCOL_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(AUTH_PROTOCOL_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) $(FLAGS) libAuthorizeModule_Configure.so: - make -C $(AUTH_CONFIGURE_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(AUTH_CONFIGURE_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) $(FLAGS) libAuthorizeModule_Help.so: - make -C $(AUTH_HELP_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(AUTH_HELP_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) $(FLAGS) libAuthorizeModule_Client.so: - make -C $(AUTH_CLIENT_PATH) PLATFORM=$(PLATFORM) $(FLAGS) + make -C $(AUTH_CLIENT_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) $(FLAGS) XEngine_AuthorizeApp.exe: - make -C $(AUTH_APP_PATH) PLATFORM=$(PLATFORM) $(FLAGS) \ No newline at end of file + make -C $(AUTH_APP_PATH) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) $(FLAGS) \ No newline at end of file diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile index 9e0dafc..a1a3d50 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile @@ -4,8 +4,6 @@ PLATVER = PLATDIR = FILEEXT = LIBFLAG = -RELEASE = 0 -UNICODE = 0 LOADHDR = -I ./ LOADSO = -L ../../XEngine_Depend/XEngine_Module/jsoncpp -L ../../XEngine_Depend/XEngine_Module/XEngine_InfoReport \ -L ../../AuthorizeModule_Session -L ../../AuthorizeModule_Database -L ../../AuthorizeModule_Protocol -L ../../AuthorizeModule_Configure -L ../../AuthorizeModule_Help -L ../../AuthorizeModule_CDKey @@ -31,9 +29,9 @@ else endif ifeq ($(UNICODE),1) -UNICODE = -D _UNICODE +override UNICODE := -D __UNICODE__ else -UNICODE = +override UNICODE := -D __ANSI__ endif ifeq ($(PLATFORM),linux) -- Gitee From 85cbb670fa4183629c2be8abf9171e12945e4161 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 7 May 2025 15:59:21 +0800 Subject: [PATCH 20/29] modify:dynamic code size and start code location --- .../AuthorizeModule_Help/AuthHelp_Define.h | 2 +- .../AuthHelp_DynamicCode.cpp | 4 +- .../AuthHelp_DynamicCode.h | 4 +- XEngine_Source/AuthorizeModule_Help/pch.cpp | 2 +- .../Protocol_Define.h | 2 +- .../Protocol_Packet/Protocol_Packet.cpp | 2 +- .../Protocol_Packet/Protocol_Packet.h | 2 +- .../AuthorizeModule_Protocol/pch.cpp | 2 +- .../AuthorizeHTTP_GetTask.cpp | 2 +- .../XEngine_AuthorizeService.cpp | 53 +++++++++---------- 10 files changed, 37 insertions(+), 38 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h index 21c165a..309a9d3 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h +++ b/XEngine_Source/AuthorizeModule_Help/AuthHelp_Define.h @@ -58,7 +58,7 @@ extern "C" bool AuthHelp_DynamicCode_Destory(); 意思:是否成功 备注: *********************************************************************/ -extern "C" bool AuthHelp_DynamicCode_Create(XNETHANDLE* pxhToken, int* pInt_DynamicCode); +extern "C" bool AuthHelp_DynamicCode_Create(XNETHANDLE* pxhToken, XSHOT* pInt_DynamicCode); /******************************************************************** 函数名称:AuthHelp_DynamicCode_Get 函数功能:获取句柄和动态码绑定信息 diff --git a/XEngine_Source/AuthorizeModule_Help/AuthHelp_DynamicCode/AuthHelp_DynamicCode.cpp b/XEngine_Source/AuthorizeModule_Help/AuthHelp_DynamicCode/AuthHelp_DynamicCode.cpp index cb3debe..e52a239 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthHelp_DynamicCode/AuthHelp_DynamicCode.cpp +++ b/XEngine_Source/AuthorizeModule_Help/AuthHelp_DynamicCode/AuthHelp_DynamicCode.cpp @@ -89,7 +89,7 @@ bool CAuthHelp_DynamicCode::AuthHelp_DynamicCode_Destory() 意思:是否成功 备注: *********************************************************************/ -bool CAuthHelp_DynamicCode::AuthHelp_DynamicCode_Create(XNETHANDLE* pxhToken, int* pInt_DynamicCode) +bool CAuthHelp_DynamicCode::AuthHelp_DynamicCode_Create(XNETHANDLE* pxhToken, XSHOT* pInt_DynamicCode) { Help_IsErrorOccur = false; @@ -104,7 +104,7 @@ bool CAuthHelp_DynamicCode::AuthHelp_DynamicCode_Create(XNETHANDLE* pxhToken, in st_DynamicCode.nTimeStart = time(NULL); BaseLib_Handle_Create(&st_DynamicCode.xhToken); - BaseLib_Handle_Create((XNETHANDLE*)&st_DynamicCode.nDynamicCode, 100001, 999999); + BaseLib_Handle_Create((XNETHANDLE*)&st_DynamicCode.nDynamicCode, 10001, 65535); *pxhToken = st_DynamicCode.xhToken; *pInt_DynamicCode = st_DynamicCode.nDynamicCode; diff --git a/XEngine_Source/AuthorizeModule_Help/AuthHelp_DynamicCode/AuthHelp_DynamicCode.h b/XEngine_Source/AuthorizeModule_Help/AuthHelp_DynamicCode/AuthHelp_DynamicCode.h index 255d087..10be31c 100644 --- a/XEngine_Source/AuthorizeModule_Help/AuthHelp_DynamicCode/AuthHelp_DynamicCode.h +++ b/XEngine_Source/AuthorizeModule_Help/AuthHelp_DynamicCode/AuthHelp_DynamicCode.h @@ -13,7 +13,7 @@ typedef struct { XNETHANDLE xhToken; - int nDynamicCode; + XSHOT nDynamicCode; time_t nTimeStart; }AUTHHELP_DYNAMICCODE; @@ -25,7 +25,7 @@ public: public: bool AuthHelp_DynamicCode_Init(int nSecond); bool AuthHelp_DynamicCode_Destory(); - bool AuthHelp_DynamicCode_Create(XNETHANDLE* pxhToken, int* pInt_DynamicCode); + bool AuthHelp_DynamicCode_Create(XNETHANDLE* pxhToken, XSHOT* pInt_DynamicCode); bool AuthHelp_DynamicCode_Get(XNETHANDLE xhToken, int nDynamicCode); protected: static XHTHREAD CALLBACK AuthHelp_DynamicCode_Thread(XPVOID lParam); diff --git a/XEngine_Source/AuthorizeModule_Help/pch.cpp b/XEngine_Source/AuthorizeModule_Help/pch.cpp index 8925175..2707ec1 100644 --- a/XEngine_Source/AuthorizeModule_Help/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Help/pch.cpp @@ -45,7 +45,7 @@ extern "C" bool AuthHelp_DynamicCode_Destory() { return m_HelpDynamic.AuthHelp_DynamicCode_Destory(); } -extern "C" bool AuthHelp_DynamicCode_Create(XNETHANDLE * pxhToken, int* pInt_DynamicCode) +extern "C" bool AuthHelp_DynamicCode_Create(XNETHANDLE * pxhToken, XSHOT* pInt_DynamicCode) { return m_HelpDynamic.AuthHelp_DynamicCode_Create(pxhToken, pInt_DynamicCode); } diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h index c5cb201..1297585 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Define.h @@ -277,7 +277,7 @@ extern "C" bool Protocol_Packet_HttpSerialList(XCHAR* ptszMsgBuffer, int* pInt_M 意思:是否成功 备注: *********************************************************************/ -extern "C" bool Protocol_Packet_HttpToken(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout, int nDCode = 0); +extern "C" bool Protocol_Packet_HttpToken(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout, XSHOT nDCode = 0); /******************************************************************** 函数名称:Protocol_Packet_HttpSwitch 函数功能:打包开关功能选项 diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp index 891f678..9e67289 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.cpp @@ -575,7 +575,7 @@ bool CProtocol_Packet::Protocol_Packet_HttpSerialList(XCHAR* ptszMsgBuffer, int* 意思:是否成功 备注: *********************************************************************/ -bool CProtocol_Packet::Protocol_Packet_HttpToken(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout, int nDCode /* = 0 */) +bool CProtocol_Packet::Protocol_Packet_HttpToken(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout, XSHOT nDCode /* = 0 */) { Protocol_IsErrorOccur = false; diff --git a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h index 8261a66..d2caf40 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h +++ b/XEngine_Source/AuthorizeModule_Protocol/Protocol_Packet/Protocol_Packet.h @@ -26,7 +26,7 @@ public: bool Protocol_Packet_HttpClientInfo(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_USERTABLE* pSt_UserTable); bool Protocol_Packet_HttpClientList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHSESSION_NETCLIENT*** pppSt_OnClient, int nOnCount, AUTHREG_USERTABLE*** pppSt_OffClient, int nOffCount); bool Protocol_Packet_HttpSerialList(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_SERIALTABLE*** pppSt_SerialList, int nListCount); - bool Protocol_Packet_HttpToken(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout, int nDCode = 0); + bool Protocol_Packet_HttpToken(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout, XSHOT nDCode = 0); bool Protocol_Packet_HttpSwitch(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XENGINE_FUNCTIONSWITCH* pSt_FunSwitch); bool Protocol_Packet_HttpBanned(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_BANNED*** pppSt_BannedUser, int nUserCount, AUTHREG_BANNED*** pppSt_BannedAddr, int nAddrCount); bool Protocol_Packet_HttpAnnouncement(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, AUTHREG_ANNOUNCEMENT*** pppSt_Announcement, int nListCount); diff --git a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp index 56d6870..0b46821 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/pch.cpp +++ b/XEngine_Source/AuthorizeModule_Protocol/pch.cpp @@ -63,7 +63,7 @@ extern "C" bool Protocol_Packet_HttpSerialList(XCHAR * ptszMsgBuffer, int* pInt_ { return m_ProtocolPacket.Protocol_Packet_HttpSerialList(ptszMsgBuffer, pInt_MsgLen, pppSt_SerialList, nListCount); } -extern "C" bool Protocol_Packet_HttpToken(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout, int nDCode) +extern "C" bool Protocol_Packet_HttpToken(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, int nTimeout, XSHOT nDCode) { return m_ProtocolPacket.Protocol_Packet_HttpToken(ptszMsgBuffer, pInt_MsgLen, xhToken, nTimeout, nDCode); } diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp index 624e4c7..663358e 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/AuthorizeHTTP_Get/AuthorizeHTTP_GetTask.cpp @@ -51,7 +51,7 @@ bool XEngine_AuthorizeHTTP_GetTask(LPCXSTR lpszClientAddr, XCHAR** pptszList, in return false; } //http://app.xyry.org:5302/api?function=dcode - int nDCode = 0; + XSHOT nDCode = 0; XNETHANDLE xhToken = 0; AuthHelp_DynamicCode_Create(&xhToken, &nDCode); Protocol_Packet_HttpToken(tszSDBuffer, &nSDLen, xhToken, st_AuthConfig.st_XVerification.nDynamicTimeout, nDCode); diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 7f2f96b..3395e14 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -371,32 +371,7 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,加密传输设置为关闭,采用明文传输")); } - //发送信息报告 - if (st_AuthConfig.st_XReport.bEnable && !bIsTest) - { - if (InfoReport_APIMachine_Send(st_AuthConfig.st_XReport.tszAPIUrl, st_AuthConfig.st_XReport.tszServiceName)) - { - __int64x nTimeCount = 0; - if (InfoReport_APIMachine_GetTime(st_AuthConfig.st_XReport.tszAPIUrl, st_AuthConfig.st_XReport.tszServiceName, &nTimeCount)) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动信息报告给API服务器:%s 成功,报告次数:%lld"), st_AuthConfig.st_XReport.tszAPIUrl, nTimeCount); - } - else - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动信息报告给API服务器:%s 成功,获取报告次数失败,错误:%lX"), st_AuthConfig.st_XReport.tszAPIUrl, InfoReport_GetLastError()); - } - } - else - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动信息报告给API服务器:%s 失败,错误:%lX"), st_AuthConfig.st_XReport.tszAPIUrl, InfoReport_GetLastError()); - } - } - else - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,信息报告给API服务器没有启用")); - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,动态验证:%d,多端登录:%d,临时试用:%d,黑名单功能:%d,普通TOKEN:%d,硬件码登录:%d"), st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchDCode, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchBanned, st_FunSwitch.bSwitchTokenLogin, st_FunSwitch.bSwitchHCLogin); - + pSt_File = _xtfopen(st_AuthConfig.st_XVerification.st_XCDKey.tszKeyFile, _X("rb")); if (NULL == pSt_File) { @@ -438,7 +413,31 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,授权文件失败,解密失败,数据不正确")); } } - + //发送信息报告 + if (st_AuthConfig.st_XReport.bEnable && !bIsTest) + { + if (InfoReport_APIMachine_Send(st_AuthConfig.st_XReport.tszAPIUrl, st_AuthConfig.st_XReport.tszServiceName)) + { + __int64x nTimeCount = 0; + if (InfoReport_APIMachine_GetTime(st_AuthConfig.st_XReport.tszAPIUrl, st_AuthConfig.st_XReport.tszServiceName, &nTimeCount)) + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动信息报告给API服务器:%s 成功,报告次数:%lld"), st_AuthConfig.st_XReport.tszAPIUrl, nTimeCount); + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动信息报告给API服务器:%s 成功,获取报告次数失败,错误:%lX"), st_AuthConfig.st_XReport.tszAPIUrl, InfoReport_GetLastError()); + } + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动信息报告给API服务器:%s 失败,错误:%lX"), st_AuthConfig.st_XReport.tszAPIUrl, InfoReport_GetLastError()); + } + } + else + { + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,信息报告给API服务器没有启用")); + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,动态验证:%d,多端登录:%d,临时试用:%d,黑名单功能:%d,普通TOKEN:%d,硬件码登录:%d"), st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchDCode, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchBanned, st_FunSwitch.bSwitchTokenLogin, st_FunSwitch.bSwitchHCLogin); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,网络验证服务运行中,XEngien版本:%s%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_Version_XNumberStr(), BaseLib_Version_XTypeStr(), st_AuthConfig.st_XVer.pStl_ListVer->size(), st_AuthConfig.st_XVer.pStl_ListVer->front().c_str()); while (true) -- Gitee From 02768c6b53f3622802aa58860b2de4cb1ffaf054 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 8 May 2025 11:21:39 +0800 Subject: [PATCH 21/29] improved:get time for report info --- .../XEngine_AuthorizeService.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 3395e14..211a4d8 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -416,17 +416,10 @@ int main(int argc, char** argv) //发送信息报告 if (st_AuthConfig.st_XReport.bEnable && !bIsTest) { - if (InfoReport_APIMachine_Send(st_AuthConfig.st_XReport.tszAPIUrl, st_AuthConfig.st_XReport.tszServiceName)) + __int64x nTimeCount = 0; + if (InfoReport_APIMachine_Send(st_AuthConfig.st_XReport.tszAPIUrl, st_AuthConfig.st_XReport.tszServiceName, &nTimeCount)) { - __int64x nTimeCount = 0; - if (InfoReport_APIMachine_GetTime(st_AuthConfig.st_XReport.tszAPIUrl, st_AuthConfig.st_XReport.tszServiceName, &nTimeCount)) - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动信息报告给API服务器:%s 成功,报告次数:%lld"), st_AuthConfig.st_XReport.tszAPIUrl, nTimeCount); - } - else - { - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动信息报告给API服务器:%s 成功,获取报告次数失败,错误:%lX"), st_AuthConfig.st_XReport.tszAPIUrl, InfoReport_GetLastError()); - } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,启动信息报告给API服务器:%s 成功,报告次数:%lld"), st_AuthConfig.st_XReport.tszAPIUrl, nTimeCount); } else { -- Gitee From dba8506ac36f4fc8e877f53d5bc9ca88941d4dcb Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 8 May 2025 16:00:53 +0800 Subject: [PATCH 22/29] ci:merge rocky build --- .github/workflows/RockyArm64_build.yml | 78 ------------------- ...{RockyX86_64_build.yml => Rocky_build.yml} | 31 +++++--- 2 files changed, 21 insertions(+), 88 deletions(-) delete mode 100644 .github/workflows/RockyArm64_build.yml rename .github/workflows/{RockyX86_64_build.yml => Rocky_build.yml} (71%) diff --git a/.github/workflows/RockyArm64_build.yml b/.github/workflows/RockyArm64_build.yml deleted file mode 100644 index 1076e40..0000000 --- a/.github/workflows/RockyArm64_build.yml +++ /dev/null @@ -1,78 +0,0 @@ -name: rocky Arm64 build workflows - -on: - push: - branches: - - 'develop' - paths: - - 'XEngine_Source/**' - - 'XEngine_Release/**' - - '.github/**' - -permissions: - contents: read - -jobs: - build: - runs-on: ubuntu-24.04 - env: - IMAGE_NAME: rockylinux/rockylinux:9.5 - - strategy: - fail-fast: false - matrix: - arch: [linux/arm64] - - steps: - # 检出您的主仓库代码 - - name: Checkout main repository code - uses: actions/checkout@v4 - with: - ref: 'develop' - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Build ${{ matrix.arch }} - run: | - docker run --platform ${{ matrix.arch }} --rm \ - -v ${{ github.workspace }}:/workspace \ - -w /workspace ${{ env.IMAGE_NAME }} /bin/sh -c ' - set -e - dnf update -y - dnf install --allowerasing git make g++ wget curl jq unzip -y - - git config --global --add safe.directory /workspace - git submodule init - git submodule update - - latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) - wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_Arm64.zip - unzip ./XEngine_RockyLinux_9_Arm64.zip -d ./XEngine_RockyLinux_9_Arm64 - cd XEngine_RockyLinux_9_Arm64 - - chmod 777 ./XEngine_LINEnv.sh - ./XEngine_LINEnv.sh -i 0 - - cp -rf ./XEngine_Include /usr/local/include - find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; - ldconfig - cd .. - - cd XEngine_Source - make ARCH=Arm64 RELEASE=1 - make FLAGS=InstallAll - make FLAGS=CleanAll - cd .. - - cd XEngine_Release - ./XEngine_AuthorizeService -t - chown -R $(id -u):$(id -g) . - chmod -R a+r . ' - - - name: Upload folder as artifact with RockyLinux - uses: actions/upload-artifact@v4 - with: - name: XEngine_AuthorizeService-RockyLinux_9_Arm64 - path: XEngine_Release/ - retention-days: 1 diff --git a/.github/workflows/RockyX86_64_build.yml b/.github/workflows/Rocky_build.yml similarity index 71% rename from .github/workflows/RockyX86_64_build.yml rename to .github/workflows/Rocky_build.yml index 80d4a02..075a9c6 100644 --- a/.github/workflows/RockyX86_64_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -1,4 +1,4 @@ -name: rocky x86_64 build workflows +name: rocky build workflows on: push: @@ -14,18 +14,30 @@ permissions: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.runner }} container: image: rockylinux/rockylinux:9.5 + options: --platform ${{ matrix.platform }} + strategy: + matrix: + include: + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + artifact: x86-64 + packet: x86_64 + - arch: arm64 + runner: ubuntu-24.04-arm + platform: linux/arm64 + artifact: Arm64 + packet: Arm64 steps: - # 检出您的主仓库代码 - name: Checkout main repository code uses: actions/checkout@v4 with: ref: 'develop' - # 检出依赖的xengine仓库到指定的xengine目录 - name: Checkout dependency repository (xengine) uses: actions/checkout@v4 with: @@ -42,18 +54,17 @@ jobs: run: | dnf update -y dnf install gcc g++ make git jq unzip -y - # 设置依赖库的环境变量 - name: Set up Dependency rocky linux Environment run: | cd libxengine chmod 777 * ./XEngine_LINEnv.sh -i 0 - name: install xengine library - run: | + run: | latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) - wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_x86-64.zip - unzip ./XEngine_RockyLinux_9_x86-64.zip -d ./XEngine_RockyLinux_9_x86-64 - cd XEngine_RockyLinux_9_x86-64 + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_RockyLinux_9_${{ matrix.artifact }}.zip + unzip ./XEngine_RockyLinux_9_${{ matrix.artifact }}.zip -d ./XEngine_RockyLinux_9_${{ matrix.artifact }} + cd XEngine_RockyLinux_9_${{ matrix.artifact }} cp -rf ./XEngine_Include /usr/local/include find ./XEngine_Linux -name "*.so" -exec cp {} /usr/lib64 \; @@ -78,6 +89,6 @@ jobs: - name: Upload folder as artifact with RockyLinux uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-RockyLinux_9_x86_64 + name: XEngine_AuthorizeService-RockyLinux_9_${{ matrix.packet }} path: XEngine_Release/ retention-days: 1 -- Gitee From 1e6e674e9168ba2c9c05d04b289c076684ff1ff8 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 9 May 2025 10:22:18 +0800 Subject: [PATCH 23/29] modify:info report only release --- .../XEngine_AuthorizeService/XEngine_AuthorizeService.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp index 211a4d8..604bb36 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/XEngine_AuthorizeService.cpp @@ -413,6 +413,7 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,授权文件失败,解密失败,数据不正确")); } } +#ifndef _DEBUG //发送信息报告 if (st_AuthConfig.st_XReport.bEnable && !bIsTest) { @@ -430,6 +431,7 @@ int main(int argc, char** argv) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("启动服务中,信息报告给API服务器没有启用")); } +#endif XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,功能开关选项,删除功能:%d,登录功能:%d,找回密码:%d,充值功能:%d,注册功能:%d,CDKey功能:%d,公告系统:%d,动态验证:%d,多端登录:%d,临时试用:%d,黑名单功能:%d,普通TOKEN:%d,硬件码登录:%d"), st_FunSwitch.bSwitchDelete, st_FunSwitch.bSwitchLogin, st_FunSwitch.bSwitchPass, st_FunSwitch.bSwitchPay, st_FunSwitch.bSwitchRegister, st_FunSwitch.bSwitchCDKey, st_FunSwitch.bSwitchNotice, st_FunSwitch.bSwitchDCode, st_FunSwitch.bSwitchMulti, st_FunSwitch.bSwitchTry, st_FunSwitch.bSwitchBanned, st_FunSwitch.bSwitchTokenLogin, st_FunSwitch.bSwitchHCLogin); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("所有服务成功启动,网络验证服务运行中,XEngien版本:%s%s,发行版本次数:%d,当前运行版本:%s。。。"), BaseLib_Version_XNumberStr(), BaseLib_Version_XTypeStr(), st_AuthConfig.st_XVer.pStl_ListVer->size(), st_AuthConfig.st_XVer.pStl_ListVer->front().c_str()); -- Gitee From 03effb6c673531f1363aa6001823f1061ad3e802 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 9 May 2025 10:23:51 +0800 Subject: [PATCH 24/29] update:depend library --- XEngine_Source/XEngine_Depend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/XEngine_Source/XEngine_Depend b/XEngine_Source/XEngine_Depend index 66e9b81..c8db114 160000 --- a/XEngine_Source/XEngine_Depend +++ b/XEngine_Source/XEngine_Depend @@ -1 +1 @@ -Subproject commit 66e9b81f47f5d9476e2e5cecf919d0b6ee4b5e9d +Subproject commit c8db114d019e29fed2774113b3a8fa14ae60a542 -- Gitee From 390818f3ec24b4794292112ef8e795fbc670dbc3 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 9 May 2025 10:37:37 +0800 Subject: [PATCH 25/29] improved:make file build flags --- XEngine_Source/AuthorizeModule_CDKey/Makefile | 13 ++++--------- XEngine_Source/AuthorizeModule_Client/Makefile | 13 ++++--------- XEngine_Source/AuthorizeModule_Configure/Makefile | 13 ++++--------- XEngine_Source/AuthorizeModule_Database/Makefile | 13 ++++--------- XEngine_Source/AuthorizeModule_Help/Makefile | 13 ++++--------- XEngine_Source/AuthorizeModule_Protocol/Makefile | 13 ++++--------- XEngine_Source/AuthorizeModule_Session/Makefile | 13 ++++--------- .../XEngine_AuthorizeService/Makefile | 13 ++++--------- 8 files changed, 32 insertions(+), 72 deletions(-) diff --git a/XEngine_Source/AuthorizeModule_CDKey/Makefile b/XEngine_Source/AuthorizeModule_CDKey/Makefile index 6309788..209c6f0 100644 --- a/XEngine_Source/AuthorizeModule_CDKey/Makefile +++ b/XEngine_Source/AuthorizeModule_CDKey/Makefile @@ -1,7 +1,5 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = LOADHDR = -I ./ @@ -11,15 +9,15 @@ LOADSO = OBJECTS = Authorize_Serial.o Authorize_CDKey.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif @@ -32,10 +30,8 @@ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -44,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/AuthorizeModule_Client/Makefile b/XEngine_Source/AuthorizeModule_Client/Makefile index 41f85c8..3f22854 100644 --- a/XEngine_Source/AuthorizeModule_Client/Makefile +++ b/XEngine_Source/AuthorizeModule_Client/Makefile @@ -1,7 +1,5 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp @@ -11,15 +9,15 @@ LIBEX = OBJECTS = AuthClient_Connector.o AuthClient_HTTPVer.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif @@ -32,10 +30,8 @@ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -44,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/AuthorizeModule_Configure/Makefile b/XEngine_Source/AuthorizeModule_Configure/Makefile index dbe99ff..923ca65 100644 --- a/XEngine_Source/AuthorizeModule_Configure/Makefile +++ b/XEngine_Source/AuthorizeModule_Configure/Makefile @@ -1,7 +1,5 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp @@ -11,15 +9,15 @@ LIBEX = OBJECTS = ModuleConfigure_Json.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif @@ -32,10 +30,8 @@ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -44,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/AuthorizeModule_Database/Makefile b/XEngine_Source/AuthorizeModule_Database/Makefile index f960968..cd52a3b 100644 --- a/XEngine_Source/AuthorizeModule_Database/Makefile +++ b/XEngine_Source/AuthorizeModule_Database/Makefile @@ -1,7 +1,5 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = LOADHDR = -I ./ @@ -11,15 +9,15 @@ LIBEX = OBJECTS = DBModule_SQLite.o DBModule_MySQL.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif @@ -32,10 +30,8 @@ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -44,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/AuthorizeModule_Help/Makefile b/XEngine_Source/AuthorizeModule_Help/Makefile index 727f3b6..1649d07 100644 --- a/XEngine_Source/AuthorizeModule_Help/Makefile +++ b/XEngine_Source/AuthorizeModule_Help/Makefile @@ -1,7 +1,5 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = LOADHDR = -I ./ @@ -11,15 +9,15 @@ LIBEX = OBJECTS = AuthHelp_DynamicCode.o AuthHelp_MultiLogin.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif @@ -32,10 +30,8 @@ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -44,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/AuthorizeModule_Protocol/Makefile b/XEngine_Source/AuthorizeModule_Protocol/Makefile index 3586731..63f4c33 100644 --- a/XEngine_Source/AuthorizeModule_Protocol/Makefile +++ b/XEngine_Source/AuthorizeModule_Protocol/Makefile @@ -1,7 +1,5 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = LOADHDR = -I ./ -I ../XEngine_Depend/XEngine_Module/jsoncpp @@ -11,15 +9,15 @@ LIBEX = OBJECTS = Protocol_Packet.o Protocol_Parse.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif @@ -32,10 +30,8 @@ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -44,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/AuthorizeModule_Session/Makefile b/XEngine_Source/AuthorizeModule_Session/Makefile index dd35e17..b25b0a9 100644 --- a/XEngine_Source/AuthorizeModule_Session/Makefile +++ b/XEngine_Source/AuthorizeModule_Session/Makefile @@ -1,7 +1,5 @@ CC = g++ -Wall -std=c++20 -fPIC -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = LOADHDR = -I ./ @@ -11,15 +9,15 @@ LIBEX = OBJECTS = Session_Authorize.o Session_Token.o pch.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif @@ -32,10 +30,8 @@ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -44,7 +40,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl diff --git a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile index a1a3d50..72c6ec9 100644 --- a/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile +++ b/XEngine_Source/XEngine_APPService/XEngine_AuthorizeService/Makefile @@ -1,7 +1,5 @@ CC = g++ -Wall -std=c++20 -PLATFORM = linux PLATVER = -PLATDIR = FILEEXT = LIBFLAG = LOADHDR = -I ./ @@ -16,15 +14,15 @@ OBJECTS = Authorize_Config.o Authorize_Net.o Authorize_Task.o Authorize_TCPTask. AuthorizeHTTP_Token.o AuthorizeHTTP_GetTask.o ifeq ($(RELEASE),1) -FLAGS = -c -DEBUG = +FLAGS = -c -D _RELEASE +DEBUG = -O2 else ifeq ($(PLATFORM),mac) FLAGS = -c - DEBUG = -g + DEBUG = -g -D _DEBUG else FLAGS = -c -lc_p - DEBUG = -g -pg + DEBUG = -g -pg -D _DEBUG endif endif @@ -37,10 +35,8 @@ endif ifeq ($(PLATFORM),linux) ifeq (/etc/redhat-release,$(wildcard /etc/redhat-release)) PLATVER = -D __CENTOS__ - PLATDIR = XEngine_Linux/Centos else PLATVER = -D __UBUNTU__ - PLATDIR = XEngine_Linux/Ubuntu endif FILEEXT = so LIBFLAG = -shared @@ -49,7 +45,6 @@ ifeq ($(PLATFORM),linux) else ifeq ($(PLATFORM),mac) CC += -Wno-deprecated-declarations PLATVER = -D __MACOS__ - PLATDIR = XEngine_Mac FILEEXT = dylib LIBFLAG = -dynamiclib LIBEX = -lpthread -ldl -- Gitee From c06910b4a5874f2d2ef1628290a833fbcb9ef966 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 9 May 2025 14:01:43 +0800 Subject: [PATCH 26/29] ci:update build name --- .github/workflows/Rocky_build.yml | 4 +--- .github/workflows/Ubuntu_build.yml | 4 ++-- .github/workflows/macbuild.yml | 2 +- .github/workflows/msbuild.yml | 5 ++--- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index 075a9c6..9e982e2 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -25,12 +25,10 @@ jobs: runner: ubuntu-24.04 platform: linux/amd64 artifact: x86-64 - packet: x86_64 - arch: arm64 runner: ubuntu-24.04-arm platform: linux/arm64 artifact: Arm64 - packet: Arm64 steps: - name: Checkout main repository code @@ -89,6 +87,6 @@ jobs: - name: Upload folder as artifact with RockyLinux uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-RockyLinux_9_${{ matrix.packet }} + name: XEngine_AuthorizeService-RockyLinux_9_${{ matrix.artifact }} path: XEngine_Release/ retention-days: 1 diff --git a/.github/workflows/Ubuntu_build.yml b/.github/workflows/Ubuntu_build.yml index 52cb3e9..d73e183 100644 --- a/.github/workflows/Ubuntu_build.yml +++ b/.github/workflows/Ubuntu_build.yml @@ -116,14 +116,14 @@ jobs: if: matrix.os == 'ubuntu-22.04' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Ubuntu_22.04_x86_64 + name: XEngine_AuthorizeService-Ubuntu_22.04_x86-64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with ubuntu24.04 if: matrix.os == 'ubuntu-24.04' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Ubuntu_24.04_x86_64 + name: XEngine_AuthorizeService-Ubuntu_24.04_x86-64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with ubuntu24.04 arm64 diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index 242bc52..6cdbbd3 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -84,7 +84,7 @@ jobs: if: matrix.os == 'macos-13' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Mac_x86_64 + name: XEngine_AuthorizeService-Mac_x86-64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with mac arm diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index d0c7fb7..d22204e 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -16,7 +16,6 @@ jobs: matrix: configuration: [Debug ,Release] platform: [x86 ,x64 ,ARM64] - runs-on: windows-latest # 最新的 Windows 环境 steps: @@ -113,14 +112,14 @@ jobs: if: matrix.configuration == 'Release' && matrix.platform == 'x86' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Windows_x86_32 + name: XEngine_AuthorizeService-Windows_x86-32 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with x64 if: matrix.configuration == 'Release' && matrix.platform == 'x64' uses: actions/upload-artifact@v4 with: - name: XEngine_AuthorizeService-Windows_x86_64 + name: XEngine_AuthorizeService-Windows_x86-64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with Arm64 -- Gitee From b9048e64602e6b05d8098e65cfe8b29e83afbf76 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 10 May 2025 09:39:42 +0800 Subject: [PATCH 27/29] ci:debian build release --- .github/workflows/debian_build.yml | 87 ++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 .github/workflows/debian_build.yml diff --git a/.github/workflows/debian_build.yml b/.github/workflows/debian_build.yml new file mode 100644 index 0000000..3a31b94 --- /dev/null +++ b/.github/workflows/debian_build.yml @@ -0,0 +1,87 @@ +name: debian build workflows + +on: + push: + branches: + - 'develop' + paths: + - 'XEngine_Source/**' + - 'XEngine_Release/**' + - '.github/**' + +permissions: + contents: read + +jobs: + build: + runs-on: ${{ matrix.runner }} + container: + image: debian:bookworm + options: --platform ${{ matrix.platform }} + strategy: + matrix: + include: + - arch: amd64 + runner: ubuntu-24.04 + platform: linux/amd64 + artifact: x86-64 + + steps: + - name: Checkout main repository code + uses: actions/checkout@v4 + + - name: Checkout dependency repository (xengine) + uses: actions/checkout@v4 + with: + repository: libxengine/libxengine + path: libxengine + + - name: sub module checkout (opensource) + uses: actions/checkout@v4 + with: + repository: libxengine/XEngine_OPenSource + path: XEngine_Source/XEngine_Depend + + - name: install system package + run: | + apt update -y + apt install gcc g++ make git jq unzip curl -y + + - name: Set up Dependency rocky linux Environment + run: | + cd libxengine + chmod 777 * + ./XEngine_LINEnv.sh -i 0 + - name: install xengine library + run: | + latest_tag=$(curl -s https://api.github.com/repos/libxengine/libxengine/releases/latest | jq -r .tag_name) + wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Debian_12_${{ matrix.artifact }}.zip + unzip ./XEngine_Debian_12_${{ matrix.artifact }}.zip -d ./XEngine_Debian_12_${{ matrix.artifact }} + cd XEngine_Debian_12_${{ matrix.artifact }} + + cp -rf ./XEngine_Include /usr/local/include + find ./XEngine_Linux -name "*.so" -exec cp {} /usr/local/lib \; + ldconfig + + - name: make + run: | + cd XEngine_Source + make + make FLAGS=InstallAll + make FLAGS=CleanAll + + make RELEASE=1 + make FLAGS=InstallAll + make FLAGS=CleanAll + cd .. + - name: test + run: | + cd XEngine_Release + ./XEngine_AuthorizeService -t + + - name: Upload folder as artifact + uses: actions/upload-artifact@v4 + with: + name: XEngine_AuthorizeService-Debian_12_x86-64 + path: XEngine_Release/ + retention-days: 1 \ No newline at end of file -- Gitee From d92fc2a62c496fd3de3ef591bc2aa1998adcd322 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Sat, 10 May 2025 10:07:37 +0800 Subject: [PATCH 28/29] update:depend library and document --- CHANGELOG | 37 ++++++++++++++++++ XEngine_Docment/Docment_en.docx | Bin 162098 -> 149625 bytes XEngine_Docment/Docment_zh.docx | Bin 164707 -> 155751 bytes .../XEngine_Config/XEngine_VersionConfig.json | 1 + XEngine_Source/XEngine_Depend | 2 +- 5 files changed, 39 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 0c34e8c..e4f183a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,40 @@ +XEngine_Authorize V3.18.0.1001 + +added:more system release support +added:unified error code +update:depend library +improved:send message use class memory instead +improved:get time for report info +modify:info report only release +modify:pass encrypt via client only +modify:user register level is 20 +modify:level choice range for management app +modify:large memory use memory pool instead +modify:add memory class file and modify http reply msg buffer to memory buffer +modify:use XENGINE_MEMORY_SIZE_MAX instead macor +modify:dynamic code size and start code location +fixed:web socket memory malloc is incorrect +fixed:Window exception in some dpi +fixed:print log is incorrect when client leave +fixed:close client clear is incorrect when actively close client + +增加:更多系统发布支持 +增加:统一错误码 +优化:发送消息使用内存池类替换 +优化:信息报告获取时间 +修改:信息报告仅仅在release版本发送 +修改:密码加密仅在客户端实现 +修改:用户注册级别默认为20 +修改:管理程序的级别范围选择 +修改:大内存使用内存池替换 +修改:增加新的内存池消息类 +修改:使用XENGINE_MEMORY_SIZE_MAX替代内部宏 +修改:动态码大小修改 +修复:web socket内存申请错误 +修复:windows下部分dpi异常 +修复:客户端离开输出的日志错误 +修复:主动关闭客户端的时候处理不正确 +================================================================ XEngine_Authorize V3.17.0.1001 added:more ci release arm64 support diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index 596ffd1714c9c3e6388ee9ee76ab7d68676ab868..ba57e4b09a3101cc1928d35eb729cac30fdd2b70 100644 GIT binary patch literal 149625 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 $gA(cXVG&^f7L?#5q?X+0YXgQa9GN zhR%1#+KAh0e#o9~AHJ~G{q|W{L;rr-ZOB9J=ZTd?Zpbn66MUaL@`L+{?_gFwE@!Tu zxiZ(8ZTxWGSSux@9=7B|9|#%B9pe6YqucR}ce7SS#%Qm73#SvaEKt2TQCM;}k*~_dDOU`@*>8-6qC`=XA?0 zKp*|?W6rxb6sy@*iFrTts_#iZ@{J*t{9z2`9!uPTBqX!$myouxe&?R%9Thh3>5b`emp_m z{$c&W%YW%hMrz0NBcvx(oO-&O7v^@OOtql*@k&k)r!)%bAF?!UoszHy{gocAoP=03 zrOZ=Iut&yUuc zpY7$zU%~ay`*!0~-%n1+YF@vIRmg?Nj^Pu0@`L#V|yhjaD-1BfZh()8gukm3S7(8@f07#uzc(5^dtp&c+VDH}x~T zZc`3FTbHSoM(^WAz!`m}H^oM=mLQPFJY>!^u^;_S-Aw!yRu;p@UA1BW9q#K@t)o}) z)=CXyw?gv5=j?TF8|OWIgXCq(xG?&~PT$86sp!Z+adWEe|(yQYkO$=lmlJLBzB zINmG75Bl|Q-^~80kg~A??;VjEtn(J)2{Wtjcy_k1LJr@6$IIZm{=_scT@bG2Z19v`SICUq10vf{C%DH9Ce&&Pqzq>e-((+??12w71Zjfl7tMu?VAhQLLl$ugA)YR&vkGZ4F#J2c8r=&* zqF)o=r>?X~^(2sXscu8asW^eCi_(b69_``g*YlAy=?Lhg?yz`lovO)2UqXIZyL#6w#s+(kEVhOkt@#Z_HN(QStsPhbZ$bP zNG#ho`7-FE3vt`bU7q_S-%Lmgg$P8pcj`YCJqkTyTDL4uBGX(1AuXY%l8`T9_l=N| zALW?>DGk>;XZ?R@U2=?upqxY?eyDCki2Q9{10kqfE@bsd@f{(%H{92`=me7rQmDdJ ztRxc>-FW!aMLdZAHxseLJ4?Gw#FOlS5Sx^-5#qXl=rm@FPEP)vQ5G_kY|AcxIXewC z3dQU6Gidp;n=Sr6uE$2-EW3NA46cys&U@5#)grqU(i`4@G5-$L2YRkwF}$;KUHcS{~PWDd9{UNc0#hDMtdODkcZ@M_3~5qmYgyILRSB%E=|a5gK`C3reBMS z&nDvH$PaR)f2dAXNGY3bh&Ce5Zw$mS7A-`ZiXy>6M#h+3Oq9}U^Y1+08~?YFLY@_o z7`cUOFhXYspL*Q(QD=jYmmYN__Bsq0UO)l69{A=MA*;sjDZ%HRt5 zWGispq9&{Jv&mzjJfM)9FiPF?s^yWQL?Crgzq1fIIlOz<*Vq%!ODCAm!g`LqRy}X| z@5p=e&OWG?KuEPtQEDMy!m0@&v!beokY$B(yFzwizcKHq!ob}t1ZODs9IeolNeRS^ zpY4c@VKgG2!YX`$)JF9oLWW2*+P5=hcS#vJl1?NN1x5SK55`}$Q@)DzPBVY~B&PxSQi zTX~b-ppX*>6_66z#%TG9cznXIP{iX4Wm0;CB8>X8ge(zX{@;#m{H9{IJWVJn793|O z2=P?$t}pQ?7+EMetTLVLlAHVzeCpgQPJhut=0a5JVtlmNi3^R9ids}cZu;?kgfK%1h0jX)Mj=J-gWpFs ztWq7ZkRC#(jI@oh=;B}AKYl0X74Wky8|X6?-`eze=5!Vx#sY+RV(a2EvFK}-;3w4c z&`V9tF}h!>@zi4>P3{by?fTWs7FOJ;BijhUgiGqvLZ)$?Tu9v*nJaZ`@8HR5@^`6f zPly}_sy_(iM+~yG<%3ib1Bt>KM2^T4|8KJXRPh-|oxJ1QON07c1Mz}>W0ZFpRhkR& zG%>$jdbkXX43T_%)4uD(%xd|H93%YSKFf~mHpY&97^jdKEvT#*hz;I}U++Jx*f;v& zb^Es127aIKq>bKT`JSOxYuQjstrP>KW1s?M;)Y)-45oa%8gJBuEC99Fh1KInR7-$Vxj~hGi|C8?d8cW zp?W?cSxbsm>_xXEzK?uO)S3`dBO-xFE2xJONXI!TLVEhBTO|-HY+sA4;>v zIaeW$m9j!2%*DtT&I}?eebntGq3|Ee|rGKV57-C1OaO6c2?gIpg@Iesbmit>%n6G7%-Q zi&ojH9sn~?R$E$Vm96g1oOS2o_7`fk=Sj$|za)9@=aJv8a+3Ym7Xmd!#n z4*dlg5a;S9>$yA45fBpH?Tpmu5k_Q-M)MQAl4)wuAM%hv+LvYGaEE-kX7o$!^MrG3 zghclMKHFFO#F&tM(O`o6;G3CwypU2c10|#`yyxtD`7k0H-}p`C?pNfaHk#x7Qz4_^ zY=}VGqWW9u>MICGQ>TQV`g!7WD(8c%+$=I`7!$JDyzvtV8Elc} zR}aPWaDpogDm6wTy0*AIoOpU z#cBq-!v=bkCf8$Nd`F0XY>`6l0`rB2i)-+{w$L-O7Zcy{ zo4%N%$$xX@rt{z2*07qv-s7nra-7ALamRZa1v?Uj95Fchrk_QcxeTDV}-0b@%(tX>0yM)O&2ZJEO@9W;~gAP z7q0hrIj0$`fr6(#>O>PF=7KChNGtrcJtgjwkeg=%t(cI``BQhT4|c`4f35JY@|7mu z+b(ATr>%Fd$tL=ZLTaXtQ6W|jX1by@&v@PHXCK-Sug9=wwR?-^c6`(3b<;uM46YALsA=9~3_SL^3em2@inTy+idl^K ziK2Q$Lfa87(pZ-9M)$E>$9Qj~DiV4Hfi%o(`Z%$(5qUAun~<5EqlO;t4|-re-G994 zjD3ZxGyg{ZA`<0}{A^QX5N*hum3fHI>!@1SUCeu7-b{$>8$N+P98MAyQrpMYWwnIr zctT_>FjC^{)2_nzStD@;k*`@B-{@<#&Gvd-U1<2!JA_5>33k?1kKc5QiST~gx*geC z?phaC3+s~6%kuyB>3+s_+tVB0bNiHzQ34@7p*Zjs&F{>Gv~+|l8BDYxcQ>4f zDdeS#p140t6*JO8>PA1yU+sf!{F8TzIq@ogGGY9!Mi)Kyj@9(_h89V#l$aHLg_>@1 zjDiYbZSFwaFehHq(?=lgQX^Y|alV>+UD%Z=ik3JITl4IwF)c)%1hVy-FVCawwWO$x zL&Wlj*0Pq!z2o~7-OZU!eU(>$stx}UQp)eqq?hqFt0q#8yQ)TaBc6pCJ?v<&tIakr zD^hJ$ocJq5J_bf7W0GmY3NIlxF#jW@b7yK0?@o$2fjG{v6w;dWDe=*87M74DbIH#p zFBD_9HDW8gLu5u9+R<8P#<{*iUSH_B)|l9U@weJ68GoOqbI&`ZHF@H=-&#x(#WiTR zZoIQoOsj@vM5!iS?tkZ$DU>Q2VWirriqB6JR_>jjrbeZ z$7@>`oK+^I*v5+7I;$DhAJo~(z^HDWGhJkmb*@zT)|@f56<2h=^7t#n*h{SF5J}A3 zIUGgnIFlw2Z8(j~N`}EB^Nex&?s8Hbdc}v$e zTD}lj<9jY7!7zr>Qq*SCHx(N;oUIbbk0)s9ONKeUmZn$$|ILv}ptWx4*+O3?RD!u; zKuAM9Zy{z}gWh5~6ZVn@GSJ(NBI|)2i7mInU2-jt#JXQCFF7WRZ0AUQ%coZClW0X( z7G~u`G<9IMFGhpol&pwaW}HhJh%L-XXa%zKSJ17ndEKn|!hV@%7K82(ndM@=vTROv zj4L;Lx-@XVxi}xjLz;VP7@cfhWnjo22wddNcB!a7ya-gdE;pw-aT#k~`%!&os82uGz_tvO>Hsnwn`<~3WDA5K#+giJa7 zxO+tq9(udtbz&R*zlp6Qs}a&WR)sa0OPmHNBxl1LP)IrarY&00@O^Z+55^pX)Xl5Y ztl?ZzA+=3p_)RbLFe)V^FRV-u;;2|HBy<*VkG5y5uF^u|jNi0(!|BRGM*U%{`f4~2 ztcRG;z^rfktaemrYC5I`D;L}M#mqKDhJK3wCNk3a<%T(Tk+kTd$6P@hA!34-ZyfDj zJdIN~2G*FhsjrREuRu1kL49oBm?3O)$829jUO&7#E7u>kYUR#qjBV8)Rq$;+tsB~d z9TOAqe-lA!=sOD$MZq`Sy0$TXEe9}WK_Sw;HQYP9cdkl~bU?-&r4V=Qa}}a3f?pxx zb>MkVueG$>u zM!mrp4&fNPjRwAp`Nj~Pf4tw`w8WPD&Bht_7PCm$%Mmh|4Zg<{m3qk9^7{nRk^6_( z>xYUGJ(*`b!9qmg_-|xK(ej0?U_mvKo~|GC=R$VN@pcZOtd1)ha!U)ND-qBEijFSdl8Oc$Y-#Zljme ztEGoo>}93%OXBWmW)^sR$YHABZDY4%5e#^MN$XaKu!3&V2-p zH{`vseFs}*dE2Zqs#mp(6<*>_rJ{;*AcOaHUskZfOGxE7MeoOdoQ2O?K~JxLRSqRS z+qd(Fw`Tu>!{W1zk`AAR5j8TncLKrwQz0#*T3H`aIDtE4L~A!b_4sp45ZR)zcuK|& z4Mjw*ZOqsAnexI2dY?Hr%!zkhOb7irA)OUn`_!Jo4oe|*@>9!aVl{<6NA$cg;;d!e z=gI{cWS`=k$g6~8oU0g!vvy$D&s@yl3h{=Kxp22D|IS(+XFkTL8cSG1E2IsK1@s-A zTlhP>ICo3-U1Q!kBD#MtuNlb4He^RK6jw)nR^c~2ITmJfG$o=~nd7}^5 z&+_}@cMi`X3~S^cbC>ItwM6@$R5GsHjV;2zvyJ<9`#n)AgvfQS)zufs53@W%3U>ze zXWDOgYs!~lEs*|B#N82jHDNvZm-J2XG=3?1zG)4_c5GnP>zA4h^a^5nyT>I3l-7~ zedjOF&T28AJeCi0u3x_S;b{~Sg*u3cbs|6bN=h7+`ij;7J5RpSykK*7bQtWsxrg>`~q8Yqd1qA+6_w8lOVSz&<@8m8YS65kg1pnJ?5-F~anfBM+0#Qw>Ma0KJ~TB@inDZ~!V zuoMzy!9S38kRJ$%Dq}>RvC61crcXY>!;_;Pq>why$M{CIf?m!yTIQ_pH+uRoPA)|D zA9v!=*}@#lH|7u3)Nibi#3y9Rt7S_*#Q`u={LLdPf=@kPW0v-IT1jlqr7@3jDMr4ekp6>p-Y@h&5xK!*5qZuE41qL^ zAAB$8kGYuKqKk2g@40cU`}bo)Fv8S)pn+iMgH!7@Zv8JI1PIUoyfnIZ1aIq^{2dlM)$umM8GQ@)nqin-o;W>B1qizGAK8BIaE6&@%D3L+0=gV~``}9ik%T zn5!hLniw;})c8L0Mb$PTE2V-SWgx6uB*Z2%V!3m&y|}Me?vB-{L$A{@?mw374%Uwf z$vmZTtVnj@8mv!uFh9XEL*IF<-MF$;NN=bLFxE9zNFVD}t|S{fi#g!emN&(Eb|X4z z(90S7t6W_>w)h5fOL<_AEycc`u!m4c%~*9bPX6KXkJH6&`ER}m)gv-&p_enxw2ILp zA@%avmZ!Ja@}1=$W;n*#b+LuLx)(5-H*StnAw*>4u@`RKDf)(A;ch)OKf$wwHCf|@ z6fb^-mpfM~jVBKsV;dv%dr|Ft$Typ)?;*bg`@W{u+$ zm>exW3)Xwac%t?|Vr9i?It?HHj`jh@9H#9w@s^Rl@`FWB|3}xk?$&W7SNK&7{f;vG z-rYhxz`iC9#*+X-9^go%CBnRcq{ia}dG}dGik6*x=O5XN=dgSC-c_~g>TLHQA`^vA zqh*g`q`0Qx=9zCBIb$tPO;cZncb(QY(T=ZH`+N*I*j11LXk{tbF zbuSiDLu3yLxn|v4pnKmYkh>cqm`z2<9Uu}Jj1&I_(hr zHjy^Y{i<^>5j_}HH^y20bq)*rA~LthR=`|m`W9(Zg^V5<(fT;i8&TKuEH^-`5__Q~ zB&2veS$aj<7J6Iy+X>)N9S-$gI$jhdH6Hc%OIrV(zUSdxA+8R;AKe@`APurT;dBksP=ET7>*Q}Kre_P2r`f7xf!aGDzz)Z~6x(jS=v?Y@q z_d$2@;1#vrT9`c}mggtd^0c0{cKn%Q&3F;n9rrS5Rz;5$Z>_i3*?#NNTIdT9VzW39 zncKoj^)^x&4%d3@v0>Dzjgh%$X`3+}SbfuG@jG&7Au(gEh>#pu^3CT=RYa;yYe8g~ zX9|&(xq`1Pcc$B)ki^wDO{~DNwXtNRu?}8a+;JwFbi%eU`Y)E}B5SiX&rBs~%Q8pk zNxLx#%v{v*Nf~W_A(=a|cb6mAtadYmFf*aMqa>7;-POQ#MnWP_#p$kvf-5Q{7K|=; zryYX%S- zr2zB73bAfhFKW%6k28M%o~!2?fiCt@v1?r~Mb<4N)+mJJb+;KzXovJ-xrX@W$_xuV zr@bu8mLgPwrz~&&KQnRU2E>VLuzv#d#v?3 zLtsf!SL*2R?aifz^%%YRGyVf1V#v4#&2QXowl^&S)(my42tht)NWzGXkgc*_5Y=1g zOY1W2D!(}yJoUicE2E+#KNV6ua+z*JG|^J+QVh(UyF__GZq_A4xw}{I*69aNec#HN z)2IWq<3tM~XSx%0eci;aC%q4A-@!<9*pbDM4Q+oRxnb6X&cT*gI}cX^OMf95qhtCv zVW6*5NOG9z*GCN-`ZoIL(PPZDk10LJcd%SV4k*O(& z@?f~W9cS)(x`39$aLe&LS0R4G+N9yd-m&uD+F(?aE|NO_z>_sZ>jU~WEZy?JYS!U% z*|8(o@YV+dpT}x|F_J$d;3MV$iV^sNapw`V2$&^0LM(}&G$db8jtWTuy%EFet&wkQ zSKA;cL=K-YnlwTet)?A6#3((=-VxTB9=XyNexZ+Rh|zKmx{#31d|UAqS&oq8kri01 zkEeNypXY?pf6H>{=<6I-A&o3l*B#G@7m_-5`W~q`_5}W0Wv@cGav& zwNCK0I>lg}h=)m@fa4Vj{37A5X{6(i0Ou`Lb`IAuWS;|$uVD%+GJKaaM=3s3JV z%ynu!8;W{Yx}wu#862PUgsKUZMF09SyI{wDkPg|-#@=9efdi&uEIb{EMAG%tjxCgf zql-v4l6x|UnG!pkIef}qG-{EC!s8g5^V=7Mhs%i49w@e_z-wg_}@v3zLV09`M)(Vg~bNeNBFqd;2Vcc4`EO;h?Ce0j+HQ8+T*-`-N20 z{Z$+cuB#8>-8M+Aaof=_A#6SV--r0lX$VvcA`QaMUsUl$xkYc|Qt9{Zqq*#QL*#y; zKzNpSVB%XLlO2NQ3q`dX4PC<~Gx}HtfgDilXdjjfc*sZ9**67I{j23Sb zSi(T+b;4ww_{?OeX*rubO~9uakwLg8fLuA@|7db0z>#?VG_l;r^-63I6VpGww}j15 z^`oWvz&G`QqyFH7@O)nVHP=$7hQ(WUv1`mr$iTL;iU8KcJfyZpvk3n4(b0VhckjM< z(tf5^^6alwPn=d)xX+p0fnyX?+QMQyyL5Q3JW)~)Bb^?F^!rWM(WbW%Tn&1+DopCo zQc3-St&tbA$q+96zfIoy-p%LigF0NF)PkIRj43ZPz?*?)e0kO5o<$BGR0dkYn`p?q zs>a!-nzka#wh>NTNRiB$p2bpVlbx61zO-7MgNR9?6KgBvCUudWMWE#yTBE(B%pSMC zFFj)~J8%J3sxDkH^305VAgtIhY&s|;NUkOoag3Ck!?IaXut9olFD3!ML|!94in{We z%{q{BvVTBU&ixJ%UHwOnPw=30ATph>i=@lB2YMc)g{0t)$fGG2t8x5WI_qJd|YCM2k9tvpMfwjzoP zw&0!W)MD^PwZ>%J)7_+z9bTE#`P+ME9H54)z#~9aQx_n+ZC6JZj>u_Q99aZ_($#Y` zi$;xUw@4azdz)l(S1LQ1TdYNQF%RAC+|yxJ_>AsD(*p~RvqE0aH{NYjif^t6ExaaY z9G+@QqEJNa?hnFp;_DeEoM2Ry1{>l6e}xF(BmoAK@t&;~wXnbJsaO3)R|z5gz{pKu~Y z9@Z7Zh;UVs)0u)+7vWp7j91Ij-3ykALd6Sk8f()-tm<&{S{N6x>S23}nLZpTio`M+VP}Sr9mV|d1qf^4RsvJoI&S5EAHR#oEjh9ygW8xRh zw?JeDXB zfkCY->^&Z)8u9qjEe)|5io&LRzAP4LqGBR3eW8xaIYX!_e&yA@G;G!r!#GB;}X zO16~*G*abj_9^(7I)kt%eH+SoURO>Gd1!4%L&_AHi7W5(-Ex6H|LQdcLWF54GxH@v z2`F*hp|@Udpl4w9V$?x2IJ)X1bMy`sW2K)>0B#Cdd31d^`Z)GbA8`lvHv^iJdMZ%$ zN2W2vIgJdt!O$u77StRSI4@^Yx@eYmseu&r6#B**1LDx= z(T_S2-~GcDh-~tYxx%>+CE@xeRhKS=Qf=~MTt*5sB`q;8@BB@pwlpP%9c1&OkAI}& zk8cyjYQrz&8l>zYT#sXnhbDitlmHvHgfNnYuWG?}x#){4U56ZGR0f8oJH*achfKp& z!bA+C$Bj}RgEHSu@8~A!RL}-fJQA5=4nMhnR1XfwtXX(3*!J0gkA=-c{RX8k#osXF zvVt?+{hP~6asr6V{(^*TA4hdK#hR!2IiYT*M2p+8Y+16rit8HZ(pObcwMTXnDC!R{ zVZ}uKd;He6Ylqv!QiUE@=)>}KR#8v1iQ%FCDJ&K{T9c|2dE6tbx)#iMPx{hAl)0Jur7!t+kr6{O^22nr zyZN(?>Lc*z0tuPZ13_1i0-!rx>$TOij5p7F-AD3Ar#A=9sY&uz)1yH_CDSf~hfQ9G zyQ@J#nai^$^q|d)!sejibqZj+rz^~Qn->JJjokeF(dN}TwyREEstb;4)a~{~;a+CB z55Iut{Y|Ux^A<$8juz+&*zPsoKfGKx9OUEG@L>P!2fDCrdfvR*x>y$eaW#d1x4Sxf zGOb%?ty3=OeRl@B{!m{Sr0WCc)!6zYs$GD;e7b(;ZfA9RZ#Y$2GqXL-TClb3aOY(C z+5K6pT|0v~^Kg6i;DPJ;>CWo;X!zcz#oP6H^3Bcm0SI(>_krZi9dKPs*X#cA`-y@4 z{mItV+2tiO$(w+3HP^l_q?^a#gIs}cp!*}#^|F9@i}r`+AMT9a&51hY`8M+xN41Y9 z8g8vB$4h&h{xY z@8|(=y&d5+K+ost=xDm!MK=R%WCGYd&>@xd@;BAga`=e_< z@*`+I71d?F9Qc^2n{jl1cz*D-^K`Iz<#>A*`ZUe98<%mvjmqnBf3R~UDOq;zWF9`= z-gyTDA~}e9^MP-zpsKfi(B;-y_rNtZEC5$Cy!OZQle;4cb7n?O3i0zJDgXd@eue_P zmxhAI0>A>`!9SA$M)^=bHiFMsApihO01d#v$-&XaO3liW+04<%>NS(Al_hBoC4eT2 z6nxSD`ACbBMe1UC5%?@MxatJnHt>j_8^&gbI<~wc2rv6F4Qf-+ao9pcA#c;c#^ar2Mvpy(EA~-iUa=BXL>tcMIHs^$95|ri{0F_KMy+mlERaV1LiEZ~A8p!J&*EDa)jH?E54EASTT=aC`oD%_{w!z#zyJ_jiib>&#jL3If^0x*;!AgAyA^C1a_Tvu10Ng9?1~dJ*UMyJ z>sJ(@d-$5I^Jfl@v*dUFVvE)+N%%S$nu>3~x3H%ZmUiNY2M9a(s5)7%OERa|vtA%EcjG)a1;?XXbn@^nyTW|ZlwTItBg-7&{9ZX~!qUsTEVII;-oB)6q}yhwsqCD$ zQ7z?JDPu}6y{(h{5w7OzKFLjijknG3`?3GW5TG91k7U197VG~+S>K}Hq4=?&iIxkw z145b9&^n^`Rb;<3*nb!T$S&bcMZ((H%=C~qNq~e4{P_OS_TbpU1-yr%+nX1OAF8J{ZG}wGFF2a8Tz$n)Fw@jx zwA+|zL^X$XH*XMrrz_3d^^jXcqHvuQnSzRbiPiY##auKa z_vZQ;p#FM7W-h;&{!qu7Os$_xt>-TrG@lTm5m1qYp&mf|SG=EdUy z-jWjSF~vlVV}jVCy7TZo7Jrr#+H3pwVn49uhWb7RjRm7kUSl=ONh{~3MO67#v3up% zN4j5Hi_s+Uw=b6$U*0x|q^5()cZ$n%`_@9ten4xyyoxg4Y*vjI{Ox^-?&&N_0u2DX z#0LN{z*o4~*c&oiJ6Y))*_&CL{2`~~q)F>7Zmd9{_>#-pm`! zv*sm>IBvaJXYyqTcOGChu&$h?4ihe!#Y#dsF|4t(^Zd?p?9OWM$95qjRV&99q>1HW z!#q@BkXjm5GGpP`demjf!~p_=I;3RZ#EhF**PY|#a!^!iFt(#_1OCE?7t}ej#PaD0 z@ovzcf>ncs>}2gm*kbZ8c*kf4rm*_qEm<=FHXA4-AI7S25wf{&qf4`G>9ks`#HG1c zXbg}E{aj%hMV5)W1@KrQG0`~R>A*#YPB^5}JR2$jYE+RYDljG7W=SKOVj`h&94Xvn zry2+bZDPBu^ZM*_Mqx5`g1;u2_0h&3GV4Mj-hGJCrL{$&($VwVsn$n<4D(GEa5|Gv zpM^er^$N4^lQ9Chw?6IS3@vvU-9yQePBU@Bjq(Rg(kW{Vj#cQaQc58W%{6M5{5ys) zq|jt`btppgg#Pdl?6IS1U+4U^Gz4ygZft4cUakFOJCFm1%@4K+Et_x^G%!WUAU<7&e z*!#vXl#R2EiWE{=DM4i(WCY$_SP@*iWMJP#2Cj>FED$XcXbYrw6mvd;$SBu#M|A0v zOXAY{Cc9&e2$_N}B&^mmmV5qSvm}_(SxakfgvR-em2!3J{Ss~F;n=pd7 zIem94j`Q+%-_q{(GZK;jx5@s~d4Qvn~v@3_*ye!RL(6#_7E>UcEQgjQ4B! zQ~`~%U&cOecz|sA8C*u*(Hehdp<-Z3gPoa~L*DNpYV_Sh8Cp7^nSu3qVNTZpJ3|DW zec?ROAP>wE`=0qWNIW|mCsHh9xg`&nwf3gQayayAm+!acqzwv9aT{z$3abEsKZZts zniB^{H%lXjKW&NjXw=GpQ#;(i^V<br$b@bL? z_M!E*c&&u|?lVc7j^QM|Mm+6slnZR;@rej~lzQxLQa>Lv6Y&bqO2|;?cZ5MTxhR)1 zv&PGA`R5xOZ(FDOZ)I#6VuYm3K&GwjbT?&2;OS}Nc^Z?%9fIam+B3I7ub)ux+pblmebw-&PVebuX=z53*}38X?nGa}<+tVYsx^A5p{-6ccdz zbwhW1lbs^0(Fuc3^RKl-lY4ze2mN&KzoHHFES5Mr*wKQf@h!8Q=BNb=MW9bjZ83#7 zNnl=E2B@v>7q_4xx;RQVY-@I{wo|QyMAIN!nD2di4nSF(3qV<)3!oga(xDl}Bo^Gc zJ7Wbn5ky|)0l23eAU7oB5k64}Pyix(F(Sfrv)#-%nOck_UjxR>GrAj}$=z(d3+A#s@pa zSw_IX=|}9*g;+64Np79D9eye$T{-9^7EJr$FWIBaB;ruuzU1>nT+Hehzo^EUi`9bd z&T+#~^WxBtwyoeatt#H_lAHpFwUXL(-g8C7=$&ucY23^w07B$c)y1Gb3LqQkW0d%? zl7773gTyHCp#z_oK*E}2E9Ff>nn~rtC?<;`<#8EhW?vOdLLSKG!c3)#9hKLI)eIR1 zbD0o9-3l$M_x0$%13IS_Ch=@yegbtzFxiTYOT1%3s!9{j@mxl+xM_UiEpz8K8gz0* z*Z0??2>7xt{h4Q*SK?CH=bCdusBsCOIl8*^9I|m4zr4L$U^CA6wYEpYn8p3wsJTXM zQ$_PZMx14SLH(0gl+qKU`4U#!;i1YD~PXy@>{{WpW=r8UkdPmG%NzVBlWl5O86J;bn@8-J z-@`;a!1Wd~AS%k;TPhFcqcdDIk4Yl)U^s_#R@(|VwRsyC z;|g);iUA}EWk(PTghuN1hei_p4F2v5jU@H<*^3`m?RoT%4k2+p2)zqq&~&`*tk?c1W=5xs{Ryb1%ng%ef)r3Z5mo-z!`=nEtbK6;XSrB+lGW> z#q208x(X?dL(_g{x!|yb%pQZZDSAN=fBqZYSnd(Is9`tk^zr#&xPmrn4^670nKrVz zCqJuWnLr|adDGakmrlZ))+>Vp+PKF}>EZQAHoJt#gI?m2uA_s_gQK2JWNsTY2<2}3 zGzfKQ@{zohz?dzg5;8)^#c^JO8r=1FN!X{P`Xxax$vl6`TugPAC^mL~P4d$=v z|Iq~d)ykm%Yh4k^z{_eqt%TS)Swz@Eez~MQv><*gC}Yeh^=VVvNcmCPtQZ{>P$oM?Hs_SnA_R8YsZJz#s{?H|yV223 z5!nLII>^_sOOfr0w#sm=;DwM~M2&^f=o;vW3H%;n;K#V~Z;7ti)oqkv;I(&6NeLIw zn?^9~m4giSam(@+(X|$Z@FizC_#HpM zY%O4@w$d=2)Ms<7?m%v93}g5$SVLhnoHXQjQI>vDS*FGa@=VH4> zMS|G|%dZjU&l{HF;KKjAY^}N(F{g2eMZ|4+4kpdRJn)5!e^6K{ZCB-U{uj@n)PH6E zS;+CfGQoxXM-Ai~B=9#tsh2Rc#WX9zhs3e=Ix!#@@wNdZjjCg8*_;Y(ukgd2Q{`=K zbx6&&%cx9UyY!G(6$JH6REG#P`0q1*1XG~jHPKH7OSErEx9>>RC48g1Nu%D{{HR1c zAzgoQsn{BPOeedL(7@56ryh}QbraU`hQ(-Bt6n{Vi;30W%LE9dw zf~0ManU{aq-jtMVAk#a&Sk$mB`zAbQgia&a3gIHvwGBH84({RraclT8!SyNKG@*&^ z!+3}LW3d@g2S$Muw#nfkwdnQzU108L46^uPGPAfaz4+4G7H<3;9&>khw534IIL;^8 zNlxN{fm1O}B1bL4WY5XXjxF&LC@xAa6b2LgTE0%DkeihN>yJ>b{hMDO4;i#M zSK8DfwU!JmGOg(nM2oU>5flaWb8@vxb~`8ZJCt3j3Bt^B)~`UlP+R+~r%;?h43WQ- zsvH7cP$Fr|H0Nqv9HA`>G}gB^X#Qd>Rr%PR%fAUwy~nOB_8qja`tW$m_Qgm(m^YR2 zq|n%rn&Cof^bEPqJz&`VQ;r*M}Bd4~MmK?gT}$v$j&of>*VLiIu(^ zTh(mb;UzBQuu)JHN~99`0r1}A4T1^!GYY4pQG`Ik;@3qt>X!8g$2H!2TH@uSWYPQQ z(^QYyO{1+!1tpI*$fQFr=#m*yCc5=>;|$U$PF%f)HcjQ{Li}6JTUcKWBT>(L)xt}N z1Q=^VZBj#{Xo!(Jjkr*fp9rJ-A!wr`jrClxD|Ejl5~2)rb&K>4z5-974nw>>wQ`nv z4HSr$UT_K};O`P)l$2lAech>qL7_bytsq)i)3o8%1YHJt9aEWJ1(CXO4 z;_k=ZEaPoI2@}y-nH)z&)zvt%5?h)bbQayfEaL@rHyO`oS1>XX9iI?cemGp4oJ_1k zffe`A#OK4k*tO;{a(u4}|E)0m)dLqCYfy*;8@=F~+hvfh_vPL?{0uK1SJWW%3P0K< zy>1?ohM4?;@>LpRuvU6G4cgPedYcZlXv2b2)-k&Gt&BN*=*~C zrgA^7uU-r6#ZZhzbYnntn-Xx9$+%h&m7Ntezu=o`wX)6RtyW}K{DFMRg|#B!USCe< z$-Z;oWMt57`64CZs9rx~MXtO~y+^Bqa_pN`T9w}(vpIBpEfVdl4B>Yjv~+F>V;f48 zqoKegOVyz&?WVF2SA@c}Xa6_HuRsQZcFGy*CF}Vb(?zpZBd>fhzg;VOlw6b2ZCSHP zp5#^q)$Xr>3>~S3%dQw3F?|b%M-xk}_s0f5oh`+n;VTeV$34 zUn1vlJztiuKivZPW(~xoTzo9->g!vW4vRCgl?8;qxjS+n=VwGwcQhYn%6tN~Ki|u* zKb_*JonW@U@H^Xk`4mK3#_dAPbaOuTysp|V>Y}5X{ibM4-YO&Lq~)Qe$qMo|sq#Xe zW}&D^Nrkc;Y;}C zlVuuBoAQ;TT$|h~^V1?F=Qb*3&Y_KNue+7>Q&v~)ucp$uM$+qX>`m5jb)g4+%hxet zyDTj}EN>E0r$$G72Z%;e{e}2d!gLR>e1-PEwX`H0tdOzva<%^e@BLm@-|A7;)UpGE zD#M?`ny3(44;O#m&&086-b2tq)nVgvt7`+gECG5yRRg^rX6xJUuTyoOs*T>EWh!mc zrCIUZY-ao@oZLO)m`%1&aGIsz5z+69IoAcs_q12cM3!Dgyq>#3_rU&^_-tn#d^FL{ z&+W%EEB_r;K|u6c*RbV@5l)T|U|se#4eP7BFrk`a45OFmMNQiJhH&X#z?{Gep5js4 zEp;!-s-|?E4^L>2a=ga5d&qgYn2$wMkfxmZ>Jh?-Zp53Kt-%-jj}Pn5!?(K62dU3b z_sc%_21!eNPL>Du!-$Ukhfc$bbNN%YN0a>9pD8jIG^RafgsDD>njM=jH@mPB&yT~w zBIWb0ViHj0ICZ(`wO%3~PoyOCIl^v5qPh{AyW}-tmqi4XbS86c$10WhO;fkg>Xt}k zM3cwZM0shK&a?&yNPHG9AU%0`bJb3gN5mi#IHD8>ifzU*^ul z2Q&;=S@B!fY*FS$JrdGvdE?OYBJuCb5s&G zFgLn@X>fjT*-(~sF9lsD+c!3?GiLSX&TJZ+=vc7h;jD1jPhTtBO%flt?5EgIFfk%q z34{4Y#gyanqlHCriU8pZj5hb6pfm4Y&ZQyF6{P$r};Y=^au;X zqcV-#;JIwGH-e-b@|hs1-n5^6B+% z#v6Zw`y4n@Ng?{Bx`{_IJnb2q4YKETNOHT@QLwZOiMpKYWS-qT-emGHzeTbIC^SI| z6Nlp5z7y-Bd%?e^fYD|{y&un9r)3_Nak+#vKr#T2(5IupShTdPc%|7>txp=yy0~I8p1-k{?K(N94BQ29rd8sr7m$cHn^kEVF7Dl)2 zw2V@22kVe2rO+4x!uv8|=tNrV%a{jmULFZ8aRN%ko;*?t7ugyQPVc)dN1l;9mL=ai zAygjX#>UsZ6PN5`2;%qeUy8gnp~e=6Z7XiXPI#N*8k|5A%{?|nRnTZ<}c zjMw|Uwg*YhpLWk9l!a6(+d*SLux=%&E}o7tzDLAjfz1Rvih}Nx<=qT~U1-7#D_c-S zin}NkVga1@;?^-S%RU@D-zVHSWkE4THvZ(r-H95KS8dx9HN9?2`Wl}cCy~&JIgTnw zoZZ9nKg8`m*^Y8t9BUcAk92I498nY0pCMO)Fu+)^Ny*Es=_IlpJ>mH73f^%sPlyec zQX(I!(_X5=E9l5TaEKcGLYR_#Yr_%Fj-`e+hxDEIq$pXaXdWKTM^z%tj0CI=ScxQ!$h5-bCdD8wty(jZy+2 zGH+CB0nedEy_4$I;y38h*Jr6Z`B}O8QaqDm*y_AMN^$)XwAAzkLCDwWk3kcmbx2Z4+$)f`-TQdS5WKMmQjaszRB+y*4>IEuI*2=2~zwr_1RrO<;@=!-b$+X^1t zCoS{0X#nDH8W6tBtB6ZJJ_tdnZs{l_Q^pxTSc$%S49*!qIV{|Ve9im8QCyAMNaC0t zlIUZ3#Xi++ldf8hoZ5!nOR;_*N`_j5J;wAs<3d!6&F8ao#Kc}_SMDGJ%3|4g&W!ob z&s?Z6nVIc%V=*T|y@QyjNK7Ac>e7qwv}3Mx`REI1g5Wwn#}s8SaN>^>hUjTh>bDbw zoK;Fddx+#%@1HaOR`syK?%!p>X2%7rd~^UjgrSYWpG)k_1~&G8ik>tF8iFPZ0KVk^ z?ZY#6Qm%^yytpar8I*sk+3X8H%89|DC8HKMJb!bf%6%{&RJCXN*P*tH~<-oO<)wbb~N68r9im(ieAi@gnPGpBTb`pGXKA5q{ z`60JRst-8@&W)LcR_<8Pq(ty%d)ld|#PayC(|^Nz)~D}4AfwRoGw|aH)cjcFLBUG{ z15CJI#!7!{`vN9DE3MZKYa8>ZBmTx*Se1uD`T!qUb<&`+&_(4&PkUZLVE=ulU?0il z-n{k9`(kHR!uJ`7a*YtXba6KLNn6zp&CP!5T(=fFQfR2MYYlpFTkW@u=6dwYdxMx5 z^1MaulBnCKv!swDai>ANDr<02@?m)9sX!rClaEUQ)H-3B$>0 zdn|&+su0{#Tx^eI8Q772D<&O7qX+shypdy}c=Isp#7P54C4pG_9)3Z)@3;+9;f5qw zLxpKnOQrv9@FSWPS{sFDD=lm;CcuRD1u-qc8ayWYf*>HW?6xbGCY3JMGaN^^c^YkK zJ?6P{u}U?)sT#)~zGy{h*7F1p&O}IIk~l5|;S=!6#}CgsOMN-Vo$oRO*UuA|gig0K z3C62@u=Qij-Id=D67XN(KZk7>i+zANuy&8Y+Qs}?yMG08{jYrgd1}+kl?eh!@;sV3U6y51g8P?db;{3P0#FMMg{68Q8!SAeEY~So)UOUbLy;OJb ztczQ=-{-J7ZSR1~J-{l3I%BijqO{90$O*tn<*cEYCh)+ab|e!)4^7f(aD^1}SquNv zSuB?XGSW7+1aIfLG+nobkv$2=Veycwq#v2}S%x6O5mg*MGJ9JSm~GR_`D#22`;UF6`A6mMgk76Nn>ppV`js)daz;p03!7H+OAHi@&sucy2<|!Bs$MUl9Hm-l zOpMI!rM0|J$S|yFMDY{EHfepHx?}sTmK_Co+`GUzG+;dwgSGrmETXQxk)^{w5s6HH z{P@2EgTJI5K3*9Ljst_;c-mO&G_^@vc|U|+C{63gCxz04FD@x#Fsx>7w%)c|K<~Iu z6Y~6^(A*jzs{OjU&@}6-`FmU<BO2h0^AfSJ;?a;UqPX5o==BCn_j>WyP=qFn>uH}=@Kp0ZEt*#1EAs!F z3jPd~`(G9OW7`1XhENHMB4}L(jUF#15!3?sk41QcOOs>cWHOR|`LdIBL9-j-b z`CZfSKtPi(tBfOup(z5QP$k8%0h0>AZPShVW#;-UHOu1@8Fb{8n2+;JZC^0QRHTAm zWvXFQRryL%dRdHGcj-0e_*ZJd4s}Z5T^7YT`8bQTmK{ZmJtLdy$~f&Ke;00toL$BA z)}Ll^4HEp$1d-eFb>g&3Xp?Z)pkS(qH&q-9N{5AC^{6;GYgw%QasJK!ZwnwG8NsfH z|B6iBuzkR;1X}`Da5N?6Pc8lHR8tr{Gd8kz)Kzk`HFD7Y<2m2nBI*s14-Mej4}q)yN66zp$4JKCOvW}gj@CAge+4c5 z+7P|kyp>uoz6Xr|cSCBj|Hd0x8~(R&C7A)cE->5^3`hH?Z17of-rsOjqmPD0_J77h z|5~`Z-m|bA*wu7J{VO`S@TbcEH|Q&+p=lc!0Du<{0KooN+0fvi;y;7698Ha^jF|uY z{A~q}MVTQn)gb^Si?F}6zM$oA3WuMZTff%--;wb@S79F;@^^9azY_dAko;$Y`Ea=4T1~ZkY8e m*S{anKXbXi{XN$|59{~RFkqVq0N{YXw!t^|Cn2zP0sMbPR_a>- literal 162098 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

n=Lu4i4Y8!dWCdla%rlptpzJT%wRt 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�_5T7M;ISHPUvc*U+B3I=w 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

Ix{d&S*hVrNzYU0@<~4N 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 diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index 5684b3169f334c64a102f2a9ae0d188dd6fa6079..98fe9004811e45da616823bbe08435181330ca26 100644 GIT binary patch literal 155751 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

0L7xmYuc2!&0~d* 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 literal 164707 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 tCE&{qkUuFl2nhPGM*nJc;CI5G Date: Sat, 10 May 2025 11:14:42 +0800 Subject: [PATCH 29/29] ci:release update --- .github/workflows/release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bab05ba..d09fa5f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,19 +25,19 @@ jobs: skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ - - name: Download RockyLinux x86_64 build + - name: Download debian build uses: dawidd6/action-download-artifact@v6 with: - workflow: RockyX86_64_build.yml + workflow: debian_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ - - name: Download RockyLinux Arm64 build + - name: Download RockyLinux build uses: dawidd6/action-download-artifact@v6 with: - workflow: RockyArm64_build.yml + workflow: Rocky_build.yml workflow_conclusion: success check_artifacts: false skip_unpack: true -- Gitee