Skip to content

Commit 0f5e67f

Browse files
committed
added:user verification for webdav
added:pass authorize type field
1 parent dc81cb1 commit 0f5e67f

File tree

8 files changed

+69
-22
lines changed

8 files changed

+69
-22
lines changed

XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.cpp

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -316,37 +316,42 @@ bool CProtocol_StoragePacket::Protocol_StoragePacket_DirOperator(XCHAR* ptszMsgB
316316
/********************************************************************
317317
函数名称:Protocol_StoragePacket_BasicAuth
318318
函数功能:基本验证协议代理转发
319-
参数.一:lpszMethod
319+
参数.一:lpszRequestType
320+
In/Out:In
321+
类型:常量字符指针
322+
可空:N
323+
意思:请求的业务类型
324+
参数.二:lpszMethod
320325
In/Out:In
321326
类型:常量字符指针
322327
可空:N
323328
意思:方法名称
324-
参数.:lpszPostUrl
329+
参数.:lpszPostUrl
325330
In/Out:In
326331
类型:常量字符指针
327332
可空:N
328333
意思:用户提交的地址
329-
参数.:lpszClientAddr
334+
参数.:lpszClientAddr
330335
In/Out:In
331336
类型:常量字符指针
332337
可空:N
333338
意思:用户发送的客户端地址
334-
参数.:lpszUser
339+
参数.:lpszUser
335340
In/Out:In
336341
类型:常量字符指针
337342
可空:N
338343
意思:用户
339-
参数.:lpszPass
344+
参数.:lpszPass
340345
In/Out:In
341346
类型:常量字符指针
342347
可空:N
343348
意思:密码
344-
参数.:ptszMsgBuffer
349+
参数.:ptszMsgBuffer
345350
In/Out:Out
346351
类型:字符指针
347352
可空:N
348353
意思:转发数据包
349-
参数.:pInt_MsgLen
354+
参数.:pInt_MsgLen
350355
In/Out:Out
351356
类型:整数型
352357
可空:N
@@ -356,7 +361,7 @@ bool CProtocol_StoragePacket::Protocol_StoragePacket_DirOperator(XCHAR* ptszMsgB
356361
意思:是否成功
357362
备注:
358363
*********************************************************************/
359-
bool CProtocol_StoragePacket::Protocol_StoragePacket_BasicAuth(LPCXSTR lpszMethod, LPCXSTR lpszPostUrl, LPCXSTR lpszClientAddr, LPCXSTR lpszUser, LPCXSTR lpszPass, XCHAR* ptszMsgBuffer, int* pInt_MsgLen)
364+
bool CProtocol_StoragePacket::Protocol_StoragePacket_BasicAuth(int nRequestType, LPCXSTR lpszMethod, LPCXSTR lpszPostUrl, LPCXSTR lpszClientAddr, LPCXSTR lpszUser, LPCXSTR lpszPass, XCHAR* ptszMsgBuffer, int* pInt_MsgLen)
360365
{
361366
Protocol_IsErrorOccur = false;
362367

@@ -368,6 +373,7 @@ bool CProtocol_StoragePacket::Protocol_StoragePacket_BasicAuth(LPCXSTR lpszMetho
368373
}
369374
Json::Value st_JsonRoot;
370375

376+
st_JsonRoot["Type"] = nRequestType;
371377
st_JsonRoot["lpszMethod"] = lpszMethod;
372378
st_JsonRoot["lpszPostUrl"] = lpszPostUrl;
373379
st_JsonRoot["lpszClientAddr"] = lpszClientAddr;

XEngine_Source/StorageModule_Protocol/Protocol_Packet/Protocol_StoragePacket.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class CProtocol_StoragePacket
2121
bool Protocol_StoragePacket_QueryFile(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XSTORAGECORE_DBFILE*** pppSt_DBFile, int nListCount, LPCXSTR lpszTimeStart = NULL, LPCXSTR lpszTimeEnd = NULL, XNETHANDLE xhToken = 0);
2222
bool Protocol_StoragePacket_Info(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, SESSION_STORAGEINFO*** pppSt_DLInfo, SESSION_STORAGEINFO*** pppSt_UPInfo, int nDLCount, int nUPCount);
2323
bool Protocol_StoragePacket_DirOperator(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XCHAR*** pppszListEnum, int nListCount);
24-
bool Protocol_StoragePacket_BasicAuth(LPCXSTR lpszMethod, LPCXSTR lpszPostUrl, LPCXSTR lpszClientAddr, LPCXSTR lpszUser, LPCXSTR lpszPass, XCHAR* ptszMsgBuffer, int* pInt_MsgLen);
24+
bool Protocol_StoragePacket_BasicAuth(int nRequestType, LPCXSTR lpszMethod, LPCXSTR lpszPostUrl, LPCXSTR lpszClientAddr, LPCXSTR lpszUser, LPCXSTR lpszPass, XCHAR* ptszMsgBuffer, int* pInt_MsgLen);
2525
bool Protocol_StoragePacket_UPDown(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszBuckKey, LPCXSTR lpszFileName, LPCXSTR lpszClientAddr, __int64x nFileSize, bool bDown, LPCXSTR lpszFileHash = NULL);
2626
bool Protocol_StoragePacket_REQFile(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszFileName = NULL, LPCXSTR lpszFileHash = NULL, XNETHANDLE xhToken = 0);
2727
bool Protocol_StoragePacket_Action(XCHAR* ptszMsgBuffer, int* pInt_MsgLen, XNETHANDLE xhToken, XENGINE_ACTIONINFO* pSt_ActionInfo);

XEngine_Source/StorageModule_Protocol/StorageProtocol_Define.h

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -328,37 +328,42 @@ extern "C" bool Protocol_StoragePacket_HTTPPacket(XCHAR* ptszMsgBuffer, int* pIn
328328
/********************************************************************
329329
函数名称:Protocol_StoragePacket_BasicAuth
330330
函数功能:基本验证协议代理转发
331-
参数.一:lpszMethod
331+
参数.一:lpszRequestType
332+
In/Out:In
333+
类型:常量字符指针
334+
可空:N
335+
意思:请求的业务类型
336+
参数.二:lpszMethod
332337
In/Out:In
333338
类型:常量字符指针
334339
可空:N
335340
意思:方法名称
336-
参数.:lpszPostUrl
341+
参数.:lpszPostUrl
337342
In/Out:In
338343
类型:常量字符指针
339344
可空:N
340345
意思:用户提交的地址
341-
参数.:lpszClientAddr
346+
参数.:lpszClientAddr
342347
In/Out:In
343348
类型:常量字符指针
344349
可空:N
345350
意思:用户发送的客户端地址
346-
参数.:lpszUser
351+
参数.:lpszUser
347352
In/Out:In
348353
类型:常量字符指针
349354
可空:N
350355
意思:用户
351-
参数.:lpszPass
356+
参数.:lpszPass
352357
In/Out:In
353358
类型:常量字符指针
354359
可空:N
355360
意思:密码
356-
参数.:ptszMsgBuffer
361+
参数.:ptszMsgBuffer
357362
In/Out:Out
358363
类型:字符指针
359364
可空:N
360365
意思:转发数据包
361-
参数.:pInt_MsgLen
366+
参数.:pInt_MsgLen
362367
In/Out:Out
363368
类型:整数型
364369
可空:N
@@ -368,7 +373,7 @@ extern "C" bool Protocol_StoragePacket_HTTPPacket(XCHAR* ptszMsgBuffer, int* pIn
368373
意思:是否成功
369374
备注:
370375
*********************************************************************/
371-
extern "C" bool Protocol_StoragePacket_BasicAuth(LPCXSTR lpszMethod, LPCXSTR lpszPostUrl, LPCXSTR lpszClientAddr, LPCXSTR lpszUser, LPCXSTR lpszPass, XCHAR * ptszMsgBuffer, int* pInt_MsgLen);
376+
extern "C" bool Protocol_StoragePacket_BasicAuth(int nRequestType, LPCXSTR lpszMethod, LPCXSTR lpszPostUrl, LPCXSTR lpszClientAddr, LPCXSTR lpszUser, LPCXSTR lpszPass, XCHAR * ptszMsgBuffer, int* pInt_MsgLen);
372377
/********************************************************************
373378
函数名称:Protocol_StoragePacket_UPDown
374379
函数功能:上传下载完成代理通知协议

XEngine_Source/StorageModule_Protocol/pch.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ extern "C" bool Protocol_StoragePacket_HTTPPacket(XCHAR* ptszMsgBuffer, int* pIn
7272
{
7373
return m_StoragePacket.Protocol_StoragePacket_HTTPPacket(ptszMsgBuffer, pInt_MsgLen, nCode, lpszMSGInfo);
7474
}
75-
extern "C" bool Protocol_StoragePacket_BasicAuth(LPCXSTR lpszMethod, LPCXSTR lpszPostUrl, LPCXSTR lpszClientAddr, LPCXSTR lpszUser, LPCXSTR lpszPass, XCHAR * ptszMsgBuffer, int* pInt_MsgLen)
75+
extern "C" bool Protocol_StoragePacket_BasicAuth(int nRequestType, LPCXSTR lpszMethod, LPCXSTR lpszPostUrl, LPCXSTR lpszClientAddr, LPCXSTR lpszUser, LPCXSTR lpszPass, XCHAR * ptszMsgBuffer, int* pInt_MsgLen)
7676
{
77-
return m_StoragePacket.Protocol_StoragePacket_BasicAuth(lpszMethod, lpszPostUrl, lpszClientAddr, lpszUser, lpszPass, ptszMsgBuffer, pInt_MsgLen);
77+
return m_StoragePacket.Protocol_StoragePacket_BasicAuth(nRequestType, lpszMethod, lpszPostUrl, lpszClientAddr, lpszUser, lpszPass, ptszMsgBuffer, pInt_MsgLen);
7878
}
7979
extern "C" bool Protocol_StoragePacket_UPDown(XCHAR * ptszMsgBuffer, int* pInt_MsgLen, LPCXSTR lpszBuckKey, LPCXSTR lpszFileName, LPCXSTR lpszClientAddr, __int64x nFileSize, bool bDown, LPCXSTR lpszFileHash)
8080
{

XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
8787
int nResponseCode = 0;
8888
XCHAR* ptszBody = NULL;
8989

90-
Protocol_StoragePacket_BasicAuth(pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, lpszClientAddr, tszUserName, tszUserPass, tszSDBuffer, &nSDLen);
90+
Protocol_StoragePacket_BasicAuth(STORAGE_NETTYPE_HTTPCENTER, pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, lpszClientAddr, tszUserName, tszUserPass, tszSDBuffer, &nSDLen);
9191
APIClient_Http_Request(_X("POST"), st_ServiceCfg.st_XProxy.tszAuthPass, tszSDBuffer, &nResponseCode, &ptszBody, &nSDLen);
9292
if (200 != nResponseCode)
9393
{

XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ bool XEngine_Task_HttpDownload(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in
198198
int nResponseCode = 0;
199199
XCHAR* ptszBody = NULL;
200200

201-
Protocol_StoragePacket_BasicAuth(pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, lpszClientAddr, tszUserName, tszUserPass, tszSDBuffer, &nSDLen);
201+
Protocol_StoragePacket_BasicAuth(STORAGE_NETTYPE_HTTPDOWNLOAD, pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, lpszClientAddr, tszUserName, tszUserPass, tszSDBuffer, &nSDLen);
202202
APIClient_Http_Request(_X("POST"), st_ServiceCfg.st_XProxy.tszAuthPass, tszSDBuffer, &nResponseCode, &ptszBody, &nSDLen);
203203
if (200 != nResponseCode)
204204
{

XEngine_Source/XEngine_StorageApp/StorageApp_UPLoader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ bool XEngine_Task_HttpUPLoader(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in
115115
int nResponseCode = 0;
116116
XCHAR* ptszBody = NULL;
117117

118-
Protocol_StoragePacket_BasicAuth(pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, lpszClientAddr, tszUserName, tszUserPass, tszSDBuffer, &nSDLen);
118+
Protocol_StoragePacket_BasicAuth(STORAGE_NETTYPE_HTTPUPLOADER, pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, lpszClientAddr, tszUserName, tszUserPass, tszSDBuffer, &nSDLen);
119119
APIClient_Http_Request(_X("POST"), st_ServiceCfg.st_XProxy.tszAuthPass, tszSDBuffer, &nResponseCode, &ptszBody, &nSDLen);
120120
if (200 != nResponseCode)
121121
{

XEngine_Source/XEngine_StorageApp/StorageApp_Webdav.cpp

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,42 @@ bool XEngine_Task_HttpWebdav(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
6161
st_HDRParam.bIsClose = false;
6262
st_HDRParam.nHttpCode = 200;
6363
_tcsxcpy(st_HDRParam.tszMimeType, _X("xml"));
64+
65+
if (st_ServiceCfg.st_XProxy.bAuthPass)
66+
{
67+
XCHAR tszUserName[64];
68+
XCHAR tszUserPass[64];
69+
70+
memset(tszUserName, '\0', sizeof(tszUserName));
71+
memset(tszUserPass, '\0', sizeof(tszUserPass));
72+
if (!APIHelp_Api_ProxyAuth(tszUserName, tszUserPass, pptszListHdr, nHdrCount))
73+
{
74+
st_HDRParam.bAuth = true;
75+
st_HDRParam.nHttpCode = 401;
76+
77+
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
78+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPWEBDAV);
79+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("WEBDAV客户端:%s,用户验证失败,错误:%lX"), lpszClientAddr, StorageHelp_GetLastError());
80+
return false;
81+
}
82+
int nResponseCode = 0;
83+
XCHAR* ptszBody = NULL;
84+
85+
Protocol_StoragePacket_BasicAuth(STORAGE_NETTYPE_HTTPWEBDAV, pSt_HTTPParam->tszHttpMethod, pSt_HTTPParam->tszHttpUri, lpszClientAddr, tszUserName, tszUserPass, tszSDBuffer, &nSDLen);
86+
APIClient_Http_Request(_X("POST"), st_ServiceCfg.st_XProxy.tszAuthPass, tszSDBuffer, &nResponseCode, &ptszBody, &nSDLen);
87+
if (200 != nResponseCode)
88+
{
89+
st_HDRParam.bAuth = true;
90+
st_HDRParam.nHttpCode = nResponseCode;
91+
92+
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam);
93+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
94+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("WEBDAV客户端:%s,用户验证失败,用户名:%s,密码:%s,错误码:%d,错误内容:%s"), tszUserName, tszUserPass, tszUserPass, nResponseCode, ptszBody);
95+
}
96+
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszBody);
97+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("WEBDAV客户端:%s,代理服务:%s 验证通过,用户名:%s,密码:%s"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszAuthPass, tszUserName, tszUserPass);
98+
st_HDRParam.bAuth = true;
99+
}
64100
//http://127.0.0.1:5103/storagekey1
65101
if (0 == _tcsxnicmp(lpszMethodOption, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodOption)))
66102
{

0 commit comments

Comments
 (0)