Skip to content

Commit 6754b9b

Browse files
committed
added:http basic and digest authorize support
1 parent c447c32 commit 6754b9b

File tree

8 files changed

+162
-23
lines changed

8 files changed

+162
-23
lines changed

XEngine_Source/Makefile

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ PLUGIN_MODULE_METER = ./XEngine_PluginModule/ModulePlugin_Meter
1919

2020
THIRDPART_MODULE_JSONCPP = ./XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/jsoncpp
2121
THIRDPART_MODULE_REPORT = ./XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_InfoReport
22-
22+
THIRDPART_MODULE_VERIFICATION = ./XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_Verfication
2323
APIMODULE_PHONE_PATH = ./XEngine_DependLibrary/XEngine_PhoneData/XEngine_Source/XEngine_APIModulePhone
2424
APIMODULE_IPMAC_PATH = ./XEngine_DependLibrary/XEngine_IPMacData/XEngine_Source/XEngine_APIModuleIPMac
2525

@@ -31,7 +31,7 @@ else ifeq ($(PLATFORM),mac)
3131
FILEEXT = dylib
3232
endif
3333

34-
XENGINE_MODULES = libjsoncpp.so libXEngine_InfoReport.so \
34+
XENGINE_MODULES = libjsoncpp.so libXEngine_InfoReport.so libXEngine_Verfication.so \
3535
libXEngine_ModuleConfigure.so libXEngine_ModuleDatabase.so libXEngine_ModuleProtocol.so libXEngine_ModuleSystem.so libXEngine_ModuleHelp.so libXEngine_ModulePlugin.so \
3636
libModulePlugin_Zodiac.so libModulePlugin_Password.so libModulePlugin_Timezone.so libModulePlugin_BMIndex.so libModulePlugin_Meter.so \
3737
libXEngine_APIModulePhone.so libXEngine_APIModuleIPMac.so \
@@ -52,6 +52,12 @@ ifeq ($(FLAGS), InstallAll)
5252
else
5353
make -C $(THIRDPART_MODULE_REPORT) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS)
5454
endif
55+
libXEngine_Verfication.so:
56+
ifeq ($(FLAGS), InstallAll)
57+
cp $(THIRDPART_MODULE_VERIFICATION)/libXEngine_Verfication.$(FILEEXT) ../XEngine_Release/
58+
else
59+
make -C $(THIRDPART_MODULE_VERIFICATION) PLATFORM=$(PLATFORM) UNICODE=$(UNICODE) RELEASE=$(RELEASE) $(FLAGS)
60+
endif
5561
libXEngine_APIModulePhone.so:
5662
ifeq ($(FLAGS), InstallAll)
5763
cp $(APIMODULE_PHONE_PATH)/libXEngine_APIModulePhone.$(FILEEXT) ../XEngine_Release/

XEngine_Source/XEngine.sln

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,20 +19,21 @@ EndProject
1919
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_HttpApp", "XEngine_ServiceApp\XEngine_HttpApp\XEngine_HttpApp.vcxproj", "{E756B7D2-D40D-4106-9C14-1D90F20A712E}"
2020
ProjectSection(ProjectDependencies) = postProject
2121
{140AD4A9-4918-4345-B352-507C345AEBE0} = {140AD4A9-4918-4345-B352-507C345AEBE0}
22-
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89} = {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}
23-
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}
2422
{201B6D13-82A7-49E9-9736-D6B3BFE05B30} = {201B6D13-82A7-49E9-9736-D6B3BFE05B30}
25-
{FFAC032D-4F8C-4C70-AF36-D79685A6961F} = {FFAC032D-4F8C-4C70-AF36-D79685A6961F}
2623
{32BB166A-3D3D-45EF-8BED-2E0471274159} = {32BB166A-3D3D-45EF-8BED-2E0471274159}
2724
{37B8E91F-EC52-41F0-B21D-441D4270C05F} = {37B8E91F-EC52-41F0-B21D-441D4270C05F}
2825
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010} = {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}
2926
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D} = {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}
3027
{6F111577-DAF8-4294-B516-0077C22D7613} = {6F111577-DAF8-4294-B516-0077C22D7613}
31-
{A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A} = {A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A}
3228
{92F971AB-CAC9-4D9B-A9CA-AFD9CA17E505} = {92F971AB-CAC9-4D9B-A9CA-AFD9CA17E505}
29+
{A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A} = {A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A}
30+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256} = {A8E43EC0-698A-4807-8A61-B2BE5FAB7256}
3331
{BBC4B2B4-1143-45DF-8890-47CE26A61D0E} = {BBC4B2B4-1143-45DF-8890-47CE26A61D0E}
3432
{CB443280-E283-44CD-B956-52C404A51DB6} = {CB443280-E283-44CD-B956-52C404A51DB6}
33+
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}
3534
{F54F152C-594F-4465-A44E-2DB915B39760} = {F54F152C-594F-4465-A44E-2DB915B39760}
35+
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89} = {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}
36+
{FFAC032D-4F8C-4C70-AF36-D79685A6961F} = {FFAC032D-4F8C-4C70-AF36-D79685A6961F}
3637
EndProjectSection
3738
EndProject
3839
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_ModuleDatabase", "XEngine_ModuleDatabase\XEngine_ModuleDatabase.vcxproj", "{140AD4A9-4918-4345-B352-507C345AEBE0}"
@@ -78,21 +79,21 @@ EndProject
7879
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_APIServiceApp", "XEngine_ServiceApp\XEngine_APIServiceApp\XEngine_APIServiceApp.vcxproj", "{096BEF37-4AF6-490D-868B-6306D3E251E7}"
7980
ProjectSection(ProjectDependencies) = postProject
8081
{140AD4A9-4918-4345-B352-507C345AEBE0} = {140AD4A9-4918-4345-B352-507C345AEBE0}
81-
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89} = {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}
82-
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}
8382
{201B6D13-82A7-49E9-9736-D6B3BFE05B30} = {201B6D13-82A7-49E9-9736-D6B3BFE05B30}
84-
{FFAC032D-4F8C-4C70-AF36-D79685A6961F} = {FFAC032D-4F8C-4C70-AF36-D79685A6961F}
8583
{32BB166A-3D3D-45EF-8BED-2E0471274159} = {32BB166A-3D3D-45EF-8BED-2E0471274159}
8684
{37B8E91F-EC52-41F0-B21D-441D4270C05F} = {37B8E91F-EC52-41F0-B21D-441D4270C05F}
8785
{6C935BE1-77E3-4719-A7A6-C76ABAFEE010} = {6C935BE1-77E3-4719-A7A6-C76ABAFEE010}
8886
{6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D} = {6D0FCB40-D544-4AB2-A239-2FEBC4B98F6D}
8987
{6F111577-DAF8-4294-B516-0077C22D7613} = {6F111577-DAF8-4294-B516-0077C22D7613}
90-
{A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A} = {A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A}
9188
{92F971AB-CAC9-4D9B-A9CA-AFD9CA17E505} = {92F971AB-CAC9-4D9B-A9CA-AFD9CA17E505}
89+
{A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A} = {A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A}
9290
{BBC4B2B4-1143-45DF-8890-47CE26A61D0E} = {BBC4B2B4-1143-45DF-8890-47CE26A61D0E}
9391
{CB443280-E283-44CD-B956-52C404A51DB6} = {CB443280-E283-44CD-B956-52C404A51DB6}
9492
{E756B7D2-D40D-4106-9C14-1D90F20A712E} = {E756B7D2-D40D-4106-9C14-1D90F20A712E}
93+
{F1736B3F-03A2-4FC7-B045-A12BA8D724FB} = {F1736B3F-03A2-4FC7-B045-A12BA8D724FB}
9594
{F54F152C-594F-4465-A44E-2DB915B39760} = {F54F152C-594F-4465-A44E-2DB915B39760}
95+
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89} = {F6520D2C-BB8E-45BB-964B-F5D6A4318A89}
96+
{FFAC032D-4F8C-4C70-AF36-D79685A6961F} = {FFAC032D-4F8C-4C70-AF36-D79685A6961F}
9697
EndProjectSection
9798
EndProject
9899
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "XEngine_DependLibrary", "XEngine_DependLibrary", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
@@ -111,6 +112,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_APIModuleIPMac", "X
111112
EndProject
112113
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_APIModulePhone", "XEngine_DependLibrary\XEngine_PhoneData\XEngine_Source\XEngine_APIModulePhone\XEngine_APIModulePhone.vcxproj", "{A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A}"
113114
EndProject
115+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XEngine_Verification", "XEngine_DependLibrary\XEngine_OPenSource\XEngine_Module\XEngine_Verification\XEngine_Verification.vcxproj", "{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}"
116+
EndProject
114117
Global
115118
GlobalSection(SolutionConfigurationPlatforms) = preSolution
116119
Debug|ARM64 = Debug|ARM64
@@ -325,6 +328,18 @@ Global
325328
{A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A}.Release|x64.Build.0 = Release|x64
326329
{A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A}.Release|x86.ActiveCfg = Release|Win32
327330
{A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A}.Release|x86.Build.0 = Release|Win32
331+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Debug|ARM64.ActiveCfg = Debug|ARM64
332+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Debug|ARM64.Build.0 = Debug|ARM64
333+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Debug|x64.ActiveCfg = Debug|x64
334+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Debug|x64.Build.0 = Debug|x64
335+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Debug|x86.ActiveCfg = Debug|Win32
336+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Debug|x86.Build.0 = Debug|Win32
337+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Release|ARM64.ActiveCfg = Release|ARM64
338+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Release|ARM64.Build.0 = Release|ARM64
339+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Release|x64.ActiveCfg = Release|x64
340+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Release|x64.Build.0 = Release|x64
341+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Release|x86.ActiveCfg = Release|Win32
342+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256}.Release|x86.Build.0 = Release|Win32
328343
EndGlobalSection
329344
GlobalSection(SolutionProperties) = preSolution
330345
HideSolutionNode = FALSE
@@ -341,6 +356,7 @@ Global
341356
{F6520D2C-BB8E-45BB-964B-F5D6A4318A89} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
342357
{FFAC032D-4F8C-4C70-AF36-D79685A6961F} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
343358
{A13B72E7-FC40-4A27-81C3-26DF3C8F4C0A} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
359+
{A8E43EC0-698A-4807-8A61-B2BE5FAB7256} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
344360
EndGlobalSection
345361
GlobalSection(ExtensibilityGlobals) = postSolution
346362
SolutionGuid = {9B202F91-A601-429E-BB0F-880DDEE096FE}

XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ typedef struct
106106
{
107107
XCHAR tszUserName[XPATH_MAX];
108108
XCHAR tszUserPass[XPATH_MAX];
109+
XCHAR tszAPIAuth[XPATH_MAX];
110+
int nVType;
111+
bool bEnable;
109112
struct
110113
{
111114
bool bBackService;

XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,13 +197,17 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
197197
_tcsxcpy(pSt_ServerConfig->st_XImageText.tszImagePath, st_JsonXImageText["tszImagePath"].asCString());
198198
_tcsxcpy(pSt_ServerConfig->st_XImageText.tszImageLanguage, st_JsonXImageText["tszImageLanguage"].asCString());
199199

200-
if (st_JsonRoot["XVerification"].empty() || (3 != st_JsonRoot["XVerification"].size()))
200+
if (st_JsonRoot["XVerification"].empty() || (6 != st_JsonRoot["XVerification"].size()))
201201
{
202202
Config_IsErrorOccur = true;
203203
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_XVERICATION;
204204
return false;
205205
}
206206
Json::Value st_JsonXVerifcation = st_JsonRoot["XVerification"];
207+
208+
pSt_ServerConfig->st_XVerifcation.bEnable = st_JsonXVerifcation["bEnable"].asBool();
209+
pSt_ServerConfig->st_XVerifcation.nVType = st_JsonXVerifcation["nVType"].asInt();
210+
_tcsxcpy(pSt_ServerConfig->st_XVerifcation.tszAPIAuth, st_JsonXVerifcation["tszAPIAuth"].asCString());
207211
_tcsxcpy(pSt_ServerConfig->st_XVerifcation.tszUserName, st_JsonXVerifcation["tszUserName"].asCString());
208212
_tcsxcpy(pSt_ServerConfig->st_XVerifcation.tszUserPass, st_JsonXVerifcation["tszUserPass"].asCString());
209213

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/Makefile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ FILEEXT =
44
LIBFLAG =
55
LOADHDR = -I ./
66
LOADSO = -L ../../XEngine_ModuleConfigure -L ../../XEngine_ModuleDatabase -L ../../XEngine_ModuleProtocol -L ../../XEngine_ModuleSystem -L ../../XEngine_ModuleHelp -L ../../XEngine_ModulePlugin \
7-
-L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/jsoncpp -L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_InfoReport \
8-
-L ../../XEngine_DependLibrary/XEngine_IPMacData/XEngine_Source/XEngine_APIModuleIPMac -L ../../XEngine_DependLibrary/XEngine_PhoneData/Source/C/XEngine_APIModulePhone
7+
-L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/jsoncpp -L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_InfoReport -L ../../XEngine_DependLibrary/XEngine_OPenSource/XEngine_Module/XEngine_Verfication \
8+
-L ../../XEngine_DependLibrary/XEngine_IPMacData/XEngine_Source/XEngine_APIModuleIPMac -L ../../XEngine_DependLibrary/XEngine_PhoneData/XEngine_Source/XEngine_APIModulePhone
99
LIB = -lXEngine_BaseSafe -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_ManagePool -lXEngine_Cryption -lXClient_Stream -lXClient_APIHelp -lXClient_Socket -lNetHelp_APIAddr -lNetHelp_XSocket -lHelpComponents_XLog -lRfcComponents_HttpProtocol -lRfcComponents_NatProtocol -lRfcComponents_NTPProtocol -lRfcComponents_DNSProtocol -lXEngine_ProcFile -lXEngine_SystemApi -lXEngine_AVHelp -lXEngine_VideoCodec -lXEngine_AudioCodec -lXEngine_AVCollect \
1010
-lXEngine_ModuleConfigure -lXEngine_ModuleDatabase -lXEngine_ModuleProtocol -lXEngine_ModuleSystem -lXEngine_ModuleHelp -lXEngine_ModulePlugin \
11-
-ljsoncpp -lXEngine_InfoReport \
11+
-ljsoncpp -lXEngine_InfoReport -lXEngine_Verfication \
1212
-lXEngine_APIModuleIPMac -lXEngine_APIModulePhone
1313
LIBEX =
1414
OBJECTS = XEngine_Configure.o XEngine_Network.o XEngine_HTTPTask.o XEngine_PluginTask.o XEngine_HttpApp.o \

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.cpp

Lines changed: 110 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ XHTHREAD XCALLBACK HTTPTask_TastPost_Thread(XPVOID lParam)
4444
if (HttpProtocol_Server_GetMemoryEx(xhHTTPPacket, ppSst_ListAddr[i]->tszClientAddr, &ptszMsgBuffer, &nMsgLen, &st_HTTPReqparam, &pptszListHdr, &nHDRCount))
4545
{
4646
//在另外一个函数里面处理数据
47-
HTTPTask_TastPost_Handle(&st_HTTPReqparam, ppSst_ListAddr[i]->tszClientAddr, ptszMsgBuffer, nMsgLen, &pptszListHdr, nHDRCount);
47+
HTTPTask_TastPost_Handle(&st_HTTPReqparam, ppSst_ListAddr[i]->tszClientAddr, ptszMsgBuffer, nMsgLen, pptszListHdr, nHDRCount);
4848
//释放内存
4949
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMsgBuffer);
5050
BaseLib_Memory_Free((XPPPMEM)&pptszListHdr, nHDRCount);
@@ -55,16 +55,13 @@ XHTHREAD XCALLBACK HTTPTask_TastPost_Thread(XPVOID lParam)
5555
}
5656
return 0;
5757
}
58-
bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszRVBuffer, int nRVLen, XCHAR*** ppptszHDRList, int nHDRCount)
58+
bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszRVBuffer, int nRVLen, XCHAR** pptszHDRList, int nHDRCount)
5959
{
6060
int nMsgLen = 4096;
6161
LPCXSTR lpszMethodPost = _X("POST");
6262
LPCXSTR lpszMethodGet = _X("GET");
63-
XCHAR tszMsgBuffer[4096];
64-
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam; //发送给客户端的参数
65-
66-
memset(tszMsgBuffer, '\0', sizeof(tszMsgBuffer));
67-
memset(&st_HDRParam, '\0', sizeof(RFCCOMPONENTS_HTTP_HDRPARAM));
63+
XCHAR tszMsgBuffer[4096] = {};
64+
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {};
6865

6966
st_HDRParam.nHttpCode = 200; //HTTP CODE码
7067
st_HDRParam.bIsClose = true; //收到回复后就关闭
@@ -89,7 +86,7 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST
8986
if (nListCount < 1)
9087
{
9188
//是不是代理转发
92-
if (HTTPTask_TaskPost_SLProxy(lpszClientAddr, tszGBKBuffer, ppptszHDRList, nHDRCount))
89+
if (HTTPTask_TaskPost_SLProxy(lpszClientAddr, tszGBKBuffer, &pptszHDRList, nHDRCount))
9390
{
9491
return true;
9592
}
@@ -100,6 +97,111 @@ bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXST
10097
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,发送的URL请求参数不正确:%s"), lpszClientAddr, tszGBKBuffer);
10198
return false;
10299
}
100+
//http验证
101+
if (st_ServiceConfig.st_XVerifcation.bEnable)
102+
{
103+
int nVType = 0;
104+
RFCCOMPONENTS_HTTP_HDRPARAM st_HDRParam = {};
105+
106+
st_HDRParam.nHttpCode = 401;
107+
st_HDRParam.bIsClose = true;
108+
st_HDRParam.bAuth = true;
109+
//打包验证信息
110+
int nHDRLen = 0;
111+
XCHAR tszHDRBuffer[XPATH_MAX] = {};
112+
if (1 == st_ServiceConfig.st_XVerifcation.nVType)
113+
{
114+
Verification_HTTP_BasicServerPacket(tszHDRBuffer, &nHDRLen);
115+
}
116+
else
117+
{
118+
XCHAR tszNonceStr[64] = {};
119+
XCHAR tszOpaqueStr[64] = {};
120+
Verification_HTTP_DigestServerPacket(tszHDRBuffer, &nHDRLen, tszNonceStr, tszOpaqueStr);
121+
}
122+
//后去验证方法
123+
if (!Verification_HTTP_GetType(pptszHDRList, nHDRCount, &nVType))
124+
{
125+
HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
126+
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
127+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式:%d,错误:%lX"), lpszClientAddr, st_ServiceConfig.st_XVerifcation.nVType, Verification_GetLastError());
128+
return false;
129+
}
130+
//验证方式是否一致
131+
if (st_ServiceConfig.st_XVerifcation.nVType != nVType)
132+
{
133+
HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
134+
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
135+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证方式错误,请求:%d,需求:%d"), lpszClientAddr, nVType, st_ServiceConfig.st_XVerifcation.nVType);
136+
return false;
137+
}
138+
bool bRet = false;
139+
140+
if (_tcsxlen(st_ServiceConfig.st_XVerifcation.tszAPIAuth) > 0)
141+
{
142+
int nHTTPCode = 0;
143+
int nMSGLen = 0;
144+
XCLIENT_APIHTTP st_APIHttp = {};
145+
XCHAR* ptszMSGBuffer = NULL;
146+
if (!APIClient_Http_Request(_X("GET"), st_ServiceConfig.st_XVerifcation.tszAPIAuth, NULL, &nHTTPCode, &ptszMSGBuffer, &nMSGLen, NULL, NULL, &st_APIHttp))
147+
{
148+
st_HDRParam.nHttpCode = 500;
149+
HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
150+
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
151+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误码:%lX"), lpszClientAddr, st_ServiceConfig.st_XVerifcation.tszAPIAuth, APIClient_GetLastError());
152+
return false;
153+
}
154+
if (200 != nHTTPCode)
155+
{
156+
st_HDRParam.nHttpCode = 500;
157+
HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
158+
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
159+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,GET请求验证服务:%s 失败,错误:%d"), lpszClientAddr, st_ServiceConfig.st_XVerifcation.tszAPIAuth, nHTTPCode);
160+
return false;
161+
}
162+
XENGINE_PROTOCOL_USERAUTH st_UserAuth = {};
163+
if (!ModuleProtocol_Parse_Verifcation(ptszMSGBuffer, nMsgLen, st_UserAuth.tszUserName, st_UserAuth.tszUserPass))
164+
{
165+
st_HDRParam.nHttpCode = 500;
166+
HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
167+
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
168+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,返回内容:%s 错误,无法继续"), lpszClientAddr, ptszMSGBuffer);
169+
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer);
170+
return false;
171+
}
172+
BaseLib_Memory_FreeCStyle((XPPMEM)&ptszMSGBuffer);
173+
174+
if (1 == nVType)
175+
{
176+
bRet = Verification_HTTP_Basic(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pptszHDRList, nHDRCount);
177+
}
178+
else if (2 == nVType)
179+
{
180+
bRet = Verification_HTTP_Digest(st_UserAuth.tszUserName, st_UserAuth.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszHDRList, nHDRCount);
181+
}
182+
}
183+
else
184+
{
185+
if (1 == nVType)
186+
{
187+
bRet = Verification_HTTP_Basic(st_ServiceConfig.st_XVerifcation.tszUserName, st_ServiceConfig.st_XVerifcation.tszUserPass, pptszHDRList, nHDRCount);
188+
}
189+
else if (2 == nVType)
190+
{
191+
bRet = Verification_HTTP_Digest(st_ServiceConfig.st_XVerifcation.tszUserName, st_ServiceConfig.st_XVerifcation.tszUserPass, pSt_HTTPParam->tszHttpMethod, pptszHDRList, nHDRCount);
192+
}
193+
}
194+
195+
if (!bRet)
196+
{
197+
HttpProtocol_Server_SendMsgEx(xhHTTPPacket, tszMsgBuffer, &nMsgLen, &st_HDRParam, NULL, 0, tszHDRBuffer);
198+
XEngine_Network_Send(lpszClientAddr, tszMsgBuffer, nMsgLen);
199+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("HTTP客户端:%s,用户验证失败,验证处理错误,可能用户密码登信息不匹配,类型:%d"), lpszClientAddr, nVType);
200+
return false;
201+
}
202+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,HTTP验证类型:%d 通过"), lpszClientAddr, nVType);
203+
}
204+
103205
XCHAR tszKey[XPATH_MAX];
104206
XCHAR tszValue[XPATH_MAX];
105207
LPCXSTR lpszFuncName = _X("api");

XEngine_Source/XEngine_ServiceApp/XEngine_HttpApp/XEngine_HTTPTask.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
//任务处理池,用来获取一个完整包
1414
XHTHREAD XCALLBACK HTTPTask_TastPost_Thread(XPVOID lParam);
1515
//任务处理相关函数,处理包的内容
16-
bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszRVBuffer, int nRVLen, XCHAR*** ppptszHDRList, int nHDRCount);
16+
bool HTTPTask_TastPost_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR lpszClientAddr, LPCXSTR lpszRVBuffer, int nRVLen, XCHAR** pptszHDRList, int nHDRCount);

0 commit comments

Comments
 (0)