@@ -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}
0 commit comments