]> git.stg.codes - stg.git/commitdiff
Merge remote-tracking branch 'origin/stg-2.409' into ticket26
authorElena Mamontova <helenh463@gmail.com>
Thu, 17 Mar 2016 07:39:43 +0000 (09:39 +0200)
committerElena Mamontova <helenh463@gmail.com>
Thu, 17 Mar 2016 07:39:43 +0000 (09:39 +0200)
1  2 
projects/stargazer/main.cpp
projects/stargazer/plugin_mgr.cpp
projects/stargazer/plugin_mgr.h
projects/stargazer/plugins/authorization/inetaccess/inetaccess.cpp
projects/stargazer/plugins/other/rscript/rscript.cpp
projects/stargazer/plugins/other/smux/smux.cpp

index b878b39c41cf5ca146a81ce7712fb3f1e7c4c684,3c216977b8725adc961712688157125481e3f0f1..34fc4bd00dcd515d51abbf113af422efba003ca5
@@@ -338,22 -338,8 +338,22 @@@ while (running
      switch (sig)
          {
          case SIGHUP:
 +            {
 +            SETTINGS_IMPL newSettings(settings);
 +            if (newSettings.ReadSettings())
 +                {
 +                STG_LOGGER & WriteServLog = GetStgLogger();
 +
 +                if (newSettings.GetLogFileName() != "")
 +                    WriteServLog.SetLogFileName(newSettings.GetLogFileName());
 +
 +                WriteServLog("ReadSettings error. %s", newSettings.GetStrError().c_str());
 +                return -1;
 +                }
 +            settings = newSettings;
              traffCnt.Reload();
 -            manager.reload();
 +            manager.reload(settings);
 +            }
              break;
          case SIGTERM:
              running = false;
  
  WriteServLog("+++++++++++++++++++++++++++++++++++++++++++++");
  
+ manager.stop();
  if (loop.Stop())
      WriteServLog("Event loop not stopped.");
  
index eec1d656fd7b5d5f27172c2144b7c118a1146ab9,b87ab2770828f46affa73638954e2858dcb3a5a0..10911b97e2995759736e2a663efcbe1cc12bed9f
@@@ -60,12 -60,11 +60,12 @@@ PluginManager::PluginManager(const SETT
      for (size_t i = 0; i < modSettings.size(); i++)
      {
          std::string modulePath = basePath + "/mod_" + modSettings[i].moduleName + ".so";
 +        std::string moduleName = modSettings[i].moduleName;
          printfd(__FILE__, "Module: %s\n", modulePath.c_str());
          try
          {
              m_modules.push_back(
 -                new PLUGIN_RUNNER(modulePath, modSettings[i], admins, tariffs,
 +                new PLUGIN_RUNNER(modulePath, moduleName, modSettings[i], admins, tariffs,
                                    users, services, corporations, traffcounter,
                                    store, settings)
              );
  
  PluginManager::~PluginManager()
  {
-     std::sort(m_modules.begin(), m_modules.end(), StopModCmp);
-     for (size_t i = 0; i < m_modules.size(); ++i)
-     {
-         PLUGIN & plugin = m_modules[i]->GetPlugin();
-         if (m_modules[i]->Stop())
-         {
-             m_log("Failed to stop module '%s': '%s'", plugin.GetVersion().c_str(),
-                                                       plugin.GetStrError().c_str());
-             printfd(__FILE__, "Failed to stop module '%s': '%s'\n", plugin.GetVersion().c_str(),
-                                                                   plugin.GetStrError().c_str());
-         }
-         else
-         {
-             m_log("Module '%s' stopped successfully.", plugin.GetVersion().c_str());
-             printfd(__FILE__, "Module '%s' stopped successfully.\n", plugin.GetVersion().c_str());
-         }
-     }
+     stop();
      for (size_t i = 0; i < m_modules.size(); ++i)
          delete m_modules[i];
  }
  
 -void PluginManager::reload()
 +void PluginManager::reload(const SETTINGS_IMPL& settings)
  {
 +    const std::vector<MODULE_SETTINGS> & modSettings(settings.GetModulesSettings());
      for (size_t i = 0; i < m_modules.size(); ++i)
      {
 -        PLUGIN & plugin = m_modules[i]->GetPlugin();
 -        if (m_modules[i]->Reload())
 +        for (size_t j = 0; j < modSettings.size(); j++)
          {
 -            m_log("Error reloading module '%s': '%s'", plugin.GetVersion().c_str(),
 -                                                       plugin.GetStrError().c_str());
 -            printfd(__FILE__, "Error reloading module '%s': '%s'\n", plugin.GetVersion().c_str(),
 -                                                                     plugin.GetStrError().c_str());
 +            if (modSettings[j].moduleName == m_modules[i]->GetName())
 +            {
 +                PLUGIN & plugin = m_modules[i]->GetPlugin();
 +                if (m_modules[i]->Reload(modSettings[j]))
 +                {
 +                    m_log("Error reloading module '%s': '%s'", plugin.GetVersion().c_str(),
 +                                                               plugin.GetStrError().c_str());
 +                    printfd(__FILE__, "Error reloading module '%s': '%s'\n", plugin.GetVersion().c_str(),
 +                                                                             plugin.GetStrError().c_str());
 +                }
 +            }
          }
      }
  }
+ void PluginManager::stop()
+ {
+     std::sort(m_modules.begin(), m_modules.end(), StopModCmp);
+     for (size_t i = 0; i < m_modules.size(); ++i)
+     {
+         if (!m_modules[i]->IsRunning())
+             continue;
+         PLUGIN & plugin = m_modules[i]->GetPlugin();
+         if (m_modules[i]->Stop())
+         {
+             m_log("Failed to stop module '%s': '%s'", plugin.GetVersion().c_str(),
+                                                       plugin.GetStrError().c_str());
+             printfd(__FILE__, "Failed to stop module '%s': '%s'\n", plugin.GetVersion().c_str(),
+                                                                     plugin.GetStrError().c_str());
+         }
+         else
+         {
+             m_log("Module '%s' stopped successfully.", plugin.GetVersion().c_str());
+             printfd(__FILE__, "Module '%s' stopped successfully.\n", plugin.GetVersion().c_str());
+         }
+     }
+ }
index 0330f4e8c326107494d25e953991348feb927d4c,c9ec8dff3c63412e805677c22d232bbab947b197..a37052d5d1ab8397dde03d2fb043159b10b9fe88
@@@ -48,7 -48,8 +48,8 @@@ class PluginManage
                        USERS_IMPL& users, TRAFFCOUNTER_IMPL& traffcounter);
          ~PluginManager();
  
 -        void reload();
 +        void reload(const SETTINGS_IMPL& settings);
+         void stop();
  
      private:
          std::vector<PLUGIN_RUNNER*> m_modules;
index 4456c372df3d82e25620e9f6c0f7dd4feafb748f,8be662e913457bf32b982f8dd578b380aa960fb4..6b34618f5f3235f136ff869e3522eef97ae61c07
@@@ -86,7 -86,7 +86,7 @@@ std::vector<PARAM_VALUE>::const_iterato
  ///////////////////////////
  pv.param = "Port";
  pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'Port\' not found.";
      printfd(__FILE__, "Parameter 'Port' not found\n");
@@@ -102,7 -102,7 +102,7 @@@ port = static_cast<uint16_t>(p)
  ///////////////////////////
  pv.param = "UserDelay";
  pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'UserDelay\' not found.";
      printfd(__FILE__, "Parameter 'UserDelay' not found\n");
@@@ -118,7 -118,7 +118,7 @@@ if (ParseIntInRange(pvi->value[0], 5, 6
  ///////////////////////////
  pv.param = "UserTimeout";
  pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'UserTimeout\' not found.";
      printfd(__FILE__, "Parameter 'UserTimeout' not found\n");
@@@ -134,7 -134,7 +134,7 @@@ if (ParseIntInRange(pvi->value[0], 15, 
  ///////////////////////////
  pv.param = "LogProtocolErrors";
  pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      logProtocolErrors = false;
  else if (ParseYesNo(pvi->value[0], &logProtocolErrors))
      {
@@@ -147,7 -147,7 +147,7 @@@ std::string freeMbType
  int n = 0;
  pv.param = "FreeMb";
  pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'FreeMb\' not found.";
      printfd(__FILE__, "Parameter 'FreeMb' not found\n");
@@@ -188,15 -188,13 +188,13 @@@ return 0
  #ifdef IA_PHASE_DEBUG
  IA_PHASE::IA_PHASE()
      : phase(1),
-       phaseTime(),
        flog(NULL)
  {
  gettimeofday(&phaseTime, NULL);
  }
  #else
  IA_PHASE::IA_PHASE()
-     : phase(1),
-       phaseTime()
+     : phase(1)
  {
  gettimeofday(&phaseTime, NULL);
  }
@@@ -526,23 -524,6 +524,23 @@@ if (ret
  return ret;
  }
  //-----------------------------------------------------------------------------
 +int AUTH_IA::Reload(const MODULE_SETTINGS & ms)
 +{
 +AUTH_IA_SETTINGS newIaSettings;
 +if (newIaSettings.ParseSettings(ms))
 +    {
 +    STG_LOGGER & WriteServLog = GetStgLogger();
 +    printfd(__FILE__, "AUTH_IA::Reload() - Failed to reload InetAccess.\n");
 +    WriteServLog("AUTH_IA: Cannot reload InetAccess. Errors found.");
 +    return -1;
 +    }
 +
 +STG_LOGGER & WriteServLog = GetStgLogger();
 +printfd(__FILE__, "AUTH_IA::Reload() -  Reloaded InetAccess successfully.\n");
 +WriteServLog("AUTH_IA: Reloaded InetAccess successfully.");
 +return 0;
 +}
 +//-----------------------------------------------------------------------------
  int AUTH_IA::PrepareNet()
  {
  struct sockaddr_in listenAddr;
index 27c419b8750113962892bb33a8947b763e3a6f04,928629ad8b007f48bde0e7b4644cb46208e9fc7a..74bf87a1ae90e9ffa6aa7685e52ae6a3de285609
@@@ -73,12 -73,7 +73,7 @@@ return rsc.GetPlugin()
  //-----------------------------------------------------------------------------
  RS::SETTINGS::SETTINGS()
      : sendPeriod(0),
-       port(0),
-       errorStr(),
-       netRouters(),
-       userParams(),
-       password(),
-       subnetFile()
+       port(0)
  {
  }
  //-----------------------------------------------------------------------------
@@@ -91,7 -86,7 +86,7 @@@ netRouters.clear()
  ///////////////////////////
  pv.param = "Port";
  pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'Port\' not found.";
      printfd(__FILE__, "Parameter 'Port' not found\n");
@@@ -107,7 -102,7 +102,7 @@@ port = static_cast<uint16_t>(p)
  ///////////////////////////
  pv.param = "SendPeriod";
  pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'SendPeriod\' not found.";
      printfd(__FILE__, "Parameter 'SendPeriod' not found\n");
@@@ -123,7 -118,7 +118,7 @@@ if (ParseIntInRange(pvi->value[0], 5, 6
  ///////////////////////////
  pv.param = "UserParams";
  pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'UserParams\' not found.";
      printfd(__FILE__, "Parameter 'UserParams' not found\n");
@@@ -133,7 -128,7 +128,7 @@@ userParams = pvi->value
  ///////////////////////////
  pv.param = "Password";
  pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'Password\' not found.";
      printfd(__FILE__, "Parameter 'Password' not found\n");
@@@ -143,7 -138,7 +138,7 @@@ password = pvi->value[0]
  ///////////////////////////
  pv.param = "SubnetFile";
  pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'SubnetFile\' not found.";
      printfd(__FILE__, "Parameter 'SubnetFile' not found\n");
@@@ -301,7 -296,7 +296,7 @@@ if (isRunning
  return 0;
  }
  //-----------------------------------------------------------------------------
 -int REMOTE_SCRIPT::Reload()
 +int REMOTE_SCRIPT::Reload(const MODULE_SETTINGS & ms)
  {
  NRMapParser nrMapParser;
  
index d1af2dbc6c389058f9c76f4d33490f4e9da222b6,9ff739cb0fa43468f8268fb238d0016ecccc29fe..5a20d495636078ff7f9adb4ced246df6f3c82411
@@@ -24,9 -24,6 +24,6 @@@ namespac
  {
  PLUGIN_CREATOR<SMUX> smc;
  
- bool SPrefixLess(const Sensors::value_type & a,
-                  const Sensors::value_type & b);
  bool SPrefixLess(const Sensors::value_type & a,
                   const Sensors::value_type & b)
  {
@@@ -57,7 -54,7 +54,7 @@@ int p
  
  pv.param = "Port";
  pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'Port\' not found.";
      printfd(__FILE__, "Parameter 'Port' not found\n");
@@@ -73,7 -70,7 +70,7 @@@ port = static_cast<uint16_t>(p)
  
  pv.param = "Password";
  pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'Password\' not found.";
      printfd(__FILE__, "Parameter 'Password' not found\n");
@@@ -86,7 -83,7 +83,7 @@@ els
  
  pv.param = "Server";
  pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
- if (pvi == s.moduleParams.end())
+ if (pvi == s.moduleParams.end() || pvi->value.empty())
      {
      errorStr = "Parameter \'Server\' not found.";
      printfd(__FILE__, "Parameter 'Server' not found\n");
@@@ -272,7 -269,7 +269,7 @@@ printfd(__FILE__, "SMUX::Stop() - After
  return 0;
  }
  
 -int SMUX::Reload()
 +int SMUX::Reload(const MODULE_SETTINGS & ms)
  {
  if (Stop())
      return -1;