Skip to content

Commit 977fd98

Browse files
committed
modify:Separation of Proxy Configuration
1 parent 2f0c438 commit 977fd98

12 files changed

Lines changed: 136 additions & 59 deletions

File tree

XEngine_Release/XEngine_Config/XEngine_Config.json

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,16 +29,5 @@
2929
"bEnable":true,
3030
"tszAPIUrl":"http://app.xyry.org:5501/api?function=machine",
3131
"tszServiceName":"XEngine_ProxyServer"
32-
},
33-
"XProxy": {
34-
"nRuleMode": 0,
35-
"tszDestIPAddr": [
36-
"127.0.0.1:5501",
37-
"118.25.14.242:5501"
38-
],
39-
"tszRuleIPAddr": [
40-
"10.0.0.1-10.0.4.69:5403",
41-
"10.0.0.2-10.0.4.69:5403"
42-
]
4332
}
4433
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"nRuleMode": 0,
3+
"tszDestIPAddr": [
4+
"127.0.0.1:5501",
5+
"118.25.14.242:5501"
6+
],
7+
"tszRuleIPAddr": [
8+
"10.0.0.1-10.0.4.69:5403",
9+
"10.0.0.2-10.0.4.69:5403"
10+
]
11+
}

XEngine_Release/XEngine_Config/XEngine_Version.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
{
22
"XVer": [
3+
"1.15.0.1001 Build20260205",
34
"1.14.0.1001 Build20251020",
45
"1.13.0.1001 Build20250519",
56
"1.12.0.1001 Build20250325",

XEngine_Source/XEngine_ModuleConfigure/ModuleConfig_Define.h

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,17 +50,17 @@ typedef struct tag_XEngine_ServiceConfig
5050
XCHAR tszAPIUrl[XPATH_MAX];
5151
XCHAR tszServiceName[128];
5252
}st_XReport;
53-
struct
54-
{
55-
int nRuleMode; //模式
56-
std::list<xstring>* pStl_ListDestAddr;
57-
std::list<xstring>* pStl_ListRuleAddr;
58-
}st_XProxy;
5953
struct
6054
{
6155
list<string>* pStl_ListVer;
6256
}st_XVer;
6357
}XENGINE_SERVICECONFIG;
58+
typedef struct
59+
{
60+
int nRuleMode; //模式
61+
std::list<xstring>* pStl_ListDestAddr;
62+
std::list<xstring>* pStl_ListRuleAddr;
63+
}XENGINE_PROXYCONFIG;
6464
//////////////////////////////////////////////////////////////////////////
6565
// 导出函数定义
6666
//////////////////////////////////////////////////////////////////////////
@@ -105,4 +105,23 @@ extern "C" bool ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XENGINE_SERVIC
105105
意思:是否成功
106106
备注:
107107
*********************************************************************/
108-
extern "C" bool ModuleConfigure_Json_Version(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig);
108+
extern "C" bool ModuleConfigure_Json_Version(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig);
109+
/********************************************************************
110+
函数名称:ModuleConfigure_Json_ProxyFile
111+
函数功能:读取JSON配置文件
112+
参数.一:lpszConfigFile
113+
In/Out:In
114+
类型:常量字符指针
115+
可空:N
116+
意思:输入要读取的配置文件
117+
参数.二:pSt_ServerConfig
118+
In/Out:Out
119+
类型:数据结构指针
120+
可空:N
121+
意思:输出服务配置信息
122+
返回值
123+
类型:逻辑型
124+
意思:是否成功
125+
备注:
126+
*********************************************************************/
127+
extern "C" bool ModuleConfigure_Json_ProxyFile(LPCXSTR lpszConfigFile, XENGINE_PROXYCONFIG* pSt_ServerConfig);

XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.cpp

Lines changed: 70 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -129,31 +129,6 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XE
129129
_tcsxcpy(pSt_ServerConfig->st_XReport.tszAPIUrl, st_JsonXReport["tszAPIUrl"].asCString());
130130
_tcsxcpy(pSt_ServerConfig->st_XReport.tszServiceName, st_JsonXReport["tszServiceName"].asCString());
131131

132-
if (st_JsonRoot["XProxy"].empty())
133-
{
134-
Config_IsErrorOccur = true;
135-
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_XPROXY;
136-
return false;
137-
}
138-
Json::Value st_JsonXProxy = st_JsonRoot["XProxy"];
139-
pSt_ServerConfig->st_XProxy.pStl_ListRuleAddr = new list<xstring>;
140-
pSt_ServerConfig->st_XProxy.pStl_ListDestAddr = new list<xstring>;
141-
142-
pSt_ServerConfig->st_XProxy.nRuleMode = st_JsonXProxy["nRuleMode"].asInt();
143-
if (!st_JsonXProxy["tszDestIPAddr"].isNull())
144-
{
145-
for (unsigned int i = 0; i < st_JsonXProxy["tszDestIPAddr"].size(); i++)
146-
{
147-
pSt_ServerConfig->st_XProxy.pStl_ListDestAddr->push_back(st_JsonXProxy["tszDestIPAddr"][i].asCString());
148-
}
149-
}
150-
if (!st_JsonXProxy["tszRuleIPAddr"].isNull())
151-
{
152-
for (unsigned int i = 0; i < st_JsonXProxy["tszRuleIPAddr"].size(); i++)
153-
{
154-
pSt_ServerConfig->st_XProxy.pStl_ListRuleAddr->push_back(st_JsonXProxy["tszRuleIPAddr"][i].asCString());
155-
}
156-
}
157132
return true;
158133
}
159134
/********************************************************************
@@ -220,4 +195,74 @@ bool CModuleConfigure_Json::ModuleConfigure_Json_Version(LPCXSTR lpszConfigFile,
220195
pSt_ServerConfig->st_XVer.pStl_ListVer->push_back(st_JsonXVer[i].asCString());
221196
}
222197
return true;
198+
}
199+
/********************************************************************
200+
函数名称:ModuleConfigure_Json_ProxyFile
201+
函数功能:读取JSON配置文件
202+
参数.一:lpszConfigFile
203+
In/Out:In
204+
类型:常量字符指针
205+
可空:N
206+
意思:输入要读取的配置文件
207+
参数.二:pSt_ServerConfig
208+
In/Out:Out
209+
类型:数据结构指针
210+
可空:N
211+
意思:输出服务配置信息
212+
返回值
213+
类型:逻辑型
214+
意思:是否成功
215+
备注:
216+
*********************************************************************/
217+
bool CModuleConfigure_Json::ModuleConfigure_Json_ProxyFile(LPCXSTR lpszConfigFile, XENGINE_PROXYCONFIG* pSt_ServerConfig)
218+
{
219+
Config_IsErrorOccur = false;
220+
221+
if ((NULL == lpszConfigFile) || (NULL == pSt_ServerConfig))
222+
{
223+
Config_IsErrorOccur = true;
224+
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_PARAMENT;
225+
return false;
226+
}
227+
Json::Value st_JsonRoot;
228+
JSONCPP_STRING st_JsonError;
229+
Json::CharReaderBuilder st_JsonBuilder;
230+
//读取配置文件所有内容到缓冲区
231+
FILE* pSt_File = _xtfopen(lpszConfigFile, _X("rb"));
232+
if (NULL == pSt_File)
233+
{
234+
Config_IsErrorOccur = true;
235+
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_OPENFILE;
236+
return false;
237+
}
238+
XCHAR tszMsgBuffer[8192];
239+
int nRet = fread(tszMsgBuffer, 1, sizeof(tszMsgBuffer), pSt_File);
240+
fclose(pSt_File);
241+
//开始解析配置文件
242+
std::unique_ptr<Json::CharReader> const pSt_JsonReader(st_JsonBuilder.newCharReader());
243+
if (!pSt_JsonReader->parse(tszMsgBuffer, tszMsgBuffer + nRet, &st_JsonRoot, &st_JsonError))
244+
{
245+
Config_IsErrorOccur = true;
246+
Config_dwErrorCode = ERROR_MODULE_CONFIGURE_JSON_PARSE;
247+
return false;
248+
}
249+
pSt_ServerConfig->pStl_ListRuleAddr = new list<xstring>;
250+
pSt_ServerConfig->pStl_ListDestAddr = new list<xstring>;
251+
252+
pSt_ServerConfig->nRuleMode = st_JsonRoot["nRuleMode"].asInt();
253+
if (!st_JsonRoot["tszDestIPAddr"].isNull())
254+
{
255+
for (unsigned int i = 0; i < st_JsonRoot["tszDestIPAddr"].size(); i++)
256+
{
257+
pSt_ServerConfig->pStl_ListDestAddr->push_back(st_JsonRoot["tszDestIPAddr"][i].asCString());
258+
}
259+
}
260+
if (!st_JsonRoot["tszRuleIPAddr"].isNull())
261+
{
262+
for (unsigned int i = 0; i < st_JsonRoot["tszRuleIPAddr"].size(); i++)
263+
{
264+
pSt_ServerConfig->pStl_ListRuleAddr->push_back(st_JsonRoot["tszRuleIPAddr"][i].asCString());
265+
}
266+
}
267+
return true;
223268
}

XEngine_Source/XEngine_ModuleConfigure/ModuleConfigure_Json/ModuleConfigure_Json.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class CModuleConfigure_Json
1919
public:
2020
bool ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig);
2121
bool ModuleConfigure_Json_Version(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG* pSt_ServerConfig);
22+
bool ModuleConfigure_Json_ProxyFile(LPCXSTR lpszConfigFile, XENGINE_PROXYCONFIG* pSt_ServerConfig);
2223
protected:
2324
private:
2425
};

XEngine_Source/XEngine_ModuleConfigure/XEngine_ModuleConfigure.def

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ EXPORTS
44
ModuleConfigure_GetLastError
55

66
ModuleConfigure_Json_File
7-
ModuleConfigure_Json_Version
7+
ModuleConfigure_Json_Version
8+
ModuleConfigure_Json_ProxyFile

XEngine_Source/XEngine_ModuleConfigure/pch.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,8 @@ extern "C" bool ModuleConfigure_Json_File(LPCXSTR lpszConfigFile, XENGINE_SERVIC
3636
extern "C" bool ModuleConfigure_Json_Version(LPCXSTR lpszConfigFile, XENGINE_SERVICECONFIG * pSt_ServerConfig)
3737
{
3838
return m_ConfigJson.ModuleConfigure_Json_Version(lpszConfigFile, pSt_ServerConfig);
39+
}
40+
extern "C" bool ModuleConfigure_Json_ProxyFile(LPCXSTR lpszConfigFile, XENGINE_PROXYCONFIG* pSt_ServerConfig)
41+
{
42+
return m_ConfigJson.ModuleConfigure_Json_ProxyFile(lpszConfigFile, pSt_ServerConfig);
3943
}

XEngine_Source/XEngine_ServiceApp/XEngine_Configure.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pS
1414
{
1515
LPCXSTR lpszConfigFile = _X("./XEngine_Config/XEngine_Config.json");
1616
LPCXSTR lpszConfigVersion = _X("./XEngine_Config/XEngine_Version.json");
17+
LPCXSTR lpszConfigProxy = _X("./XEngine_Config/XEngine_ProxyConfig.json");
1718

1819
if (!ModuleConfigure_Json_File(lpszConfigFile, pSt_Configure))
1920
{
@@ -25,6 +26,11 @@ bool XEngine_Configure_Parament(int argc, char** argv, XENGINE_SERVICECONFIG* pS
2526
printf("解析配置文件失败,ModuleConfigure_Json_Version:%lX\n", ModuleConfigure_GetLastError());
2627
return false;
2728
}
29+
if (!ModuleConfigure_Json_ProxyFile(lpszConfigProxy, &st_ProxyConfig))
30+
{
31+
printf("解析配置文件失败,ModuleConfigure_Json_Version:%lX\n", ModuleConfigure_GetLastError());
32+
return false;
33+
}
2834

2935
for (int i = 0; i < argc; i++)
3036
{

XEngine_Source/XEngine_ServiceApp/XEngine_Hdr.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ extern XHANDLE xhProxyHeart;
102102
extern XHANDLE xhProxyClient;
103103
//配置文件
104104
extern XENGINE_SERVICECONFIG st_ServiceConfig;
105+
extern XENGINE_PROXYCONFIG st_ProxyConfig;
105106

106107
//网络类型定义
107108
#define XENGINE_CLIENT_NETTYPE_SOCKS 1

0 commit comments

Comments
 (0)