Skip to content

Commit f354661

Browse files
committed
fixed:PROPFIND sometime have no name field
modify:PROPFIND reply contact modify time and size
1 parent 5dcbc50 commit f354661

File tree

12 files changed

+125
-47
lines changed

12 files changed

+125
-47
lines changed

XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,5 +486,45 @@ bool CAPIHelp_Api::APIHelp_Api_UrlStr(XCHAR* ptszKeyStr, LPCXSTR lpszUrl)
486486
// 添加字符串结束符
487487
ptszKeyStr[nLen] = '\0';
488488

489+
return true;
490+
}
491+
/********************************************************************
492+
函数名称:APIHelp_Api_GetLastName
493+
函数功能:获取最后文件名
494+
参数.一:ptszLastName
495+
In/Out:Out
496+
类型:字符指针
497+
可空:N
498+
意思:输出获取到的文件名
499+
参数.二:lpszPathStr
500+
In/Out:In
501+
类型:常量字符指针
502+
可空:N
503+
意思:输入要获取的字符串
504+
返回值
505+
类型:逻辑型
506+
意思:是否成功
507+
备注:
508+
*********************************************************************/
509+
bool CAPIHelp_Api::APIHelp_Api_GetLastName(XCHAR* ptszLastName, LPCXSTR lpszPathStr)
510+
{
511+
APIHelp_IsErrorOccur = false;
512+
513+
xstring m_StrPath = lpszPathStr;
514+
// 如果以斜杠结尾,去掉末尾的斜杠
515+
if (!m_StrPath.empty() && m_StrPath.back() == '/')
516+
{
517+
m_StrPath.pop_back();
518+
}
519+
// 找到最后一个斜杠的位置
520+
size_t nPos = m_StrPath.find_last_of('/');
521+
if (nPos == std::string::npos)
522+
{
523+
_tcsxcpy(ptszLastName, m_StrPath.c_str());
524+
}
525+
else
526+
{
527+
_tcsxcpy(ptszLastName, m_StrPath.substr(nPos + 1).c_str());
528+
}
489529
return true;
490530
}

XEngine_Source/StorageModule_APIHelp/APIHelp_Api/APIHelp_Api.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class CAPIHelp_Api
2626
bool APIHelp_Api_Boundary(XCHAR*** ppptszList, int nListCount, XCHAR* ptszBoundStr);
2727
bool APIHelp_Api_GetDIRSize(LPCXSTR lpszDIRStr, __int64u* pInt_DIRSize);
2828
bool APIHelp_Api_UrlStr(XCHAR* ptszKeyStr, LPCXSTR lpszUrl);
29+
bool APIHelp_Api_GetLastName(XCHAR* ptszLastName, LPCXSTR lpszPathStr);
2930
protected:
3031
private:
3132
};

XEngine_Source/StorageModule_APIHelp/APIHelp_Define.h

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,25 @@ extern "C" bool APIHelp_Api_GetDIRSize(LPCXSTR lpszDIRStr, __int64u* pInt_DIRSiz
371371
备注:
372372
*********************************************************************/
373373
extern "C" bool APIHelp_Api_UrlStr(XCHAR* ptszKeyStr, LPCXSTR lpszUrl);
374+
/********************************************************************
375+
函数名称:APIHelp_Api_GetLastName
376+
函数功能:获取最后文件名
377+
参数.一:ptszLastName
378+
In/Out:Out
379+
类型:字符指针
380+
可空:N
381+
意思:输出获取到的文件名
382+
参数.二:lpszPathStr
383+
In/Out:In
384+
类型:常量字符指针
385+
可空:N
386+
意思:输入要获取的字符串
387+
返回值
388+
类型:逻辑型
389+
意思:是否成功
390+
备注:
391+
*********************************************************************/
392+
extern "C" bool APIHelp_Api_GetLastName(XCHAR* ptszLastName, LPCXSTR lpszPathStr);
374393
/************************************************************************/
375394
/* 加解密函数 */
376395
/************************************************************************/

XEngine_Source/StorageModule_APIHelp/StorageModule_APIHelp.def

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,5 @@ EXPORTS
1717
APIHelp_Api_UrlParse
1818
APIHelp_Api_Boundary
1919
APIHelp_Api_GetDIRSize
20-
APIHelp_Api_UrlStr
20+
APIHelp_Api_UrlStr
21+
APIHelp_Api_GetLastName

XEngine_Source/StorageModule_APIHelp/pch.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ extern "C" bool APIHelp_Api_UrlStr(XCHAR* ptszKeyStr, LPCXSTR lpszUrl)
9292
{
9393
return m_APIHelp.APIHelp_Api_UrlStr(ptszKeyStr, lpszUrl);
9494
}
95+
extern "C" bool APIHelp_Api_GetLastName(XCHAR* ptszLastName, LPCXSTR lpszPathStr)
96+
{
97+
return m_APIHelp.APIHelp_Api_GetLastName(ptszLastName, lpszPathStr);
98+
}
9599
/************************************************************************/
96100
/* 加解密函数 */
97101
/************************************************************************/

XEngine_Source/StorageModule_Config/Config_Define.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ typedef struct tag_XEngine_ServerConfig
6666
{
6767
bool bResumable;
6868
bool bUPHash;
69+
bool bWDLocation;
6970
int nHashMode;
7071
}st_XStorage;
7172
struct

XEngine_Source/StorageModule_Config/Config_Json/Config_Json.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ bool CConfig_Json::Config_Json_File(LPCXSTR lpszConfigFile, XENGINE_SERVERCONFIG
135135
_tcsxcpy(pSt_ServerConfig->st_XSql.tszSQLUser, st_JsonXSql["SQLUser"].asCString());
136136
_tcsxcpy(pSt_ServerConfig->st_XSql.tszSQLPass, st_JsonXSql["SQLPass"].asCString());
137137

138-
if (st_JsonRoot["XStorage"].empty() || (3 != st_JsonRoot["XStorage"].size()))
138+
if (st_JsonRoot["XStorage"].empty() || (4 != st_JsonRoot["XStorage"].size()))
139139
{
140140
Config_IsErrorOccur = true;
141141
Config_dwErrorCode = ERROR_XENGINE_BLOGIC_CONFIG_JSON_XSTORAGE;
@@ -145,6 +145,7 @@ bool CConfig_Json::Config_Json_File(LPCXSTR lpszConfigFile, XENGINE_SERVERCONFIG
145145
pSt_ServerConfig->st_XStorage.nHashMode = st_JsonXStorage["nHashMode"].asInt();
146146
pSt_ServerConfig->st_XStorage.bUPHash = st_JsonXStorage["bUPHash"].asBool();
147147
pSt_ServerConfig->st_XStorage.bResumable = st_JsonXStorage["bResumable"].asBool();
148+
pSt_ServerConfig->st_XStorage.bWDLocation = st_JsonXStorage["bWDLocation"].asBool();
148149

149150
if (st_JsonRoot["XProxy"].empty() || (6 != st_JsonRoot["XProxy"].size()))
150151
{

XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.cpp

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -733,21 +733,25 @@ bool CProtocol_StoragePacket::Protocol_StoragePacket_WDPropfind(XCHAR* ptszMsgBu
733733
pSt_XMLPropstat->InsertEndChild(pSt_XMLProp);
734734
//属性名称
735735
XMLElement* pSt_XMLPropName = m_XMLDocument.NewElement("d:displayname");
736-
pSt_XMLPropName->SetText(tszFileName);
736+
if (_tcsxlen(tszFileName) <= 0)
737+
{
738+
APIHelp_Api_GetLastName(tszFileName, (*ppptszListFile)[i]);
739+
}
740+
pSt_XMLPropName->SetText(tszFileName);
737741
pSt_XMLProp->InsertEndChild(pSt_XMLPropName);
738742

743+
XCHAR tszFileSize[128] = {};
744+
_xstprintf(tszFileSize, _X("%llu"), st_FileAttr.nFileSize);
745+
//属性大小
746+
XMLElement* pSt_XMLLength = m_XMLDocument.NewElement("d:getcontentlength");
747+
pSt_XMLLength->SetText(tszFileSize);
748+
pSt_XMLProp->InsertEndChild(pSt_XMLLength);
749+
//属性修改时间
750+
XMLElement* pSt_XMLModifyTime = m_XMLDocument.NewElement("d:getlastmodified");
751+
pSt_XMLModifyTime->SetText(tszGMTTime);
752+
pSt_XMLProp->InsertEndChild(pSt_XMLModifyTime);
739753
if (st_FileAttr.bFile)
740754
{
741-
XCHAR tszFileSize[128] = {};
742-
_xstprintf(tszFileSize, _X("%llu"), st_FileAttr.nFileSize);
743-
//属性大小
744-
XMLElement* pSt_XMLLength = m_XMLDocument.NewElement("d:getcontentlength");
745-
pSt_XMLLength->SetText(tszFileSize);
746-
pSt_XMLProp->InsertEndChild(pSt_XMLLength);
747-
//属性修改时间
748-
XMLElement* pSt_XMLModifyTime = m_XMLDocument.NewElement("d:getlastmodified");
749-
pSt_XMLModifyTime->SetText(tszGMTTime);
750-
pSt_XMLProp->InsertEndChild(pSt_XMLModifyTime);
751755
//增加会话属性
752756
//获得会话
753757
XENGINE_WEBDAVLOCK st_WDLocker = {};

XEngine_Source/StorageModule_Protocol/StorageModule_Protocol.vcxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@
104104
</PropertyGroup>
105105
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
106106
<LinkIncremental>false</LinkIncremental>
107-
<IncludePath>$(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;../XEngine_Depend/XEngine_Module/tinyxml2;$(IncludePath)</IncludePath>
107+
<IncludePath>$(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;../XEngine_Depend/XEngine_Module/tinyxml2;..\StorageModule_Protocol;$(IncludePath)</IncludePath>
108108
<LibraryPath>$(XEngine_Lib32);$(LibraryPath)</LibraryPath>
109109
</PropertyGroup>
110110
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
@@ -119,7 +119,7 @@
119119
</PropertyGroup>
120120
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
121121
<LinkIncremental>false</LinkIncremental>
122-
<IncludePath>$(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;../XEngine_Depend/XEngine_Module/tinyxml2;$(IncludePath)</IncludePath>
122+
<IncludePath>$(XEngine_Include);../XEngine_Depend/XEngine_Module/jsoncpp;../XEngine_Depend/XEngine_Module/tinyxml2;..\StorageModule_Protocol;$(IncludePath)</IncludePath>
123123
<LibraryPath>$(XEngine_Lib64);$(LibraryPath)</LibraryPath>
124124
</PropertyGroup>
125125
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">

0 commit comments

Comments
 (0)