X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/3a45cd9275dc9279e133deb0932402ae5f4d0b5f..c8c881a0df9e718e364af741695f165d6bb3e529:/projects/stargazer/settings_impl.cpp diff --git a/projects/stargazer/settings_impl.cpp b/projects/stargazer/settings_impl.cpp index 2bf8d082..ca343bd5 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"), @@ -99,8 +62,6 @@ SETTINGS_IMPL::SETTINGS_IMPL(const std::string & cd) messageTimeout(0), feeChargeType(0), reconnectOnTariffChange(false), - modulesSettings(), - storeModuleSettings(), logger(GetStgLogger()) { } @@ -138,7 +99,43 @@ SETTINGS_IMPL::SETTINGS_IMPL(const SETTINGS_IMPL & rval) { } //----------------------------------------------------------------------------- -int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, vector * params) +SETTINGS_IMPL & SETTINGS_IMPL::operator=(const SETTINGS_IMPL & set) +{ + if (&set == this) + return *this; + + modulesPath = set.modulesPath; + dirName = set.dirName; + confDir = set.confDir; + scriptsDir = set.scriptsDir; + rules = set.rules; + logFile = set.logFile; + pidFile = set.pidFile; + monitorDir = set.monitorDir; + scriptParams = set.scriptParams; + monitoring = set.monitoring; + detailStatWritePeriod = set.detailStatWritePeriod; + statWritePeriod = set.statWritePeriod; + stgExecMsgKey = set.stgExecMsgKey; + executersNum = set.executersNum; + fullFee = set.fullFee; + dayFee = set.dayFee; + dayResetTraff = set.dayResetTraff; + spreadFee = set.spreadFee; + freeMbAllowInet = set.freeMbAllowInet; + dayFeeIsLastDay = set.dayFeeIsLastDay; + writeFreeMbTraffCost = set.writeFreeMbTraffCost; + showFeeInCash = set.showFeeInCash; + messageTimeout = set.messageTimeout; + feeChargeType = set.feeChargeType; + reconnectOnTariffChange = set.reconnectOnTariffChange; + + modulesSettings = set.modulesSettings; + storeModuleSettings = set.storeModuleSettings; + return *this; +} +//----------------------------------------------------------------------------- +int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, std::vector * params) { const DOTCONFDocumentNode * childNode; PARAM_VALUE pv; @@ -148,7 +145,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 +204,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 +245,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 +254,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 +263,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 +272,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 +281,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 +290,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 +299,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 +308,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 +317,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 +326,7 @@ 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; } } @@ -338,7 +335,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 +344,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 +365,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,7 +383,7 @@ 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; } } @@ -415,7 +412,7 @@ while (node) { if (node->getValue(1)) { - strError = "Unexpected \'" + string(node->getValue(1)) + "\'."; + strError = "Unexpected \'" + std::string(node->getValue(1)) + "\'."; return -1; } @@ -434,7 +431,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 +454,20 @@ 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") {