X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/3a45cd9275dc9279e133deb0932402ae5f4d0b5f..6c4d31bf18078de98e71575d4b032df303f23a3a:/projects/stargazer/settings_impl.cpp diff --git a/projects/stargazer/settings_impl.cpp b/projects/stargazer/settings_impl.cpp index 2bf8d082..212ed634 100644 --- a/projects/stargazer/settings_impl.cpp +++ b/projects/stargazer/settings_impl.cpp @@ -36,50 +36,13 @@ $Author: faust $ #include "stg/dotconfpp.h" #include "settings_impl.h" -using namespace std; - -//----------------------------------------------------------------------------- -SETTINGS_IMPL::SETTINGS_IMPL() - : SETTINGS(), - strError(), - modulesPath("/usr/lib/stg"), - dirName(DIR_NUM), - confDir("/etc/stargazer"), - scriptsDir("/etc/stargazer"), - rules("/etc/stargazer/rules"), - logFile("/var/log/stargazer.log"), - pidFile("/var/run/stargazer.pid"), - monitorDir("/var/stargazer/monitoring"), - monitoring(false), - detailStatWritePeriod(dsPeriod_1_6), - statWritePeriod(10), - stgExecMsgKey(5555), - executersNum(1), - fullFee(false), - dayFee(0), - dayResetTraff(0), - spreadFee(false), - freeMbAllowInet(false), - dayFeeIsLastDay(false), - writeFreeMbTraffCost(false), - showFeeInCash(true), - messageTimeout(0), - feeChargeType(0), - reconnectOnTariffChange(false), - modulesSettings(), - storeModuleSettings(), - logger(GetStgLogger()) -{ -} //----------------------------------------------------------------------------- SETTINGS_IMPL::SETTINGS_IMPL(const std::string & cd) - : SETTINGS(), - strError(), - modulesPath("/usr/lib/stg"), + : modulesPath("/usr/lib/stg"), dirName(DIR_NUM), - confDir(cd), - scriptsDir(cd), - rules(cd + "/rules"), + confDir(cd.empty() ? "/etc/stargazer" : cd), + scriptsDir(confDir), + rules(confDir + "/rules"), logFile("/var/log/stargazer.log"), pidFile("/var/run/stargazer.pid"), monitorDir("/var/stargazer/monitoring"), @@ -94,21 +57,20 @@ SETTINGS_IMPL::SETTINGS_IMPL(const std::string & cd) spreadFee(false), freeMbAllowInet(false), dayFeeIsLastDay(false), + stopOnError(true), writeFreeMbTraffCost(false), showFeeInCash(true), messageTimeout(0), feeChargeType(0), reconnectOnTariffChange(false), - modulesSettings(), - storeModuleSettings(), + disableSessionLog(false), logger(GetStgLogger()) { + filterParamsLog.push_back("*"); } //----------------------------------------------------------------------------- SETTINGS_IMPL::SETTINGS_IMPL(const SETTINGS_IMPL & rval) - : SETTINGS(), - strError(), - modulesPath(rval.modulesPath), + : modulesPath(rval.modulesPath), dirName(rval.dirName), confDir(rval.confDir), scriptsDir(rval.scriptsDir), @@ -127,18 +89,57 @@ SETTINGS_IMPL::SETTINGS_IMPL(const SETTINGS_IMPL & rval) spreadFee(rval.spreadFee), freeMbAllowInet(rval.freeMbAllowInet), dayFeeIsLastDay(rval.dayFeeIsLastDay), + stopOnError(rval.stopOnError), writeFreeMbTraffCost(rval.writeFreeMbTraffCost), showFeeInCash(rval.showFeeInCash), messageTimeout(rval.messageTimeout), feeChargeType(rval.feeChargeType), reconnectOnTariffChange(rval.reconnectOnTariffChange), + disableSessionLog(rval.disableSessionLog), + filterParamsLog(rval.filterParamsLog), modulesSettings(rval.modulesSettings), storeModuleSettings(rval.storeModuleSettings), logger(GetStgLogger()) { } //----------------------------------------------------------------------------- -int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, vector * params) +SETTINGS_IMPL & SETTINGS_IMPL::operator=(const SETTINGS_IMPL & rhs) +{ + modulesPath = rhs.modulesPath; + dirName = rhs.dirName; + confDir = rhs.confDir; + scriptsDir = rhs.scriptsDir; + rules = rhs.rules; + logFile = rhs.logFile; + pidFile = rhs.pidFile; + monitorDir = rhs.monitorDir; + scriptParams = rhs.scriptParams; + monitoring = rhs.monitoring; + detailStatWritePeriod = rhs.detailStatWritePeriod; + statWritePeriod = rhs.statWritePeriod; + stgExecMsgKey = rhs.stgExecMsgKey; + executersNum = rhs.executersNum; + fullFee = rhs.fullFee; + dayFee = rhs.dayFee; + dayResetTraff = rhs.dayResetTraff; + spreadFee = rhs.spreadFee; + freeMbAllowInet = rhs.freeMbAllowInet; + dayFeeIsLastDay = rhs.dayFeeIsLastDay; + stopOnError = rhs.stopOnError; + writeFreeMbTraffCost = rhs.writeFreeMbTraffCost; + showFeeInCash = rhs.showFeeInCash; + messageTimeout = rhs.messageTimeout; + feeChargeType = rhs.feeChargeType; + reconnectOnTariffChange = rhs.reconnectOnTariffChange; + disableSessionLog = rhs.disableSessionLog; + filterParamsLog = rhs.filterParamsLog; + + modulesSettings = rhs.modulesSettings; + storeModuleSettings = rhs.storeModuleSettings; + return *this; +} +//----------------------------------------------------------------------------- +int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, std::vector * params) { const DOTCONFDocumentNode * childNode; PARAM_VALUE pv; @@ -148,7 +149,7 @@ pv.param = node->getName(); if (node->getValue(1)) { - strError = "Unexpected value \'" + string(node->getValue(1)) + "\'."; + strError = "Unexpected value \'" + std::string(node->getValue(1)) + "\'."; return -1; } @@ -207,7 +208,7 @@ modulesSettings.clear(); DOTCONFDocument conf(DOTCONFDocument::CASEINSENSITIVE); conf.setErrorCallback(SETTINGS_IMPL::ErrorCallback, this); conf.setRequiredOptionNames(requiredOptions); -string confFile = confDir + "/stargazer.conf"; +std::string confFile = confDir + "/stargazer.conf"; if(conf.setContent(confFile.c_str()) != 0) { @@ -248,7 +249,7 @@ while (node) { if (ParseDetailStatWritePeriod(node->getValue(0)) != 0) { - strError = "Incorrect DetailStatWritePeriod value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect DetailStatWritePeriod value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -257,7 +258,7 @@ while (node) { if (ParseUnsignedInRange(node->getValue(0), 1, 1440, &statWritePeriod) != 0) { - strError = "Incorrect StatWritePeriod value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect StatWritePeriod value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -266,7 +267,7 @@ while (node) { if (ParseInt(node->getValue(0), &stgExecMsgKey) != 0) { - strError = "Incorrect ExecMsgKey value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect ExecMsgKey value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -275,7 +276,7 @@ while (node) { if (ParseUnsignedInRange(node->getValue(0), 1, 1024, &executersNum) != 0) { - strError = "Incorrect ExecutersNum value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect ExecutersNum value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -284,7 +285,7 @@ while (node) { if (ParseUnsignedInRange(node->getValue(0), 0, 31, &dayFee) != 0) { - strError = "Incorrect DayFee value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect DayFee value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -293,7 +294,7 @@ while (node) { if (ParseYesNo(node->getValue(0), &fullFee) != 0) { - strError = "Incorrect FullFee value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect FullFee value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -302,7 +303,7 @@ while (node) { if (ParseUnsignedInRange(node->getValue(0), 0, 31, &dayResetTraff) != 0) { - strError = "Incorrect DayResetTraff value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect DayResetTraff value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -311,7 +312,7 @@ while (node) { if (ParseYesNo(node->getValue(0), &spreadFee) != 0) { - strError = "Incorrect SpreadFee value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect SpreadFee value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -320,7 +321,7 @@ while (node) { if (ParseYesNo(node->getValue(0), &freeMbAllowInet) != 0) { - strError = "Incorrect FreeMbAllowInet value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect FreeMbAllowInet value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -329,7 +330,16 @@ while (node) { if (ParseYesNo(node->getValue(0), &dayFeeIsLastDay) != 0) { - strError = "Incorrect DayFeeIsLastDay value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect DayFeeIsLastDay value: \'" + std::string(node->getValue(0)) + "\'"; + return -1; + } + } + + if (strcasecmp(node->getName(), "StopOnError") == 0) + { + if (ParseYesNo(node->getValue(0), &stopOnError) != 0) + { + strError = "Incorrect StopOnError value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -338,7 +348,7 @@ while (node) { if (ParseYesNo(node->getValue(0), &writeFreeMbTraffCost) != 0) { - strError = "Incorrect WriteFreeMbTraffCost value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect WriteFreeMbTraffCost value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -347,7 +357,7 @@ while (node) { if (ParseYesNo(node->getValue(0), &showFeeInCash) != 0) { - strError = "Incorrect ShowFeeInCash value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect ShowFeeInCash value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -368,16 +378,16 @@ while (node) { if (ParseUnsigned(node->getValue(0), &messageTimeout) != 0) { - strError = "Incorrect MessageTimeout value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect MessageTimeout value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } if (strcasecmp(node->getName(), "FeeChargeType") == 0) { - if (ParseUnsignedInRange(node->getValue(0), 0, 2, &feeChargeType) != 0) + if (ParseUnsignedInRange(node->getValue(0), 0, 3, &feeChargeType) != 0) { - strError = "Incorrect FeeChargeType value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect FeeChargeType value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } @@ -386,11 +396,27 @@ while (node) { if (ParseYesNo(node->getValue(0), &reconnectOnTariffChange) != 0) { - strError = "Incorrect ReconnectOnTariffChange value: \'" + string(node->getValue(0)) + "\'"; + strError = "Incorrect ReconnectOnTariffChange value: \'" + std::string(node->getValue(0)) + "\'"; return -1; } } + if (strcasecmp(node->getName(), "DisableSessionLog") == 0) + { + if (ParseYesNo(node->getValue(0), &disableSessionLog) != 0) + { + strError = "Incorrect DisableSessionLog value: \'" + std::string(node->getValue(0)) + "\'"; + return -1; + } + } + + if (strcasecmp(node->getName(), "FilterParamsLog") == 0) + { + filterParamsLog.clear(); + for (int i = 0; node->getValue(i) != NULL; ++i) + filterParamsLog.push_back(node->getValue(i)); + } + if (strcasecmp(node->getName(), "DirNames") == 0) { const DOTCONFDocumentNode * child = node->getChildNode(); @@ -415,7 +441,7 @@ while (node) { if (node->getValue(1)) { - strError = "Unexpected \'" + string(node->getValue(1)) + "\'."; + strError = "Unexpected \'" + std::string(node->getValue(1)) + "\'."; return -1; } @@ -434,7 +460,7 @@ while (node) { if (node->getValue(0)) { - strError = "Unexpected \'" + string(node->getValue(0)) + "\'."; + strError = "Unexpected \'" + std::string(node->getValue(0)) + "\'."; return -1; } const DOTCONFDocumentNode * child = node->getChildNode(); @@ -457,13 +483,18 @@ while (node) } } + if (strcasecmp(node->getName(), "ScriptParams") == 0) + { + for (int i = 0; node->getValue(i) != NULL; ++i) + scriptParams.push_back(node->getValue(i)); + } node = node->getNextNode(); } return 0; } //----------------------------------------------------------------------------- -int SETTINGS_IMPL::ParseDetailStatWritePeriod(const string & detailStatPeriodStr) +int SETTINGS_IMPL::ParseDetailStatWritePeriod(const std::string & detailStatPeriodStr) { if (detailStatPeriodStr == "1") {