From 2e5b7592c31404debb053e33267c6c34ffee092b Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 11 Oct 2022 11:13:14 +0800 Subject: [PATCH 01/22] modify:match xengine v7.41 --- .../Storage_APPTask/Storage_TaskManage.cpp | 4 ++-- .../Storage_APPTask/Storage_TaskP2p.cpp | 2 +- XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp | 4 ++-- .../XEngine_StorageApp/XEngine_StorageApp.vcxproj | 8 ++++---- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp index 0e64a8f..5e93959 100644 --- a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp +++ b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp @@ -72,8 +72,8 @@ BOOL XEngine_Task_Manage(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lp list stl_ListFile; Protocol_StoragePacket_REQFile(tszSDBuffer, &nSDLen, NULL, tszFileHash); - NetCore_BroadCast_SendInit(&hSDSocket, st_ServiceCfg.st_P2xp.nRVPort, st_ServiceCfg.tszIPAddr); - NetCore_BroadCast_RecvInit(&hRVSocket, st_ServiceCfg.st_P2xp.nSDPort); + NetCore_BroadCast_SDCreate(&hSDSocket, st_ServiceCfg.st_P2xp.nRVPort, st_ServiceCfg.tszIPAddr); + NetCore_BroadCast_RVCreate(&hRVSocket, st_ServiceCfg.st_P2xp.nSDPort); if (!NetCore_BroadCast_Send(hSDSocket, tszSDBuffer, nSDLen)) { diff --git a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskP2p.cpp b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskP2p.cpp index 4e1d497..89c1866 100644 --- a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskP2p.cpp +++ b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskP2p.cpp @@ -37,7 +37,7 @@ XHTHREAD XEngine_Task_P2PThread() BaseLib_OperatorMemory_Free((XPPPMEM)&pppSt_ListFile, nListCount); SOCKET hSDSocket; - NetCore_BroadCast_SendInit(&hSDSocket, st_ServiceCfg.st_P2xp.nSDPort, st_ServiceCfg.tszIPAddr); + NetCore_BroadCast_SDCreate(&hSDSocket, st_ServiceCfg.st_P2xp.nSDPort, st_ServiceCfg.tszIPAddr); NetCore_BroadCast_Send(hSDSocket, tszMsgBuffer, nMsgLen); NetCore_BroadCast_Close(hSDSocket); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("广播端:%s,请求查询文件成功,列表个数:%d"), tszIPAddr, nListCount); diff --git a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp index 0754838..5790371 100644 --- a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp +++ b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp @@ -164,7 +164,7 @@ int main(int argc, char** argv) signal(SIGABRT, ServiceApp_Stop); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化服务器信号管理成功")); - xhLimit = Algorithm_Calculation_Create(); + xhLimit = Algorithm_Calculation_Create(5); if (NULL == xhLimit) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,创建流量限速对象模式失败,错误:%lX"), Algorithm_GetLastError()); @@ -396,7 +396,7 @@ int main(int argc, char** argv) //只有使用了数据库,才启用P2P if (st_ServiceCfg.st_XSql.bEnable) { - if (!NetCore_BroadCast_RecvInit(&hBroadSocket, st_ServiceCfg.st_P2xp.nRVPort)) + if (!NetCore_BroadCast_RVCreate(&hBroadSocket, st_ServiceCfg.st_P2xp.nRVPort)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动P2P存储广播服务失败,错误:%d"), errno); goto XENGINE_EXITAPP; diff --git a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj index dda57b4..a7649b1 100644 --- a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj +++ b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.vcxproj @@ -93,7 +93,7 @@ Level3 - true + false WIN32;_DEBUG;_CONSOLE;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true 4819 @@ -108,7 +108,7 @@ Level3 true true - true + false WIN32;NDEBUG;_CONSOLE;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true MultiThreaded @@ -124,7 +124,7 @@ Level3 - true + false _DEBUG;_CONSOLE;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true @@ -138,7 +138,7 @@ Level3 true true - true + false NDEBUG;_CONSOLE;_WINDOWS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) true MultiThreaded -- Gitee From 89f46eb634789b6137f5bb09e3b0480fa1989dfb Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 11 Oct 2022 14:01:12 +0800 Subject: [PATCH 02/22] delete:error try time --- .../StorageModule_Config/Config_Define.h | 2 +- .../Config_Json/Config_Json.cpp | 2 +- .../StorageModule_Session/Session_Define.h | 15 ++--------- .../StorageModule_Session/Session_Error.h | 3 +-- .../Session_Stroage/Session_DLStroage.cpp | 27 ++----------------- .../Session_Stroage/Session_DLStroage.h | 4 +-- XEngine_Source/StorageModule_Session/pch.cpp | 8 +++--- .../XEngine_StorageApp/XEngine_StorageApp.cpp | 4 +-- 8 files changed, 15 insertions(+), 50 deletions(-) diff --git a/XEngine_Source/StorageModule_Config/Config_Define.h b/XEngine_Source/StorageModule_Config/Config_Define.h index 92d55fd..d0f6005 100644 --- a/XEngine_Source/StorageModule_Config/Config_Define.h +++ b/XEngine_Source/StorageModule_Config/Config_Define.h @@ -81,7 +81,7 @@ typedef struct tag_XEngine_ServerConfig }st_XProxy; struct { - int nDLTry; + int nLimitMode; __int64x nMaxUPLoader; __int64x nMaxDNLoader; }st_XLimit; diff --git a/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp b/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp index 777e546..82412de 100644 --- a/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp +++ b/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp @@ -176,7 +176,7 @@ BOOL CConfig_Json::Config_Json_File(LPCTSTR lpszConfigFile, XENGINE_SERVERCONFIG return FALSE; } Json::Value st_JsonXLimit = st_JsonRoot["XLimit"]; - pSt_ServerConfig->st_XLimit.nDLTry = st_JsonXLimit["nDLTry"].asUInt(); + pSt_ServerConfig->st_XLimit.nLimitMode = st_JsonXLimit["nLimitMode"].asUInt(); pSt_ServerConfig->st_XLimit.nMaxDNLoader = st_JsonXLimit["nMaxDNLoad"].asInt64(); pSt_ServerConfig->st_XLimit.nMaxUPLoader = st_JsonXLimit["nMaxUPLoad"].asInt64(); diff --git a/XEngine_Source/StorageModule_Session/Session_Define.h b/XEngine_Source/StorageModule_Session/Session_Define.h index 76bc103..97f1111 100644 --- a/XEngine_Source/StorageModule_Session/Session_Define.h +++ b/XEngine_Source/StorageModule_Session/Session_Define.h @@ -25,7 +25,6 @@ typedef struct __int64x ullFSize; //文件真实大小 __int64x ullPosStart; //开始位置 __int64x ullPosEnd; //结束位置 - int nErrorTime; //错误次数 FILE* pSt_File; }SESSION_STORAGEINFO; ////////////////////////////////////////////////////////////////////////// @@ -83,17 +82,12 @@ extern "C" BOOL Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass); /******************************************************************** 函数名称:Session_DLStroage_Init 函数功能:初始化下载会话管理器 - 参数.一:nTryTime - In/Out:In - 类型:整数型 - 可空:Y - 意思:输入下载错误重试次数 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Session_DLStroage_Init(int nTryTime = 3); +extern "C" BOOL Session_DLStroage_Init(); /******************************************************************** 函数名称:Session_DLStroage_Destory 函数功能:销毁下载管理器 @@ -221,17 +215,12 @@ extern "C" BOOL Session_DLStroage_GetCount(int* pInt_ListCount); 类型:整数型 可空:N 意思:输入文件位置 - 参数.三:bError - In/Out:In - 类型:逻辑型 - 可空:Y - 意思:是否有由错误引起的 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Session_DLStorage_SetSeek(LPCTSTR lpszClientAddr, int nSeek, BOOL bError = TRUE); +extern "C" BOOL Session_DLStorage_SetSeek(LPCTSTR lpszClientAddr, int nSeek); /******************************************************************** 函数名称:Session_DLStorage_GetAll 函数功能:获取下载池的任务列表 diff --git a/XEngine_Source/StorageModule_Session/Session_Error.h b/XEngine_Source/StorageModule_Session/Session_Error.h index 90eed5d..0c789f3 100644 --- a/XEngine_Source/StorageModule_Session/Session_Error.h +++ b/XEngine_Source/StorageModule_Session/Session_Error.h @@ -18,5 +18,4 @@ #define ERROR_STORAGE_MODULE_SESSION_OPENFILE 0x0010003 #define ERROR_STORAGE_MODULE_SESSION_NOTFOUND 0x0010004 #define ERROR_STORAGE_MODULE_SESSION_PASSWORD 0x0010005 -#define ERROR_STORAGE_MODULE_SESSION_EMPTY 0x0010006 -#define ERROR_STORAGE_MODULE_SESSION_ERRORTIME 0x0010007 \ No newline at end of file +#define ERROR_STORAGE_MODULE_SESSION_EMPTY 0x0010006 \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.cpp b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.cpp index d432926..5c23e17 100644 --- a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.cpp +++ b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.cpp @@ -23,21 +23,15 @@ CSession_DLStroage::~CSession_DLStroage() /******************************************************************** 函数名称:Session_DLStroage_Init 函数功能:初始化下载会话管理器 - 参数.一:nTryTime - In/Out:In - 类型:整数型 - 可空:Y - 意思:输入下载错误重试次数 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -BOOL CSession_DLStroage::Session_DLStroage_Init(int nTryTime /* = 3 */) +BOOL CSession_DLStroage::Session_DLStroage_Init() { Session_IsErrorOccur = FALSE; - m_nTryTime = nTryTime; return TRUE; } /******************************************************************** @@ -329,17 +323,12 @@ BOOL CSession_DLStroage::Session_DLStroage_GetCount(int* pInt_ListCount) 类型:整数型 可空:N 意思:输入文件位置 - 参数.三:bError - In/Out:In - 类型:逻辑型 - 可空:Y - 意思:是否有由错误引起的 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -BOOL CSession_DLStroage::Session_DLStorage_SetSeek(LPCTSTR lpszClientAddr, int nSeek, BOOL bError /* = TRUE */) +BOOL CSession_DLStroage::Session_DLStorage_SetSeek(LPCTSTR lpszClientAddr, int nSeek) { Session_IsErrorOccur = FALSE; @@ -352,21 +341,9 @@ BOOL CSession_DLStroage::Session_DLStorage_SetSeek(LPCTSTR lpszClientAddr, int n st_Locker.unlock_shared(); return FALSE; } - if (stl_MapIterator->second.nErrorTime > m_nTryTime) - { - Session_IsErrorOccur = TRUE; - Session_dwErrorCode = ERROR_STORAGE_MODULE_SESSION_ERRORTIME; - st_Locker.unlock_shared(); - return FALSE; - } //移动文件指针 fseek(stl_MapIterator->second.pSt_File, nSeek, SEEK_CUR); stl_MapIterator->second.ullRWLen += nSeek; - - if (bError) - { - stl_MapIterator->second.nErrorTime++; - } st_Locker.unlock_shared(); return TRUE; } diff --git a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.h b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.h index ace5a21..cc1394b 100644 --- a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.h +++ b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.h @@ -17,13 +17,13 @@ public: CSession_DLStroage(); ~CSession_DLStroage(); public: - BOOL Session_DLStroage_Init(int nTryTime); + BOOL Session_DLStroage_Init(); BOOL Session_DLStroage_Destory(); BOOL Session_DLStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszBuckKey, LPCTSTR lpszFileDir, __int64x* pInt_Count, __int64x* pInt_LeftCount, int nPosStart = 0, int nPostEnd = 0, LPCTSTR lpszFileHash = NULL); BOOL Session_DLStroage_GetBuffer(LPCTSTR lpszClientAddr, TCHAR* ptszMsgBuffer, int* pInt_MsgLen); BOOL Session_DLStroage_GetInfo(LPCTSTR lpszClientAddr, SESSION_STORAGEINFO* pSt_StorageInfo); BOOL Session_DLStroage_GetCount(int* pInt_ListCount); - BOOL Session_DLStorage_SetSeek(LPCTSTR lpszClientAddr, int nSeek, BOOL bError = TRUE); + BOOL Session_DLStorage_SetSeek(LPCTSTR lpszClientAddr, int nSeek); BOOL Session_DLStorage_GetAll(SESSION_STORAGEINFO*** pppSt_StorageInfo, int* pInt_ListCount); BOOL Session_DLStroage_Delete(LPCTSTR lpszClientAddr); private: diff --git a/XEngine_Source/StorageModule_Session/pch.cpp b/XEngine_Source/StorageModule_Session/pch.cpp index 3f718cd..936ef15 100644 --- a/XEngine_Source/StorageModule_Session/pch.cpp +++ b/XEngine_Source/StorageModule_Session/pch.cpp @@ -48,9 +48,9 @@ extern "C" BOOL Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass) /************************************************************************/ /* 存储会话导出的函数 */ /************************************************************************/ -extern "C" BOOL Session_DLStroage_Init(int nTryTime) +extern "C" BOOL Session_DLStroage_Init() { - return m_DLStorage.Session_DLStroage_Init(nTryTime); + return m_DLStorage.Session_DLStroage_Init(); } extern "C" BOOL Session_DLStroage_Destory() { @@ -72,9 +72,9 @@ extern "C" BOOL Session_DLStroage_GetCount(int* pInt_ListCount) { return m_DLStorage.Session_DLStroage_GetCount(pInt_ListCount); } -extern "C" BOOL Session_DLStorage_SetSeek(LPCTSTR lpszClientAddr, int nSeek, BOOL bError) +extern "C" BOOL Session_DLStorage_SetSeek(LPCTSTR lpszClientAddr, int nSeek) { - return m_DLStorage.Session_DLStorage_SetSeek(lpszClientAddr, nSeek, bError); + return m_DLStorage.Session_DLStorage_SetSeek(lpszClientAddr, nSeek); } extern "C" BOOL Session_DLStorage_GetAll(SESSION_STORAGEINFO * **pppSt_StorageInfo, int* pInt_ListCount) { diff --git a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp index 5790371..e6bee33 100644 --- a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp +++ b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp @@ -234,12 +234,12 @@ int main(int argc, char** argv) } XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化HTTP下载服务成功,IO线程个数:%d"), st_ServiceCfg.st_XMax.nStorageDLThread); - if (!Session_DLStroage_Init(st_ServiceCfg.st_XLimit.nDLTry)) + if (!Session_DLStroage_Init()) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动下载会话服务失败,错误:%lX"), Session_GetLastError()); goto XENGINE_EXITAPP; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动下载会话服务成功,下载错误重试次数:%d"), st_ServiceCfg.st_XLimit.nDLTry); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动下载会话服务成功,下载限速模式:%d"), st_ServiceCfg.st_XLimit.nLimitMode); if (st_ServiceCfg.st_XCert.bDLEnable) { -- Gitee From 8245a9ee211f736b47645966f962acd3adcf0cb5 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 11 Oct 2022 14:29:01 +0800 Subject: [PATCH 03/22] delete:Session_UPStroage_Close function modify:up session changed ullRWLen from ullFSize --- .../StorageModule_Session/Session_Define.h | 19 +------- .../Session_Stroage/Session_UPStroage.cpp | 47 +++---------------- .../Session_Stroage/Session_UPStroage.h | 1 - .../StorageModule_Session.def | 3 +- XEngine_Source/StorageModule_Session/pch.cpp | 4 -- .../StorageApp_UPLoader.cpp | 10 ++-- 6 files changed, 13 insertions(+), 71 deletions(-) diff --git a/XEngine_Source/StorageModule_Session/Session_Define.h b/XEngine_Source/StorageModule_Session/Session_Define.h index 97f1111..cbeec3f 100644 --- a/XEngine_Source/StorageModule_Session/Session_Define.h +++ b/XEngine_Source/StorageModule_Session/Session_Define.h @@ -20,9 +20,8 @@ typedef struct TCHAR tszFileHash[128]; //文件HASH值 TCHAR tszBuckKey[128]; //BUCKKey __int64x ullCount; //总大小 - __int64x ullRWCount; //读取(写入)总大小 + __int64x ullRWCount; //需要读取(写入)总大小 __int64x ullRWLen; //已经读取(写入)的大小 - __int64x ullFSize; //文件真实大小 __int64x ullPosStart; //开始位置 __int64x ullPosEnd; //结束位置 FILE* pSt_File; @@ -410,18 +409,4 @@ extern "C" BOOL Session_UPStorage_GetAll(SESSION_STORAGEINFO*** pppSt_StorageInf 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr); -/******************************************************************** -函数名称:Session_UPStroage_Close -函数功能:关闭读写文件句柄 - 参数.一:lpszClientAddr - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:要关闭的客户端会话 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -extern "C" BOOL Session_UPStroage_Close(LPCTSTR lpszClientAddr); \ No newline at end of file +extern "C" BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr); \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp index 983768c..5245176 100644 --- a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp +++ b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp @@ -136,6 +136,11 @@ BOOL CSession_UPStroage::Session_UPStroage_Insert(LPCTSTR lpszClientAddr, LPCTST //文件是否存在 if ((m_bResume) && ((0 != nPosStart) || (0 != nPostEnd)) && (0 == _taccess(lpszFileDir, 0))) { + struct _tstat64 st_FStat; + memset(&st_FStat, '\0', sizeof(struct _tstat64)); + _tstat64(stl_MapIterator->second.st_StorageInfo.tszFileDir, &st_FStat); + stl_MapIterator->second.st_StorageInfo.ullRWLen = st_FStat.st_size; + st_Client.st_StorageInfo.pSt_File = _tfopen(lpszFileDir, _T("rb+")); if (NULL == st_Client.st_StorageInfo.pSt_File) { @@ -370,15 +375,8 @@ BOOL CSession_UPStroage::Session_UPStroage_Delete(LPCTSTR lpszClientAddr) { fclose(stl_MapIterator->second.st_StorageInfo.pSt_File); } - if (0 == stl_MapIterator->second.st_StorageInfo.ullFSize) - { - struct _tstat64 st_FStat; - memset(&st_FStat, '\0', sizeof(struct _tstat64)); - _tstat64(stl_MapIterator->second.st_StorageInfo.tszFileDir, &st_FStat); - stl_MapIterator->second.st_StorageInfo.ullFSize = st_FStat.st_size; - } //大小是否足够 - if ((stl_MapIterator->second.st_StorageInfo.ullCount != stl_MapIterator->second.st_StorageInfo.ullFSize) && !m_bResume) + if ((stl_MapIterator->second.st_StorageInfo.ullCount != stl_MapIterator->second.st_StorageInfo.ullRWLen) && !m_bResume) { _tremove(stl_MapIterator->second.st_StorageInfo.tszFileDir); } @@ -386,37 +384,4 @@ BOOL CSession_UPStroage::Session_UPStroage_Delete(LPCTSTR lpszClientAddr) } st_Locker.unlock(); return TRUE; -} -/******************************************************************** -函数名称:Session_UPStroage_Close -函数功能:关闭读写文件句柄 - 参数.一:lpszClientAddr - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:要关闭的客户端会话 -返回值 - 类型:逻辑型 - 意思:是否成功 -备注: -*********************************************************************/ -BOOL CSession_UPStroage::Session_UPStroage_Close(LPCTSTR lpszClientAddr) -{ - Session_IsErrorOccur = FALSE; - - st_Locker.lock(); - unordered_map::iterator stl_MapIterator = stl_MapStroage.find(lpszClientAddr); - if (stl_MapIterator != stl_MapStroage.end()) - { - if (NULL != stl_MapIterator->second.st_StorageInfo.pSt_File) - { - fclose(stl_MapIterator->second.st_StorageInfo.pSt_File); - } - struct _tstat64 st_FStat; - memset(&st_FStat, '\0', sizeof(struct _tstat64)); - _tstat64(stl_MapIterator->second.st_StorageInfo.tszFileDir, &st_FStat); - stl_MapIterator->second.st_StorageInfo.ullFSize = st_FStat.st_size; - } - st_Locker.unlock(); - return TRUE; } \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.h b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.h index 32a7aea..30a30ed 100644 --- a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.h +++ b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.h @@ -30,7 +30,6 @@ public: BOOL Session_UPStroage_Exist(LPCTSTR lpszClientAddr); BOOL Session_UPStorage_GetAll(SESSION_STORAGEINFO*** pppSt_StorageInfo, int* pInt_ListCount); BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr); - BOOL Session_UPStroage_Close(LPCTSTR lpszClientAddr); private: BOOL m_bResume; private: diff --git a/XEngine_Source/StorageModule_Session/StorageModule_Session.def b/XEngine_Source/StorageModule_Session/StorageModule_Session.def index a7fb2b6..1a25879 100644 --- a/XEngine_Source/StorageModule_Session/StorageModule_Session.def +++ b/XEngine_Source/StorageModule_Session/StorageModule_Session.def @@ -24,5 +24,4 @@ EXPORTS Session_UPStroage_Write Session_UPStroage_Exist Session_UPStorage_GetAll - Session_UPStroage_Delete - Session_UPStroage_Close \ No newline at end of file + Session_UPStroage_Delete \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Session/pch.cpp b/XEngine_Source/StorageModule_Session/pch.cpp index 936ef15..ed895ef 100644 --- a/XEngine_Source/StorageModule_Session/pch.cpp +++ b/XEngine_Source/StorageModule_Session/pch.cpp @@ -115,8 +115,4 @@ extern "C" BOOL Session_UPStorage_GetAll(SESSION_STORAGEINFO * **pppSt_StorageIn extern "C" BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr) { return m_UPStorage.Session_UPStroage_Delete(lpszClientAddr); -} -extern "C" BOOL Session_UPStroage_Close(LPCTSTR lpszClientAddr) -{ - return m_UPStorage.Session_UPStroage_Close(lpszClientAddr); } \ 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 f9b9a93..2d90b30 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp @@ -148,7 +148,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in memset(tszStorageKey, '\0', MAX_PATH); memset(&st_StorageBucket, '\0', sizeof(XENGINE_STORAGEBUCKET)); - //是否制定了bucket + //是否指定了bucket if (RfcComponents_HttpHelp_GetField(&pptszListHdr, nHdrCount, lpszStorageKey, st_StorageBucket.tszBuckKey)) { if (!APIHelp_Distributed_UPStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, 5)) @@ -229,18 +229,16 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in memset(tszPassNotify, '\0', MAX_PATH); memset(&st_StorageInfo, '\0', sizeof(SESSION_STORAGEINFO)); - - Session_UPStroage_Close(lpszClientAddr); Session_UPStroage_GetInfo(lpszClientAddr, &st_StorageInfo); //大小是否足够 - if (st_StorageInfo.ullCount != st_StorageInfo.ullFSize) + if (st_StorageInfo.ullCount != st_StorageInfo.ullRWLen) { st_HDRParam.bIsClose = TRUE; st_HDRParam.nHttpCode = 200; Protocol_StoragePacket_UPDown(tszPassNotify, &nPLen, st_StorageInfo.tszBuckKey, st_StorageInfo.tszFileDir, st_StorageInfo.tszClientAddr, st_StorageInfo.ullRWLen, FALSE); RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszPassNotify, nPLen); XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("上传客户端:%s,请求上传文件成功,文件名:%s,总大小:%lld,写入大小:%lld,文件不完整,需要等待断点续传完毕"), lpszClientAddr, tszFileDir, st_StorageInfo.ullCount, st_StorageInfo.ullFSize); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _T("上传客户端:%s,请求上传文件成功,文件名:%s,总大小:%lld,写入大小:%lld,文件不完整,需要等待断点续传完毕"), lpszClientAddr, tszFileDir, st_StorageInfo.ullCount, st_StorageInfo.ullRWLen); return TRUE; } int nHashLen = 0; @@ -253,7 +251,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in _tcscpy(st_ProtocolFile.st_ProtocolFile.tszFilePath, st_StorageBucket.tszFilePath); _tcscpy(st_ProtocolFile.st_ProtocolFile.tszFileName, pSt_HTTPParam->tszHttpUri + 1); _tcscpy(st_ProtocolFile.tszBuckKey, st_StorageBucket.tszBuckKey); - st_ProtocolFile.st_ProtocolFile.nFileSize = st_StorageInfo.ullFSize; + st_ProtocolFile.st_ProtocolFile.nFileSize = st_StorageInfo.ullRWLen; OPenSsl_Api_Digest(tszFileDir, tszHashStr, &nHashLen, TRUE, st_ServiceCfg.st_XStorage.nHashMode); BaseLib_OperatorString_StrToHex((char*)tszHashStr, nHashLen, st_ProtocolFile.st_ProtocolFile.tszFileHash); -- Gitee From af4ade73511b37318551ebb944b59639974cb50c Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 19 Oct 2022 14:45:35 +0800 Subject: [PATCH 04/22] added:parse speed limit for protocol module --- .../Protocol_Parse/Protocol_StorageParse.cpp | 57 +++++++++++++++++++ .../Protocol_Parse/Protocol_StorageParse.h | 1 + .../StorageModule_Protocol.def | 1 + .../StorageProtocol_Define.h | 29 ++++++++++ XEngine_Source/StorageModule_Protocol/pch.cpp | 4 ++ 5 files changed, 92 insertions(+) diff --git a/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.cpp b/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.cpp index d9a8c4c..145d013 100644 --- a/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.cpp +++ b/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.cpp @@ -360,4 +360,61 @@ BOOL CProtocol_StorageParse::Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBu *pInt_FileSize = st_JsonRoot["nFileSize"].asInt64(); return TRUE; +} +/******************************************************************** +函数名称:Protocol_StorageParse_SpeedLimit +函数功能: + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的内容 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要解析的大小 + 参数.三:pInt_Code + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出回复值 + 参数.四:pInt_Limit + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出回复的限制 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CProtocol_StorageParse::Protocol_StorageParse_SpeedLimit(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_Code, int* pInt_Limit) +{ + Protocol_IsErrorOccur = FALSE; + + if ((NULL == lpszMsgBuffer) || (NULL == pInt_Limit)) + { + Protocol_IsErrorOccur = TRUE; + Protocol_dwErrorCode = ERROR_XENGINE_STORAGE_PROTOCOL_PARAMENT; + return FALSE; + } + Json::Value st_JsonRoot; + Json::CharReaderBuilder st_JsonBuild; + Json::CharReader* pSt_JsonReader(st_JsonBuild.newCharReader()); + + JSONCPP_STRING st_JsonError; + //解析JSON + if (!pSt_JsonReader->parse(lpszMsgBuffer, lpszMsgBuffer + _tcslen(lpszMsgBuffer), &st_JsonRoot, &st_JsonError)) + { + Protocol_IsErrorOccur = TRUE; + Protocol_dwErrorCode = ERROR_XENGINE_STORAGE_PROTOCOL_PARSE; + return FALSE; + } + delete pSt_JsonReader; + pSt_JsonReader = NULL; + + *pInt_Code = st_JsonRoot["code"].asInt(); + *pInt_Limit = st_JsonRoot["nLimitSpeed"].asInt(); + return TRUE; } \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.h b/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.h index 474c524..515b4e5 100644 --- a/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.h +++ b/XEngine_Source/StorageModule_Protocol/Protocol_Parse/Protocol_StorageParse.h @@ -21,4 +21,5 @@ public: BOOL Protocol_StorageParse_ReportFile(LPCTSTR lpszMsgBuffer, int nMsgLen, XSTORAGECORE_DBFILE*** pppSt_DBFile, int* pInt_ListCount); BOOL Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBuffer, TCHAR* ptszUserDir, TCHAR* ptszBuckKey, int* pInt_Operator); BOOL Protocol_StorageParse_ProxyNotify(LPCTSTR lpszMsgBuffer, int nMsgLen, TCHAR* ptszClientAddr, TCHAR* ptszBuckKey, TCHAR* ptszFileName, TCHAR* ptszFileHash, __int64x* pInt_FileSize); + BOOL Protocol_StorageParse_SpeedLimit(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_Code, int* pInt_Limit); }; diff --git a/XEngine_Source/StorageModule_Protocol/StorageModule_Protocol.def b/XEngine_Source/StorageModule_Protocol/StorageModule_Protocol.def index 711435e..1fd3d9a 100644 --- a/XEngine_Source/StorageModule_Protocol/StorageModule_Protocol.def +++ b/XEngine_Source/StorageModule_Protocol/StorageModule_Protocol.def @@ -8,6 +8,7 @@ EXPORTS Protocol_StorageParse_QueryFile Protocol_StorageParse_ReportFile Protocol_StorageParse_DirOperator + Protocol_StorageParse_SpeedLimit Protocol_StoragePacket_BasicAuth Protocol_StoragePacket_UPDown diff --git a/XEngine_Source/StorageModule_Protocol/StorageProtocol_Define.h b/XEngine_Source/StorageModule_Protocol/StorageProtocol_Define.h index 6981845..afd4104 100644 --- a/XEngine_Source/StorageModule_Protocol/StorageProtocol_Define.h +++ b/XEngine_Source/StorageModule_Protocol/StorageProtocol_Define.h @@ -158,6 +158,35 @@ extern "C" BOOL Protocol_StorageParse_ReportFile(LPCTSTR lpszMsgBuffer, int nMsg 备注: *********************************************************************/ extern "C" BOOL Protocol_StorageParse_DirOperator(LPCSTR lpszMsgBuffer, CHAR * ptszUserDir, TCHAR * ptszBuckKey, int* pInt_Operator); +/******************************************************************** +函数名称:Protocol_StorageParse_SpeedLimit +函数功能: + 参数.一:lpszMsgBuffer + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:输入要解析的内容 + 参数.二:nMsgLen + In/Out:In + 类型:整数型 + 可空:N + 意思:输入要解析的大小 + 参数.三:pInt_Code + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出回复值 + 参数.四:pInt_Limit + In/Out:Out + 类型:整数型指针 + 可空:N + 意思:输出回复的限制 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Protocol_StorageParse_SpeedLimit(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_Code, int* pInt_Limit); /************************************************************************/ /* 打包协议导出 */ /************************************************************************/ diff --git a/XEngine_Source/StorageModule_Protocol/pch.cpp b/XEngine_Source/StorageModule_Protocol/pch.cpp index 3a34d1d..f8a1ae7 100644 --- a/XEngine_Source/StorageModule_Protocol/pch.cpp +++ b/XEngine_Source/StorageModule_Protocol/pch.cpp @@ -45,6 +45,10 @@ extern "C" BOOL Protocol_StorageParse_DirOperator(LPCTSTR lpszMsgBuffer, TCHAR * { return m_StorageParse.Protocol_StorageParse_DirOperator(lpszMsgBuffer, ptszUserDir, ptszBuckKey, pInt_Operator); } +extern "C" BOOL Protocol_StorageParse_SpeedLimit(LPCTSTR lpszMsgBuffer, int nMsgLen, int* pInt_Code, int* pInt_Limit) +{ + return m_StorageParse.Protocol_StorageParse_SpeedLimit(lpszMsgBuffer, nMsgLen, pInt_Code, pInt_Limit); +} /************************************************************************/ /* 打包协议导出 */ /************************************************************************/ -- Gitee From f808d44763be3414246cddaa12595e9cd78bfffb Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 19 Oct 2022 14:46:27 +0800 Subject: [PATCH 05/22] added:set limit speed info for session module --- .../StorageModule_Session/Session_Define.h | 10 +++++++++- .../Session_Stroage/Session_DLStroage.cpp | 13 ++++++++++++- .../Session_Stroage/Session_DLStroage.h | 2 +- XEngine_Source/StorageModule_Session/pch.cpp | 4 ++-- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/XEngine_Source/StorageModule_Session/Session_Define.h b/XEngine_Source/StorageModule_Session/Session_Define.h index cbeec3f..819eac6 100644 --- a/XEngine_Source/StorageModule_Session/Session_Define.h +++ b/XEngine_Source/StorageModule_Session/Session_Define.h @@ -24,6 +24,9 @@ typedef struct __int64x ullRWLen; //已经读取(写入)的大小 __int64x ullPosStart; //开始位置 __int64x ullPosEnd; //结束位置 + + int nLimit; //限制工具 + XHANDLE xhToken; FILE* pSt_File; }SESSION_STORAGEINFO; ////////////////////////////////////////////////////////////////////////// @@ -139,12 +142,17 @@ extern "C" BOOL Session_DLStroage_Destory(); 类型:常量字符指针 可空:Y 意思:文件的HASH值 + 参数.九:xhToken + In/Out:In + 类型:句柄 + 可空:Y + 意思:输入限制器句柄 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Session_DLStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszBuckKey, LPCTSTR lpszFileDir, __int64x * pInt_Count, __int64x * pInt_LeftCount, int nPosStart = 0, int nPostEnd = 0, LPCTSTR lpszFileHash = NULL); +extern "C" BOOL Session_DLStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszBuckKey, LPCTSTR lpszFileDir, __int64x * pInt_Count, __int64x * pInt_LeftCount, int nPosStart = 0, int nPostEnd = 0, LPCTSTR lpszFileHash = NULL, int nLimit = 0, XHANDLE xhToken = NULL); /******************************************************************** 函数名称:Session_DLStroage_GetBuffer 函数功能:获得下载器中指定缓冲区 diff --git a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.cpp b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.cpp index 5c23e17..5fa93a4 100644 --- a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.cpp +++ b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.cpp @@ -95,12 +95,17 @@ BOOL CSession_DLStroage::Session_DLStroage_Destory() 类型:常量字符指针 可空:Y 意思:文件的HASH值 + 参数.九:xhToken + In/Out:In + 类型:句柄 + 可空:Y + 意思:输入限制器句柄 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -BOOL CSession_DLStroage::Session_DLStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszBuckKey, LPCTSTR lpszFileDir, __int64x* pInt_Count, __int64x* pInt_LeftCount, int nPosStart /* = 0 */, int nPostEnd /* = 0 */, LPCTSTR lpszFileHash /* = NULL */) +BOOL CSession_DLStroage::Session_DLStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszBuckKey, LPCTSTR lpszFileDir, __int64x* pInt_Count, __int64x* pInt_LeftCount, int nPosStart /* = 0 */, int nPostEnd /* = 0 */, LPCTSTR lpszFileHash /* = NULL */, int nLimit /* = 0 */, XHANDLE xhToken /* = NULL */) { Session_IsErrorOccur = FALSE; @@ -143,6 +148,12 @@ BOOL CSession_DLStroage::Session_DLStroage_Insert(LPCTSTR lpszClientAddr, LPCTST { _tcscpy(st_Client.tszFileHash, lpszFileHash); } + //设置限制 + if (nLimit > 0) + { + st_Client.nLimit = nLimit; + st_Client.xhToken = xhToken; + } //填充下载信息 st_Client.pSt_File = _tfopen(lpszFileDir, _T("rb")); if (NULL == st_Client.pSt_File) diff --git a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.h b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.h index cc1394b..81c08d7 100644 --- a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.h +++ b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_DLStroage.h @@ -19,7 +19,7 @@ public: public: BOOL Session_DLStroage_Init(); BOOL Session_DLStroage_Destory(); - BOOL Session_DLStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszBuckKey, LPCTSTR lpszFileDir, __int64x* pInt_Count, __int64x* pInt_LeftCount, int nPosStart = 0, int nPostEnd = 0, LPCTSTR lpszFileHash = NULL); + BOOL Session_DLStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszBuckKey, LPCTSTR lpszFileDir, __int64x* pInt_Count, __int64x* pInt_LeftCount, int nPosStart = 0, int nPostEnd = 0, LPCTSTR lpszFileHash = NULL, int nLimit = 0, XHANDLE xhToken = NULL); BOOL Session_DLStroage_GetBuffer(LPCTSTR lpszClientAddr, TCHAR* ptszMsgBuffer, int* pInt_MsgLen); BOOL Session_DLStroage_GetInfo(LPCTSTR lpszClientAddr, SESSION_STORAGEINFO* pSt_StorageInfo); BOOL Session_DLStroage_GetCount(int* pInt_ListCount); diff --git a/XEngine_Source/StorageModule_Session/pch.cpp b/XEngine_Source/StorageModule_Session/pch.cpp index ed895ef..6a91199 100644 --- a/XEngine_Source/StorageModule_Session/pch.cpp +++ b/XEngine_Source/StorageModule_Session/pch.cpp @@ -56,9 +56,9 @@ extern "C" BOOL Session_DLStroage_Destory() { return m_DLStorage.Session_DLStroage_Destory(); } -extern "C" BOOL Session_DLStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszBuckKey, LPCTSTR lpszFileDir, __int64x * pInt_Count, __int64x * pInt_LeftCount, int nPosStart, int nPostEnd, LPCTSTR lpszFileHash) +extern "C" BOOL Session_DLStroage_Insert(LPCTSTR lpszClientAddr, LPCTSTR lpszBuckKey, LPCTSTR lpszFileDir, __int64x * pInt_Count, __int64x * pInt_LeftCount, int nPosStart, int nPostEnd, LPCTSTR lpszFileHash, int nLimit, XHANDLE xhToken) { - return m_DLStorage.Session_DLStroage_Insert(lpszClientAddr, lpszBuckKey, lpszFileDir, pInt_Count, pInt_LeftCount, nPosStart, nPostEnd, lpszFileHash); + return m_DLStorage.Session_DLStroage_Insert(lpszClientAddr, lpszBuckKey, lpszFileDir, pInt_Count, pInt_LeftCount, nPosStart, nPostEnd, lpszFileHash, nLimit, xhToken); } extern "C" BOOL Session_DLStroage_GetBuffer(LPCTSTR lpszClientAddr, TCHAR * ptszMsgBuffer, int* pInt_MsgLen) { -- Gitee From eef27bb2c19b5603b3d03a718e59a6a253140bf4 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 19 Oct 2022 14:47:54 +0800 Subject: [PATCH 06/22] added:single user speed limit for download --- .../StorageApp_Download.cpp | 43 ++++++++++++++++--- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp index a98ed28..cc29793 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp @@ -46,9 +46,23 @@ void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPV int nListCount = 0; __int64u nTimeWait = 0; TCHAR tszMsgBuffer[4096]; + SESSION_STORAGEINFO st_StorageInfo; memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); + memset(&st_StorageInfo, '\0', sizeof(SESSION_STORAGEINFO)); + Session_DLStroage_GetInfo(lpszClientAddr, &st_StorageInfo); + if (st_StorageInfo.nLimit > 0) + { + __int64u nLimitTime = 0; + Algorithm_Calculation_GetSDFlow(st_StorageInfo.xhToken, &nLimitTime); + if (nLimitTime > st_StorageInfo.nLimit) + { + //当前平均速度大于限制速度,不做处理 + NetCore_TCPXCore_CBSendEx(xhNetDownload, lpszClientAddr); + return; + } + } if (Session_DLStroage_GetBuffer(lpszClientAddr, tszMsgBuffer, &nMsgLen)) { if (nMsgLen <= 0) @@ -80,6 +94,10 @@ void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPV } else { + if (2 == st_ServiceCfg.st_XLimit.nLimitMode && st_StorageInfo.nLimit > 0) + { + Algorithm_Calculation_ADDSDFlow(st_StorageInfo.xhToken, nMsgLen); + } XEngine_Task_SendDownload(lpszClientAddr, tszMsgBuffer, nMsgLen); } } @@ -87,16 +105,21 @@ void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPV { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("下载客户端:%s,获取用户对应文件内容失败,错误:%lX"), lpszClientAddr, Session_GetLastError()); } - //限速 - Session_DLStroage_GetCount(&nListCount); - Algorithm_Calculation_SleepFlow(xhLimit, &nTimeWait, st_ServiceCfg.st_XLimit.nMaxDNLoader, nListCount, 4096); - //WINDOWS下sleep_for精度可能不准 - std::this_thread::sleep_for(std::chrono::microseconds(nTimeWait)); + //限速,1为全局限速 + if (1 == st_ServiceCfg.st_XLimit.nLimitMode) + { + Session_DLStroage_GetCount(&nListCount); + Algorithm_Calculation_SleepFlow(xhLimit, &nTimeWait, st_ServiceCfg.st_XLimit.nMaxDNLoader, nListCount, 4096); + //WINDOWS下sleep_for精度可能不准 + std::this_thread::sleep_for(std::chrono::microseconds(nTimeWait)); + } } BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, TCHAR** pptszListHdr, int nHdrCount) { int nSDLen = 2048; + int nLimit = 0; + XHANDLE xhLimit = NULL; __int64x ullCount = 0; //总大小 __int64x ullSize = 0; //需要下载大小 TCHAR tszSDBuffer[2048]; @@ -140,6 +163,7 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in if (_tcslen(st_ServiceCfg.st_XProxy.st_XProxyAuth.tszAuthProxy) > 0) { int nBLen = 0; + int nCode = 0; int nResponseCode = 0; TCHAR* ptszBody = NULL; @@ -155,8 +179,9 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("下载客户端:%s,用户验证失败,用户名:%s,密码:%s,错误码:%d,错误内容:%s"), tszUserName, tszUserPass, tszUserPass, nResponseCode, ptszBody); } + Protocol_StorageParse_SpeedLimit(ptszBody, nSDLen, &nCode, &nLimit); BaseLib_OperatorMemory_FreeCStyle((VOID**)&ptszBody); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("下载客户端:%s,代理服务:%s 验证通过,用户名:%s,密码:%s"), lpszClientAddr, st_ServiceCfg.st_XProxy.st_XProxyAuth.tszAuthProxy, tszUserName, tszUserPass); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("下载客户端:%s,代理服务:%s 验证通过,用户名:%s,密码:%s,值:%d"), lpszClientAddr, st_ServiceCfg.st_XProxy.st_XProxyAuth.tszAuthProxy, tszUserName, tszUserPass, nCode); } else { @@ -236,8 +261,12 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in OPenSsl_Api_Digest(tszFileDir, tszHashKey, &nHashLen, TRUE, st_ServiceCfg.st_XStorage.nHashMode); BaseLib_OperatorString_StrToHex((char*)tszHashKey, nHashLen, tszHashStr); BaseLib_OperatorString_GetFileAndPath(tszFileDir, NULL, NULL, NULL, st_HDRParam.tszMimeType); + if (nLimit > 0) + { + xhLimit = Algorithm_Calculation_Create(); + } //插入数据 - if (!Session_DLStroage_Insert(lpszClientAddr, st_StorageBucket.tszBuckKey, tszFileDir, &ullCount, &ullSize, nPosStart, nPosEnd, tszHashStr)) + if (!Session_DLStroage_Insert(lpszClientAddr, st_StorageBucket.tszBuckKey, tszFileDir, &ullCount, &ullSize, nPosStart, nPosEnd, tszHashStr, nLimit, xhLimit)) { st_HDRParam.bIsClose = TRUE; st_HDRParam.nHttpCode = 404; -- Gitee From c70cfc33e78c638ebb2975e04ab54033ff836f66 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 21 Oct 2022 09:57:01 +0800 Subject: [PATCH 07/22] update:match xengine v7.42 --- .../XEngine_StorageApp/StorageApp_Hdr.h | 6 ++-- .../XEngine_StorageApp/XEngine_StorageApp.cpp | 29 ++++++++++--------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h b/XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h index acebad3..712dca8 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h @@ -77,9 +77,9 @@ extern XHANDLE xhNetDownload; extern XHANDLE xhNetUPLoader; extern XHANDLE xhNetCenter; -extern XNETHANDLE xhUPPool; -extern XNETHANDLE xhDLPool; -extern XNETHANDLE xhCTPool; +extern XHANDLE xhUPPool; +extern XHANDLE xhDLPool; +extern XHANDLE xhCTPool; extern XHANDLE xhDLSsl; extern XHANDLE xhUPSsl; diff --git a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp index e6bee33..ffb41f8 100644 --- a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp +++ b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp @@ -3,17 +3,17 @@ BOOL bIsRun = FALSE; XLOG xhLog = NULL; -XHANDLE xhHBDownload = 0; -XHANDLE xhHBUPLoader = 0; -XHANDLE xhHBCenter = 0; +XHANDLE xhHBDownload = NULL; +XHANDLE xhHBUPLoader = NULL; +XHANDLE xhHBCenter = NULL; -XHANDLE xhNetDownload = 0; -XHANDLE xhNetUPLoader = 0; -XHANDLE xhNetCenter = 0; +XHANDLE xhNetDownload = NULL; +XHANDLE xhNetUPLoader = NULL; +XHANDLE xhNetCenter = NULL; -XNETHANDLE xhUPPool = 0; -XNETHANDLE xhDLPool = 0; -XNETHANDLE xhCTPool = 0; +XHANDLE xhUPPool = NULL; +XHANDLE xhDLPool = NULL; +XHANDLE xhCTPool = NULL; XHANDLE xhDLSsl = NULL; XHANDLE xhUPSsl = NULL; @@ -164,7 +164,7 @@ int main(int argc, char** argv) signal(SIGABRT, ServiceApp_Stop); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,初始化服务器信号管理成功")); - xhLimit = Algorithm_Calculation_Create(5); + xhLimit = Algorithm_Calculation_Create(); if (NULL == xhLimit) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,创建流量限速对象模式失败,错误:%lX"), Algorithm_GetLastError()); @@ -275,7 +275,8 @@ int main(int argc, char** argv) ppSt_ListDLThread[i]->lParam = pInt_Pos; ppSt_ListDLThread[i]->fpCall_ThreadsTask = XEngine_Download_HTTPThread; } - if (!ManagePool_Thread_NQCreate(&xhDLPool, &ppSt_ListDLThread, st_ServiceCfg.st_XMax.nStorageDLThread)) + xhDLPool = ManagePool_Thread_NQCreate(&ppSt_ListDLThread, st_ServiceCfg.st_XMax.nStorageDLThread); + if (NULL == xhDLPool) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动HTTP下载处理线程池失败,错误:%d"), errno); goto XENGINE_EXITAPP; @@ -334,7 +335,8 @@ int main(int argc, char** argv) ppSt_ListUPThread[i]->lParam = pInt_Pos; ppSt_ListUPThread[i]->fpCall_ThreadsTask = XEngine_UPLoader_HTTPThread; } - if (!ManagePool_Thread_NQCreate(&xhUPPool, &ppSt_ListUPThread, st_ServiceCfg.st_XMax.nStorageDLThread)) + xhUPPool = ManagePool_Thread_NQCreate(&ppSt_ListUPThread, st_ServiceCfg.st_XMax.nStorageDLThread); + if (NULL == xhUPPool) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动HTTP上传处理线程池失败,错误:%d"), errno); goto XENGINE_EXITAPP; @@ -386,7 +388,8 @@ int main(int argc, char** argv) ppSt_ListCTThread[i]->lParam = pInt_Pos; ppSt_ListCTThread[i]->fpCall_ThreadsTask = XEngine_Center_HTTPThread; } - if (!ManagePool_Thread_NQCreate(&xhCTPool, &ppSt_ListCTThread, st_ServiceCfg.st_XMax.nCenterThread)) + xhCTPool = ManagePool_Thread_NQCreate(&ppSt_ListCTThread, st_ServiceCfg.st_XMax.nCenterThread); + if (NULL == xhCTPool) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动HTTP业务处理线程池失败,错误:%d"), errno); goto XENGINE_EXITAPP; -- Gitee From e461441cd8293832adac8f7b1f91fd627ed18204 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 21 Oct 2022 14:03:20 +0800 Subject: [PATCH 08/22] fixed:build warn --- XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp | 2 +- XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp | 4 ++-- XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp | 4 ++-- XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp index 5aee611..4dad86e 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp @@ -83,7 +83,7 @@ BOOL XEngine_Task_HttpCenter(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, int TCHAR* ptszBody = NULL; Protocol_StoragePacket_BasicAuth(pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, lpszClientAddr, tszUserName, tszUserPass, tszSDBuffer, &nSDLen); - APIHelp_HttpRequest_Post(st_ServiceCfg.st_XProxy.st_XProxyAuth.tszAuthProxy, tszSDBuffer, &nResponseCode, &ptszBody, &nBLen); + APIHelp_HttpRequest_Custom(_T("POST"), st_ServiceCfg.st_XProxy.st_XProxyAuth.tszAuthProxy, tszSDBuffer, &nResponseCode, &ptszBody, &nBLen); if (200 != nResponseCode) { st_HDRParam.bIsClose = TRUE; diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp index cc29793..1d1993c 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp @@ -79,7 +79,7 @@ void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPV Session_DLStroage_GetInfo(lpszClientAddr, &st_StorageInfo); Protocol_StoragePacket_UPDown(tszProxyStr, &nPLen, st_StorageInfo.tszFileDir, st_StorageInfo.tszBuckKey, st_StorageInfo.tszClientAddr, st_StorageInfo.ullRWCount, TRUE, st_StorageInfo.tszFileHash); - if (APIHelp_HttpRequest_Post(st_ServiceCfg.st_XProxy.st_XProxyPass.tszDLPass, tszProxyStr, &nHttpCode)) + if (APIHelp_HttpRequest_Custom(_T("POST"), st_ServiceCfg.st_XProxy.st_XProxyPass.tszDLPass, tszProxyStr, &nHttpCode)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("下载客户端:%s,请求完成通知返回值:%d,文件:%s,地址:%s"), lpszClientAddr, nHttpCode, st_StorageInfo.tszFileDir, st_ServiceCfg.st_XProxy.st_XProxyPass.tszDLPass); } @@ -168,7 +168,7 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in TCHAR* ptszBody = NULL; Protocol_StoragePacket_BasicAuth(pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, lpszClientAddr, tszUserName, tszUserPass, tszSDBuffer, &nSDLen); - APIHelp_HttpRequest_Post(st_ServiceCfg.st_XProxy.st_XProxyAuth.tszAuthProxy, tszSDBuffer, &nResponseCode, &ptszBody, &nBLen); + APIHelp_HttpRequest_Custom(_T("POST"), st_ServiceCfg.st_XProxy.st_XProxyAuth.tszAuthProxy, tszSDBuffer, &nResponseCode, &ptszBody, &nBLen); if (200 != nResponseCode) { st_HDRParam.bIsClose = TRUE; diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp index 2d90b30..16e905c 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp @@ -88,7 +88,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in TCHAR* ptszBody = NULL; Protocol_StoragePacket_BasicAuth(pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, lpszClientAddr, tszUserName, tszUserPass, tszSDBuffer, &nSDLen); - APIHelp_HttpRequest_Post(st_ServiceCfg.st_XProxy.st_XProxyAuth.tszAuthProxy, tszSDBuffer, &nResponseCode, &ptszBody, &nBLen); + APIHelp_HttpRequest_Custom(_T("POST"), st_ServiceCfg.st_XProxy.st_XProxyAuth.tszAuthProxy, tszSDBuffer, &nResponseCode, &ptszBody, &nBLen); if (200 != nResponseCode) { st_HDRParam.bIsClose = TRUE; @@ -307,7 +307,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in if (st_ServiceCfg.st_XProxy.st_XProxyPass.bUPPass) { int nHttpCode = 0; - if (APIHelp_HttpRequest_Post(st_ServiceCfg.st_XProxy.st_XProxyPass.tszUPPass, tszPassNotify, &nHttpCode)) + if (APIHelp_HttpRequest_Custom(_T("POST"), st_ServiceCfg.st_XProxy.st_XProxyPass.tszUPPass, tszPassNotify, &nHttpCode)) { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("上传客户端:%s,请求完成通知返回值:%d,文件:%s,地址:%s"), lpszClientAddr, nHttpCode, st_StorageInfo.tszFileDir, st_ServiceCfg.st_XProxy.st_XProxyPass.tszUPPass); } diff --git a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp index ffb41f8..28f09fb 100644 --- a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp +++ b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp @@ -137,7 +137,7 @@ int main(int argc, char** argv) memset(tszAddr, '\0', sizeof(tszAddr)); _stprintf(tszAddr, _T("Http://127.0.0.1:%d/Api/Manage/Config"), st_ServiceCfg.nCenterPort); - APIHelp_HttpRequest_Post(tszAddr); + APIHelp_HttpRequest_Custom(_T("POST"), tszAddr); return 0; } st_XLogConfig.XLog_MaxBackupFile = st_ServiceCfg.st_XLog.nMaxCount; -- Gitee From e4e78ebfcc38e27350386eb564130f63ec6e8aa7 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 21 Oct 2022 16:13:00 +0800 Subject: [PATCH 09/22] modify:upload bucket is changed from http header to url parament --- .../APIHelp_Api/APIHelp_Api.cpp | 57 +++++++++++++++++++ .../APIHelp_Api/APIHelp_Api.h | 1 + .../StorageModule_APIHelp/APIHelp_Define.h | 31 +++++++++- .../StorageModule_APIHelp.def | 3 +- XEngine_Source/StorageModule_APIHelp/pch.cpp | 4 ++ .../StorageApp_UPLoader.cpp | 26 +++++++-- 6 files changed, 114 insertions(+), 8 deletions(-) diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp b/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp index 22ee768..98db17c 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp @@ -282,5 +282,62 @@ BOOL CAPIHelp_Api::APIHelp_Api_GetIPInfo(LPCTSTR lpszMsgBuffer, int nMsgLen, XEN _tcscpy(pSt_IPAddrInfo->tszIPISP, st_JsonObject["tszIPISP"].asCString()); _tcscpy(pSt_IPAddrInfo->tszIPTime, st_JsonObject["tszIPTime"].asCString()); + return TRUE; +} +/******************************************************************** +函数名称:APIHelp_Api_UrlParse +函数功能:URL参数解析函数 + 参数.一:ppptszList + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要解析的列表 + 参数.二:nListCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入列表个数 + 参数.三:ptszFileName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出文件名 + 参数.四:ptszKeyName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出存储的bucket +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CAPIHelp_Api::APIHelp_Api_UrlParse(TCHAR*** ppptszList, int nListCount, TCHAR* ptszFileName, TCHAR* ptszKeyName) +{ + APIHelp_IsErrorOccur = FALSE; + + LPCTSTR lpszHDRFile = _T("filename"); + LPCTSTR lpszHDRKey = _T("storeagekey"); + LPCTSTR lpszHDRPath = _T("path"); + + for (int i = 0; i < nListCount; i++) + { + TCHAR tszKey[MAX_PATH]; + TCHAR tszValue[MAX_PATH]; + + memset(tszKey, '\0', MAX_PATH); + memset(tszValue, '\0', MAX_PATH); + + BaseLib_OperatorString_GetKeyValue((*ppptszList)[i], _T("="), tszKey, tszValue); + + if (0 == _tcsnicmp(lpszHDRFile, tszKey, _tcslen(lpszHDRFile))) + { + OPenSsl_Codec_UrlDeCodec(tszValue, _tcslen(tszValue), ptszFileName); + } + else if (0 == _tcsnicmp(lpszHDRKey, tszKey, _tcslen(lpszHDRKey))) + { + _tcscpy(ptszKeyName, tszValue); + } + } 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 93609c5..d1f0799 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.h +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.h @@ -22,6 +22,7 @@ public: BOOL APIHelp_Api_RangeFile(int* pInt_SPos, int* pInt_EPos, __int64x* pInt_Count, TCHAR** pptszListHdr, int nHdrCount); BOOL APIHelp_Api_VerHash(LPCTSTR lpszFileHash, TCHAR** pptszListHdr, int nHdrCount); BOOL APIHelp_Api_GetIPInfo(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_IPADDRINFO* pSt_IPAddrInfo); + BOOL APIHelp_Api_UrlParse(TCHAR*** ppptszList, int nListCount, TCHAR* ptszFileName, TCHAR* ptszKeyName); 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 ffed44d..b32056a 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h @@ -260,4 +260,33 @@ extern "C" BOOL APIHelp_Api_VerHash(LPCTSTR lpszFileHash, TCHAR** pptszListHdr, 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL APIHelp_Api_GetIPInfo(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_IPADDRINFO* pSt_IPAddrInfo); \ No newline at end of file +extern "C" BOOL APIHelp_Api_GetIPInfo(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_IPADDRINFO* pSt_IPAddrInfo); +/******************************************************************** +函数名称:APIHelp_Api_UrlParse +函数功能:URL参数解析函数 + 参数.一:ppptszList + In/Out:In + 类型:三级指针 + 可空:N + 意思:输入要解析的列表 + 参数.二:nListCount + In/Out:In + 类型:整数型 + 可空:N + 意思:输入列表个数 + 参数.三:ptszFileName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出文件名 + 参数.四:ptszKeyName + In/Out:Out + 类型:字符指针 + 可空:N + 意思:输出存储的bucket +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL APIHelp_Api_UrlParse(TCHAR*** ppptszList, int nListCount, TCHAR* ptszFileName, TCHAR* ptszKeyName); \ 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 7bbae8d..08ba7ab 100644 --- a/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def +++ b/XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def @@ -12,4 +12,5 @@ EXPORTS APIHelp_Api_ProxyAuth APIHelp_Api_RangeFile APIHelp_Api_VerHash - APIHelp_Api_GetIPInfo \ No newline at end of file + APIHelp_Api_GetIPInfo + APIHelp_Api_UrlParse \ No newline at end of file diff --git a/XEngine_Source/StorageModule_APIHelp/pch.cpp b/XEngine_Source/StorageModule_APIHelp/pch.cpp index f8c7bce..9bcc553 100644 --- a/XEngine_Source/StorageModule_APIHelp/pch.cpp +++ b/XEngine_Source/StorageModule_APIHelp/pch.cpp @@ -69,4 +69,8 @@ extern "C" BOOL APIHelp_Api_VerHash(LPCTSTR lpszFileHash, TCHAR * *pptszListHdr, extern "C" BOOL APIHelp_Api_GetIPInfo(LPCTSTR lpszMsgBuffer, int nMsgLen, XENGINE_IPADDRINFO * pSt_IPAddrInfo) { return m_APIHelp.APIHelp_Api_GetIPInfo(lpszMsgBuffer, nMsgLen, pSt_IPAddrInfo); +} +extern "C" BOOL APIHelp_Api_UrlParse(TCHAR * **ppptszList, int nListCount, TCHAR * ptszFileName, TCHAR * ptszKeyName) +{ + return m_APIHelp.APIHelp_Api_UrlParse(ppptszList, nListCount, ptszFileName, ptszKeyName); } \ 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 16e905c..5557bd2 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp @@ -142,14 +142,28 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in int nRVMode = 0; int nRVCount = 0; int nHDSize = 0; - TCHAR tszStorageKey[MAX_PATH]; + TCHAR tszFileName[MAX_PATH]; XENGINE_STORAGEBUCKET st_StorageBucket; - LPCTSTR lpszStorageKey = _T("StorageKey"); - memset(tszStorageKey, '\0', MAX_PATH); + memset(tszFileName, '\0', MAX_PATH); memset(&st_StorageBucket, '\0', sizeof(XENGINE_STORAGEBUCKET)); + //解析参数 + TCHAR** pptszParamList; + int nParamCount = 0; + RfcComponents_HttpHelp_GetParament(pSt_HTTPParam->tszHttpUri, &pptszParamList, &nParamCount); + if (nParamCount < 1) + { + st_HDRParam.nHttpCode = 413; + RfcComponents_HttpServer_SendMsgEx(xhUPHttp, tszSDBuffer, &nSDLen, &st_HDRParam); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPUPLOADER); + BaseLib_OperatorMemory_Free((XPPPMEM)&pptszParamList, nParamCount); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("上传客户端:%s,请求上传文件失败,提供的参数:%s 不正确,错误:%lX"), lpszClientAddr, pSt_HTTPParam->tszHttpUri, HttpServer_GetLastError()); + return FALSE; + } + APIHelp_Api_UrlParse(&pptszParamList, nParamCount, tszFileName, st_StorageBucket.tszBuckKey); //是否指定了bucket - if (RfcComponents_HttpHelp_GetField(&pptszListHdr, nHdrCount, lpszStorageKey, st_StorageBucket.tszBuckKey)) + //http://127.0.0.1:5102/api?filename=1.txt&storeagekey=storagekey1 + if (_tcslen(st_StorageBucket.tszBuckKey) > 0) { if (!APIHelp_Distributed_UPStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, 5)) { @@ -175,7 +189,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in return FALSE; } } - _stprintf(tszFileDir, _T("%s%s"), st_StorageBucket.tszFilePath, pSt_HTTPParam->tszHttpUri); + _stprintf(tszFileDir, _T("%s/%s"), st_StorageBucket.tszFilePath, tszFileName); if (!Session_UPStroage_Exist(lpszClientAddr)) { @@ -249,7 +263,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in memset(&st_ProtocolFile, '\0', sizeof(XSTORAGECORE_DBFILE)); _tcscpy(st_ProtocolFile.st_ProtocolFile.tszFilePath, st_StorageBucket.tszFilePath); - _tcscpy(st_ProtocolFile.st_ProtocolFile.tszFileName, pSt_HTTPParam->tszHttpUri + 1); + _tcscpy(st_ProtocolFile.st_ProtocolFile.tszFileName, tszFileName); _tcscpy(st_ProtocolFile.tszBuckKey, st_StorageBucket.tszBuckKey); st_ProtocolFile.st_ProtocolFile.nFileSize = st_StorageInfo.ullRWLen; -- Gitee From 6a05e100be911aeefb8b6cfdc4cba8093450daf9 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Mon, 24 Oct 2022 09:31:59 +0800 Subject: [PATCH 10/22] delete:unused select bucket mode code --- .../APIHelp_Distributed.cpp | 45 ------------------- .../StorageApp_UPLoader.cpp | 2 +- 2 files changed, 1 insertion(+), 46 deletions(-) diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp index 8b1f94e..3187232 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp @@ -278,51 +278,6 @@ BOOL CAPIHelp_Distributed::APIHelp_Distributed_UPStorage(LPCTSTR lpszMsgBuffer, return FALSE; } if (4 == nMode) - { - if (!APIHelp_Distributed_DLStorage(lpszMsgBuffer, pStl_ListBucket, pSt_StorageBucket)) - { - return FALSE; - } - //判断目录大小是否正常 - int nListCount = 0; - __int64u nDirCount = 0; //当前目录大小 - CHAR** ppListFile; - - TCHAR tszFilePath[MAX_PATH]; - memset(tszFilePath, '\0', MAX_PATH); - - _tcscpy(tszFilePath, pSt_StorageBucket->tszFilePath); - if (tszFilePath[_tcslen(tszFilePath) - 1] != '*') - { - int nPathType = 0; - BaseLib_OperatorString_GetPath(tszFilePath, &nPathType); - //判断是绝对路径还是相对路径 - if (1 == nPathType) - { - _tcscat(tszFilePath, _T("\\*")); - } - else if (2 == nPathType) - { - _tcscat(tszFilePath, _T("/*")); - } - } - SystemApi_File_EnumFile(tszFilePath, &ppListFile, &nListCount, NULL, NULL, TRUE, 1); - for (int j = 0; j < nListCount; j++) - { - struct _tstat64 st_FStat; - _tstat64(ppListFile[j], &st_FStat); - nDirCount += st_FStat.st_size; - } - BaseLib_OperatorMemory_Free((XPPPMEM)&ppListFile, nListCount); - //如果当前目录大小大于设定的大小. - if (nDirCount >= APIHelp_Distributed_GetSize(pSt_StorageBucket->tszBuckSize)) - { - APIHelp_IsErrorOccur = TRUE; - APIHelp_dwErrorCode = ERROR_STORAGE_MODULE_APIHELP_SIZE; - return FALSE; - } - } - else if (5 == nMode) { BOOL bFound = FALSE; //上传专用,由用户指定 diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp index 5557bd2..6b7fa69 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp @@ -165,7 +165,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in //http://127.0.0.1:5102/api?filename=1.txt&storeagekey=storagekey1 if (_tcslen(st_StorageBucket.tszBuckKey) > 0) { - if (!APIHelp_Distributed_UPStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, 5)) + if (!APIHelp_Distributed_UPStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, 4)) { st_HDRParam.bIsClose = TRUE; st_HDRParam.nHttpCode = 413; -- Gitee From 11e64e4d95e49d3b899b25d63833e818c0ab8bcb Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Oct 2022 10:17:56 +0800 Subject: [PATCH 11/22] improved:delete unused parament for APIHelp_Distributed_UPStorage function --- .../StorageModule_APIHelp/APIHelp_Define.h | 13 ++++--------- .../APIHelp_Distributed/APIHelp_Distributed.cpp | 13 ++++--------- .../APIHelp_Distributed/APIHelp_Distributed.h | 2 +- XEngine_Source/StorageModule_APIHelp/pch.cpp | 4 ++-- .../XEngine_StorageApp/StorageApp_UPLoader.cpp | 4 ++-- 5 files changed, 13 insertions(+), 23 deletions(-) diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h b/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h index b32056a..70010c6 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h @@ -97,22 +97,17 @@ extern "C" BOOL APIHelp_Distributed_DLStorage(LPCTSTR lpszMsgBuffer, list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket, int nMode); +extern "C" BOOL APIHelp_Distributed_UPStorage(list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket, int nMode); /******************************************************************** 函数名称:APIHelp_Distributed_GetPathKey 函数功能:通过BUCKET名称查找对应路径 diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp index 3187232..2396332 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp @@ -242,22 +242,17 @@ BOOL CAPIHelp_Distributed::APIHelp_Distributed_DLStorage(LPCTSTR lpszMsgBuffer, /******************************************************************** 函数名称:APIHelp_Distributed_UPStorage 函数功能:通过分布式存储列表获得一个存储地址 - 参数.一:lpszMsgBuffer - In/Out:In - 类型:常量字符指针 - 可空:N - 意思:输入要解析的URL - 参数.二:pStl_ListBucket + 参数.一:pStl_ListBucket In/Out:In 类型:容器指针 可空:N 意思:输入要解析的列表 - 参数.三:pSt_StorageBucket + 参数.二:pSt_StorageBucket In/Out:Out 类型:数据结构指针 可空:N 意思:输出获取到的可用存储 - 参数.四:nMode + 参数.三:nMode In/Out:In 类型:整数型 可空:N @@ -267,7 +262,7 @@ BOOL CAPIHelp_Distributed::APIHelp_Distributed_DLStorage(LPCTSTR lpszMsgBuffer, 意思:是否成功 备注: *********************************************************************/ -BOOL CAPIHelp_Distributed::APIHelp_Distributed_UPStorage(LPCTSTR lpszMsgBuffer, list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket, int nMode) +BOOL CAPIHelp_Distributed::APIHelp_Distributed_UPStorage(list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket, int nMode) { APIHelp_IsErrorOccur = FALSE; diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.h b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.h index 195def9..7cb8338 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.h +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.h @@ -21,7 +21,7 @@ public: BOOL APIHelp_Distributed_RandomAddr(list* pStl_ListAddr, TCHAR* ptszAddr, int nMode); BOOL APIHelp_Distributed_FileList(list* pStl_ListParse, XSTORAGECORE_DBFILE*** pppSt_ListPacket, int* pInt_ListCount); BOOL APIHelp_Distributed_DLStorage(LPCTSTR lpszMsgBuffer, list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket); - BOOL APIHelp_Distributed_UPStorage(LPCTSTR lpszMsgBuffer, list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket, int nMode); + BOOL APIHelp_Distributed_UPStorage(list* pStl_ListBucket, XENGINE_STORAGEBUCKET* pSt_StorageBucket, int nMode); BOOL APIHelp_Distributed_GetPathKey(list* pStl_ListBucket, LPCTSTR lpszBuckKey, TCHAR* ptszFilePath); protected: BOOL APIHelp_Distributed_FileListParse(LPCTSTR lpszMsgBuffer, int nMsgLen, XSTORAGECORE_DBFILE* pSt_DBFile); diff --git a/XEngine_Source/StorageModule_APIHelp/pch.cpp b/XEngine_Source/StorageModule_APIHelp/pch.cpp index 9bcc553..85b5414 100644 --- a/XEngine_Source/StorageModule_APIHelp/pch.cpp +++ b/XEngine_Source/StorageModule_APIHelp/pch.cpp @@ -43,9 +43,9 @@ extern "C" BOOL APIHelp_Distributed_DLStorage(LPCTSTR lpszMsgBuffer, list*pStl_ListBucket, XENGINE_STORAGEBUCKET * pSt_StorageBucket, int nMode) +extern "C" BOOL APIHelp_Distributed_UPStorage(list*pStl_ListBucket, XENGINE_STORAGEBUCKET * pSt_StorageBucket, int nMode) { - return m_APIDistributed.APIHelp_Distributed_UPStorage(lpszMsgBuffer, pStl_ListBucket, pSt_StorageBucket, nMode); + return m_APIDistributed.APIHelp_Distributed_UPStorage(pStl_ListBucket, pSt_StorageBucket, nMode); } extern "C" BOOL APIHelp_Distributed_GetPathKey(list*pStl_ListBucket, LPCTSTR lpszBuckKey, TCHAR * ptszFilePath) { diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp index 6b7fa69..ef8cc1a 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp @@ -165,7 +165,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in //http://127.0.0.1:5102/api?filename=1.txt&storeagekey=storagekey1 if (_tcslen(st_StorageBucket.tszBuckKey) > 0) { - if (!APIHelp_Distributed_UPStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, 4)) + if (!APIHelp_Distributed_UPStorage(st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, 4)) { st_HDRParam.bIsClose = TRUE; st_HDRParam.nHttpCode = 413; @@ -178,7 +178,7 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in } else { - if (!APIHelp_Distributed_UPStorage(pSt_HTTPParam->tszHttpUri, st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, st_LoadbalanceCfg.st_LBLocation.nUPLoadMode)) + if (!APIHelp_Distributed_UPStorage(st_LoadbalanceCfg.st_LoadBalance.pStl_ListBucket, &st_StorageBucket, st_LoadbalanceCfg.st_LBLocation.nUPLoadMode)) { st_HDRParam.bIsClose = TRUE; st_HDRParam.nHttpCode = 413; -- Gitee From 868e12928645b62f5ad1f54750d1d0e80b29497c Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Oct 2022 14:07:55 +0800 Subject: [PATCH 12/22] fixed:crashed when upfile --- .../Session_Stroage/Session_UPStroage.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp index 5245176..4dd3340 100644 --- a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp +++ b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp @@ -138,8 +138,8 @@ BOOL CSession_UPStroage::Session_UPStroage_Insert(LPCTSTR lpszClientAddr, LPCTST { struct _tstat64 st_FStat; memset(&st_FStat, '\0', sizeof(struct _tstat64)); - _tstat64(stl_MapIterator->second.st_StorageInfo.tszFileDir, &st_FStat); - stl_MapIterator->second.st_StorageInfo.ullRWLen = st_FStat.st_size; + _tstat64(st_Client.st_StorageInfo.tszFileDir, &st_FStat); + st_Client.st_StorageInfo.ullRWLen = st_FStat.st_size; st_Client.st_StorageInfo.pSt_File = _tfopen(lpszFileDir, _T("rb+")); if (NULL == st_Client.st_StorageInfo.pSt_File) -- Gitee From 4662b33d4527368f44f3074cd004d5987d6576a2 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Oct 2022 14:08:35 +0800 Subject: [PATCH 13/22] fixed:does not support chinese url --- .../StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp b/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp index 98db17c..f99df56 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp @@ -332,7 +332,18 @@ BOOL CAPIHelp_Api::APIHelp_Api_UrlParse(TCHAR*** ppptszList, int nListCount, TCH if (0 == _tcsnicmp(lpszHDRFile, tszKey, _tcslen(lpszHDRFile))) { + //编码格式是utf8,需要转为ansi +#ifdef _MSC_BUILD + TCHAR tszFileName[MAX_PATH]; + memset(tszFileName, '\0', MAX_PATH); + + OPenSsl_Codec_UrlDeCodec(tszValue, _tcslen(tszValue), tszFileName); + + int nLen = _tcslen(tszFileName); + BaseLib_OperatorCharset_UTFToAnsi(tszFileName, ptszFileName, &nLen); +#else OPenSsl_Codec_UrlDeCodec(tszValue, _tcslen(tszValue), ptszFileName); +#endif } else if (0 == _tcsnicmp(lpszHDRKey, tszKey, _tcslen(lpszHDRKey))) { -- Gitee From 249be2f92afdf28ed61142aa9e7d9f85636c9378 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Tue, 25 Oct 2022 15:40:49 +0800 Subject: [PATCH 14/22] added:local user speed limit --- .../StorageModule_Session/Session_Define.h | 7 ++++++- .../Session_User/Session_User.cpp | 13 +++++++++++-- .../Session_User/Session_User.h | 3 ++- XEngine_Source/StorageModule_Session/pch.cpp | 4 ++-- .../XEngine_StorageApp/StorageApp_Download.cpp | 2 +- 5 files changed, 22 insertions(+), 7 deletions(-) diff --git a/XEngine_Source/StorageModule_Session/Session_Define.h b/XEngine_Source/StorageModule_Session/Session_Define.h index 819eac6..7a52ddf 100644 --- a/XEngine_Source/StorageModule_Session/Session_Define.h +++ b/XEngine_Source/StorageModule_Session/Session_Define.h @@ -72,12 +72,17 @@ extern "C" BOOL Session_User_Destory(); 类型:常量字符指针 可空:N 意思:输入要判断的密码 + 参数.三:pInt_Limit + In/Out:Out + 类型:整数型指针 + 可空:Y + 意思:输出获取到的限速 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass); +extern "C" BOOL Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass, int* pInt_Limit = NULL); /************************************************************************/ /* 存储会话导出的函数 */ /************************************************************************/ diff --git a/XEngine_Source/StorageModule_Session/Session_User/Session_User.cpp b/XEngine_Source/StorageModule_Session/Session_User/Session_User.cpp index 320a589..eea19b7 100644 --- a/XEngine_Source/StorageModule_Session/Session_User/Session_User.cpp +++ b/XEngine_Source/StorageModule_Session/Session_User/Session_User.cpp @@ -70,7 +70,7 @@ BOOL CSession_User::Session_User_Init(LPCTSTR lpszUserFile) SESSION_USERINFO st_UserInfo; memset(&st_UserInfo, '\0', sizeof(SESSION_USERINFO)); - _stscanf(ptszTokStr, _T("%s %s"), st_UserInfo.tszUserName, st_UserInfo.tszUserPass); + _stscanf(ptszTokStr, _T("%s %s %s"), st_UserInfo.tszUserName, st_UserInfo.tszUserPass, st_UserInfo.tszUserLimit); stl_MapUser.insert(make_pair(st_UserInfo.tszUserName, st_UserInfo)); ptszTokStr = _tcstok(NULL, lpszLineStr); @@ -108,12 +108,17 @@ BOOL CSession_User::Session_User_Destory() 类型:常量字符指针 可空:N 意思:输入要判断的密码 + 参数.三:pInt_Limit + In/Out:Out + 类型:整数型指针 + 可空:Y + 意思:输出获取到的限速 返回值 类型:逻辑型 意思:是否成功 备注: *********************************************************************/ -BOOL CSession_User::Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass) +BOOL CSession_User::Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass, int* pInt_Limit /* = NULL */) { Session_IsErrorOccur = FALSE; @@ -141,6 +146,10 @@ BOOL CSession_User::Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass) st_Locker.unlock_shared(); return FALSE; } + if (NULL != pInt_Limit) + { + *pInt_Limit = _ttoi(stl_MapIterator->second.tszUserLimit); + } st_Locker.unlock_shared(); return TRUE; } \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Session/Session_User/Session_User.h b/XEngine_Source/StorageModule_Session/Session_User/Session_User.h index 9b634b9..36ebad9 100644 --- a/XEngine_Source/StorageModule_Session/Session_User/Session_User.h +++ b/XEngine_Source/StorageModule_Session/Session_User/Session_User.h @@ -15,6 +15,7 @@ typedef struct { TCHAR tszUserName[128]; TCHAR tszUserPass[128]; + TCHAR tszUserLimit[128]; }SESSION_USERINFO; class CSession_User @@ -25,7 +26,7 @@ public: public: BOOL Session_User_Init(LPCTSTR lpszUserFile); BOOL Session_User_Destory(); - BOOL Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass); + BOOL Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass, int* pInt_Limit = NULL); private: shared_mutex st_Locker; private: diff --git a/XEngine_Source/StorageModule_Session/pch.cpp b/XEngine_Source/StorageModule_Session/pch.cpp index 6a91199..2deaf10 100644 --- a/XEngine_Source/StorageModule_Session/pch.cpp +++ b/XEngine_Source/StorageModule_Session/pch.cpp @@ -41,9 +41,9 @@ extern "C" BOOL Session_User_Destory() { return m_User.Session_User_Destory(); } -extern "C" BOOL Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass) +extern "C" BOOL Session_User_Exist(LPCTSTR lpszUser, LPCTSTR lpszPass, int* pInt_Limit) { - return m_User.Session_User_Exist(lpszUser, lpszPass); + return m_User.Session_User_Exist(lpszUser, lpszPass, pInt_Limit); } /************************************************************************/ /* 存储会话导出的函数 */ diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp index 1d1993c..4e29e51 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp @@ -185,7 +185,7 @@ BOOL XEngine_Task_HttpDownload(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in } else { - if (!Session_User_Exist(tszUserName, tszUserPass)) + if (!Session_User_Exist(tszUserName, tszUserPass, &nLimit)) { st_HDRParam.bIsClose = TRUE; st_HDRParam.bAuth = TRUE; -- Gitee From 7296deda675421b23508c3df55f8b7329a155d97 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Oct 2022 09:07:44 +0800 Subject: [PATCH 15/22] modify:limit mode is boolean. fixed:not free limit when client closed --- XEngine_Source/StorageModule_Config/Config_Define.h | 2 +- .../StorageModule_Config/Config_Json/Config_Json.cpp | 2 +- .../XEngine_StorageApp/StorageApp_Download.cpp | 10 +++++----- .../XEngine_StorageApp/StorageApp_Network.cpp | 10 +++++++++- .../XEngine_StorageApp/XEngine_StorageApp.cpp | 2 +- 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/XEngine_Source/StorageModule_Config/Config_Define.h b/XEngine_Source/StorageModule_Config/Config_Define.h index d0f6005..0ffdc06 100644 --- a/XEngine_Source/StorageModule_Config/Config_Define.h +++ b/XEngine_Source/StorageModule_Config/Config_Define.h @@ -81,7 +81,7 @@ typedef struct tag_XEngine_ServerConfig }st_XProxy; struct { - int nLimitMode; + BOOL bLimitMode; __int64x nMaxUPLoader; __int64x nMaxDNLoader; }st_XLimit; diff --git a/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp b/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp index 82412de..bd187a2 100644 --- a/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp +++ b/XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp @@ -176,7 +176,7 @@ BOOL CConfig_Json::Config_Json_File(LPCTSTR lpszConfigFile, XENGINE_SERVERCONFIG return FALSE; } Json::Value st_JsonXLimit = st_JsonRoot["XLimit"]; - pSt_ServerConfig->st_XLimit.nLimitMode = st_JsonXLimit["nLimitMode"].asUInt(); + pSt_ServerConfig->st_XLimit.bLimitMode = st_JsonXLimit["bLimitMode"].asBool(); pSt_ServerConfig->st_XLimit.nMaxDNLoader = st_JsonXLimit["nMaxDNLoad"].asInt64(); pSt_ServerConfig->st_XLimit.nMaxUPLoader = st_JsonXLimit["nMaxUPLoad"].asInt64(); diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp index 4e29e51..e662c79 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp @@ -52,14 +52,14 @@ void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPV memset(&st_StorageInfo, '\0', sizeof(SESSION_STORAGEINFO)); Session_DLStroage_GetInfo(lpszClientAddr, &st_StorageInfo); - if (st_StorageInfo.nLimit > 0) + if (st_ServiceCfg.st_XLimit.bLimitMode && st_StorageInfo.nLimit > 0) { __int64u nLimitTime = 0; Algorithm_Calculation_GetSDFlow(st_StorageInfo.xhToken, &nLimitTime); if (nLimitTime > st_StorageInfo.nLimit) { //当前平均速度大于限制速度,不做处理 - NetCore_TCPXCore_CBSendEx(xhNetDownload, lpszClientAddr); + NetCore_TCPXCore_CBSendEx(xhNetDownload, lpszClientAddr, XEngine_Download_CBSend); return; } } @@ -94,7 +94,7 @@ void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPV } else { - if (2 == st_ServiceCfg.st_XLimit.nLimitMode && st_StorageInfo.nLimit > 0) + if (st_ServiceCfg.st_XLimit.bLimitMode && st_StorageInfo.nLimit > 0) { Algorithm_Calculation_ADDSDFlow(st_StorageInfo.xhToken, nMsgLen); } @@ -105,8 +105,8 @@ void CALLBACK XEngine_Download_CBSend(LPCSTR lpszClientAddr, SOCKET hSocket, LPV { XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("下载客户端:%s,获取用户对应文件内容失败,错误:%lX"), lpszClientAddr, Session_GetLastError()); } - //限速,1为全局限速 - if (1 == st_ServiceCfg.st_XLimit.nLimitMode) + //限速,如果没有单独限速,默认全局限速 + if (st_ServiceCfg.st_XLimit.bLimitMode && (0 == st_StorageInfo.nLimit)) { Session_DLStroage_GetCount(&nListCount); Algorithm_Calculation_SleepFlow(xhLimit, &nTimeWait, st_ServiceCfg.st_XLimit.nMaxDNLoader, nListCount, 4096); diff --git a/XEngine_Source/XEngine_StorageApp/StorageApp_Network.cpp b/XEngine_Source/XEngine_StorageApp/StorageApp_Network.cpp index 37c9cc8..71959a3 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_Network.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_Network.cpp @@ -190,7 +190,15 @@ BOOL XEngine_Net_CloseClient(LPCTSTR lpszClientAddr, int nLeaveType, int nClient NetCore_TCPXCore_CloseForClientEx(xhNetDownload, lpszClientAddr); SocketOpt_HeartBeat_DeleteAddrEx(xhHBDownload, lpszClientAddr); } - Session_DLStroage_Delete(lpszClientAddr); + SESSION_STORAGEINFO st_StorageInfo; + memset(&st_StorageInfo, '\0', sizeof(SESSION_STORAGEINFO)); + + if (Session_DLStroage_GetInfo(lpszClientAddr, &st_StorageInfo)) + { + Algorithm_Calculation_Close(st_StorageInfo.xhToken); + Session_DLStroage_Delete(lpszClientAddr); + } + RfcComponents_HttpServer_CloseClinetEx(xhDLHttp, lpszClientAddr); OPenSsl_Server_CloseClientEx(xhDLSsl, lpszClientAddr); } diff --git a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp index 28f09fb..f170fcb 100644 --- a/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp +++ b/XEngine_Source/XEngine_StorageApp/XEngine_StorageApp.cpp @@ -239,7 +239,7 @@ int main(int argc, char** argv) XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("启动服务中,启动下载会话服务失败,错误:%lX"), Session_GetLastError()); goto XENGINE_EXITAPP; } - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动下载会话服务成功,下载限速模式:%d"), st_ServiceCfg.st_XLimit.nLimitMode); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _T("启动服务中,启动下载会话服务成功,下载限速模式:%s"), st_ServiceCfg.st_XLimit.bLimitMode ? "开" : "关"); if (st_ServiceCfg.st_XCert.bDLEnable) { -- Gitee From c2954cee0f5ab98a4a68b065577ef89f71345a91 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Oct 2022 09:59:07 +0800 Subject: [PATCH 16/22] modify:p2p search file can be not enable database --- .../Storage_APPTask/Storage_TaskManage.cpp | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp index 5e93959..67e4a72 100644 --- a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp +++ b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp @@ -43,20 +43,20 @@ BOOL XEngine_Task_Manage(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lp memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer)); Protocol_StorageParse_QueryFile(lpszMsgBuffer, tszTimeStart, tszTimeEnd, tszBucketKey, tszFileName, tszFileHash, &nMode); - //查找数据库 - if (!st_ServiceCfg.st_XSql.bEnable) - { - st_HDRParam.bIsClose = TRUE; - st_HDRParam.nHttpCode = 501; - RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam); - XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); - XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,请求查询文件失败,没有启用数据库,无法使用此功能!"), lpszClientAddr); - return TRUE; - } - Database_File_FileQuery(&ppSt_ListFile, &nListCount, tszTimeStart, tszTimeEnd, tszBucketKey, tszFileName, tszFileHash); //根据使用模式来操作 if (0 == nMode) { + //查找数据库 + if (!st_ServiceCfg.st_XSql.bEnable) + { + st_HDRParam.bIsClose = TRUE; + st_HDRParam.nHttpCode = 501; + RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,请求查询文件失败,没有启用数据库,无法使用此功能!"), lpszClientAddr); + return TRUE; + } + Database_File_FileQuery(&ppSt_ListFile, &nListCount, tszTimeStart, tszTimeEnd, tszBucketKey, tszFileName, tszFileHash); Protocol_StoragePacket_QueryFile(tszMsgBuffer, &nMsgLen, &ppSt_ListFile, nListCount, tszTimeStart, tszTimeEnd); RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszMsgBuffer, nMsgLen); XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); -- Gitee From 66e34257337c6bd281a4020fb9955deff2bdb2bb Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Oct 2022 10:26:39 +0800 Subject: [PATCH 17/22] modify:p2p file search have to setting hash value modify:local file search not found file that reply error code --- .../Storage_APPTask/Storage_TaskManage.cpp | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp index 67e4a72..c546f95 100644 --- a/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp +++ b/XEngine_Source/XEngine_StorageApp/Storage_APPTask/Storage_TaskManage.cpp @@ -54,9 +54,18 @@ BOOL XEngine_Task_Manage(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lp RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam); XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,请求查询文件失败,没有启用数据库,无法使用此功能!"), lpszClientAddr); - return TRUE; + return FALSE; } Database_File_FileQuery(&ppSt_ListFile, &nListCount, tszTimeStart, tszTimeEnd, tszBucketKey, tszFileName, tszFileHash); + if (0 == nListCount) + { + st_HDRParam.bIsClose = TRUE; + st_HDRParam.nHttpCode = 404; + RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,请求查询文件失败,没有找到文件,查找文件名:%s,文件HASH:%s!"), lpszClientAddr, tszFileName, tszFileHash); + return FALSE; + } Protocol_StoragePacket_QueryFile(tszMsgBuffer, &nMsgLen, &ppSt_ListFile, nListCount, tszTimeStart, tszTimeEnd); RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszMsgBuffer, nMsgLen); XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); @@ -71,6 +80,16 @@ BOOL XEngine_Task_Manage(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lp SOCKET hRVSocket; list stl_ListFile; + if (_tcslen(tszFileHash) <= 0) + { + st_HDRParam.bIsClose = TRUE; + st_HDRParam.nHttpCode = 400; + + RfcComponents_HttpServer_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam); + XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER); + XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _T("业务客户端:%s,发送广播请求失败,因为查询文件HASH为空"), lpszClientAddr); + return FALSE; + } Protocol_StoragePacket_REQFile(tszSDBuffer, &nSDLen, NULL, tszFileHash); NetCore_BroadCast_SDCreate(&hSDSocket, st_ServiceCfg.st_P2xp.nRVPort, st_ServiceCfg.tszIPAddr); NetCore_BroadCast_RVCreate(&hRVSocket, st_ServiceCfg.st_P2xp.nSDPort); @@ -117,9 +136,6 @@ BOOL XEngine_Task_Manage(LPCTSTR lpszAPIName, LPCTSTR lpszClientAddr, LPCTSTR lp } else { - st_HDRParam.bIsClose = TRUE; - st_HDRParam.nHttpCode = 200; - int nListCount = 0; XSTORAGECORE_DBFILE** ppSt_ListPacket; APIHelp_Distributed_FileList(&stl_ListFile, &ppSt_ListPacket, &nListCount); -- Gitee From c94075ddde7261d9b2df6c4794bd49cc1c7b6f24 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Wed, 26 Oct 2022 17:09:05 +0800 Subject: [PATCH 18/22] fixed:cal file hash value is corrent --- .../StorageModule_Session/Session_Define.h | 16 +++++++++- .../Session_Stroage/Session_UPStroage.cpp | 29 +++++++++++++++++++ .../Session_Stroage/Session_UPStroage.h | 1 + .../StorageModule_Session.def | 3 +- XEngine_Source/StorageModule_Session/pch.cpp | 4 +++ .../StorageApp_UPLoader.cpp | 3 +- 6 files changed, 53 insertions(+), 3 deletions(-) diff --git a/XEngine_Source/StorageModule_Session/Session_Define.h b/XEngine_Source/StorageModule_Session/Session_Define.h index 7a52ddf..d3afc11 100644 --- a/XEngine_Source/StorageModule_Session/Session_Define.h +++ b/XEngine_Source/StorageModule_Session/Session_Define.h @@ -422,4 +422,18 @@ extern "C" BOOL Session_UPStorage_GetAll(SESSION_STORAGEINFO*** pppSt_StorageInf 意思:是否成功 备注: *********************************************************************/ -extern "C" BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr); \ No newline at end of file +extern "C" BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr); +/******************************************************************** +函数名称:Session_UPStroage_Close +函数功能:关闭读写文件句柄 + 参数.一:lpszClientAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要关闭的客户端会话 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +extern "C" BOOL Session_UPStroage_Close(LPCTSTR lpszClientAddr); \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp index 4dd3340..eec0c8a 100644 --- a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp +++ b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.cpp @@ -384,4 +384,33 @@ BOOL CSession_UPStroage::Session_UPStroage_Delete(LPCTSTR lpszClientAddr) } st_Locker.unlock(); return TRUE; +} +/******************************************************************** +函数名称:Session_UPStroage_Close +函数功能:关闭读写文件句柄 + 参数.一:lpszClientAddr + In/Out:In + 类型:常量字符指针 + 可空:N + 意思:要关闭的客户端会话 +返回值 + 类型:逻辑型 + 意思:是否成功 +备注: +*********************************************************************/ +BOOL CSession_UPStroage::Session_UPStroage_Close(LPCTSTR lpszClientAddr) +{ + Session_IsErrorOccur = FALSE; + + st_Locker.lock_shared(); + unordered_map::iterator stl_MapIterator = stl_MapStroage.find(lpszClientAddr); + if (stl_MapIterator != stl_MapStroage.end()) + { + if (NULL != stl_MapIterator->second.st_StorageInfo.pSt_File) + { + fclose(stl_MapIterator->second.st_StorageInfo.pSt_File); + } + } + st_Locker.unlock_shared(); + return TRUE; } \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.h b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.h index 30a30ed..32a7aea 100644 --- a/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.h +++ b/XEngine_Source/StorageModule_Session/Session_Stroage/Session_UPStroage.h @@ -30,6 +30,7 @@ public: BOOL Session_UPStroage_Exist(LPCTSTR lpszClientAddr); BOOL Session_UPStorage_GetAll(SESSION_STORAGEINFO*** pppSt_StorageInfo, int* pInt_ListCount); BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr); + BOOL Session_UPStroage_Close(LPCTSTR lpszClientAddr); private: BOOL m_bResume; private: diff --git a/XEngine_Source/StorageModule_Session/StorageModule_Session.def b/XEngine_Source/StorageModule_Session/StorageModule_Session.def index 1a25879..a7fb2b6 100644 --- a/XEngine_Source/StorageModule_Session/StorageModule_Session.def +++ b/XEngine_Source/StorageModule_Session/StorageModule_Session.def @@ -24,4 +24,5 @@ EXPORTS Session_UPStroage_Write Session_UPStroage_Exist Session_UPStorage_GetAll - Session_UPStroage_Delete \ No newline at end of file + Session_UPStroage_Delete + Session_UPStroage_Close \ No newline at end of file diff --git a/XEngine_Source/StorageModule_Session/pch.cpp b/XEngine_Source/StorageModule_Session/pch.cpp index 2deaf10..63a174e 100644 --- a/XEngine_Source/StorageModule_Session/pch.cpp +++ b/XEngine_Source/StorageModule_Session/pch.cpp @@ -115,4 +115,8 @@ extern "C" BOOL Session_UPStorage_GetAll(SESSION_STORAGEINFO * **pppSt_StorageIn extern "C" BOOL Session_UPStroage_Delete(LPCTSTR lpszClientAddr) { return m_UPStorage.Session_UPStroage_Delete(lpszClientAddr); +} +extern "C" BOOL Session_UPStroage_Close(LPCTSTR lpszClientAddr) +{ + return m_UPStorage.Session_UPStroage_Close(lpszClientAddr); } \ 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 ef8cc1a..941e554 100644 --- a/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp +++ b/XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp @@ -266,7 +266,8 @@ BOOL XEngine_Task_HttpUPLoader(LPCTSTR lpszClientAddr, LPCTSTR lpszMsgBuffer, in _tcscpy(st_ProtocolFile.st_ProtocolFile.tszFileName, tszFileName); _tcscpy(st_ProtocolFile.tszBuckKey, st_StorageBucket.tszBuckKey); st_ProtocolFile.st_ProtocolFile.nFileSize = st_StorageInfo.ullRWLen; - + //上传完毕需要关闭,否则计算HASH会不正常 + Session_UPStroage_Close(lpszClientAddr); OPenSsl_Api_Digest(tszFileDir, tszHashStr, &nHashLen, TRUE, st_ServiceCfg.st_XStorage.nHashMode); BaseLib_OperatorString_StrToHex((char*)tszHashStr, nHashLen, st_ProtocolFile.st_ProtocolFile.tszFileHash); //处理结果 -- Gitee From fa0dd3bd891d7444aa90e75c93390bca55422bc0 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Oct 2022 09:35:36 +0800 Subject: [PATCH 19/22] fixed:p2p not reply bucket name --- .../APIHelp_Distributed/APIHelp_Distributed.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp index 2396332..1addda3 100644 --- a/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp +++ b/XEngine_Source/StorageModule_APIHelp/APIHelp_Distributed/APIHelp_Distributed.cpp @@ -530,6 +530,7 @@ BOOL CAPIHelp_Distributed::APIHelp_Distributed_FileListParse(LPCTSTR lpszMsgBuff { pSt_DBFile->st_ProtocolFile.nFileSize = st_JsonArray[i]["nFileSize"].asInt64(); _tcscpy(pSt_DBFile->tszTableName, st_JsonArray[i]["tszTableName"].asCString()); + _tcscpy(pSt_DBFile->tszBuckKey, st_JsonArray[i]["tszBuckKey"].asCString()); _tcscpy(pSt_DBFile->st_ProtocolFile.tszFileUser, st_JsonArray[i]["tszFileUser"].asCString()); _tcscpy(pSt_DBFile->st_ProtocolFile.tszFileHash, st_JsonArray[i]["tszFileHash"].asCString()); _tcscpy(pSt_DBFile->st_ProtocolFile.tszFileName, st_JsonArray[i]["tszFileName"].asCString()); -- Gitee From c4fb80c7957d621afffa4fa53a3efdec44592d70 Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Oct 2022 09:36:41 +0800 Subject: [PATCH 20/22] update:example --- .../APPClient_Download/APPClient_Download.cpp | 15 ++++++++------- .../APPClient_RestApi/APPClient_RestApi.cpp | 14 +++++++------- .../APPClient_UPDownload/APPClient_UPDownload.cpp | 14 +++++++------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/XEngine_APPClient/APPClient_Download/APPClient_Download.cpp b/XEngine_APPClient/APPClient_Download/APPClient_Download.cpp index 866ecfd..4994a26 100644 --- a/XEngine_APPClient/APPClient_Download/APPClient_Download.cpp +++ b/XEngine_APPClient/APPClient_Download/APPClient_Download.cpp @@ -79,7 +79,7 @@ void P2PParse_List(LPCTSTR lpszMsgBuffer, int nMsgLen, list* pStl_ //创建分布式文件下载器 typedef struct { - XNETHANDLE xhToken; //下载句柄 + XHANDLE xhToken; //下载句柄 __int64x nPosStart; __int64x nPosEnd; }P2PFILE_PIECE; @@ -115,8 +115,8 @@ void P2PFile_Create(list* pStl_ListFile, LPCTSTR lpszFile) nPos += nPiece; _stprintf(tszRange, _T("%lld-%lld"), pSt_P2PFile[i].nPosStart, pSt_P2PFile[i].nPosEnd); } - - if (!DownLoad_Http_Create(&pSt_P2PFile[i].xhToken, tszDLUrl, lpszFile, tszRange, NULL, NULL, NULL)) + pSt_P2PFile[i].xhToken = DownLoad_Http_Create(tszDLUrl, lpszFile, tszRange, NULL, NULL, NULL); + if (NULL == pSt_P2PFile[i].xhToken) { printf("create download task is failed:%X\n", Download_GetLastError()); } @@ -135,7 +135,7 @@ void P2PFile_Create(list* pStl_ListFile, LPCTSTR lpszFile) { bComplete = FALSE; } - printf("DLToken:%lld DLTotal:%lf DLNow:%lf DLStatus:%d\n", pSt_P2PFile[i].xhToken, st_TaskInfo.dlTotal, st_TaskInfo.dlNow, st_TaskInfo.en_DownStatus); + printf("DLToken:%p DLTotal:%lf DLNow:%lf DLStatus:%d\n", pSt_P2PFile[i].xhToken, st_TaskInfo.dlTotal, st_TaskInfo.dlNow, st_TaskInfo.en_DownStatus); } if (bComplete) { @@ -160,7 +160,7 @@ int main() #endif int nHTTPCode = 0; - int nBodyLen = 2048; + int nBodyLen = 0; TCHAR *ptszMsgBody = NULL; //请求分布式存储文件所有位置 LPCTSTR lpszUrl = _T("http://127.0.0.1:5100/Api/Manage/Query"); @@ -169,9 +169,10 @@ int main() Json::Value st_JsonRoot; st_JsonRoot["nMode"] = 1; //使用P2P下载 st_JsonRoot["lpszBuckKey"] = "storagekey2"; - st_JsonRoot["lpszFileName"] = "qq.exe"; + //st_JsonRoot["lpszFileName"] = "qq.exe"; + st_JsonRoot["lpszFileHash"] = "D41D8CD98F00B204E9801998ECF8427E"; - if (!APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBody, &nBodyLen)) + if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nHTTPCode, &ptszMsgBody, &nBodyLen)) { return -1; } diff --git a/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.cpp b/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.cpp index 30111aa..0949dcd 100644 --- a/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.cpp +++ b/XEngine_APPClient/APPClient_RestApi/APPClient_RestApi.cpp @@ -38,7 +38,7 @@ void API_Manage_Query() st_JsonRoot["lpszTimeEnd"]; st_JsonRoot["lpszBuckKey"] = "storagekey2"; - if (!APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) + if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) { printf("API_Manage_Query:%lX\n", APIHelp_GetLastError()); return; @@ -66,7 +66,7 @@ void API_Manage_Insert() st_JsonRoot["List"] = st_JsonArray; st_JsonRoot["Count"] = 1; - if (!APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) + if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) { printf("API_Manage_Insert:%lX\n", APIHelp_GetLastError()); return; @@ -91,7 +91,7 @@ void API_Manage_Delete() st_JsonRoot["List"] = st_JsonArray; st_JsonRoot["Count"] = 1; - if (!APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) + if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) { printf("API_Manage_Delete:%lX\n", APIHelp_GetLastError()); return; @@ -111,7 +111,7 @@ void API_Manage_Dir() st_JsonRoot["lpszBuckKey"] = "storagekey1"; st_JsonRoot["lpszUserDir"] = "user"; st_JsonRoot["nOPerator"] = 1; - if (!APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) + if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) { printf("API_Manage_Dir:%lX\n", APIHelp_GetLastError()); return; @@ -123,7 +123,7 @@ void API_Manage_Dir() st_JsonRoot["lpszBuckKey"] = "storagekey1"; st_JsonRoot["lpszUserDir"]; st_JsonRoot["nOPerator"] = 0; - if (!APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) + if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) { printf("API_Manage_Dir:%lX\n", APIHelp_GetLastError()); return; @@ -135,7 +135,7 @@ void API_Manage_Dir() st_JsonRoot["lpszBuckKey"] = "storagekey1"; st_JsonRoot["lpszUserDir"] = "user"; st_JsonRoot["nOPerator"] = 2; - if (!APIHelp_HttpRequest_Post(lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) + if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, st_JsonRoot.toStyledString().c_str(), &nCode, &ptszMsgBuffer, &nLen)) { printf("API_Manage_Dir:%lX\n", APIHelp_GetLastError()); return; @@ -150,7 +150,7 @@ void API_Manage_Task() int nLen = 0; int nCode = 0; TCHAR* ptszMsgBuffer = NULL; - if (!APIHelp_HttpRequest_Post(lpszUrl, NULL, &nCode, &ptszMsgBuffer, &nLen)) + if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, NULL, &nCode, &ptszMsgBuffer, &nLen)) { printf("API_Manage_Task:%lX\n", APIHelp_GetLastError()); return; diff --git a/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.cpp b/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.cpp index 295897a..9279ac4 100644 --- a/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.cpp +++ b/XEngine_APPClient/APPClient_UPDownload/APPClient_UPDownload.cpp @@ -32,7 +32,7 @@ using namespace std; //上传文件 void File_UPLoad() { - LPCTSTR lpszUrl = _T("http://192.168.1.8:5102/2.txt"); + LPCTSTR lpszUrl = _T("http://127.0.0.1:5102/api?filename=newfile4.txt&storeagekey=storagekey2"); int nLen = 0; int nCode = 0; TCHAR* ptszMsgBuffer = NULL; @@ -48,7 +48,7 @@ void File_UPLoad() OPenSsl_Help_BasicEncoder("123123aa", "123123", tszBaseBuffer); _stprintf(tszHdrBuffer, _T("Range: bytes=0-5/10\r\nAuthorization: %s\r\n"), tszBaseBuffer); - if (!APIHelp_HttpRequest_Post(lpszUrl, lpszMsgBuffer, &nCode, &ptszMsgBuffer, &nLen, tszHdrBuffer)) + if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, lpszMsgBuffer, &nCode, &ptszMsgBuffer, &nLen, tszHdrBuffer)) { printf("upload failed:%lX\n", APIHelp_GetLastError()); return; @@ -66,9 +66,10 @@ void File_UPLoad() printf("upload:%d\n", nCode); BaseLib_OperatorMemory_FreeCStyle((XPPMEM)&ptszMsgBuffer); //断点续传必须指定storagekey + nLen = 0; memset(tszHdrBuffer, '\0', MAX_PATH); _stprintf(tszHdrBuffer, _T("Range: bytes=5-9/10\r\nAuthorization: %s\r\nStorageKey: %s\r\n"), tszBaseBuffer, tszKeyBuffer); - if (!APIHelp_HttpRequest_Post(lpszUrl, lpszMsgBuffer2, &nCode, &ptszMsgBuffer, &nLen, tszHdrBuffer)) + if (!APIHelp_HttpRequest_Custom(_T("POST"), lpszUrl, lpszMsgBuffer2, &nCode, &ptszMsgBuffer, &nLen, tszHdrBuffer)) { printf("upload failed:%lX\n", APIHelp_GetLastError()); return; @@ -79,10 +80,9 @@ void File_UPLoad() //下载文件 void File_Download() { - LPCTSTR lpszUrl = _T("http://192.168.1.8:5101/storagekey2/2.txt"); + LPCTSTR lpszUrl = _T("http://192.168.1.8:5101/storagekey2/newfile4.txt"); int nLen = 0; - int nCode = 0; TCHAR* ptszMsgBuffer = NULL; TCHAR tszBaseBuffer[128]; TCHAR tszHdrBuffer[MAX_PATH]; @@ -92,7 +92,7 @@ void File_Download() OPenSsl_Help_BasicEncoder("123123aa", "123123", tszBaseBuffer); _stprintf(tszHdrBuffer, _T("Range: bytes=0-5\r\nAuthorization: %s\r\n"), tszBaseBuffer); - if (!APIHelp_HttpRequest_Get(lpszUrl, &ptszMsgBuffer, &nLen, &nCode, tszHdrBuffer)) + if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nLen, tszHdrBuffer)) { printf("download failed:%lX\n", APIHelp_GetLastError()); return; @@ -102,7 +102,7 @@ void File_Download() memset(tszHdrBuffer, '\0', MAX_PATH); _stprintf(tszHdrBuffer, _T("Range: bytes=5-10\r\nAuthorization: %s\r\n"), tszBaseBuffer); - if (!APIHelp_HttpRequest_Get(lpszUrl, &ptszMsgBuffer, &nLen, &nCode, tszHdrBuffer)) + if (!APIHelp_HttpRequest_Custom(_T("GET"), lpszUrl, NULL, NULL, &ptszMsgBuffer, &nLen, tszHdrBuffer)) { printf("download failed:%lX\n", APIHelp_GetLastError()); return; -- Gitee From 3f2817b4824a647e62b05476696542217782195a Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Thu, 27 Oct 2022 11:29:22 +0800 Subject: [PATCH 21/22] update:VSCopy file --- CHANGELOG | 28 ++++++++++++++++++++++++++++ XEngine_APPClient/VSCopy_x86.bat | 12 ++++++++++++ XEngine_Source/VSCopy_Debug.bat | 4 +++- 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 XEngine_APPClient/VSCopy_x86.bat diff --git a/CHANGELOG b/CHANGELOG index ff21f07..78a8589 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,31 @@ +XEngine_Storage V3.9.0.1001 + +添加:用户支持单独限速模式了 +更新:匹配XEngine V7.42版本 +修改:限制模式是逻辑型了 +修改:上传会话字段ullFSize修改为ullRWLen +修改:P2P搜索文件可以不使用数据库了 +修改:P2P文件搜索必须设置文件HASH值 +修改:本地文件没有找到后会返回错误了 +优化:删除没有使用的APIHelp_Distributed_UPStorage函数参数 +优化:Session_UPStroage_Close函数代码 +修正:P2P没有查找没有返回bucket名称的问题 +删除:错误重试配置 +删除:没有使用的bucket选择模式代码 + +added:support user speed limit +update:match xengine v7.42 +modify:limit mode is boolean +modify:up session changed ullRWLen from ullFSize +modify:p2p search file can be not enable database +modify:p2p file search have to setting hash value +modify:local file search not found file that reply error code +improved:delete unused parament for APIHelp_Distributed_UPStorage function +improved:Session_UPStroage_Close function code +fixed:p2p not reply bucket name +delete:error try time configrue +delete:unused select bucket mode code +====================================================================================== XEngine_Storage V3.8.0.1001 更新:匹配了xengine v7.38 diff --git a/XEngine_APPClient/VSCopy_x86.bat b/XEngine_APPClient/VSCopy_x86.bat new file mode 100644 index 0000000..6cf246a --- /dev/null +++ b/XEngine_APPClient/VSCopy_x86.bat @@ -0,0 +1,12 @@ +copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_BaseLib.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_BaseLib\XEngine_Algorithm.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_Core\XEngine_OPenSsl.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_Download\XEngine_Download.dll" "./" + +copy /y "%XEngine_Lib32%\XEngine_HelpComponents\zlib1.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_LibEx\libcrypto-3.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_LibEx\libssl-3.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_LibEx\libcurl.dll" "./" +copy /y "%XEngine_Lib32%\XEngine_LibEx\nghttp2.dll" "./" \ No newline at end of file diff --git a/XEngine_Source/VSCopy_Debug.bat b/XEngine_Source/VSCopy_Debug.bat index d7d1628..0aa8cbe 100644 --- a/XEngine_Source/VSCopy_Debug.bat +++ b/XEngine_Source/VSCopy_Debug.bat @@ -12,4 +12,6 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_XLog.dll" "./" copy /y "D:\XEngine\XEngine_SourceCode\Debug\NetHelp_APIHelp.dll" "./" -copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_HttpServer.dll" "./" \ No newline at end of file +copy /y "D:\XEngine\XEngine_SourceCode\Debug\RfcComponents_HttpServer.dll" "./" + +copy /y "D:\XEngine\XEngine_SourceCode\Debug\libcurl-d.dll" "./" \ No newline at end of file -- Gitee From 941e98ecb0b36e05b0137cbdd84f1897c4e0082e Mon Sep 17 00:00:00 2001 From: qyt <486179@qq.com> Date: Fri, 28 Oct 2022 09:41:26 +0800 Subject: [PATCH 22/22] update:docment and readme --- README.en.md | 4 ++++ README.md | 5 ++++- XEngine_Docment/Docment_en.docx | Bin 126537 -> 126743 bytes XEngine_Docment/Docment_zh.docx | Bin 126183 -> 126500 bytes 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/README.en.md b/README.en.md index b290d10..1685188 100644 --- a/README.en.md +++ b/README.en.md @@ -87,6 +87,10 @@ P2P distributed download is the same as the hyper-threaded download of other dow - XEngine_APPClient client code dir - XEngine_SQLFile database sql file +## Example +UPLoad File: curl -d 'hello xengine' -X POST "http://192.168.1.8:5102/api?filename=hello.txt&storeagekey=storagekey1" +Download File: curl -X GET "http://192.168.1.8:5101/storagekey1/hello.txt" + ## now task P2P WAN file search and download support diff --git a/README.md b/README.md index 49fbc57..7df8c70 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,9 @@ make FLAGS=CleanAll 清理编译 - XEngine_APPClient 客户端演示代码 - XEngine_SQLFile 数据库脚本文件 +## 示例 +上传文件: curl -d 'hello xengine' -X POST "http://192.168.1.8:5102/api?filename=hello.txt&storeagekey=storagekey1" +下载文件: curl -X GET "http://192.168.1.8:5101/storagekey1/hello.txt" ## 秒传实现 秒传的实现不是靠服务器实现的,而是靠客户端实现的. @@ -88,8 +91,8 @@ P2P分布式下载已经支持,不过目前只能在局域网中,暂时不支持 P2P分布式下载与其他下载工具的超线程下载一样,原理是使用HTTP RANGE字段实现.各位可以通过libcurl等库实现此功能. ## 当前任务 -管理接口调试 本地网络接口删除 +上传目录控制,防止超过权限的上传动作 客户端连接数限制 P2P广域网文件查找与下载支持 分布式数据库存储 diff --git a/XEngine_Docment/Docment_en.docx b/XEngine_Docment/Docment_en.docx index ef5d8010fc44b9f88ec20f10e359f4086e2afaa2..241c63b77f9e00ad4db7a4bf4017c6620c453bb4 100644 GIT binary patch delta 109394 zcmY&eXH-+o78OxYMEC%uNl}_0Akw7;5TzFp6{$h0bS3nVToh4JItWsObfov1L@acO zNC`DTDWM3Vg%CoL$KUtou9>xF?#!BXX74k5pZ+=4OdM;n>RHG`C7u^4n!>h0!*?SehpS;0tp^%$=4RzVe zqNgUc&7sE=3`st&q#OIJvP(@9?=xQ1*VbLQ7&^&e`u@KSLNDzag;G{%+p~Mf z7xZ{MhqS>1mHUuGm6Cm&BUL%jF&J8PQ^{UEf$FQCYbWT+<4D>gX!woH-duqaZj`FA8(Reu8;|_ z`Wi3PJ`&Bt$N0(V@;~)+=b*M0JuUuep=v+QQDoq-Hb5|6(Dn;MmZ^NGgnvfy=}Ty` z^{G08&Z1qVPNajpbryG|Kw5;k!ea@KwaemOOY*%&*l;wf$dj22(LCZsn|aQnl@Z<7 z?bWi$>P|8toi$q3LB|d`4XQ;9{Bv(X8}72{_xBBzGe)ew2{U;hzJ9A&$Cejkr~Ov7 z^4KRZAu{Mw|9{w$=83UVY4*%l0e#=^SNY!%V`!{90V*vmr4lk0zrRgAjR`@ry3Oc~ z7nC{(P>GGf^HWbVFIw%wwLy5_j;KdEw@o)Ri^kKJNIVqR;(WOMirc~|6kp(bd+K!tT9ckAPGLosW38|%WY^a zWc2yFbgA4Q89IkeRLEi3@RE-d#C8j=t!w64DP!?Pm5}4zZLGi2wBTpY`)507H|HYA zHiXi5%$&&-!6ew&enyX*ZQe?D1!B!~3N4Yw%x8W2+^@99d9_|XKIcF>Eb{mBF$k0F5L1dZeUPCVmhEn}Aqkel#yfT~h^$On*<8QXYh9AkSH ze>{(;k!S~a>L406kEX8?bg5J>2Esg${csQg98Dyl8A#6klW{vC0QGwv#rT zUH6!-F!}i-oQpmYNT0yy9v@{&QWtfPcd-NpJu?`KKK=k^P(Qzs_Act#qYmIbS$(@*d&kTIX6 z3;l_nKMklqqYaDFYti(1B5*_oR7>~4I{Qi4yI{IC)_ws`+jgKHCozs%kMeJ@@5 z`B5wj+j)2Id*KBwB-44gUB@ zfiYcM@dm*-{6l9PxS{ELx{Mt!twpRZaQvqiFjPK1A|U8TnIZI|J4Xys7-PSdF)G^H ze><>goU!*70Wc6JQ}Cu}T0f2cR+J7mJ3drr>{&4mfa75_<2qy33QZ?4j=C6)00~21 zL`NKd02qOE61ttX2ap2kD|q@r6m519eEbtl!7`R~>3ewkEMxQJ&%LBt#wO#CaY#A| zO!|(l$lyjMqY>}sa6GM`t4&`7-~SA>?gg|`3H2Zla4cqUgpg2YI1m(42@tAS1R8CU zF`HR7PefEA4zx3olC^~WXZ_SY%B~i1ah4c0vYBtyiO=xT-K2lY2cUt+wi}_qP|``C z5|sy*0A~ID`!`@4s%>api~@QuBC0fMW|2Nc4HHSCj9Ed=Yb(&4{W#z4a9vSwPggB% zkQgQ6gNndB4nq!$no$L&Y>>>hC62le@&0bM}dPRc4sI~nF zf1M5NCMis+2Ow$HQWpoapz}$UgaaVb!WWI%plL?35N8|q`y=tSgp|&8S`-KhM&~U^ z_C^H^PC%%0EegcF_Dyi`1c4rP0H@BCH4+XYj_&BRdPk6Pl&;Kn^6I}Svh61#rieUy z?1+j&P@1ErXB()~-OL&kSya>}NWZe*r*c`J^?x9T7_z zsIBYBj=YD(P*;hK@Wf`x+0Bp^+;skIXY;aJ9(b#2QxyY-6PmZ9;fivMN}eucpf93| zwgn~drz&*%ple%kNC_{DKTvH3w9}9QwB-Yg@47G=nDlbspc0OP;EA&vIOW@0y-h2E zLYR#~SR^O_u≫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%0DMRn>Wd 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

DFSdIBzME>cUsYWzItz*WrSk*s{79ir=ysx< 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°T~B$fFVP!)Ht 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

uZD%HVDZgZkl1@Qy0x9Qea)!kk&RMly7IE&^ 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 Ye4o)XAPFFo0h$M^vH$=8 diff --git a/XEngine_Docment/Docment_zh.docx b/XEngine_Docment/Docment_zh.docx index 0f5f0f2dea98d4c5d591bb111fe807f933c4a387..4eb8d762d6ab3a6b6f008c2a6c1482e328b91812 100644 GIT binary patch delta 98011 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%0D>YPe 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 -- Gitee