]> git.stg.codes - stg.git/commitdiff
Merge branch 'stg-2.409'
authorMaksym Mamontov <madf@madf.info>
Wed, 1 Jan 2020 19:11:53 +0000 (21:11 +0200)
committerMaksym Mamontov <madf@madf.info>
Wed, 1 Jan 2020 19:11:53 +0000 (21:11 +0200)
20 files changed:
include/stg/module_settings.h
include/stg/user_ips.h
projects/sgauthstress/proto.cpp
projects/sgconf_xml/main.cpp
projects/sgconf_xml/parser.cpp
projects/stargazer/admin_impl.cpp
projects/stargazer/admin_impl.h
projects/stargazer/plugins/authorization/inetaccess/inetaccess.cpp
projects/stargazer/plugins/other/ping/ping.cpp
projects/stargazer/plugins/other/ping/ping.h
projects/stargazer/plugins/other/rscript/send_functor.h
projects/stargazer/plugins/store/firebird/firebird_store_users.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store_users.cpp
projects/stargazer/tariff_impl.cpp
projects/stargazer/tariff_impl.h
projects/stargazer/traffcounter_impl.cpp
projects/stargazer/traffcounter_impl.h
projects/stargazer/user_impl.cpp
stglibs/logger.lib/include/stg/logger.h
stglibs/logger.lib/logger.cpp

index a1baf33c80f1aba03e8d698c3e7422cfdccb2714..669cc2254fab0fb59c39d5dd53df571be89f1db8 100644 (file)
 //-----------------------------------------------------------------------------
 struct PARAM_VALUE
 {
-    PARAM_VALUE()
-        : param(),
-          value()
-    {}
     bool operator==(const PARAM_VALUE & rhs) const
         { return !strcasecmp(param.c_str(), rhs.param.c_str()); }
 
@@ -30,14 +26,6 @@ struct PARAM_VALUE
 //-----------------------------------------------------------------------------
 struct MODULE_SETTINGS
 {
-    MODULE_SETTINGS()
-        : moduleName(),
-          moduleParams()
-    {}
-    MODULE_SETTINGS(const MODULE_SETTINGS & rvalue)
-        : moduleName(rvalue.moduleName),
-          moduleParams(rvalue.moduleParams)
-    {}
     bool operator==(const MODULE_SETTINGS & rhs) const
         { return !strcasecmp(moduleName.c_str(), rhs.moduleName.c_str()); }
 
index 52e5df77d7dba6e9e702ab634caef19cd3f49325..bb920957e57e91baf5740322a440eb854975df69 100644 (file)
 #ifndef USER_IPS_H
 #define USER_IPS_H
 
+#include "stg/common.h"
+#include "os_int.h"
+
+#include <cstring>
+#include <vector>
+#include <string>
+#include <iostream>
+
 #ifdef FREE_BSD
 #include <sys/types.h>
 #endif
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
-#include <cstring>
-#include <vector>
-#include <string>
-#include <iostream>
-#include <sstream>
-
-#include "stg/common.h"
-#include "os_int.h"
-
 //-------------------------------------------------------------------------
 struct IP_MASK
 {
 IP_MASK() : ip(0), mask(0) {}
-IP_MASK(const IP_MASK & ipm) : ip(ipm.ip), mask(ipm.mask)  {}
 uint32_t ip;
 uint32_t mask;
 };
@@ -56,24 +54,19 @@ uint32_t mask;
 class USER_IPS
 {
     friend std::ostream & operator<< (std::ostream & o, const USER_IPS & i);
-    //friend stringstream & operator<< (stringstream & s, const USER_IPS & i);
     friend const USER_IPS StrToIPS(const std::string & ipsStr);
 
 public:
     typedef std::vector<IP_MASK> ContainerType;
     typedef ContainerType::size_type IndexType;
 
-    USER_IPS();
-    USER_IPS(const USER_IPS &);
-    USER_IPS & operator=(const USER_IPS &);
-    const IP_MASK & operator[](IndexType idx) const;
+    const IP_MASK & operator[](IndexType idx) const { return ips[idx]; }
     std::string GetIpStr() const;
     bool IsIPInIPS(uint32_t ip) const;
     bool OnlyOneIP() const;
     bool IsAnyIP() const;
-    size_t  Count() const;
-    void Add(const IP_MASK &im);
-    void Erase();
+    size_t Count() const { return ips.size(); }
+    void Add(const IP_MASK &im) { ips.push_back(im); }
 
 private:
     uint32_t CalcMask(unsigned int msk) const;
@@ -81,58 +74,21 @@ private:
 };
 //-------------------------------------------------------------------------
 
-//-----------------------------------------------------------------------------
-inline
-USER_IPS::USER_IPS()
-    : ips()
-{}
-//-----------------------------------------------------------------------------
-inline
-USER_IPS::USER_IPS(const USER_IPS & i)
-    : ips(i.ips)
-{}
-//-----------------------------------------------------------------------------
-inline
-USER_IPS & USER_IPS::operator=(const USER_IPS & i)
-{
-ips = i.ips;
-return *this;
-}
-//-----------------------------------------------------------------------------
-inline
-const IP_MASK & USER_IPS::operator[](IndexType idx) const
-{
-return ips[idx];
-}
-//-----------------------------------------------------------------------------
 inline
 std::string USER_IPS::GetIpStr() const
 {
 if (ips.empty())
-    {
     return "";
-    }
 
 if (ips[0].ip == 0)
-    {
     return "*";
-    }
 
 ContainerType::const_iterator it(ips.begin());
-std::ostringstream s;
-s << inet_ntostring(it->ip);
+std::string res = inet_ntostring(it->ip);
 ++it;
 for (; it != ips.end(); ++it)
-    {
-    s << "," << inet_ntostring(it->ip);
-    }
-return s.str();
-}
-//-----------------------------------------------------------------------------
-inline
-size_t USER_IPS::Count() const
-{
-return ips.size();
+    res += "," + inet_ntostring(it->ip);
+return res;
 }
 //-----------------------------------------------------------------------------
 inline
@@ -147,9 +103,7 @@ inline
 bool USER_IPS::IsIPInIPS(uint32_t ip) const
 {
 if (ips.empty())
-    {
     return false;
-    }
 
 if (ips.front().ip == 0)
     return true;
@@ -179,53 +133,29 @@ bool USER_IPS::IsAnyIP() const
 }
 //-----------------------------------------------------------------------------
 inline
-void USER_IPS::Add(const IP_MASK &im)
-{
-ips.push_back(im);
-}
-//-----------------------------------------------------------------------------
-inline
-void USER_IPS::Erase()
-{
-ips.erase(ips.begin(), ips.end());
-}
-//-----------------------------------------------------------------------------
-inline
 std::ostream & operator<<(std::ostream & o, const USER_IPS & i)
 {
 return o << i.GetIpStr();
 }
 //-----------------------------------------------------------------------------
-/*inline
-stringstream & operator<<(std::stringstream & s, const USER_IPS & i)
-{
-s << i.GetIpStr();
-return s;
-}*/
-//-----------------------------------------------------------------------------
 inline
 const USER_IPS StrToIPS(const std::string & ipsStr)
 {
 USER_IPS ips;
-char * paddr;
-IP_MASK im;
 std::vector<std::string> ipMask;
 if (ipsStr.empty())
-    {
     return ips;
-    }
 
 if (ipsStr[0] == '*' && ipsStr.size() == 1)
     {
-    im.ip = 0;
-    im.mask = 0;
-    ips.ips.push_back(im);
+    ips.ips.push_back(IP_MASK());
     return ips;
     }
 
 char * tmp = new char[ipsStr.size() + 1];
 strcpy(tmp, ipsStr.c_str());
 char * pstr = tmp;
+char * paddr = NULL;
 while ((paddr = strtok(pstr, ",")))
     {
     pstr = NULL;
@@ -242,36 +172,28 @@ for (USER_IPS::IndexType i = 0; i < ipMask.size(); i++)
     strcpy(str, ipMask[i].c_str());
     strIp = strtok(str, "/");
     if (strIp == NULL)
-        {
         return ips;
-        }
     strMask = strtok(NULL, "/");
 
+    IP_MASK im;
+
     im.ip = inet_addr(strIp);
     if (im.ip == INADDR_NONE)
-        {
         return ips;
-        }
 
     im.mask = 32;
     if (strMask != NULL)
         {
         int m = 0;
         if (str2x(strMask, m) != 0)
-            {
             return ips;
-            }
         im.mask = m;
 
         if (im.mask > 32)
-            {
             return ips;
-            }
 
         if ((im.ip & ips.CalcMask(im.mask)) != im.ip)
-            {
             return ips;
-            }
         }
     ips.ips.push_back(im);
     }
index 3150002ddbd8dc0c163b54a993055d6313d47118..d1114f17aa105667e703ae1775870ea3f29a5b0f 100644 (file)
@@ -507,8 +507,8 @@ hdr.protoVer[0] = 0;
 hdr.protoVer[1] = 8; // IA_PROTO_VER
 
 unsigned char buffer[2048];
-memcpy(buffer, packet, length);
 memcpy(buffer, &hdr, sizeof(hdr));
+memcpy(buffer + sizeof(hdr), packet, length);
 
 size_t offset = sizeof(HDR_8);
 for (size_t i = 0; i < IA_LOGIN_LEN / 8; i++)
index 2d8975733e02e14076ba382d1406881ec76af658..d43efea4ec1adff6f7efa22ea152fb3815a338a1 100644 (file)
@@ -24,6 +24,10 @@ $Author: nobunaga $
 $Date: 2008/01/05 12:11:34 $
 */
 
+#include "stg/common.h"
+#include "stg/netunit.h"
+#include "request.h"
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <getopt.h>
@@ -33,16 +37,11 @@ $Date: 2008/01/05 12:11:34 $
 #include <arpa/inet.h>
 #include <string.h>
 
-#include "stg/common.h"
-#include "stg/netunit.h"
-#include "request.h"
-
 #define FN_LEN          (512)
 #define REQ_STR_LEN     (300)
 char fileName[FN_LEN];
 char strReq[2048];
 
-//int ParseReply(void * data, SLIST * ans);
 int ParseReply(void * data, list<string> * ans);
 
 struct option long_options[] = {
@@ -105,19 +104,17 @@ return pass;
 //-----------------------------------------------------------------------------
 void CreateRequest(REQUEST * req, char * r)
 {
-char str[10024];
 r[0] = 0;
 
 if (!req->strReq.empty())
     {
+    char str[10024];
     sprintf(str, "%s", req->strReq.const_data().c_str());
     strcat(r, str);
     return;
     } else
     {
-    FILE *f;
-    f = NULL;
-    f = fopen(fileName, "rt");
+    FILE *f = fopen(fileName, "rt");
     if (!f)
         {
         printf("Can't open request file\n");
@@ -246,18 +243,15 @@ printf("  </SetUser>\n\n");
 printf("  <Message login=\"LOGIN\" msgver=\"1\" msgtype=\"1\" repeat=\"0\" repeatperiod=\"0\" showtime=\"0\" text=\"MESSAGE\" />\n");
 }
 //---------------------------------------------------------------------------
-int main (int argc, char **argv)
+int main(int argc, char **argv)
 {
-int c;
-//int digit_optind = 0;
 REQUEST req;
 
 while (1)
     {
-    //int this_option_optind = optind ? optind : 1;
     int option_index = -1;
 
-    c = getopt_long(argc, argv, "s:p:a:w:f:r:", long_options, &option_index);
+    int c = getopt_long(argc, argv, "s:p:a:w:f:r:", long_options, &option_index);
     if (c == -1)
         break;
 
@@ -269,7 +263,6 @@ while (1)
 
         case 'p': //port
             req.port = ParseServerPort(optarg);
-            //req.portReq = 1;
             break;
 
         case 'a': //admin
@@ -290,7 +283,6 @@ while (1)
             break;
 
         case '?':
-            //printf ("Unknown option \n");
             break;
 
         default:
@@ -309,7 +301,6 @@ if (optind < argc)
 
 if (CheckParameters(&req) == 0)
     {
-    //printf("Parameter needed\n");
     Usage();
     exit(PARAMETER_PARSING_ERR_CODE);
     }
index f2d5993bb9bf2fa86eaf21178e8056c539248a9c..23ec776aab86ab666b69eb1ecb4c7a6a768f53f7 100644 (file)
@@ -1,12 +1,12 @@
+#include "stg/common.h"
+#include "stg/netunit.h"
+#include "request.h"
+
 #include <stdlib.h>
 #include <stdio.h>
 #include <expat.h>
 #include <string.h>
 
-#include "stg/common.h"
-#include "stg/netunit.h"
-#include "request.h"
-
 int parse_depth = 0;
 XML_Parser parser;
 //---------------------------------------------------------------------------
@@ -92,16 +92,14 @@ if (strncasecmp(el, "dir_name_", 9) == 0 || strcasecmp(el, "address") == 0 || st
 
 if (strcasecmp(el, "traff") == 0)
     {
-//      printf ("<traff>\n");
     int j = 0;
-    uint64_t t;
     while (attr[j])
         {
+        uint64_t t;
         str2x(attr[j+1], t);
         printf ("<%s>%lld</%s>\n", attr[j], t, attr[j]);
         j+=2;
         }
-//      printf ("</traff>\n");
     return;
     }
 else
@@ -109,7 +107,6 @@ else
     printf ("<%s>%s</%s>\n", el, attr[1], el);
     return;
     }
-//    }
 parse_depth++;
 if (parse_depth == 1)
     {
@@ -130,17 +127,17 @@ if (parse_depth == 1)
 void EndElement(void *, const char *el)
 {
 parse_depth--;
-if (strcasecmp(el, "ServerInfo") == 0 || strcasecmp(el, "Tariffs") == 0 || strcasecmp(el, "Admins") == 0 || strcasecmp(el, "Users") == 0 || strcasecmp(el, "tariff") == 0 || strcasecmp(el, "user") == 0)
-    {
+if (strcasecmp(el, "ServerInfo") == 0 ||
+    strcasecmp(el, "Tariffs") == 0 ||
+    strcasecmp(el, "Admins") == 0 ||
+    strcasecmp(el, "Users") == 0 ||
+    strcasecmp(el, "tariff") == 0 ||
+    strcasecmp(el, "user") == 0)
     printf ("</%s>\n", el);
-    }
 }
 //---------------------------------------------------------------------------
 int ParseReply(void *, list<string> * ans)
-//int ParseReply(void * data, SLIST * ans)
 {
-//char answ[ENC_MSG_LEN + 1];
-int len;
 int done = 0;
 
 parse_depth = 0;
@@ -158,7 +155,7 @@ XML_SetElementHandler(parser, StartElement, EndElement);
 list<string>::iterator n = ans->begin();
 while (n != ans->end())
     {
-    len = strlen(n->c_str());
+    int len = strlen(n->c_str());
 
     if (++n == ans->end())
         done = 1;
index 400fe5c4a6a8bb14abec25d28ab0ba344ba72d92..9788cec4c76d58af2c4b0fbf2737f53c44847264 100644 (file)
 
 //-----------------------------------------------------------------------------
 ADMIN_IMPL::ADMIN_IMPL()
-    : ADMIN(),
-      conf(),
-      ip(0)
+    : ip(0)
 {
 }
 //-----------------------------------------------------------------------------
 ADMIN_IMPL::ADMIN_IMPL(const ADMIN_CONF & ac)
-    : ADMIN(),
-      conf(ac),
+    : conf(ac),
       ip(0)
 {
 }
@@ -50,22 +47,11 @@ ADMIN_IMPL::ADMIN_IMPL(const ADMIN_CONF & ac)
 ADMIN_IMPL::ADMIN_IMPL(const PRIV & priv,
                        const std::string & login,
                        const std::string & password)
-    : ADMIN(),
-      conf(priv, login, password),
+    : conf(priv, login, password),
       ip(0)
 {
 }
 //-----------------------------------------------------------------------------
-ADMIN_IMPL & ADMIN_IMPL::operator=(const ADMIN_IMPL & adm)
-{
-if (&adm == this)
-    return *this;
-
-conf = adm.conf;
-ip = adm.ip;
-return *this;
-}
-//-----------------------------------------------------------------------------
 ADMIN_IMPL & ADMIN_IMPL::operator=(const ADMIN_CONF & ac)
 {
 conf = ac;
index 88f38eb434699722751f8a4ae97900e106fd7e82..22ffa0710573099fe66feb7f07053058233ecbf1 100644 (file)
@@ -46,7 +46,6 @@ public:
                  const std::string & password);
       virtual ~ADMIN_IMPL() {}
 
-      ADMIN_IMPL & operator=(const ADMIN_IMPL &);
       ADMIN_IMPL & operator=(const ADMIN_CONF &);
       bool         operator==(const ADMIN_IMPL & rhs) const;
       bool         operator!=(const ADMIN_IMPL & rhs) const;
index de30e7d21f0d7b0e77d7d156a658e93bb2765959..3aec35ae0b5b57f16f93d1b1561ae9387cde7574 100644 (file)
@@ -1203,7 +1203,7 @@ if ((iaUser->phase.GetPhase() == 2) && (connAck->rnd == iaUser->rnd + 1))
         return -1;
         }
     }
-printfd(__FILE__, "Invalid phase or control number. Phase: %d. Control number: %d\n", iaUser->phase.GetPhase(), connAck->rnd);
+printfd(__FILE__, "Invalid phase or control number. Phase: %d. Control number: %d, expected: %d\n", iaUser->phase.GetPhase(), connAck->rnd, iaUser->rnd + 1);
 if (iaSettings.LogProtocolErrors())
     {
     if (iaUser->phase.GetPhase() != 2)
@@ -1248,7 +1248,7 @@ if ((iaUser->phase.GetPhase() == 2) && (connAck->rnd == iaUser->rnd + 1))
         return -1;
         }
     }
-printfd(__FILE__, "Invalid phase or control number. Phase: %d. Control number: %d\n", iaUser->phase.GetPhase(), connAck->rnd);
+printfd(__FILE__, "Invalid phase or control number. Phase: %d. Control number: %d, expected: %d\n", iaUser->phase.GetPhase(), connAck->rnd, iaUser->rnd + 1);
 if (iaSettings.LogProtocolErrors())
     {
     if (iaUser->phase.GetPhase() != 2)
@@ -1411,6 +1411,8 @@ for (int j = 0; j < DIR_NUM; j++)
 iaUser->rnd = static_cast<uint32_t>(random());
 connSynAck6.rnd = iaUser->rnd;
 
+printfd(__FILE__, "Sending CONN_SYN_ACK with control number %d.\n", iaUser->rnd);
+
 connSynAck6.userTimeOut = iaSettings.GetUserTimeout().GetSec();
 connSynAck6.aliveDelay = iaSettings.GetUserDelay().GetSec();
 
@@ -1453,6 +1455,8 @@ for (int j = 0; j < DIR_NUM; j++)
 iaUser->rnd = static_cast<uint32_t>(random());
 connSynAck8.rnd = iaUser->rnd;
 
+printfd(__FILE__, "Sending CONN_SYN_ACK with control number %d.\n", iaUser->rnd);
+
 connSynAck8.userTimeOut = iaSettings.GetUserTimeout().GetSec();
 connSynAck8.aliveDelay = iaSettings.GetUserDelay().GetSec();
 
index bec692fa400e48bf8fc2a08c9d3b08efa473a98f..040e3faa12ac8172aad5fa3e0f1eeba00d728bc0 100644 (file)
@@ -1,14 +1,15 @@
-#include <cstdio>
-#include <cassert>
-#include <csignal>
-#include <ctime>
-#include <algorithm>
+#include "ping.h"
 
 #include "stg/user.h"
 #include "stg/locker.h"
 #include "stg/user_property.h"
 #include "stg/plugin_creator.h"
-#include "ping.h"
+
+#include <cstdio>
+#include <cassert>
+#include <csignal>
+#include <ctime>
+#include <algorithm>
 
 namespace
 {
@@ -17,12 +18,11 @@ PLUGIN_CREATOR<PING> pc;
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-// ëÌÁÓÓ ÄÌÑ ÐÏÉÓËÁ ÀÚÅÒÁ × ÓÐÉÓËÅ ÎÏÔÉÆÉËÁÔÏÒÏ×
 template <typename varType>
-class IS_CONTAINS_USER: public std::binary_function<varType, USER_PTR, bool>
+class HAS_USER: public std::binary_function<varType, USER_PTR, bool>
 {
 public:
-    IS_CONTAINS_USER(const USER_PTR & u) : user(u) {}
+    explicit HAS_USER(const USER_PTR & u) : user(u) {}
     bool operator()(varType notifier) const
         {
         return notifier.GetUser() == user;
@@ -164,7 +164,7 @@ PING * ping = static_cast<PING *>(d);
 ping->isRunning = true;
 
 long delay = (10000000 * ping->pingSettings.GetPingDelay()) / 3 + 50000000;
+
 while (ping->nonstop)
     {
     std::list<USER_PTR>::iterator iter = ping->usersList.begin();
@@ -227,8 +227,8 @@ u->GetProperty().ips.AddAfterNotifier(&(*ChgIPNotifierList.begin()));
 void PING::UnSetUserNotifiers(USER_PTR u)
 {
 // ---          CurrIP              ---
-IS_CONTAINS_USER<CHG_CURRIP_NOTIFIER_PING> IsContainsUserCurrIP(u);
-IS_CONTAINS_USER<CHG_IPS_NOTIFIER_PING> IsContainsUserIP(u);
+HAS_USER<CHG_CURRIP_NOTIFIER_PING> IsContainsUserCurrIP(u);
+HAS_USER<CHG_IPS_NOTIFIER_PING> IsContainsUserIP(u);
 
 std::list<CHG_CURRIP_NOTIFIER_PING>::iterator currIPter;
 std::list<CHG_IPS_NOTIFIER_PING>::iterator IPIter;
@@ -277,9 +277,7 @@ while (users->SearchNext(h, &u) == 0)
         {
         uint32_t ip = u->GetCurrIP();
         if (ip)
-            {
             pinger.AddIP(ip);
-            }
         }
     }
 
@@ -318,22 +316,16 @@ void CHG_CURRIP_NOTIFIER_PING::Notify(const uint32_t & oldIP, const uint32_t & n
 {
 ping.pinger.DelIP(oldIP);
 if (newIP)
-    {
     ping.pinger.AddIP(newIP);
-    }
 }
 //-----------------------------------------------------------------------------
 void CHG_IPS_NOTIFIER_PING::Notify(const USER_IPS & oldIPS, const USER_IPS & newIPS)
 {
 if (oldIPS.OnlyOneIP())
-    {
     ping.pinger.DelIP(oldIPS[0].ip);
-    }
 
 if (newIPS.OnlyOneIP())
-    {
     ping.pinger.AddIP(newIPS[0].ip);
-    }
 }
 //-----------------------------------------------------------------------------
 void ADD_USER_NONIFIER_PING::Notify(const USER_PTR & user)
index 34bbbc52c5bd407b2e8a7990baa02c3697a0fb40..8b58e7eee2e038c62f02a5f3151a06ab2494232f 100644 (file)
@@ -30,15 +30,12 @@ class SETTINGS;
 class CHG_CURRIP_NOTIFIER_PING: public PROPERTY_NOTIFIER_BASE<uint32_t> {
 public:
     CHG_CURRIP_NOTIFIER_PING(const PING & p, USER_PTR u)
-        : PROPERTY_NOTIFIER_BASE<uint32_t>(), user(u), ping(p) {}
-    CHG_CURRIP_NOTIFIER_PING(const CHG_CURRIP_NOTIFIER_PING & rvalue)
-        : PROPERTY_NOTIFIER_BASE<uint32_t>(),
-          user(rvalue.user), ping(rvalue.ping) {}
+        : user(u), ping(p) {}
     void Notify(const uint32_t & oldIP, const uint32_t & newIP);
     USER_PTR GetUser() const { return user; }
 
 private:
-    CHG_CURRIP_NOTIFIER_PING & operator=(const CHG_CURRIP_NOTIFIER_PING & rvalue);
+    CHG_CURRIP_NOTIFIER_PING & operator=(const CHG_CURRIP_NOTIFIER_PING &);
 
     USER_PTR user;
     const PING & ping;
@@ -47,15 +44,12 @@ private:
 class CHG_IPS_NOTIFIER_PING: public PROPERTY_NOTIFIER_BASE<USER_IPS> {
 public:
     CHG_IPS_NOTIFIER_PING(const PING & p, USER_PTR u)
-        : PROPERTY_NOTIFIER_BASE<USER_IPS>(), user(u), ping(p) {}
-    CHG_IPS_NOTIFIER_PING(const CHG_IPS_NOTIFIER_PING & rvalue)
-        : PROPERTY_NOTIFIER_BASE<USER_IPS>(),
-          user(rvalue.user), ping(rvalue.ping) {}
+        : user(u), ping(p) {}
     void Notify(const USER_IPS & oldIPS, const USER_IPS & newIPS);
     USER_PTR GetUser() const { return user; }
 
 private:
-    CHG_IPS_NOTIFIER_PING & operator=(const CHG_IPS_NOTIFIER_PING & rvalue);
+    CHG_IPS_NOTIFIER_PING & operator=(const CHG_IPS_NOTIFIER_PING &);
 
     USER_PTR user;
     const PING & ping;
@@ -63,34 +57,31 @@ private:
 //-----------------------------------------------------------------------------
 class ADD_USER_NONIFIER_PING: public NOTIFIER_BASE<USER_PTR> {
 public:
-    explicit ADD_USER_NONIFIER_PING(PING & p) : NOTIFIER_BASE<USER_PTR>(), ping(p) {}
-    virtual ~ADD_USER_NONIFIER_PING() {}
+    explicit ADD_USER_NONIFIER_PING(PING & p) : ping(p) {}
     void Notify(const USER_PTR & user);
 
 private:
-    ADD_USER_NONIFIER_PING(const ADD_USER_NONIFIER_PING & rvalue);
-    ADD_USER_NONIFIER_PING & operator=(const ADD_USER_NONIFIER_PING & rvalue);
+    ADD_USER_NONIFIER_PING(const ADD_USER_NONIFIER_PING &);
+    ADD_USER_NONIFIER_PING & operator=(const ADD_USER_NONIFIER_PING &);
 
     PING & ping;
 };
 //-----------------------------------------------------------------------------
 class DEL_USER_NONIFIER_PING: public NOTIFIER_BASE<USER_PTR> {
 public:
-    explicit DEL_USER_NONIFIER_PING(PING & p) : NOTIFIER_BASE<USER_PTR>(), ping(p) {}
-    virtual ~DEL_USER_NONIFIER_PING() {}
+    explicit DEL_USER_NONIFIER_PING(PING & p) : ping(p) {}
     void Notify(const USER_PTR & user);
 
 private:
-    DEL_USER_NONIFIER_PING(const DEL_USER_NONIFIER_PING & rvalue);
-    DEL_USER_NONIFIER_PING & operator=(const DEL_USER_NONIFIER_PING & rvalue);
+    DEL_USER_NONIFIER_PING(const DEL_USER_NONIFIER_PING &);
+    DEL_USER_NONIFIER_PING & operator=(const DEL_USER_NONIFIER_PING &);
 
     PING & ping;
 };
 //-----------------------------------------------------------------------------
 class PING_SETTINGS {
 public:
-    PING_SETTINGS() : pingDelay(0), errorStr() {}
-    virtual ~PING_SETTINGS() {}
+    PING_SETTINGS() : pingDelay(0) {}
     const std::string & GetStrError() const { return errorStr; }
     int ParseSettings(const MODULE_SETTINGS & s);
     int GetPingDelay() const { return pingDelay; }
index baa4c1183de665824169cea9d40e151cee58c0a1..dc8ad63a2017f5e41c0c2112b24767672592f79c 100644 (file)
@@ -33,6 +33,7 @@
 
 #include <sys/types.h>
 #include <sys/socket.h>
+#include <netinet/in.h>
 #include <netinet/ip.h>
 
 class PacketSender : public std::unary_function<uint32_t, ssize_t> {
index fbeacae5332e115fc6d7d3092fa78863eaea16b0..ab18a40a9a1914b11bd0970d1779666be5fe4a31 100644 (file)
@@ -537,14 +537,15 @@ try
                  where fk_user = ?");
     st->Set(1, uid);
     st->Execute();
-    conf->ips.Erase();
+    USER_IPS ips;
     while (st->Fetch())
         {
         IP_MASK im;
         st->Get(1, (int32_t &)im.ip);
         st->Get(2, (int32_t &)im.mask);
-        conf->ips.Add(im);
+        ips.Add(im);
         }
+    conf->ips = ips;
 
     tr->Commit();
     }
index 1ab5d0e8c2c806e28974c30065975727efc9bfa4..b4c449fb32b4603464b7267924988d625bdca8be 100644 (file)
@@ -954,26 +954,22 @@ if (PQresultStatus(result) != PGRES_TUPLES_OK)
 
 tuples = PQntuples(result);
 
-conf->ips.Erase();
+USER_IPS ips;
 for (int i = 0; i < tuples; ++i)
     {
-    IP_MASK ipm;
+    IP_MASK im;
 
-    int ip, mask;
+    im.ip = inet_strington(PQgetvalue(result, i, 0));
 
-    ip = inet_strington(PQgetvalue(result, i, 0));
-
-    if (str2x(PQgetvalue(result, i, 1), mask))
+    if (str2x(PQgetvalue(result, i, 1), im.mask))
         {
         printfd(__FILE__, "POSTGRESQL_STORE::RestoreUserConf(): 'Failed to fetch mask'\n");
         continue;
         }
 
-    ipm.ip = ip;
-    ipm.mask = mask;
-
-    conf->ips.Add(ipm);
+    ips.Add(im);
     }
+conf->ips = ips;
 
 PQclear(result);
 
index 7dbae0da5def9330a4a6d01a957cf72b208d36e3..1fa2e82f624e2c06a155d068666ac09b537e6dea 100644 (file)
  $Author: faust $
  */
 
-#include <ctime>
-#include <algorithm> // std::max
-
-#include "stg/common.h"
 #include "tariff_impl.h"
+
 #include "stg_timer.h"
+#include "stg/common.h"
+
+#include <ctime>
+#include <algorithm> // std::max
 
 //-----------------------------------------------------------------------------
 TARIFF_IMPL & TARIFF_IMPL::operator=(const TARIFF_DATA & td)
@@ -42,12 +43,6 @@ tariffData = td;
 return *this;
 }
 //-----------------------------------------------------------------------------
-TARIFF_IMPL & TARIFF_IMPL::operator=(const TARIFF_IMPL & t)
-{
-tariffData = t.tariffData;
-return *this;
-}
-//-----------------------------------------------------------------------------
 double TARIFF_IMPL::GetPriceWithTraffType(uint64_t up,
                                      uint64_t down,
                                      int dir,
index 3a12fbdf6769a18047540d6466d1808ff6849cbf..f3accec99a9c86b527bafe36dc3754c965c684a1 100644 (file)
 
 class TARIFF_IMPL : public TARIFF {
 public:
-    TARIFF_IMPL()
-        : TARIFF(),
-          tariffData()
-    {}
     explicit TARIFF_IMPL(const std::string & name)
         : TARIFF(),
           tariffData(name)
@@ -82,7 +78,6 @@ public:
     const TARIFF_DATA & GetTariffData() const { return tariffData; }
 
     TARIFF_IMPL & operator=(const TARIFF_DATA & td);
-    TARIFF_IMPL & operator=(const TARIFF_IMPL & t);
     bool     operator==(const TARIFF_IMPL & rhs) const { return GetName() == rhs.GetName(); }
     bool     operator!=(const TARIFF_IMPL & rhs) const { return GetName() != rhs.GetName(); }
     std::string TariffChangeIsAllowed(const TARIFF & to, time_t currentTime) const;
index 8cc08839151a2fb7dde09763468be225251b6729..cd3244eb54f0064cb4d7def50e5f57bb61221cbd 100644 (file)
@@ -59,23 +59,13 @@ tcp = 0, udp, icmp, tcp_udp, all
 
 //-----------------------------------------------------------------------------
 TRAFFCOUNTER_IMPL::TRAFFCOUNTER_IMPL(USERS_IMPL * u, const std::string & fn)
-    : TRAFFCOUNTER(),
-      rules(),
-      packets(),
-      ip2packets(),
-      dirName(),
-      WriteServLog(GetStgLogger()),
+    : WriteServLog(GetStgLogger()),
       rulesFileName(fn),
-      monitorDir(),
       monitoring(false),
       touchTimeP(stgTime - MONITOR_TIME_DELAY_SEC),
       users(u),
       running(false),
       stopped(true),
-      mutex(),
-      thread(),
-      ipBeforeNotifiers(),
-      ipAfterNotifiers(),
       addUserNotifier(*this),
       delUserNotifier(*this)
 {
@@ -115,9 +105,7 @@ assert(h && "USERS::OpenSearch is always correct");
 USER_IMPL * u;
 
 while (users->SearchNext(h, &u) == 0)
-    {
     SetUserNotifiers(u);
-    }
 users->CloseSearch(h);
 
 running = true;
@@ -142,9 +130,7 @@ assert(h && "USERS::OpenSearch is always correct");
 
 USER_IMPL * u;
 while (users->SearchNext(h, &u) == 0)
-    {
     UnSetUserNotifiers(u);
-    }
 users->CloseSearch(h);
 
 //5 seconds to thread stops itself
@@ -385,7 +371,7 @@ while (pi.first != pi.second)
     {
     if (pi.first->second->first.GetSrcIP() == uip)
         {
-        assert((!pi.first->second->second.userUPresent || 
+        assert((!pi.first->second->second.userUPresent ||
                  pi.first->second->second.userU == user) &&
                "U user present but it's not current user");
 
@@ -396,7 +382,7 @@ while (pi.first != pi.second)
 
     if (pi.first->second->first.GetDstIP() == uip)
         {
-        assert((!pi.first->second->second.userDPresent || 
+        assert((!pi.first->second->second.userDPresent ||
                  pi.first->second->second.userD == user) &&
                "D user present but it's not current user");
 
@@ -835,8 +821,6 @@ if (r == 0)
 
 rule->ip = ipaddr.s_addr;
 rule->mask = CalcMask(msk);
-//msk = 1;
-//printfd(__FILE__, "msk=%d mask=%08X   mask=%08X\n", msk, rule->mask, (0xFFffFFff << (32 - msk)));
 
 if ((ipaddr.s_addr & rule->mask) != ipaddr.s_addr)
     {
index a1dfa74303aa8a4844fcf443550a53b712b4b359..86d8c3898780b481c0355c34385cfabdaaae8469 100644 (file)
@@ -73,19 +73,6 @@ PACKET_EXTRA_DATA()
       lenD(0)
 {}
 
-PACKET_EXTRA_DATA(const PACKET_EXTRA_DATA & pp)
-    : flushTime(pp.flushTime),
-      updateTime(pp.updateTime),
-      userU(pp.userU),
-      userUPresent(pp.userUPresent),
-      userD(pp.userD),
-      userDPresent(pp.userDPresent),
-      dirU(pp.dirU),
-      dirD(pp.dirD),
-      lenU(pp.lenU),
-      lenD(pp.lenD)
-{}
-
 time_t      flushTime;          // Last flush time
 time_t      updateTime;         // Last update time
 USER_IMPL * userU;              // Uploader
@@ -196,8 +183,8 @@ public:
     size_t      RulesCount() const { return rules.size(); }
 
 private:
-    TRAFFCOUNTER_IMPL(const TRAFFCOUNTER_IMPL & rvalue);
-    TRAFFCOUNTER_IMPL & operator=(const TRAFFCOUNTER_IMPL & rvalue);
+    TRAFFCOUNTER_IMPL(const TRAFFCOUNTER_IMPL &);
+    TRAFFCOUNTER_IMPL & operator=(const TRAFFCOUNTER_IMPL &);
 
     bool        ParseAddress(const char * ta, RULE * rule) const;
     uint32_t    CalcMask(uint32_t msk) const;
index bd3f060770fd0afda8f38678c305e20a19392862..09e71a35bc2051a006f755eff573c967a3097335 100644 (file)
@@ -222,6 +222,7 @@ void USER_IMPL::Init()
 {
 password = "*_EMPTY_PASSWORD_*";
 tariffName = NO_TARIFF_NAME;
+tariff = tariffs->FindByName(tariffName);
 ips = StrToIPS("*");
 lastWriteStat = stgTime + random() % settings->GetStatWritePeriod();
 lastWriteDetailedStat = stgTime;
index 5165f0fb7203b540fa69bac94f18564e1768aa8c..60514f4a9d311de3d7f6f971df5cff24b31921da 100644 (file)
@@ -49,11 +49,13 @@ class PLUGIN_LOGGER
 friend PLUGIN_LOGGER GetPluginLogger(const STG_LOGGER& logger, const std::string& pluginName);
 
 public:
-    PLUGIN_LOGGER(const PLUGIN_LOGGER& rhs) : m_parent(rhs.m_parent), m_pluginName(rhs.m_pluginName) {}
+    PLUGIN_LOGGER(const PLUGIN_LOGGER& rhs) : m_parent(rhs.m_parent), m_pluginName(rhs.m_pluginName) {} // Need move here.
     void operator()(const char* fmt, ...) const;
     void operator()(const std::string& line) const;
 
 private:
+    PLUGIN_LOGGER& operator=(const PLUGIN_LOGGER&); // Copy assignment is prohibited.
+
     PLUGIN_LOGGER(const STG_LOGGER & logger, const std::string & pn);
     const STG_LOGGER& m_parent;
     std::string m_pluginName;
index 4a4552576da1df7b1536eb55baeef62acb0898af..20aa133aa9a1f06f6f928ff312f8e5e68a2cadcd 100644 (file)
@@ -1,9 +1,9 @@
+#include "stg/logger.h"
+
 #include <stdio.h>
 #include <stdarg.h>
 #include <syslog.h>
 
-#include "stg/logger.h"
-
 #ifdef STG_TIME
 extern const volatile time_t stgTime;
 #endif