Skip to content

Commit 4b04287

Browse files
committed
modify:http restful api verification Unification
1 parent 8105aac commit 4b04287

11 files changed

Lines changed: 132 additions & 347 deletions

XEngine_Source/XEngine_StorageApp/Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool
88
-ljsoncpp -ltinyxml2 -lXEngine_InfoReport -lXEngine_Verification
99
LIBEX =
1010
OBJECTS = Storage_TaskPass.o Storage_TaskManage.o Storage_TaskP2p.o Storage_TaskAction.o \
11-
StorageApp_Config.o StorageApp_Download.o StorageApp_Network.o StorageApp_Center.o StorageApp_UPLoader.o StorageApp_Webdav.o XEngine_StorageApp.o
11+
StorageApp_Config.o StorageApp_HTTPHelp.o StorageApp_Download.o StorageApp_Network.o StorageApp_Center.o StorageApp_UPLoader.o StorageApp_Webdav.o XEngine_StorageApp.o
1212

1313
ifeq ($(RELEASE),1)
1414
FLAGS = -c -D _RELEASE
@@ -49,6 +49,8 @@ all:$(OBJECTS)
4949

5050
StorageApp_Config.o:./StorageApp_Config.cpp
5151
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./StorageApp_Config.cpp
52+
StorageApp_HTTPHelp.o:./StorageApp_HTTPHelp.cpp
53+
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./StorageApp_HTTPHelp.cpp
5254
StorageApp_Download.o:./StorageApp_Download.cpp
5355
$(CC) $(DEBUG) $(FLAGS) $(UNICODE) $(PLATVER) $(LOADHDR) ./StorageApp_Download.cpp
5456
StorageApp_Network.o:./StorageApp_Network.cpp

XEngine_Source/XEngine_StorageApp/StorageApp_Center.cpp

Lines changed: 4 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -68,100 +68,16 @@ bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int
6868
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, pSt_HTTPParam->tszHttpUri);
6969
return false;
7070
}
71-
st_HDRParam.bIsClose = true;
72-
st_HDRParam.nHttpCode = 200;
71+
7372
if (st_ServiceCfg.st_XProxy.bAuthPass)
7473
{
75-
int nVType = 0;
76-
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {};
77-
78-
st_HDRParam.nHttpCode = 401;
79-
st_HDRParam.bIsClose = true;
80-
st_HDRParam.bAuth = true;
81-
//打包验证信息
82-
int nHDRLen = 0;
83-
XCHAR tszHDRBuffer[XPATH_MAX] = {};
84-
if (1 == st_ServiceCfg.st_XProxy.nVType)
85-
{
86-
Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen);
87-
}
88-
else
89-
{
90-
XCHAR tszNonceStr[64] = {};
91-
XCHAR tszOpaqueStr[64] = {};
92-
Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr);
93-
}
94-
//后去验证方法
95-
if (!Verification_HTTP_GetType(pptszListHdr, nHdrCount, &nVType))
96-
{
97-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
98-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
99-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.nVType, Verification_GetLastError());
100-
return false;
101-
}
102-
//验证方式是否一致
103-
if (st_ServiceCfg.st_XProxy.nVType != nVType)
104-
{
105-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
106-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
107-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceCfg.st_XProxy.nVType);
108-
return false;
109-
}
110-
bool bRet = false;
111-
int nHTTPCode = 0;
112-
int nMSGLen = 0;
113-
XCLIENT_APIHTTP st_APIHttp = {};
114-
115-
XCHAR* ptszMSGBuffer = NULL;
116-
if (!APIClient_Http_Request(_X("GET"), st_ServiceCfg.st_XProxy.tszAuthPass, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp))
117-
{
118-
st_HDRParam.nHttpCode = 500;
119-
Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification");
120-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer);
121-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
122-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszAuthPass, APIClient_GetLastError());
123-
return false;
124-
}
125-
if (200 != nHTTPCode)
126-
{
127-
st_HDRParam.nHttpCode = 500;
128-
Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification");
129-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer);
130-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
131-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszAuthPass, nHTTPCode);
132-
return false;
133-
}
134-
XENGINE_PROTOCOL_USERAUTH st_UserAuth = {};
135-
if (!Protocol_StorageParse_User(ptszMSGBuffer, nMsgLen, &st_UserAuth))
136-
{
137-
st_HDRParam.nHttpCode = 500;
138-
Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_AUTHFAIL, "api server reply failure,cant verification");
139-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer);
140-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
141-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer);
142-
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer);
143-
return false;
144-
}
145-
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer);
146-
147-
if (1 == nVType)
148-
{
149-
bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszListHdr, nHdrCount);
150-
}
151-
else if (2 == nVType)
152-
{
153-
bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszListHdr, nHdrCount);
154-
}
155-
156-
if (!bRet)
74+
if (!StorageApp_HTTPHelp_Verification(lpszClientAddr, pSt_HTTPParam, pptszListHdr, nHdrCount, st_ServiceCfg.st_XProxy.tszAuthPass))
15775
{
158-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
159-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
160-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType);
16176
return false;
16277
}
163-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType);
16478
}
79+
st_HDRParam.bIsClose = true;
80+
st_HDRParam.nHttpCode = 200;
16581

16682
if (0 == _tcsxnicmp(lpszMethodPost, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodPost)))
16783
{

XEngine_Source/XEngine_StorageApp/StorageApp_Center.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@
1111
// History:
1212
*********************************************************************/
1313
XHTHREAD XCALLBACK XEngine_Center_HTTPThread(XPVOID lParam);
14+
1415
bool XEngine_Task_HttpCenter(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, int nMsgLen, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, XCHAR** pptszListHdr, int nHdrCount);

XEngine_Source/XEngine_StorageApp/StorageApp_Download.cpp

Lines changed: 1 addition & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -179,95 +179,10 @@ bool XEngine_Task_HttpDownload(LPCXSTR lpszClientAddr, LPCXSTR lpszMsgBuffer, in
179179
//验证用户
180180
if (st_ServiceCfg.st_XProxy.bDLPass)
181181
{
182-
int nVType = 0;
183-
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {};
184-
185-
st_HDRParam.nHttpCode = 401;
186-
st_HDRParam.bIsClose = true;
187-
st_HDRParam.bAuth = true;
188-
//打包验证信息
189-
int nHDRLen = 0;
190-
XCHAR tszHDRBuffer[XPATH_MAX] = {};
191-
if (1 == st_ServiceCfg.st_XProxy.nVType)
192-
{
193-
Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen);
194-
}
195-
else
196-
{
197-
XCHAR tszNonceStr[64] = {};
198-
XCHAR tszOpaqueStr[64] = {};
199-
Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr);
200-
}
201-
//后去验证方法
202-
if (!Verification_HTTP_GetType(pptszListHdr, nHdrCount, &nVType))
203-
{
204-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
205-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD);
206-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.nVType, Verification_GetLastError());
207-
return false;
208-
}
209-
//验证方式是否一致
210-
if (st_ServiceCfg.st_XProxy.nVType != nVType)
211-
{
212-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
213-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD);
214-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceCfg.st_XProxy.nVType);
215-
return false;
216-
}
217-
bool bRet = false;
218-
int nHTTPCode = 0;
219-
int nMSGLen = 0;
220-
XCLIENT_APIHTTP st_APIHttp = {};
221-
222-
XCHAR* ptszMSGBuffer = NULL;
223-
if (!APIClient_Http_Request(_X("GET"), st_ServiceCfg.st_XProxy.tszDLPass, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp))
224-
{
225-
st_HDRParam.nHttpCode = 500;
226-
Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification");
227-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer);
228-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD);
229-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszDLPass, APIClient_GetLastError());
230-
return false;
231-
}
232-
if (200 != nHTTPCode)
233-
{
234-
st_HDRParam.nHttpCode = 500;
235-
Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification");
236-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer);
237-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD);
238-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, st_ServiceCfg.st_XProxy.tszDLPass, nHTTPCode);
239-
return false;
240-
}
241-
XENGINE_PROTOCOL_USERAUTH st_UserAuth = {};
242-
if (!Protocol_StorageParse_User(ptszMSGBuffer, nMsgLen, &st_UserAuth))
243-
{
244-
st_HDRParam.nHttpCode = 500;
245-
Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_AUTHFAIL, "api server reply failure,cant verification");
246-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer);
247-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD);
248-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer);
249-
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer);
250-
return false;
251-
}
252-
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer);
253-
254-
if (1 == nVType)
255-
{
256-
bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszListHdr, nHdrCount);
257-
}
258-
else if (2 == nVType)
259-
{
260-
bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszListHdr, nHdrCount);
261-
}
262-
263-
if (!bRet)
182+
if (!StorageApp_HTTPHelp_Verification(lpszClientAddr, pSt_HTTPParam, pptszListHdr, nHdrCount, st_ServiceCfg.st_XProxy.tszDLPass))
264183
{
265-
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
266-
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPDOWNLOAD);
267-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("下载客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType);
268184
return false;
269185
}
270-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("下载客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType);
271186
}
272187
//使用重定向,这是分布式重定向实现
273188
if (st_LoadbalanceCfg.st_LBDistributed.nDownldMode > 0)
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
#include "StorageApp_Hdr.h"
2+
3+
bool StorageApp_HTTPHelp_Verification(LPCXSTR lpszClientAddr, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, XCHAR** pptszListHdr, int nHdrCount, LPCXSTR lpszRestApi)
4+
{
5+
int nSDLen = 2048;
6+
int nRVLen = 2048;
7+
int nVType = 0;
8+
XCHAR tszSDBuffer[2048] = {};
9+
XCHAR tszRVBuffer[2048] = {};
10+
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {};
11+
12+
st_HDRParam.nHttpCode = 401;
13+
st_HDRParam.bIsClose = true;
14+
st_HDRParam.bAuth = true;
15+
//打包验证信息
16+
int nHDRLen = 0;
17+
XCHAR tszHDRBuffer[XPATH_MAX] = {};
18+
if (1 == st_ServiceCfg.st_XProxy.nVType)
19+
{
20+
Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen);
21+
}
22+
else
23+
{
24+
XCHAR tszNonceStr[64] = {};
25+
XCHAR tszOpaqueStr[64] = {};
26+
Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr);
27+
}
28+
//后去验证方法
29+
if (!Verification_HTTP_GetType(pptszListHdr, nHdrCount, &nVType))
30+
{
31+
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
32+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
33+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceCfg.st_XProxy.nVType, Verification_GetLastError());
34+
return false;
35+
}
36+
//验证方式是否一致
37+
if (st_ServiceCfg.st_XProxy.nVType != nVType)
38+
{
39+
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
40+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
41+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceCfg.st_XProxy.nVType);
42+
return false;
43+
}
44+
bool bRet = false;
45+
int nHTTPCode = 0;
46+
int nMSGLen = 0;
47+
XCLIENT_APIHTTP st_APIHttp = {};
48+
49+
XCHAR* ptszMSGBuffer = NULL;
50+
if (!APIClient_Http_Request(_X("GET"), lpszRestApi, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp))
51+
{
52+
st_HDRParam.nHttpCode = 500;
53+
Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification");
54+
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer);
55+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
56+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, lpszRestApi, APIClient_GetLastError());
57+
return false;
58+
}
59+
if (200 != nHTTPCode)
60+
{
61+
st_HDRParam.nHttpCode = 500;
62+
Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_SERVERDOWN, "api server is down,cant verification");
63+
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer);
64+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
65+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, lpszRestApi, nHTTPCode);
66+
return false;
67+
}
68+
XENGINE_PROTOCOL_USERAUTH st_UserAuth = {};
69+
if (!Protocol_StorageParse_User(ptszMSGBuffer, nMSGLen, &st_UserAuth))
70+
{
71+
st_HDRParam.nHttpCode = 500;
72+
Protocol_StoragePacket_HTTPPacket(tszRVBuffer, &nRVLen, ERROR_STORAGE_PROTOCOL_HTTP_MANAGE_AUTHFAIL, "api server reply failure,cant verification");
73+
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, tszRVBuffer, nRVLen, tszHDRBuffer);
74+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
75+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer);
76+
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer);
77+
return false;
78+
}
79+
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer);
80+
81+
if (1 == nVType)
82+
{
83+
bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszListHdr, nHdrCount);
84+
}
85+
else if (2 == nVType)
86+
{
87+
bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszListHdr, nHdrCount);
88+
}
89+
90+
if (!bRet)
91+
{
92+
HttpProtocol_Server_SendMsgEx(xhCenterHttp, tszSDBuffer, &nSDLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
93+
XEngine_Net_SendMsg(lpszClientAddr, tszSDBuffer, nSDLen, STORAGE_NETTYPE_HTTPCENTER);
94+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType);
95+
return false;
96+
}
97+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType);
98+
return true;
99+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#pragma once
2+
/********************************************************************
3+
// Created: 2026/04/16 17:27:59
4+
// File Name: D:\XEngine_Storage\XEngine_Source\XEngine_StorageApp\StorageApp_HTTPHelp.h
5+
// File Path: D:\XEngine_Storage\XEngine_Source\XEngine_StorageApp
6+
// File Base: StorageApp_HTTPHelp
7+
// File Ext: h
8+
// Project: XEngine
9+
// Author: qyt
10+
// Purpose: HTTP 帮助函数封装
11+
// History:
12+
*********************************************************************/
13+
bool StorageApp_HTTPHelp_Verification(LPCXSTR lpszClientAddr, RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, XCHAR** pptszListHdr, int nHdrCount, LPCXSTR lpszRestApi);

XEngine_Source/XEngine_StorageApp/StorageApp_Hdr.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ extern XENGINE_LBCONFIG st_LoadbalanceCfg;
115115

116116
#include "StorageApp_Network.h"
117117
#include "StorageApp_Config.h"
118+
#include "StorageApp_HTTPHelp.h"
118119
#include "StorageApp_Download.h"
119120
#include "StorageApp_UPLoader.h"
120121
#include "StorageApp_Center.h"

0 commit comments

Comments
 (0)