]> git.stg.codes - stg.git/blobdiff - projects/stargazer/settings_impl.cpp
Fixed appending pairs in rlm_stg.
[stg.git] / projects / stargazer / settings_impl.cpp
index 2bf8d08271bf2b32bf718398d7c964d09744153e..d115919d0e096142bee210b917eaa0ea7e2a4879 100644 (file)
@@ -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,7 @@ SETTINGS_IMPL::SETTINGS_IMPL(const SETTINGS_IMPL & rval)
 {
 }
 //-----------------------------------------------------------------------------
-int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, vector<PARAM_VALUE> * params)
+int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, std::vector<PARAM_VALUE> * params)
 {
 const DOTCONFDocumentNode * childNode;
 PARAM_VALUE pv;
@@ -148,7 +109,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 +168,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 +209,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 +218,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 +227,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 +236,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 +245,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 +254,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 +263,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 +272,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 +281,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 +290,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 +299,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 +308,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 +329,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 +347,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 +376,7 @@ while (node)
         {
         if (node->getValue(1))
             {
-            strError = "Unexpected \'" + string(node->getValue(1)) + "\'.";
+            strError = "Unexpected \'" + std::string(node->getValue(1)) + "\'.";
             return -1;
             }
 
@@ -434,7 +395,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 +418,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")
     {