#include "pch.h" uint32_t GetJsonUint32(const char* key, Json::Value& value) { if (value[key].empty()) return 0; if (value[key].isInt()) return value[key].asUInt(); if (value[key].isString()) { string v; v = value[key].asString(); return atoi(v.c_str()); } return 0; } std::string GetJsonString(const char* key, Json::Value& value) { if (value[key].empty()) return ""; if (value[key].isString()) return value[key].asString(); if (value[key].isInt()) { uint32_t v; char s[50] = { 0, }; v = value[key].asUInt(); sprintf_s(s, sizeof(s), "%d", v); return s; } return ""; } CLocalConf::CLocalConf() { bs1fltkernel = 0; } CLocalConf::~CLocalConf() { } const wchar_t* CLocalConf::GetServerIpW() { return wstr_server_ip_.c_str(); } int CLocalConf::GetServerPort() { return server_port_; } int CLocalConf::GetConfig(const char* filename, DWORD pid) { int ret = BS1_OK; int debug_type = 0; char logfile_name[260] = { 0, }; path_ = filename; path_ += "\\bs1local.conf"; BSONE_DEBUGA("(%s)", path_.c_str()); try { Json::Value root; Json::Reader JsonReader; std:ifstream stream; stream.open(path_); if (stream.is_open()) { if (!JsonReader.parse(stream, root)) { BSONE_DEBUG("policy json parser error"); //OutputDebugStringA("policy json parser error"); return BS1_ERROR_CONFIG_OPEN_FAIL; } Json::Value debug = root["debug"]; debug_type = GetJsonUint32("bs1flt", debug); bs1fltkernel = GetJsonUint32("bs1fltkernel", debug); char debugporint[100] = { 0, }; sprintf_s(debugporint, sizeof(debugporint), "[BS1] debug_type(%d), bs1fltkernel(%d)", debug_type, bs1fltkernel); OutputDebugStringA(debugporint); stream.close(); } else { BSONE_DEBUG("policy json file open fail"); } if (debug_type) { sprintf_s(logfile_name, sizeof(logfile_name), "%s\\bslflt.log", filename); log4_.init_log4cpp(logfile_name, 2, LOGFILE_SIZE * 2); BSONE_DEBUGA("logfile_name(%s)", logfile_name); } } catch (int e) { ret = e; BSONE_DEBUGA("(%s} open parser error catch 1 (%d)", filename, e); } catch (exception e) { BSONE_DEBUGA("(%s} open parser error catch 2 (%s)", filename, e.what()); ret = BS1_ERROR_CONFIG_OPEN_FAIL; } catch (...) { BSONE_DEBUGA("open parser error catch 3"); } return ret; }