@@ -56,6 +56,7 @@ bool XEngine_Task_HttpWebdav(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
5656 LPCXSTR lpszMethodDel = _X (" DELETE" );
5757 LPCXSTR lpszMethodLock = _X (" LOCK" );
5858 LPCXSTR lpszMethodUNLock = _X (" UNLOCK" );
59+ LPCXSTR lpszMethodMKCol = _X (" MKCOL" );
5960
6061 st_HDRParam.bIsClose = false ;
6162 st_HDRParam.nHttpCode = 200 ;
@@ -232,7 +233,7 @@ bool XEngine_Task_HttpWebdav(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
232233 XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV);
233234 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" WEBDAV客户端:%s,处理WEBDAV协议UNLOCK方法成功,锁文件:%s" ), lpszClientAddr, pSt_HTTPParam->tszHttpUri );
234235 return true ;
235- }
236+ }
236237 else if (0 == _tcsxnicmp (lpszMethodPropPatch, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszMethodPropPatch)))
237238 {
238239 st_HDRParam.bIsClose = false ;
@@ -274,6 +275,28 @@ bool XEngine_Task_HttpWebdav(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
274275 XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" WEBDAV客户端:%s,处理WEBDAV协议DELETE方法成功,删除的文件:%s" ), lpszClientAddr, tszFileName);
275276 return true ;
276277 }
278+ else if (0 == _tcsxnicmp (lpszMethodMKCol, pSt_HTTPParam->tszHttpMethod , _tcsxlen (lpszMethodMKCol)))
279+ {
280+ XENGINE_STORAGEBUCKET st_StorageBucket = {};
281+ if (!APIHelp_Distributed_DLStorage (pSt_HTTPParam->tszHttpUri , st_LoadbalanceCfg.st_LoadBalance .pStl_ListBucket , &st_StorageBucket))
282+ {
283+ st_HDRParam.bIsClose = true ;
284+ st_HDRParam.nHttpCode = 400 ;
285+ HttpProtocol_Server_SendMsgEx (xhWebdavHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
286+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV);
287+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X (" WEBDAV客户端:%s,处理WEBDAV协议PROPFIND方法失败,URL:%s" ), lpszClientAddr, pSt_HTTPParam->tszHttpUri );
288+ return false ;
289+ }
290+ int nALen = 0 ;
291+ XCHAR tszCreateDir[MAX_PATH] = {};
292+ _tcsxcpy (tszCreateDir, pSt_HTTPParam->tszHttpUri + 1 );
293+ BaseLib_String_Replace (tszCreateDir, &nALen, st_StorageBucket.tszBuckKey , st_StorageBucket.tszFilePath , true );
294+
295+ st_HDRParam.nHttpCode = 201 ;
296+ HttpProtocol_Server_SendMsgEx (xhWebdavHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
297+ XEngine_Net_SendMsg (lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV);
298+ XLOG_PRINT (xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X (" WEBDAV客户端:%s,处理WEBDAV协议MLCOL方法成功,创建的路径:%s" ), lpszClientAddr, tszCreateDir);
299+ }
277300 else
278301 {
279302 st_HDRParam.bIsClose = true ;
0 commit comments