diff --git a/.github/workflows/Alma_build.yml b/.github/workflows/Alma_build.yml index 2d25911..d8f12d2 100644 --- a/.github/workflows/Alma_build.yml +++ b/.github/workflows/Alma_build.yml @@ -44,16 +44,16 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine - name: sub module checkout (opensource) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_DependLibrary @@ -92,7 +92,7 @@ jobs: ./XEngine_XStorageApp -t - name: Upload folder as artifact with Alma Linux - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-AlmaLinux_${{ matrix.version }}_${{ matrix.artifact }} path: XEngine_Release/ diff --git a/.github/workflows/Centos_build.yml b/.github/workflows/Centos_build.yml index af6c670..de3c462 100644 --- a/.github/workflows/Centos_build.yml +++ b/.github/workflows/Centos_build.yml @@ -3,7 +3,7 @@ name: centos build workflows on: push: branches: - - 'develop' + - 'develop1' paths: - 'XEngine_Source/**' - 'XEngine_Release/**' @@ -48,16 +48,16 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine - name: sub module checkout (opensource) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_DependLibrary @@ -79,7 +79,6 @@ jobs: chmod 777 * ./XEngine_LINEnv.sh -i 3 - - name: make run: | cd XEngine_Source @@ -96,7 +95,7 @@ jobs: ./XEngine_XStorageApp -t - name: Upload folder as artifact with CentOS - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-CentOS_${{ matrix.version }}_${{ matrix.artifact }} path: XEngine_Release/ diff --git a/.github/workflows/Rocky_build.yml b/.github/workflows/Rocky_build.yml index 35e1320..1d9b000 100644 --- a/.github/workflows/Rocky_build.yml +++ b/.github/workflows/Rocky_build.yml @@ -44,18 +44,18 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine - name: sub module checkout (opensource) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_DependLibrary @@ -94,7 +94,7 @@ jobs: ./XEngine_XStorageApp -t - name: Upload folder as artifact with RockyLinux - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-RockyLinux_${{ matrix.version }}_${{ matrix.artifact }} path: XEngine_Release/ diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 2c66e5d..6e5e7d9 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -25,12 +25,12 @@ jobs: - language: c-cpp steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine diff --git a/.github/workflows/cppcheck.yml b/.github/workflows/cppcheck.yml index 279b03f..c6884d5 100644 --- a/.github/workflows/cppcheck.yml +++ b/.github/workflows/cppcheck.yml @@ -15,7 +15,7 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' @@ -29,7 +29,7 @@ jobs: continue-on-error: true - name: Upload Cppcheck Results - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: cppcheck_results path: static_analysis/log.xml \ No newline at end of file diff --git a/.github/workflows/debian_build.yml b/.github/workflows/debian_build.yml index 47861b5..dd26d82 100644 --- a/.github/workflows/debian_build.yml +++ b/.github/workflows/debian_build.yml @@ -36,18 +36,18 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine - name: sub module checkout (opensource) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_DependLibrary @@ -86,7 +86,7 @@ jobs: ./XEngine_XStorageApp -t - name: Upload folder as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-Debian_${{ matrix.version }}_x86-64 path: XEngine_Release/ diff --git a/.github/workflows/fedora_build.yml b/.github/workflows/fedora_build.yml index 8348f45..4e239df 100644 --- a/.github/workflows/fedora_build.yml +++ b/.github/workflows/fedora_build.yml @@ -34,16 +34,16 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine - name: sub module checkout (opensource) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/XEngine_OPenSource path: XEngine_Source/XEngine_DependLibrary @@ -82,7 +82,7 @@ jobs: ./XEngine_XStorageApp -t - name: Upload folder as artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-Fedora_${{ matrix.fedora-version }}_${{ matrix.artifact }} path: XEngine_Release/ diff --git a/.github/workflows/macbuild.yml b/.github/workflows/macbuild.yml index b3e59ec..d44eba6 100644 --- a/.github/workflows/macbuild.yml +++ b/.github/workflows/macbuild.yml @@ -17,19 +17,21 @@ jobs: strategy: matrix: include: - - os: macos-13 - - os: macos-14 + - os: macos-15 + - os: macos-15-intel + - os: macos-26 + - os: macos-26-intel runs-on: ${{ matrix.os }} steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' # 检出依赖的xengine仓库到指定的xengine目录 - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine @@ -46,13 +48,13 @@ jobs: run: echo "TERM=xterm" >> $GITHUB_ENV - name: Set up Dependency x86_64 Environment - if: matrix.os == 'macos-13' + if: matrix.os == 'macos-15-intel' || matrix.os == 'macos-26-intel' 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-15' || matrix.os == 'macos-26' run: | latest_tag=$(git ls-remote --tags --sort="v:refname" https://github.com/libxengine/libxengine.git | awk '{print $2}' | sed 's/refs\/tags\///' | tail -n 1) wget https://github.com/libxengine/libxengine/releases/download/$latest_tag/XEngine_Mac_Arm64.zip @@ -80,15 +82,15 @@ jobs: ./XEngine_XStorageApp -t - name: Upload folder as artifact with mac x64 - if: matrix.os == 'macos-13' - uses: actions/upload-artifact@v4 + if: matrix.os == 'macos-15-intel' + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-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 + if: matrix.os == 'macos-15' + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-Mac_Arm64 path: XEngine_Release/ diff --git a/.github/workflows/msbuild.yml b/.github/workflows/msbuild.yml index b3c60b9..0437b4e 100644 --- a/.github/workflows/msbuild.yml +++ b/.github/workflows/msbuild.yml @@ -24,12 +24,12 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine @@ -76,7 +76,7 @@ jobs: shell: pwsh - name: Setup MSBuild - uses: microsoft/setup-msbuild@v2 + uses: microsoft/setup-msbuild@v3 - name: Build Solution run: msbuild XEngine_Source/XEngine_StorageApp.sln /p:Configuration=${{ matrix.configuration }} /p:Platform=${{ matrix.platform }} @@ -113,21 +113,21 @@ jobs: - name: Upload folder as artifact with x86 if: matrix.configuration == 'Release' && matrix.platform == 'x86' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: XEngine_StorageApp-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 + uses: actions/upload-artifact@v7 with: name: XEngine_StorageApp-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 + uses: actions/upload-artifact@v7 with: name: XEngine_StorageApp-Windows_Arm64 path: XEngine_Release/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 747b314..f48abc1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,12 +12,12 @@ jobs: steps: # 检出代码并包含标签 - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 - name: Download ubuntu build - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v20 with: workflow: ubuntu_build.yml workflow_conclusion: success @@ -26,7 +26,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download debian build - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v20 with: workflow: debian_build.yml workflow_conclusion: success @@ -35,7 +35,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download fedora build - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v20 with: workflow: fedora_build.yml workflow_conclusion: success @@ -44,7 +44,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download Rocky build - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v20 with: workflow: Rocky_build.yml workflow_conclusion: success @@ -52,17 +52,8 @@ jobs: skip_unpack: true if_no_artifact_found: fail path: ./XRelease/ - - name: Download CentOS build - uses: dawidd6/action-download-artifact@v6 - with: - workflow: Centos_build.yml - workflow_conclusion: success - check_artifacts: false - skip_unpack: true - if_no_artifact_found: fail - path: ./XRelease/ - name: Download Alma build - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v20 with: workflow: Alma_build.yml workflow_conclusion: success @@ -71,7 +62,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download macbuild - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v20 with: workflow: macbuild.yml workflow_conclusion: success @@ -80,7 +71,7 @@ jobs: if_no_artifact_found: fail path: ./XRelease/ - name: Download msbuild - uses: dawidd6/action-download-artifact@v6 + uses: dawidd6/action-download-artifact@v20 with: workflow: msbuild.yml workflow_conclusion: success diff --git a/.github/workflows/ubuntu_build.yml b/.github/workflows/ubuntu_build.yml index 2ece2f2..aab5f1e 100644 --- a/.github/workflows/ubuntu_build.yml +++ b/.github/workflows/ubuntu_build.yml @@ -27,12 +27,12 @@ jobs: steps: - name: Checkout main repository code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: 'develop' - name: Checkout dependency repository (xengine) - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: repository: libxengine/libxengine path: libxengine @@ -100,28 +100,28 @@ jobs: - name: Upload folder as artifact with ubuntu22.04 if: matrix.os == 'ubuntu-22.04' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-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 + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-Ubuntu_24.04_x86_64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with ubuntu22.04-arm if: matrix.os == 'ubuntu-22.04-arm' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-Ubuntu_22.04_Arm64 path: XEngine_Release/ retention-days: 1 - name: Upload folder as artifact with ubuntu24.04-arm if: matrix.os == 'ubuntu-24.04-arm' - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: XEngine_XStorageApp-Ubuntu_24.04_Arm64 path: XEngine_Release/ diff --git a/CHANGELOG b/CHANGELOG index 33f30ae..ae6e359 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,27 @@ +XEngine_Storage V3.22.0.1001 + +增加:当启动的时候打印占用硬盘空间信息 +增加:支持HTTP头获取文件大小 +ci:更新了macos系统版本 +ci:更新了编译库 +更新:依赖库 +修改:启动参数不在区分大小写 +修改:必须设置发送消息类型 +修改:http验证接口统一 +修正:处理没有找到api名称的问题 +修正:获取文件大小处理失败 + +added:The spatial data information displayed when starting printing is more intuitive +added:get file size thought head method for http center +ci:update macos system version +ci:update last version +update:depend library +modify:start parameter and http request name does not case-sensitive +modify:must set type for http send message +modify:http restful api verification Unification +fixed:process not found api name +fixed:process failure when get file size +====================================================================================== XEngine_Storage V3.21.0.1001 added:get use and left size when start log diff --git a/XEngine_APPClient/APPClient_BTorrent/APPClient_BTorrent.cpp b/XEngine_APPClient/APPClient_BTorrent/APPClient_BTorrent.cpp index 1c7c65b..aa40bb1 100644 --- a/XEngine_APPClient/APPClient_BTorrent/APPClient_BTorrent.cpp +++ b/XEngine_APPClient/APPClient_BTorrent/APPClient_BTorrent.cpp @@ -22,9 +22,9 @@ int BTorrent_Parse(LPCXSTR lpszFile) { - XNETHANDLE xhToken; + XHANDLE xhToken = BTorrent_Parse_Init(lpszFile); - if (!BTorrent_Parse_Init(&xhToken, lpszFile)) + if (NULL == xhToken) { printf("BTorrent_Parse_Init:%lX\n", BTorrent_GetLastError()); return -1; @@ -110,14 +110,14 @@ int BTorrent_Parse(LPCXSTR lpszFile) } int BTorrent_Creator(LPCXSTR lpszFile) { - XNETHANDLE xhToken; #ifdef _MSC_BUILD LPCXSTR lpszFileDir = _X("D:\\321"); #else LPCXSTR lpszFileDir = _X("./321"); #endif - if (!BTorrent_Creator_Init(&xhToken, lpszFileDir)) + XHANDLE xhToken = BTorrent_Creator_Init(lpszFileDir); + if (NULL == xhToken) { printf("BTorrent_Creator_Init:%lX\n", BTorrent_GetLastError()); return -1; @@ -136,7 +136,6 @@ int BTorrent_Creator(LPCXSTR lpszFile) } int BTorrent_Download() { - XNETHANDLE xhToken; #ifdef _MSC_BUILD LPCXSTR lpszBTFile = _X("D:\\123.torrent"); LPCXSTR lpszFileDir = _X("D:\\321"); @@ -145,7 +144,8 @@ int BTorrent_Download() LPCXSTR lpszFileDir = _X("./321"); #endif - if (!BTorrent_DLoader_Create(&xhToken, lpszBTFile, lpszFileDir)) + XHANDLE xhToken = BTorrent_DLoader_Create(lpszBTFile, lpszFileDir); + if (NULL == xhToken) { printf("BTorrent_Creator_Init:%lX\n", BTorrent_GetLastError()); return -1; diff --git a/XEngine_APPClient/APPClient_Download/APPClient_Download.cpp b/XEngine_APPClient/APPClient_Download/APPClient_Download.cpp index 3a71a2c..d456a2a 100644 --- a/XEngine_APPClient/APPClient_Download/APPClient_Download.cpp +++ b/XEngine_APPClient/APPClient_Download/APPClient_Download.cpp @@ -26,7 +26,6 @@ #include #include #include -#include #include #include #include "../../XEngine_Source/XStorage_Protocol.h" @@ -34,7 +33,7 @@ using namespace std; //需要优先配置XEngine //WINDOWS使用VS2022 x86 或者 x64 debug 编译 -//linux macos::g++ -std=c++17 -Wall -g APPClient_Download.cpp -o APPClient_Download.exe -I ../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp -L ../../XEngine_Release -lXEngine_BaseLib -lXClient_APIHelp -lXEngine_SystemApi -ljsoncpp -Wl,-rpath=../../XEngine_Release +//linux macos::g++ -std=c++17 -Wall -g APPClient_Download.cpp -o APPClient_Download.exe -I ../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp -L ../../XEngine_Release -lXEngine_BaseLib -lXClient_APIHelp -lXEngine_SystemApi -ljsoncpp -Wl,-rpath=../../XEngine_Release typedef struct { @@ -136,7 +135,7 @@ void P2PFile_Create(list* pStl_ListFile, LPCXSTR lpszFile) { bComplete = FALSE; } - _xtprintf("DLToken:%p DLTotal:%lf DLNow:%lf DLStatus:%d\n", pSt_P2PFile[i].xhToken, st_TaskInfo.dlTotal, st_TaskInfo.dlNow, st_TaskInfo.en_DownStatus); + _xtprintf("DLToken:%p DLTotal:%lld DLNow:%lld DLStatus:%d\n", pSt_P2PFile[i].xhToken, st_TaskInfo.dlTotal, st_TaskInfo.dlNow, st_TaskInfo.en_DownStatus); } if (bComplete) { @@ -164,7 +163,7 @@ int main() int nBodyLen = 0; XCHAR *ptszMsgBody = NULL; //请求分布式存储文件所有位置 - LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/Api/Manage/Query"); + LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/api?function=manage¶m=query"); LPCXSTR lpszFile = _X("D:\\XEngine_Storage\\XEngine_APPClient\\Debug\\qq.exe"); Json::Value st_JsonRoot; diff --git a/XEngine_APPClient/APPClient_Download/APPClient_Download.vcxproj b/XEngine_APPClient/APPClient_Download/APPClient_Download.vcxproj index 12bf455..af9566e 100644 --- a/XEngine_APPClient/APPClient_Download/APPClient_Download.vcxproj +++ b/XEngine_APPClient/APPClient_Download/APPClient_Download.vcxproj @@ -72,7 +72,7 @@ true - $(XEngine_Include);../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) @@ -80,7 +80,7 @@ true - $(XEngine_Include);../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) diff --git a/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.cpp b/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.cpp index f1f57ea..a3dbbe5 100644 --- a/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.cpp +++ b/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.cpp @@ -30,13 +30,13 @@ using namespace std; //需要优先配置XEngine //WINDOWS使用VS2022 x86 或者 x64 debug 编译 //linux使用下面的命令编译 -//g++ -std=c++17 -Wall -g APPClient_RestApi.cpp -o APPClient_RestApi.exe -I ../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp -L ../../XEngine_Release -lXEngine_BaseLib -lXClient_APIHelp -ljsoncpp -Wl,-rpath=../../XEngine_Release +//g++ -std=c++17 -Wall -g APPClient_RestApi.cpp -o APPClient_RestApi.exe -I ../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp -L ../../XEngine_Release -lXEngine_BaseLib -lXClient_APIHelp -ljsoncpp -Wl,-rpath=../../XEngine_Release XCHAR tszBaseBuffer[MAX_PATH]; XCHAR tszHdrBuffer[MAX_PATH]; void API_Manage_Bucket() { - LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/Api/Manage/Bucket"); + LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/api?function=manage¶m=bucket"); int nLen = 0; int nCode = 0; XCHAR* ptszMsgBuffer = NULL; @@ -49,10 +49,24 @@ void API_Manage_Bucket() _xtprintf("API_Manage_Bucket:%d,%s\n", nCode, ptszMsgBuffer); BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer); } +void API_Manage_FileSize() +{ + LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/storagekey1/DekTec.zip"); + int nCode = 0; + XCLIENT_APIHTTP st_APIHttp = {}; + + st_APIHttp.bNOBody = true; + if (!APIClient_Http_Request(_X("HEAD"), lpszUrl, NULL, &nCode, NULL, NULL, NULL, tszHdrBuffer, &st_APIHttp)) + { + _xtprintf("API_Manage_FileSize:%lX\n", APIClient_GetLastError()); + return; + } + _xtprintf("API_Manage_FileSize:%d,%s\n", nCode, tszHdrBuffer); +} //查询 void API_Manage_Query() { - LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/Api/Manage/QueryFile"); + LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/api?function=manage¶m=query"); int nLen = 0; int nCode = 0; XCHAR* ptszMsgBuffer = NULL; @@ -73,7 +87,7 @@ void API_Manage_Query() //插入 void API_Manage_Insert() { - LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/Api/Manage/Insert"); + LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/api?function=manage¶m=insert"); int nLen = 0; int nCode = 0; XCHAR* ptszMsgBuffer = NULL; @@ -101,7 +115,7 @@ void API_Manage_Insert() //删除 void API_Manage_Delete() { - LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/Api/Manage/Delete"); + LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/api?function=manage¶m=delete"); int nLen = 0; int nCode = 0; XCHAR* ptszMsgBuffer = NULL; @@ -126,7 +140,7 @@ void API_Manage_Delete() //文件夹 void API_Manage_Dir() { - LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/Api/Manage/Dir"); + LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/api?function=manage¶m=dir"); int nLen = 0; int nCode = 0; XCHAR* ptszMsgBuffer = NULL; @@ -170,7 +184,7 @@ void API_Manage_Dir() //任务管理 void API_Manage_Task() { - LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/Api/Manage/Task"); + LPCXSTR lpszUrl = _X("http://127.0.0.1:5100/api?function=manage¶m=task"); int nLen = 0; int nCode = 0; XCHAR* ptszMsgBuffer = NULL; @@ -191,6 +205,7 @@ int main() #endif API_Manage_Bucket(); + API_Manage_FileSize(); API_Manage_Query(); API_Manage_Insert(); API_Manage_Delete(); diff --git a/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.vcxproj b/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.vcxproj index 7b14a93..f44b510 100644 --- a/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.vcxproj +++ b/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.vcxproj @@ -72,7 +72,7 @@ true - $(XEngine_Include);../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) @@ -80,7 +80,7 @@ true - $(XEngine_Include);../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) diff --git a/XEngine_APPClient/APPClient_UPDate/APPClient_UPFile/APPClient_UPFile.vcxproj b/XEngine_APPClient/APPClient_UPDate/APPClient_UPFile/APPClient_UPFile.vcxproj index 7487c20..4f49951 100644 --- a/XEngine_APPClient/APPClient_UPDate/APPClient_UPFile/APPClient_UPFile.vcxproj +++ b/XEngine_APPClient/APPClient_UPDate/APPClient_UPFile/APPClient_UPFile.vcxproj @@ -71,11 +71,11 @@ - $(XEngine_Include);../../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) - $(XEngine_Include);../../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) diff --git a/XEngine_APPClient/APPClient_UPDate/APPClient_UPFile/APPClient_UPHdr.h b/XEngine_APPClient/APPClient_UPDate/APPClient_UPFile/APPClient_UPHdr.h index 2401497..38ebb5c 100644 --- a/XEngine_APPClient/APPClient_UPDate/APPClient_UPFile/APPClient_UPHdr.h +++ b/XEngine_APPClient/APPClient_UPDate/APPClient_UPFile/APPClient_UPHdr.h @@ -26,7 +26,6 @@ using namespace std; #include #include #include -#include #include #include diff --git a/XEngine_APPClient/APPClient_UPDate/APPClient_UPMaker/APPClient_UPMaker.cpp b/XEngine_APPClient/APPClient_UPDate/APPClient_UPMaker/APPClient_UPMaker.cpp index 61c4b36..8b6f5dd 100644 --- a/XEngine_APPClient/APPClient_UPDate/APPClient_UPMaker/APPClient_UPMaker.cpp +++ b/XEngine_APPClient/APPClient_UPDate/APPClient_UPMaker/APPClient_UPMaker.cpp @@ -25,7 +25,6 @@ using namespace std; #include #include #include -#include #include #include #include @@ -103,10 +102,10 @@ bool HelpModule_Api_BuildVer(XCHAR* ptszLocalBuffer, XCHAR* ptszRemoteBuffer, in Json::StreamWriterBuilder st_JsonBuilder; //判断是否是自定义版本 XCHAR tszTimer[64]; - XENGINE_LIBTIMER st_Timer; + XENGINE_LIBTIME st_Timer; memset(tszTimer, '\0', sizeof(tszTimer)); - memset(&st_Timer, '\0', sizeof(XENGINE_LIBTIMER)); + memset(&st_Timer, '\0', sizeof(XENGINE_LIBTIME)); BaseLib_Time_GetSysTime(&st_Timer); _xstprintf(tszTimer, _X("%04d%02d%02d%02d%02d%02d"), st_Timer.wYear, st_Timer.wMonth, st_Timer.wDay, st_Timer.wHour, st_Timer.wMinute, st_Timer.wSecond); diff --git a/XEngine_APPClient/APPClient_UPDate/APPClient_UPMaker/APPClient_UPMaker.vcxproj b/XEngine_APPClient/APPClient_UPDate/APPClient_UPMaker/APPClient_UPMaker.vcxproj index 18745ed..8d867ef 100644 --- a/XEngine_APPClient/APPClient_UPDate/APPClient_UPMaker/APPClient_UPMaker.vcxproj +++ b/XEngine_APPClient/APPClient_UPDate/APPClient_UPMaker/APPClient_UPMaker.vcxproj @@ -71,11 +71,11 @@ - $(XEngine_Include);../../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) - $(XEngine_Include);../../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) diff --git a/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.cpp b/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.cpp index 26a3d29..34072a7 100644 --- a/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.cpp +++ b/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.cpp @@ -30,7 +30,7 @@ using namespace std; //需要优先配置XEngine //WINDOWS使用VS2022 x86 或者 x64 debug 编译 -//linux macos::g++ -std=c++17 -Wall -g APPClient_UPDownload.cpp -o APPClient_UPDownload.exe -I ../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp -L ../../XEngine_Release -lXEngine_BaseLib -lXEngine_Cryption -lXClient_APIHelp -ljsoncpp -Wl,-rpath=../../XEngine_Release +//linux macos::g++ -std=c++17 -Wall -g APPClient_UPDownload.cpp -o APPClient_UPDownload.exe -I ../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp -L ../../XEngine_Release -lXEngine_BaseLib -lXEngine_Cryption -lXClient_APIHelp -ljsoncpp -Wl,-rpath=../../XEngine_Release //上传文件 diff --git a/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.vcxproj b/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.vcxproj index 171a902..48174e2 100644 --- a/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.vcxproj +++ b/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.vcxproj @@ -72,7 +72,7 @@ true - $(XEngine_Include);../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib32);$(LibraryPath) @@ -80,7 +80,7 @@ true - $(XEngine_Include);../../XEngine_Source/XEngine_Depend/XEngine_Module/jsoncpp;$(IncludePath) + $(XEngine_Include);../../XEngine_Source/XEngine_DependLibrary/XEngine_Module/jsoncpp;$(IncludePath) $(XEngine_Lib64);$(LibraryPath) diff --git a/XEngine_APPClient/VSCopy_x64.bat b/XEngine_APPClient/VSCopy_x64.bat index 78e0725..7d97be4 100644 --- a/XEngine_APPClient/VSCopy_x64.bat +++ b/XEngine_APPClient/VSCopy_x64.bat @@ -1,4 +1,5 @@ copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./" copy /y "%XEngine_Lib64%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_OPenSsl.dll" "./" copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" diff --git a/XEngine_APPClient/VSCopy_x86.bat b/XEngine_APPClient/VSCopy_x86.bat index 768ce0e..9b56baf 100644 --- a/XEngine_APPClient/VSCopy_x86.bat +++ b/XEngine_APPClient/VSCopy_x86.bat @@ -1,4 +1,5 @@ copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_BaseSafe.dll" "./" copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_Cryption.dll" "./" copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index df3a378..add0948 100644 Binary files a/XEngine_Docment/Docment_en.docx and b/XEngine_Docment/Docment_en.docx differ diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index 24b551b..00f5b80 100644 Binary files a/XEngine_Docment/Docment_zh.docx and b/XEngine_Docment/Docment_zh.docx differ diff --git a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json index 71961f2..85c43b2 100644 --- a/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json +++ b/XEngine_Release/XEngine_Config/XEngine_VersionConfig.json @@ -1,5 +1,6 @@ { "XVer":[ + "3.22.0.1001 Build20260427", "3.21.0.1001 Build20250923", "3.20.0.1001 Build20250620", "3.19.0.1001 Build20250320", diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp b/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp index 508acad..ad7eb6a 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp @@ -526,4 +526,50 @@ bool CAPIHelp_Api::APIHelp_Api_WDToUrl(LPCXSTR lpszUrl, XCHAR* ptszUrl) xstring m_XUrl = "/api?filename=" + m_StrFile + "&storeagekey=" + m_StrBucket; _tcsxcpy(ptszUrl, m_XUrl.c_str()); return true; +} +/******************************************************************** +函数名称:APIHelp_Api_BSizeToStr +函数功能:大小转字符串函数 + 参数.一:nSize + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要转换大小 + 参数.二:ptszSizeStr + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出转换后的字符串 + 参数.三:nType + In/Out:In + 类型:整数型 + 可空:N + 意思:输入转换的类型 0-B 1-KB 2-MB 3-GB +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +bool CAPIHelp_Api::APIHelp_Api_BSizeToStr(__int64x nSize, XCHAR* ptszSizeStr, int nType) +{ + APIHelp_IsErrorOccur = false; + + const char* units[] = { "B", "KB", "MB", "GB" }; + if (0 == nType) + { + _xstprintf(ptszSizeStr, _X("%lld %s"), nSize, units[nType]); + } + else if (1 == nType) + { + _xstprintf(ptszSizeStr, _X("%lld %s"), nSize / 1024, units[nType]); + } + else if (2 == nType) + { + _xstprintf(ptszSizeStr, _X("%lld %s"), nSize / 1024 / 1024, units[nType]); + } + else if (3 == nType) + { + _xstprintf(ptszSizeStr, _X("%lld %s"), nSize / 1024 / 1024 / 1024, units[nType]); + } + return true; } \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.h b/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.h index 795ded5..71f17ea 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.h +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.h @@ -27,6 +27,7 @@ class CAPIHelp_Api bool APIHelp_Api_UrlStr(XCHAR* ptszKeyStr, LPCXSTR lpszUrl); bool APIHelp_Api_GetLastName(XCHAR* ptszLastName, LPCXSTR lpszPathStr); bool APIHelp_Api_WDToUrl(LPCXSTR lpszUrl, XCHAR* ptszUrl); + bool APIHelp_Api_BSizeToStr(__int64x nSize, XCHAR* ptszSizeStr, int nType); protected: private: }; \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h b/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h index 5c3e755..ea12c6c 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h @@ -417,4 +417,28 @@ extern "C" bool APIHelp_Api_GetLastName(XCHAR* ptszLastName, LPCXSTR lpszPathStr 意思:是否成功 备注: *********************************************************************/ -extern "C" bool APIHelp_Api_WDToUrl(LPCXSTR lpszUrl, XCHAR* ptszUrl); \ No newline at end of file +extern "C" bool APIHelp_Api_WDToUrl(LPCXSTR lpszUrl, XCHAR* ptszUrl); +/******************************************************************** +函数名称:APIHelp_Api_BSizeToStr +函数功能:大小转字符串函数 + 参数.一:nSize + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要转换大小 + 参数.二:ptszSizeStr + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出转换后的字符串 + 参数.三:nType + In/Out:In + 类型:整数型 + 可空:N + 意思:输入转换的类型 0-B 1-KB 2-MB 3-GB +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" bool APIHelp_Api_BSizeToStr(__int64x nSize, XCHAR* ptszSizeStr, int nType); \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def b/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def index b764404..7d46266 100644 --- a/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def +++ b/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def @@ -20,4 +20,5 @@ EXPORTS APIHelp_Api_GetDIRSize APIHelp_Api_UrlStr APIHelp_Api_GetLastName - APIHelp_Api_WDToUrl \ No newline at end of file + APIHelp_Api_WDToUrl + APIHelp_Api_BSizeToStr \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/pch.cpp b/XEngine_Source/StorageModule_APIHelp/pch.cpp index 032d7d3..3e3fc05 100644 --- a/XEngine_Source/StorageModule_APIHelp/pch.cpp +++ b/XEngine_Source/StorageModule_APIHelp/pch.cpp @@ -101,4 +101,8 @@ extern "C" bool APIHelp_Api_GetLastName(XCHAR* ptszLastName, LPCXSTR lpszPathStr extern "C" bool APIHelp_Api_WDToUrl(LPCXSTR lpszUrl, XCHAR* ptszUrl) { return m_APIHelp.APIHelp_Api_WDToUrl(lpszUrl, ptszUrl); +} +extern "C" bool APIHelp_Api_BSizeToStr(__int64x nSize, XCHAR* ptszSizeStr, int nType) +{ + return m_APIHelp.APIHelp_Api_BSizeToStr(nSize, ptszSizeStr, nType); } \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/pch.h b/XEngine_Source/StorageModule_APIHelp/pch.h index 802a2c5..212e0e7 100644 --- a/XEngine_Source/StorageModule_APIHelp/pch.h +++ b/XEngine_Source/StorageModule_APIHelp/pch.h @@ -35,7 +35,6 @@ using namespace std; #include #include #include -#include #include #include #include diff --git a/XEngine_Source/StorageModule_Database/pch.h b/XEngine_Source/StorageModule_Database/pch.h index d0a850e..188a06c 100644 --- a/XEngine_Source/StorageModule_Database/pch.h +++ b/XEngine_Source/StorageModule_Database/pch.h @@ -43,7 +43,6 @@ using namespace std; #include #include #include -#include #include #include #include "../XStorage_BuildSwitch.h" diff --git a/XEngine_Source/VSCopy_Arm64.bat b/XEngine_Source/VSCopy_Arm64.bat index 2220d92..450a7fb 100644 --- a/XEngine_Source/VSCopy_Arm64.bat +++ b/XEngine_Source/VSCopy_Arm64.bat @@ -7,7 +7,10 @@ copy /y "%XEngine_LibArm64%\XEngine_Core\XEngine_Cryption.dll" "./" copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_LibArm64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" + copy /y "%XEngine_LibArm64%\XEngine_Client\XClient_APIHelp.dll" "./" +copy /y "%XEngine_LibArm64%\XEngine_Client\XClient_Socket.dll" "./" + copy /y "%XEngine_LibArm64%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" copy /y "%XEngine_LibArm64%\XEngine_NetHelp\NetHelp_XSocket.dll" "./" diff --git a/XEngine_Source/VSCopy_Debug.bat b/XEngine_Source/VSCopy_Debug.bat index 8665b61..654185d 100644 --- a/XEngine_Source/VSCopy_Debug.bat +++ b/XEngine_Source/VSCopy_Debug.bat @@ -7,7 +7,10 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Cryption.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemApi.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemConfig.dll" "./" + copy /y "D:\XEngine\XEngine_SourceCode\Debug\XClient_APIHelp.dll" "./" +copy /y "D:\XEngine\XEngine_SourceCode\Debug\XClient_Socket.dll" "./" + copy /y "D:\XEngine\XEngine_SourceCode\Debug\NetHelp_APIAddr.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\NetHelp_XSocket.dll" "./" diff --git a/XEngine_Source/VSCopy_x64.bat b/XEngine_Source/VSCopy_x64.bat index 673e575..008422e 100644 --- a/XEngine_Source/VSCopy_x64.bat +++ b/XEngine_Source/VSCopy_x64.bat @@ -7,7 +7,10 @@ copy /y "%XEngine_Lib64%\XEngine_Core\XEngine_Cryption.dll" "./" copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_Lib64%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" + copy /y "%XEngine_Lib64%\XEngine_Client\XClient_APIHelp.dll" "./" +copy /y "%XEngine_Lib64%\XEngine_Client\XClient_Socket.dll" "./" + copy /y "%XEngine_Lib64%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" copy /y "%XEngine_Lib64%\XEngine_NetHelp\NetHelp_XSocket.dll" "./" diff --git a/XEngine_Source/VSCopy_x86.bat b/XEngine_Source/VSCopy_x86.bat index 1162909..933255c 100644 --- a/XEngine_Source/VSCopy_x86.bat +++ b/XEngine_Source/VSCopy_x86.bat @@ -7,7 +7,10 @@ copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_Cryption.dll" "./" copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./" + copy /y "%XEngine_Lib32%\XEngine_Client\XClient_APIHelp.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_Client\XClient_Socket.dll" "./" + copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./" copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_XSocket.dll" "./" diff --git a/XEngine_Source/XEngine_DependLibrary b/XEngine_Source/XEngine_DependLibrary index 5ec8724..fa19ea8 160000 --- a/XEngine_Source/XEngine_DependLibrary +++ b/XEngine_Source/XEngine_DependLibrary @@ -1 +1 @@ -Subproject commit 5ec8724772e4eb6e62733c9582aa10f1fe54c82f +Subproject commit fa19ea8880dfa312221b5d17ece40c3bbc0f00cf diff --git a/XEngine_Source/XEngine_StorageApp.sln b/XEngine_Source/XEngine_StorageApp.sln index 4f6e796..0cac937 100644 --- a/XEngine_Source/XEngine_StorageApp.sln +++ b/XEngine_Source/XEngine_StorageApp.sln @@ -73,6 +73,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_InfoReport", "XEngi EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_Verification", "XEngine_DependLibrary\XEngine_Module\XEngine_Verification\XEngine_Verification.vcxproj", "{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}" + ProjectSection(ProjectDependencies) = postProject + {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB} + EndProjectSection EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/XEngine_Source/XEngine_StorageApp/Makefile b/XEngine_Source/XEngine_StorageApp/Makefile index 710447a..cef0ef7 100644 --- a/XEngine_Source/XEngine_StorageApp/Makefile +++ b/XEngine_Source/XEngine_StorageApp/Makefile @@ -3,12 +3,12 @@ PLATVER = LOADHDR = -I ./ LOADSO = -L ../XEngine_DependLibrary/XEngine_Module/jsoncpp -L ../XEngine_DependLibrary/XEngine_Module/tinyxml2 -L ../XEngine_DependLibrary/XEngine_Module/XEngine_InfoReport -L ../XEngine_DependLibrary/XEngine_Module/XEngine_Verification \ -L ../StorageModule_Database -L ../StorageModule_Config -L ../StorageModule_Session -L ../StorageModule_APIHelp -L ../StorageModule_Protocol -L ../StorageModule_BTorrent -LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_Cryption -lXClient_APIHelp -lXEngine_ProcFile -lXEngine_SystemApi -lHelpComponents_XLog -lHelpComponents_Packets -lRfcComponents_HttpProtocol \ +LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_Cryption -lXClient_APIHelp -lXEngine_SystemApi -lHelpComponents_XLog -lHelpComponents_Packets -lRfcComponents_HttpProtocol \ -lStorageModule_Database -lStorageModule_Config -lStorageModule_Session -lStorageModule_APIHelp -lStorageModule_Protocol -lStorageModule_BTorrent \ - -ljsoncpp -ltinyxml2 -lXEngine_InfoReport -lXEngine_Verification + -ljsoncpp -ltinyxml2 -lXEngine_InfoReport -lXEngine_Verification LIBEX = OBJECTS = Storage_TaskPass.o Storage_TaskManage.o Storage_TaskP2p.o Storage_TaskAction.o \ - StorageApp_Config.o StorageApp_Download.o StorageApp_Network.o StorageApp_Center.o StorageApp_UPLoader.o StorageApp_Webdav.o XEngine_StorageApp.o + StorageApp_Config.o StorageApp_HTTPHelp.o StorageApp_Download.o StorageApp_Network.o StorageApp_Center.o StorageApp_UPLoader.o StorageApp_Webdav.o XEngine_StorageApp.o ifeq ($(RELEASE),1) FLAGS = -c -D _RELEASE @@ -49,6 +49,8 @@ all:$(OBJECTS) StorageApp_Config.o:./StorageApp_Config.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./StorageApp_Config.cpp +StorageApp_HTTPHelp.o:./StorageApp_HTTPHelp.cpp + $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./StorageApp_HTTPHelp.cpp StorageApp_Download.o:./StorageApp_Download.cpp $(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./StorageApp_Download.cpp StorageApp_Network.o:./StorageApp_Network.cpp diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp index 842d9cc..e281e5f 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp @@ -52,115 +52,32 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int LPCXSTR lpszMethodPost = _X("POST"); LPCXSTR lpszMethodGet = _X("GET"); + LPCXSTR lpszMethodHead = _X("HEAD"); XCHAR** pptszUrlList; XCHAR tszUrlName[128]; int nUrlCount = 0; //得到URL参数个数 HttpProtocol_ServerHelp_GetParament(pSt_HTTPParam->tszHttpUri, &pptszUrlList, &nUrlCount, tszUrlName); - if (nUrlCount < 1) + if (nUrlCount < 1 && (0 != _tcsxnicmp(lpszMethodHead, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodHead)))) { st_HDRParam.nHttpCode = 400; HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); BaseLib_Memory_Free((XPPPMEM)&pptszUrlList, nUrlCount); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, pSt_HTTPParam->tszHttpUri); return false; } - st_HDRParam.bIsClose = true; - st_HDRParam.nHttpCode = 200; + if (st_ServiceCfg.st_XProxy.bAuthPass) { - int nVType = 0; - RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; - - st_HDRParam.nHttpCode = 401; - st_HDRParam.bIsClose = true; - st_HDRParam.bAuth = true; - //打包验证信息 - int nHDRLen = 0; - XCHAR tszHDRBuffer[XPATH_MAX] = {}; - if (1 == st_ServiceCfg.st_XProxy.nVType) - { - Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen); - } - else - { - XCHAR tszNonceStr[64] = {}; - XCHAR tszOpaqueStr[64] = {}; - Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr); - } - //后去验证方法 - if (!Verification_HTTP_GetType(pptszListHdr, nHdrCount, &nVType)) - { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.nVType, Verification_GetLastError()); - return false; - } - //验证方式是否一致 - if (st_ServiceCfg.st_XProxy.nVType != nVType) - { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceCfg.st_XProxy.nVType); - return false; - } - bool bRet = false; - int nHTTPCode = 0; - int nMSGLen = 0; - XCLIENT_APIHTTP st_APIHttp = {}; - - XCHAR* ptszMSGBuffer = NULL; - if (!APIClient_Http_Request(_X("GET"), st_ServiceCfg.st_XProxy.tszAuthPass, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp)) + if (!StorageApp_HTTPHelp_Verification(lpszClientAddr, pSt_HTTPParam, pptszListHdr, nHdrCount, st_ServiceCfg.st_XProxy.tszAuthPass)) { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszAuthPass, APIClient_GetLastError()); return false; } - if (200 != nHTTPCode) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszAuthPass, nHTTPCode); - return false; - } - XENGINE_PROTOCOL_USERAUTH st_UserAuth = {}; - if (!Protocol_StorageParse_User(ptszMSGBuffer, nMsgLen, &st_UserAuth)) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_AUTHFAIL, "api server reply failure,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer); - BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); - return false; - } - BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); - - if (1 == nVType) - { - bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszListHdr, nHdrCount); - } - else if (2 == nVType) - { - bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszListHdr, nHdrCount); - } - - if (!bRet) - { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType); - return false; - } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType); } + st_HDRParam.bIsClose = true; + st_HDRParam.nHttpCode = 200; if (0 == _tcsxnicmp(lpszMethodPost, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodPost))) { @@ -191,6 +108,13 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int BaseLib_String_GetKeyValueA(pptszUrlList[1], "=", tszStrKey, tszStrVlu); Storage_TaskAction(tszStrVlu, lpszClientAddr, lpszMsgBuffer, nMsgLen, pSt_HTTPParam); } + else + { + Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_APINAME, "unknow api"); + HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("业务客户端:%s,请求的方法:%s 不存在"), lpszClientAddr, tszStrVlu); + } } else if (0 == _tcsxnicmp(lpszMethodGet, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodGet))) { @@ -206,6 +130,56 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("业务客户端:%s,请求GET心跳方法成功"), lpszClientAddr); } + else + { + Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_APINAME, "unknow api"); + HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("业务客户端:%s,请求的方法:%s 不存在"), lpszClientAddr, tszStrVlu); + } + } + else if (0 == _tcsxnicmp(lpszMethodHead, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodHead))) + { + //获得文件大小 + XENGINE_STORAGEBUCKET st_StorageBucket = {}; + //分布式存储 + if (!APIHelp_Distributed_DLStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket)) + { + st_HDRParam.bIsClose = true; + st_HDRParam.nHttpCode = 404; + + HttpProtocol_Server_SendMsgEx(xhDLHttp, tszSDBuffer, &nSDLen, &st_HDRParam); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("业务客户端:%s,请求文件失败,可能BUCKET:%s 不正确,错误:%lX"), lpszClientAddr, pSt_HTTPParam->tszHttpUri, StorageHelp_GetLastError()); + return false; + } + if (!st_StorageBucket.bEnable) + { + st_HDRParam.bIsClose = true; + st_HDRParam.nHttpCode = 404; + + HttpProtocol_Server_SendMsgEx(xhDLHttp, tszSDBuffer, &nSDLen, &st_HDRParam); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("业务客户端:%s,请求文件失败,请求的BUCKET:%s 已经被禁用"), lpszClientAddr, st_StorageBucket.tszBuckKey); + return false; + } + XCHAR tszFilePath[XPATH_MAX] = {}; + SYSTEMAPI_FILE_ATTR st_FileAttr = {}; + + _xstprintf(tszFilePath, _X("%s%s"), st_StorageBucket.tszFilePath, st_StorageBucket.tszFileName); + if (0 != _xtaccess(tszFilePath, 0)) + { + st_HDRParam.nHttpCode = 404; + Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_NOTFOUND, "file not found"); + HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("业务客户端:%s,请求文件大小失败,文件:%s 不存在"), lpszClientAddr, pSt_HTTPParam->tszHttpUri); + return false; + } + SystemApi_File_GetFileAttr(tszFilePath, &st_FileAttr); + HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, st_FileAttr.nFileSize); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("业务客户端:%s,请求获取文件:%s 大小:%lld 成功"), lpszClientAddr, tszFilePath, st_FileAttr.nFileSize); } else { diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Center.h b/XEngine_Source/XEngine_StorageApp/StorageApp_Center.h index aace083..b8d55fe 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Center.h +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Center.h @@ -11,4 +11,5 @@ // History: *********************************************************************/ XHTHREAD XCALLBACK XEngine_Center_HTTPThread(XPVOID lParam); + bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, XCHAR** pptszListHdr, int nHdrCount); \ No newline at end of file diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp index c800cb9..1d49f9f 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp @@ -152,7 +152,7 @@ bool XEngine_Task_HttpDownload(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM)); LPCXSTR lpszMethodGet = _X("GET"); - if (0 != _tcsxncmp(lpszMethodGet, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodGet))) + if (0 != _tcsxnicmp(lpszMethodGet, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodGet))) { st_HDRParam.bIsClose = true; st_HDRParam.nHttpCode = 405; @@ -179,95 +179,10 @@ bool XEngine_Task_HttpDownload(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in //验证用户 if (st_ServiceCfg.st_XProxy.bDLPass) { - int nVType = 0; - RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; - - st_HDRParam.nHttpCode = 401; - st_HDRParam.bIsClose = true; - st_HDRParam.bAuth = true; - //打包验证信息 - int nHDRLen = 0; - XCHAR tszHDRBuffer[XPATH_MAX] = {}; - if (1 == st_ServiceCfg.st_XProxy.nVType) - { - Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen); - } - else - { - XCHAR tszNonceStr[64] = {}; - XCHAR tszOpaqueStr[64] = {}; - Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr); - } - //后去验证方法 - if (!Verification_HTTP_GetType(pptszListHdr, nHdrCount, &nVType)) - { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.nVType, Verification_GetLastError()); - return false; - } - //验证方式是否一致 - if (st_ServiceCfg.st_XProxy.nVType != nVType) - { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceCfg.st_XProxy.nVType); - return false; - } - bool bRet = false; - int nHTTPCode = 0; - int nMSGLen = 0; - XCLIENT_APIHTTP st_APIHttp = {}; - - XCHAR* ptszMSGBuffer = NULL; - if (!APIClient_Http_Request(_X("GET"), st_ServiceCfg.st_XProxy.tszDLPass, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp)) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszDLPass, APIClient_GetLastError()); - return false; - } - if (200 != nHTTPCode) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszDLPass, nHTTPCode); - return false; - } - XENGINE_PROTOCOL_USERAUTH st_UserAuth = {}; - if (!Protocol_StorageParse_User(ptszMSGBuffer, nMsgLen, &st_UserAuth)) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_AUTHFAIL, "api server reply failure,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer); - BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); - return false; - } - BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); - - if (1 == nVType) - { - bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszListHdr, nHdrCount); - } - else if (2 == nVType) - { - bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszListHdr, nHdrCount); - } - - if (!bRet) + if (!StorageApp_HTTPHelp_Verification(lpszClientAddr, pSt_HTTPParam, pptszListHdr, nHdrCount, st_ServiceCfg.st_XProxy.tszDLPass)) { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType); return false; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("下载客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType); } //使用重定向,这是分布式重定向实现 if (st_LoadbalanceCfg.st_LBDistributed.nDownldMode > 0) diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_HTTPHelp.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_HTTPHelp.cpp new file mode 100644 index 0000000..d1e33c1 --- /dev/null +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_HTTPHelp.cpp @@ -0,0 +1,99 @@ +#include "StorageApp_Hdr.h" + +bool StorageApp_HTTPHelp_Verification(LPCXSTR lpszClientAddr, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, XCHAR** pptszListHdr, int nHdrCount, LPCXSTR lpszRestApi) +{ + int nSDLen = 2048; + int nRVLen = 2048; + int nVType = 0; + XCHAR tszSDBuffer[2048] = {}; + XCHAR tszRVBuffer[2048] = {}; + RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; + + st_HDRParam.nHttpCode = 401; + st_HDRParam.bIsClose = true; + st_HDRParam.bAuth = true; + //打包验证信息 + int nHDRLen = 0; + XCHAR tszHDRBuffer[XPATH_MAX] = {}; + if (1 == st_ServiceCfg.st_XProxy.nVType) + { + Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen); + } + else + { + XCHAR tszNonceStr[64] = {}; + XCHAR tszOpaqueStr[64] = {}; + Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr); + } + //后去验证方法 + if (!Verification_HTTP_GetType(pptszListHdr, nHdrCount, &nVType)) + { + HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.nVType, Verification_GetLastError()); + return false; + } + //验证方式是否一致 + if (st_ServiceCfg.st_XProxy.nVType != nVType) + { + HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceCfg.st_XProxy.nVType); + return false; + } + bool bRet = false; + int nHTTPCode = 0; + int nMSGLen = 0; + XCLIENT_APIHTTP st_APIHttp = {}; + + XCHAR* ptszMSGBuffer = NULL; + if (!APIClient_Http_Request(_X("GET"), lpszRestApi, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp)) + { + st_HDRParam.nHttpCode = 500; + Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification"); + HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, lpszRestApi, APIClient_GetLastError()); + return false; + } + if (200 != nHTTPCode) + { + st_HDRParam.nHttpCode = 500; + Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification"); + HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, lpszRestApi, nHTTPCode); + return false; + } + XENGINE_PROTOCOL_USERAUTH st_UserAuth = {}; + if (!Protocol_StorageParse_User(ptszMSGBuffer, nMSGLen, &st_UserAuth)) + { + st_HDRParam.nHttpCode = 500; + Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_AUTHFAIL, "api server reply failure,cant verification"); + HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer); + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); + return false; + } + BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); + + if (1 == nVType) + { + bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszListHdr, nHdrCount); + } + else if (2 == nVType) + { + bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszListHdr, nHdrCount); + } + + if (!bRet) + { + HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType); + return false; + } + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType); + return true; +} \ No newline at end of file diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_HTTPHelp.h b/XEngine_Source/XEngine_StorageApp/StorageApp_HTTPHelp.h new file mode 100644 index 0000000..914f9bc --- /dev/null +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_HTTPHelp.h @@ -0,0 +1,13 @@ +#pragma once +/******************************************************************** +// Created: 2026/04/16 17:27:59 +// File Name: D:\XEngine_Storage\XEngine_Source\XEngine_StorageApp\StorageApp_HTTPHelp.h +// File Path: D:\XEngine_Storage\XEngine_Source\XEngine_StorageApp +// File Base: StorageApp_HTTPHelp +// File Ext: h +// Project: XEngine +// Author: qyt +// Purpose: HTTP 帮助函数封装 +// History: +*********************************************************************/ +bool StorageApp_HTTPHelp_Verification(LPCXSTR lpszClientAddr, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, XCHAR** pptszListHdr, int nHdrCount, LPCXSTR lpszRestApi); \ No newline at end of file diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h b/XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h index 7b66645..25c2eb0 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h @@ -47,8 +47,6 @@ using namespace std; #include #include #include -#include -#include #include #include #include "../XStorage_Protocol.h" @@ -117,6 +115,7 @@ extern XENGINE_LBCONFIG st_LoadbalanceCfg; #include "StorageApp_Network.h" #include "StorageApp_Config.h" +#include "StorageApp_HTTPHelp.h" #include "StorageApp_Download.h" #include "StorageApp_UPLoader.h" #include "StorageApp_Center.h" diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Network.h b/XEngine_Source/XEngine_StorageApp/StorageApp_Network.h index ac3dfaa..643625d 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Network.h +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Network.h @@ -18,5 +18,5 @@ void XCALLBACK XEngine_Callback_HBUPLoader(LPCXSTR lpszClientAddr, XSOCKET hSock void XCALLBACK XEngine_Callback_HBCenter(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); void XCALLBACK XEngine_Callback_HBWebdav(LPCXSTR lpszClientAddr, XSOCKET hSocket, int nStatus, XPVOID lParam); -bool XEngine_Net_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType, int nClientType = STORAGE_NETTYPE_HTTPDOWNLOAD); -bool XEngine_Net_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nType = STORAGE_NETTYPE_HTTPDOWNLOAD); \ No newline at end of file +bool XEngine_Net_CloseClient(LPCXSTR lpszClientAddr, int nLeaveType, int nClientType); +bool XEngine_Net_SendMsg(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, int nType); \ No newline at end of file diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp index 5c557ce..22b4c01 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp @@ -66,7 +66,7 @@ bool XEngine_Task_HttpUPLoader(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in LPCXSTR lpszMethodPost = _X("POST"); LPCXSTR lpszMethodPut = _X("PUT"); - if ((0 != _tcsxncmp(lpszMethodPost, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodPost))) && (0 != _tcsxncmp(lpszMethodPut, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodPut)))) + if ((0 != _tcsxnicmp(lpszMethodPost, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodPost))) && (0 != _tcsxnicmp(lpszMethodPut, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodPut)))) { st_HDRParam.bIsClose = true; st_HDRParam.nHttpCode = 405; @@ -93,95 +93,10 @@ bool XEngine_Task_HttpUPLoader(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in //用户验证 if (st_ServiceCfg.st_XProxy.bUPPass) { - int nVType = 0; - RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; - - st_HDRParam.nHttpCode = 401; - st_HDRParam.bIsClose = true; - st_HDRParam.bAuth = true; - //打包验证信息 - int nHDRLen = 0; - XCHAR tszHDRBuffer[XPATH_MAX] = {}; - if (1 == st_ServiceCfg.st_XProxy.nVType) - { - Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen); - } - else - { - XCHAR tszNonceStr[64] = {}; - XCHAR tszOpaqueStr[64] = {}; - Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr); - } - //后去验证方法 - if (!Verification_HTTP_GetType(pptszListHdr, nHdrCount, &nVType)) - { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("上传客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.nVType, Verification_GetLastError()); - return false; - } - //验证方式是否一致 - if (st_ServiceCfg.st_XProxy.nVType != nVType) - { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("上传客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceCfg.st_XProxy.nVType); - return false; - } - bool bRet = false; - int nHTTPCode = 0; - int nMSGLen = 0; - XCLIENT_APIHTTP st_APIHttp = {}; - - XCHAR* ptszMSGBuffer = NULL; - if (!APIClient_Http_Request(_X("GET"), st_ServiceCfg.st_XProxy.tszUPPass, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp)) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("上传客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszUPPass, APIClient_GetLastError()); - return false; - } - if (200 != nHTTPCode) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("上传客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszUPPass, nHTTPCode); - return false; - } - XENGINE_PROTOCOL_USERAUTH st_UserAuth = {}; - if (!Protocol_StorageParse_User(ptszMSGBuffer, nMsgLen, &st_UserAuth)) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_AUTHFAIL, "api server reply failure,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("上传客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer); - BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); - return false; - } - BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); - - if (1 == nVType) - { - bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszListHdr, nHdrCount); - } - else if (2 == nVType) - { - bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszListHdr, nHdrCount); - } - - if (!bRet) + if (!StorageApp_HTTPHelp_Verification(lpszClientAddr, pSt_HTTPParam, pptszListHdr, nHdrCount, st_ServiceCfg.st_XProxy.tszUPPass)) { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("上传客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType); return false; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("上传客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType); } //使用重定向? if (st_LoadbalanceCfg.st_LBDistributed.nUPLoadMode > 0) diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Webdav.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_Webdav.cpp index ee6c49f..6ef29e6 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Webdav.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Webdav.cpp @@ -64,95 +64,10 @@ bool XEngine_Task_HttpWebdav(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int if (st_ServiceCfg.st_XProxy.bWDPass) { - int nVType = 0; - RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; - - st_HDRParam.nHttpCode = 401; - st_HDRParam.bIsClose = true; - st_HDRParam.bAuth = true; - //打包验证信息 - int nHDRLen = 0; - XCHAR tszHDRBuffer[XPATH_MAX] = {}; - if (1 == st_ServiceCfg.st_XProxy.nVType) - { - Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen); - } - else - { - XCHAR tszNonceStr[64] = {}; - XCHAR tszOpaqueStr[64] = {}; - Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr); - } - //后去验证方法 - if (!Verification_HTTP_GetType(pptszListHdr, nHdrCount, &nVType)) - { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("WEBDAV客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.nVType, Verification_GetLastError()); - return false; - } - //验证方式是否一致 - if (st_ServiceCfg.st_XProxy.nVType != nVType) + if (!StorageApp_HTTPHelp_Verification(lpszClientAddr, pSt_HTTPParam, pptszListHdr, nHdrCount, st_ServiceCfg.st_XProxy.tszWDPass)) { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("WEBDAV客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceCfg.st_XProxy.nVType); - return false; - } - bool bRet = false; - int nHTTPCode = 0; - int nMSGLen = 0; - XCLIENT_APIHTTP st_APIHttp = {}; - - XCHAR* ptszMSGBuffer = NULL; - if (!APIClient_Http_Request(_X("GET"), st_ServiceCfg.st_XProxy.tszWDPass, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp)) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("WEBDAV客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszWDPass, APIClient_GetLastError()); - return false; - } - if (200 != nHTTPCode) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("WEBDAV客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszWDPass, nHTTPCode); - return false; - } - XENGINE_PROTOCOL_USERAUTH st_UserAuth = {}; - if (!Protocol_StorageParse_User(ptszMSGBuffer, nMsgLen, &st_UserAuth)) - { - st_HDRParam.nHttpCode = 500; - Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_AUTHFAIL, "api server reply failure,cant verification"); - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("WEBDAV客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer); - BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); - return false; - } - BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer); - - if (1 == nVType) - { - bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszListHdr, nHdrCount); - } - else if (2 == nVType) - { - bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszListHdr, nHdrCount); - } - - if (!bRet) - { - HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("WEBDAV客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType); return false; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("WEBDAV客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType); } //http://127.0.0.1:5103/storagekey1 if (0 == _tcsxnicmp(lpszMethodOption, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodOption))) diff --git a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskAction.cpp b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskAction.cpp index 976adc5..711e0e0 100644 --- a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskAction.cpp +++ b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskAction.cpp @@ -113,7 +113,7 @@ bool Storage_TaskAction(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lps if (0 == st_ActionInfo.byType || 1 == st_ActionInfo.byType) { - if (0 == _tcsxnicmp(lpszAPIDownload, lpszAPIName, _tcsxlen(lpszAPIDownload))) + if (0 == _tcsxncmp(lpszAPIDownload, lpszAPIName, _tcsxlen(lpszAPIDownload))) { XNETHANDLE xhToken = 0; BaseLib_Handle_Create(&xhToken); @@ -138,7 +138,7 @@ bool Storage_TaskAction(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lps XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("业务客户端:%s,处理用户下载动作成功,URL:%s,路径:%s,句柄:%lld,类型:%d"), lpszClientAddr, st_ActionInfo.tszFileUrl, tszFileName, xhToken, st_ActionInfo.byType); } - else if (0 == _tcsxnicmp(lpszAPIUPload, lpszAPIName, _tcsxlen(lpszAPIUPload))) + else if (0 == _tcsxncmp(lpszAPIUPload, lpszAPIName, _tcsxlen(lpszAPIUPload))) { XNETHANDLE xhToken = 0; BaseLib_Handle_Create(&xhToken); diff --git a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp index 32b5a1b..ca5f03c 100644 --- a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp +++ b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp @@ -4,8 +4,8 @@ bool XEngine_Task_Manage(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lp { int nSDLen = 10240; int nRVLen = 10240; - XCHAR tszSDBuffer[10240]; - XCHAR tszRVBuffer[10240]; + XCHAR tszSDBuffer[10240] = {}; + XCHAR tszRVBuffer[10240] = {}; LPCXSTR lpszAPIConfig = _X("Config"); LPCXSTR lpszAPIInsert = _X("Insert"); LPCXSTR lpszAPIDelete = _X("Delete"); @@ -14,11 +14,7 @@ bool XEngine_Task_Manage(LPCXSTR lpszAPIName, LPCXSTR lpszClientAddr, LPCXSTR lp LPCXSTR lpszAPIBucket = _X("Bucket"); LPCXSTR lpszAPITask = _X("Task"); LPCXSTR lpszAPIFlushSize = _X("flushsize"); - RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam; - - memset(tszSDBuffer, '\0', sizeof(tszSDBuffer)); - memset(tszRVBuffer, '\0', sizeof(tszRVBuffer)); - memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM)); + RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {}; st_HDRParam.bIsClose = true; st_HDRParam.nHttpCode = 200; diff --git a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp index 0f4f98c..64bf695 100644 --- a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp +++ b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp @@ -577,7 +577,15 @@ int main(int argc, char** argv) { __int64u nSetSize = APIHelp_Distributed_GetSize(stl_ListIterator->tszBuckSize); APIHelp_Api_GetDIRSize(stl_ListIterator->tszFilePath, &stl_ListIterator->nBuckSize); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,检查文件目录:%s,名称;%s,可用大小:%lld,使用大小:%lld,剩余大小:%lld"), stl_ListIterator->tszFilePath, stl_ListIterator->tszBuckKey, nSetSize, stl_ListIterator->nBuckSize, nSetSize - stl_ListIterator->nBuckSize); + + XCHAR tszAviSize[XPATH_MIN] = {}; + XCHAR tszUseSize[XPATH_MIN] = {}; + XCHAR tszLeftSize[XPATH_MIN] = {}; + APIHelp_Api_BSizeToStr(nSetSize, tszAviSize, 2); + APIHelp_Api_BSizeToStr(stl_ListIterator->nBuckSize, tszUseSize, 2); + APIHelp_Api_BSizeToStr(nSetSize - stl_ListIterator->nBuckSize, tszLeftSize, 2); + + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,检查文件目录:%s,名称;%s,可用大小:%s,使用大小:%s,剩余大小:%s"), stl_ListIterator->tszFilePath, stl_ListIterator->tszBuckKey, tszAviSize, tszUseSize, tszLeftSize); } #ifndef _DEBUG //发送信息报告 diff --git a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj index d38ee78..173d0d3 100644 --- a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj +++ b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj @@ -225,6 +225,7 @@ + @@ -239,6 +240,7 @@ + diff --git a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj.filters b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj.filters index 308582a..050ad75 100644 --- a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj.filters +++ b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj.filters @@ -54,6 +54,9 @@ 源文件 + + 源文件 + @@ -89,5 +92,8 @@ 头文件 + + 头文件 + \ No newline at end of file