Skip to content

Commit 4441975

Browse files
committed
fixed:build error
added:get proxy rule for http get
1 parent e7e07f7 commit 4441975

7 files changed

Lines changed: 111 additions & 5 deletions

File tree

XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Define.h

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,40 @@ extern "C" bool ModuleProtocol_Packet_Comm(XCHAR* ptszMSGBuffer, int* pInt_MSGLe
8080
备注:
8181
*********************************************************************/
8282
extern "C" bool ModuleProtocol_Packet_ForwardList(XCHAR* ptszMsgBuffer, int* pInt_Len, XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, SESSION_FORWARD * **pppSt_ListUser, int nCount);
83+
/********************************************************************
84+
函数名称:ModuleProtocol_Packet_GetProxyRuleList
85+
函数功能:代理转发规则列表信息
86+
参数.一:ptszMSGBuffer
87+
In/Out:Out
88+
类型:字符指针
89+
可空:N
90+
意思:输出封装好的包
91+
参数.二:pInt_MSGLen
92+
In/Out:Out
93+
类型:整数型指针
94+
可空:N
95+
意思:输出封装大小
96+
参数.三:pppSt_IPCount
97+
In/Out:In
98+
类型:三级指针
99+
可空:N
100+
意思:输入要处理的列表
101+
参数.四:nListCount
102+
In/Out:In
103+
类型:整数型
104+
可空:N
105+
意思:输入列表个数
106+
返回值
107+
类型:逻辑型
108+
意思:是否成功
109+
备注:
110+
*********************************************************************/
111+
extern "C" bool ModuleProtocol_Packet_GetProxyRuleList(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, SESSION_IPCONUT*** pppSt_IPCount, int nListCount);
83112
/************************************************************************/
84113
/* 解析导出函数 */
85114
/************************************************************************/
86115
/********************************************************************
87-
函数名称:ModuleProtocol_Packet_ForwardList
116+
函数名称:ModuleProtocol_Parse_ForwardBind
88117
函数功能:转发协议封装请求
89118
参数.一:lpszMsgBuffer
90119
In/Out:In

XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.cpp

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,64 @@ bool CModuleProtocol_Packet::ModuleProtocol_Packet_ForwardList(XCHAR* ptszMsgBuf
144144
memcpy(ptszMsgBuffer, pSt_ProtocolHdr, sizeof(XENGINE_PROTOCOLHDR));
145145
memcpy(ptszMsgBuffer + sizeof(XENGINE_PROTOCOLHDR), st_JsonRoot.toStyledString().c_str(), pSt_ProtocolHdr->unPacketSize);
146146
return true;
147+
}
148+
/********************************************************************
149+
函数名称:ModuleProtocol_Packet_GetProxyRuleList
150+
函数功能:代理转发规则列表信息
151+
参数.一:ptszMSGBuffer
152+
In/Out:Out
153+
类型:字符指针
154+
可空:N
155+
意思:输出封装好的包
156+
参数.二:pInt_MSGLen
157+
In/Out:Out
158+
类型:整数型指针
159+
可空:N
160+
意思:输出封装大小
161+
参数.三:pppSt_IPCount
162+
In/Out:In
163+
类型:三级指针
164+
可空:N
165+
意思:输入要处理的列表
166+
参数.四:nListCount
167+
In/Out:In
168+
类型:整数型
169+
可空:N
170+
意思:输入列表个数
171+
返回值
172+
类型:逻辑型
173+
意思:是否成功
174+
备注:
175+
*********************************************************************/
176+
bool CModuleProtocol_Packet::ModuleProtocol_Packet_GetProxyRuleList(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, SESSION_IPCONUT*** pppSt_IPCount, int nListCount)
177+
{
178+
Protocol_IsErrorOccur = false;
179+
180+
if ((NULL == ptszMSGBuffer) || (NULL == pInt_MSGLen))
181+
{
182+
Protocol_IsErrorOccur = true;
183+
Protocol_dwErrorCode = ERROR_MODULE_PROTOCOL_PACKET_PARAMENT;
184+
return false;
185+
}
186+
Json::Value st_JsonRoot;
187+
Json::Value st_JsonArray;
188+
Json::StreamWriterBuilder st_JsonWBuilder;
189+
190+
for (int i = 0; i < nListCount; i++)
191+
{
192+
Json::Value st_JsonObject;
193+
Json::Value st_JsonSub;
194+
st_JsonObject["nIPCount"] = (*pppSt_IPCount)[i]->nIPCount;
195+
st_JsonObject["tszIPAddr"] = (*pppSt_IPCount)[i]->tszIPAddr;
196+
st_JsonArray.append(st_JsonObject);
197+
}
198+
st_JsonRoot["code"] = 0;
199+
st_JsonRoot["msg"] = "success";
200+
st_JsonRoot["Count"] = nListCount;
201+
st_JsonRoot["Array"] = st_JsonArray;
202+
203+
st_JsonWBuilder["emitUTF8"] = true;
204+
*pInt_MSGLen = (int)Json::writeString(st_JsonWBuilder, st_JsonRoot).length();
205+
memcpy(ptszMSGBuffer, Json::writeString(st_JsonWBuilder, st_JsonRoot).c_str(), *pInt_MSGLen);
206+
return true;
147207
}

XEngine_Source/XEngine_ModuleProtocol/ModuleProtocol_Packet/ModuleProtocol_Packet.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@ class CModuleProtocol_Packet
1919
public:
2020
bool ModuleProtocol_Packet_Comm(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, int nCode = 0, LPCXSTR lpszMSGBuffer = _X("success"));
2121
bool ModuleProtocol_Packet_ForwardList(XCHAR* ptszMsgBuffer, int* pInt_Len, XENGINE_PROTOCOLHDR* pSt_ProtocolHdr, SESSION_FORWARD*** pppSt_ListUser, int nCount);
22+
bool ModuleProtocol_Packet_GetProxyRuleList(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, SESSION_IPCONUT*** pppSt_IPCount, int nListCount);
2223
private:
2324
};

XEngine_Source/XEngine_ModuleProtocol/XEngine_ModuleProtocol.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ EXPORTS
55

66
ModuleProtocol_Packet_Comm
77
ModuleProtocol_Packet_ForwardList
8+
ModuleProtocol_Packet_GetProxyRuleList
89

910
ModuleProtocol_Parse_ForwardBind

XEngine_Source/XEngine_ModuleProtocol/pch.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ extern "C" bool ModuleProtocol_Packet_ForwardList(XCHAR * ptszMsgBuffer, int* pI
3939
{
4040
return m_ProtocolPacket.ModuleProtocol_Packet_ForwardList(ptszMsgBuffer, pInt_Len, pSt_ProtocolHdr, pppSt_ListUser, nCount);
4141
}
42+
extern "C" bool ModuleProtocol_Packet_GetProxyRuleList(XCHAR* ptszMSGBuffer, int* pInt_MSGLen, SESSION_IPCONUT*** pppSt_IPCount, int nListCount)
43+
{
44+
return m_ProtocolPacket.ModuleProtocol_Packet_GetProxyRuleList(ptszMSGBuffer, pInt_MSGLen, pppSt_IPCount, nListCount);
45+
}
4246
/************************************************************************/
4347
/* 解析导出函数 */
4448
/************************************************************************/

XEngine_Source/XEngine_ServiceApp/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ PLATVER =
33
LOADHDR = -I ./ -I ../XEngine_DependLibrary/XEngine_Module/jsoncpp
44
LOADSO = -L ../XEngine_ModuleConfigure -L ../XEngine_ModuleSession -L ../XEngine_ModuleProtocol -L ../XEngine_ModuleHelp \
55
-L ../XEngine_DependLibrary/XEngine_Module/jsoncpp -L ../XEngine_DependLibrary/XEngine_Module/XEngine_InfoReport
6-
LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_Cryption -lXEngine_ManagePool -lXClient_Socket -lXClient_APIHelp -lHelpComponents_XLog -lHelpComponents_Packets -lRfcComponents_ProxyProtocol -lNetHelp_APIHelp -lNetHelp_APIAddr -lNetHelp_XSocket \
6+
LIB = -lXEngine_BaseLib -lXEngine_Algorithm -lXEngine_Core -lXEngine_Cryption -lXEngine_ManagePool -lXClient_Socket -lXClient_APIHelp -lHelpComponents_XLog -lHelpComponents_Packets -lRfcComponents_ProxyProtocol -lRfcComponents_HttpProtocol -lNetHelp_APIHelp -lNetHelp_APIAddr -lNetHelp_XSocket \
77
-lXEngine_ModuleConfigure -lXEngine_ModuleSession -lXEngine_ModuleProtocol -lXEngine_ModuleHelp \
88
-ljsoncpp -lXEngine_InfoReport
99
LIBEX =

XEngine_Source/XEngine_ServiceApp/XEngine_HTTPTask.cpp

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,16 @@ bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR
7676
}
7777
XCHAR tszKey[128] = {};
7878
XCHAR tszValue[128] = {};
79-
LPCXSTR lpszAPICreate = _X("create");
79+
LPCXSTR lpszAPIProxyRule = _X("proxyrule");
8080
LPCXSTR lpszAPIReload = _X("reload");
8181
//获得函数名
8282
BaseLib_String_GetKeyValue(pptszList[0], "=", tszKey, tszValue);
8383
//得到客户端请求的方法
8484
if (0 == _tcsxnicmp(lpszMethodPost, pSt_HTTPParam->tszHttpMethod, _tcsxlen(lpszMethodPost)))
8585
{
86-
if (0 == _tcsxnicmp(lpszAPICreate, tszValue, _tcsxlen(lpszAPICreate)))
86+
if (0 == _tcsxnicmp(lpszAPIProxyRule, tszValue, _tcsxlen(lpszAPIProxyRule)))
8787
{
88-
//http://127.0.0.1:5501/api?function=create&token=123123
88+
//http://127.0.0.1:5400/api?function=get&value=proxyrule
8989
}
9090
else
9191
{
@@ -107,6 +107,17 @@ bool XEngine_HTTPTask_Handle(RFCCOMPONENTS_HTTP_REQPARAM* pSt_HTTPParam, LPCXSTR
107107
XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_CLIENT_NETTYPE_HTTP);
108108
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_WARN, _X("HTTP客户端:%s,发送重载配置请求成功"), lpszClientAddr);
109109
}
110+
else if (0 == _tcsxnicmp(lpszAPIProxyRule, tszValue, _tcsxlen(lpszAPIProxyRule)))
111+
{
112+
//http://127.0.0.1:5400/api?function=proxyrule
113+
int nListCount = 0;
114+
SESSION_IPCONUT** ppSt_IPCountList;
115+
ModuleSession_ProxyRule_GetList(&ppSt_IPCountList, &nListCount);
116+
ModuleProtocol_Packet_GetProxyRuleList(tszSDBuffer, &nSDLen, &ppSt_IPCountList, nListCount);
117+
XEngine_Network_Send(lpszClientAddr, tszSDBuffer, nSDLen, XENGINE_CLIENT_NETTYPE_HTTP);
118+
BaseLib_Memory_Free((XPPPMEM)&ppSt_IPCountList, nListCount);
119+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("HTTP客户端:%s,发送获取转发规则列表请求处理成功"), lpszClientAddr, pSt_HTTPParam->tszHttpUri);
120+
}
110121
else
111122
{
112123
ModuleProtocol_Packet_Comm(tszSDBuffer, &nSDLen, ERROR_XENGINE_PROXY_PROTOCOL_NOTSUPPORT, _X("unknow protocol"));

0 commit comments

Comments
 (0)