]> git.stg.codes - stg.git/commitdiff
Merge branch 'stg-2.409' into stg-2.409-radius
authorMaxim Mamontov <faust.madf@gmail.com>
Sun, 11 Mar 2018 10:12:32 +0000 (12:12 +0200)
committerMaxim Mamontov <faust.madf@gmail.com>
Sun, 11 Mar 2018 10:12:32 +0000 (12:12 +0200)
20 files changed:
include/stg/module_settings.h
include/stg/user_ips.h
projects/sgauthstress/proto.cpp
projects/sgconf/common_sg.cpp
projects/sgconf/main.cpp
projects/sgconf/sginfo.cpp [deleted file]
projects/sgconf_xml/main.cpp
projects/sgconf_xml/parser.cpp
projects/stargazer/admin_impl.cpp
projects/stargazer/admin_impl.h
projects/stargazer/plugins/other/ping/ping.cpp
projects/stargazer/plugins/other/ping/ping.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
stglibs/logger.lib/include/stg/logger.h
stglibs/logger.lib/logger.cpp

index 5af5eefcd23149796711ce76d81bc7d5d45d21e3..b94de10c25d2f56b71cabbaf5beef54e4a0f4fcb 100644 (file)
@@ -37,10 +37,7 @@ struct PARAM_VALUE
 //-----------------------------------------------------------------------------
 struct MODULE_SETTINGS
 {
-    MODULE_SETTINGS()
-        : moduleName(),
-          moduleParams()
-    {}
+    MODULE_SETTINGS() {}
     MODULE_SETTINGS(const std::string& name, const std::vector<PARAM_VALUE>& params)
         : moduleName(name),
           moduleParams(params)
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 86214a3dd916c81b6333733f90f97f7dc1546215..d197e982458b30ac139f38fa8d1769f4fb8c3405 100644 (file)
  $Date: 2009/06/08 10:02:28 $
  */
 
+#include "stg/common.h"
+#include "sg_error_codes.h"
+#include "common_sg.h"
+#include "version_sg.h"
 
 #include <stdio.h>
 #include <string.h>
 #include <iostream>
 #include <iconv.h>
 
-#include "stg/common.h"
-#include "sg_error_codes.h"
-#include "common_sg.h"
-#include "version_sg.h"
-
 using namespace std;
 
 const int usageConf = 0;
@@ -90,7 +89,7 @@ HelpParams hp[] =
     {"set credit expire",       "get credit expire",    "-E",   "<credit_expire_date>"},
     {"set password",            "get password",         "-o",   "<new_password>"},
     {"set prepaid traffic",     "get prepaid traffic",  "-e",   "<prepaid>"},
-    {"set IP-addresses",       "get IP-addresses",     "-I",   "<*|ip_addr[,ip_addr...]>"},
+    {"set IP-addresses",        "get IP-addresses",     "-I",   "<*|ip_addr[,ip_addr...]>"},
     {"set name",                "get name",             "-A",   "<name>"},
     {"set note",                "get note",             "-N",   "<note>"},
     {"set street address",      "get street address",   "-D",   "<address>"},
@@ -291,21 +290,12 @@ void ConvertFromKOI8(const string & src, string * dst)
 ConvertKOI8(src, dst, FROM_KOI8);
 }
 //-----------------------------------------------------------------------------
-void ConvertToKOI8(const string & src, string * dst)
-{
-ConvertKOI8(src, dst, TO_KOI8);
-}
-//-----------------------------------------------------------------------------
 int RecvSetUserAnswer(const char * ans, void * d)
 {
-GetUserCbData * gucbd;
-gucbd = (GetUserCbData *)d;
+GetUserCbData * gucbd = static_cast<GetUserCbData*>(d);
 
 bool * result = gucbd->result;
 
-//REQUEST * req = (REQUEST *)gucbd->data;
-
-//printf("ans=%s\n", ans);
 if (strcasecmp("Ok", ans) == 0)
     *result = true;
 else
@@ -323,8 +313,7 @@ struct StringReqParams
 //-----------------------------------------------------------------------------
 void RecvUserData(USERDATA * ud, void * d)
 {
-GetUserCbData * gucbd;
-gucbd = (GetUserCbData *)d;
+GetUserCbData * gucbd = static_cast<GetUserCbData*>(d);
 
 bool * result = gucbd->result;
 
@@ -405,7 +394,7 @@ StringReqParams strReqParams[] =
     {"group",    req->group,       &ud->group},
     {"tariff",   req->tariff,      &ud->tariff},
     {"password", req->usrPasswd,   &ud->password},
-    {"ip",      req->ips,         &ud->ips}    // IP-address of user
+    {"ip",       req->ips,         &ud->ips} // IP-address of user
 };
 for (unsigned i = 0; i < sizeof(strReqParams) / sizeof(StringReqParams); i++)
     {
@@ -421,8 +410,7 @@ for (unsigned i = 0; i < sizeof(strReqParams) / sizeof(StringReqParams); i++)
 //-----------------------------------------------------------------------------
 void RecvAuthByData(const std::vector<std::string> & list, void * d)
 {
-AuthByCbData * abcbd;
-abcbd = (AuthByCbData *)d;
+AuthByCbData * abcbd = static_cast<AuthByCbData*>(d);
 
 bool * result = abcbd->result;
 
index 3eaffb9f07120c5089c0aa2bef585cfc4594d5f2..20c7ef519f48dbdb7483f03ae3857e0975d2e2ad 100644 (file)
  $Date: 2010/03/25 14:37:43 $
  */
 
-#include <unistd.h>
-#include <getopt.h>
-#include <iconv.h>
-#include <langinfo.h>
+#include "stg/common.h"
+#include "stg/netunit.h"
+#include "request.h"
+#include "common_sg.h"
+#include "sg_error_codes.h"
 
 #include <cerrno>
 #include <clocale>
 #include <list>
 #include <sstream>
 
-#include "stg/common.h"
-#include "stg/netunit.h"
-#include "request.h"
-#include "common_sg.h"
-#include "sg_error_codes.h"
+#include <unistd.h>
+#include <getopt.h>
+#include <iconv.h>
+#include <langinfo.h>
 
 using namespace std;
 
 time_t stgTime;
 
 int ParseReplyGet(void * data, list<string> * ans);
-//int ParseReplySet(void * data, list<string> * ans);
 
 struct option long_options_get[] = {
 {"server",      1, 0, 's'},  //Server
@@ -57,7 +56,6 @@ struct option long_options_get[] = {
 {"admin_pass",  1, 0, 'w'},  //passWord
 {"user",        1, 0, 'u'},  //User
 {"addcash",     0, 0, 'c'},  //Add Cash
-//{"setcash",     0, 0, 'v'},  //Set Cash
 {"credit",      0, 0, 'r'},  //cRedit
 {"tariff",      0, 0, 't'},  //Tariff
 {"message",     0, 0, 'm'},  //message
@@ -171,7 +169,7 @@ struct option long_options_set[] = {
 {"email",       1, 0, 'L'},  //emaiL
 {"phone",       1, 0, 'P'},  //phone
 {"group",       1, 0, 'G'},  //Group
-{"ip",         0, 0, 'I'},  //IP-address of user
+{"ip",          0, 0, 'I'},  //IP-address of user
 
 {0, 0, 0, 0}};
 
@@ -272,8 +270,6 @@ if (strlen(s1) >= TARIFF_NAME_LEN)
     exit(PARAMETER_PARSING_ERR_CODE);
     }
 
-//*tariff = s;
-
 if (CheckLogin(s1))
     {
     printf("Incorrect tariff value %s\n", t);
@@ -373,7 +369,6 @@ nconv = iconv (cd, (const char**)&inbuf, &insize, &outbuf, &outsize);
 #else
 nconv = iconv (cd, &inbuf, &insize, &outbuf, &outsize);
 #endif
-//printf("nconv=%d outsize=%d\n", nconv, outsize);
 if (nconv == (size_t) -1)
     {
     if (errno != EINVAL)
@@ -405,7 +400,6 @@ if (!req->usrMsg.empty())
     string msg;
     Encode12str(msg, req->usrMsg.const_data());
     sprintf(str, "<Message login=\"%s\" msgver=\"1\" msgtype=\"1\" repeat=\"0\" repeatperiod=\"0\" showtime=\"0\" text=\"%s\"/>", req->login.const_data().c_str(), msg.c_str());
-    //sprintf(str, "<message login=\"%s\" priority=\"0\" text=\"%s\"/>\n", req->login, msg);
     strcat(r, str);
     return;
     }
@@ -414,7 +408,6 @@ if (req->deleteUser)
     {
     sprintf(str, "<DelUser login=\"%s\"/>", req->login.const_data().c_str());
     strcat(r, str);
-    //printf("%s\n", r);
     return;
     }
 
@@ -422,7 +415,6 @@ if (req->createUser)
     {
     sprintf(str, "<AddUser> <login value=\"%s\"/> </AddUser>", req->login.const_data().c_str());
     strcat(r, str);
-    //printf("%s\n", r);
     return;
     }
 
@@ -515,7 +507,6 @@ for (int i = 0; i < DIR_NUM; i++)
 
         stringstream ss;
         ss << req->u[i].const_data();
-        //sprintf(str, "MU%d=\"%lld\" ", i, req->u[i].const_data());
         sprintf(str, "MU%d=\"%s\" ", i, ss.str().c_str());
         strcat(r, str);
         }
@@ -539,8 +530,6 @@ if (uPresent || dPresent)
     strcat(r, "/>");
     }
 
-//printf("%s\n", r);
-
 if (!req->tariff.empty())
     {
     switch (req->chgTariff)
@@ -648,7 +637,7 @@ int b = !req->cash.empty()
     || !req->email.empty()
     || !req->phone.empty()
     || !req->group.empty()
-    || !req->ips.empty()       // IP-address of user
+    || !req->ips.empty() // IP-address of user
 
     || !req->createUser
     || !req->deleteUser;
@@ -681,24 +670,11 @@ for (int i = 0; i < DIR_NUM; i++)
         }
     }
 
-
-//printf("a=%d, b=%d, u=%d, d=%d ud=%d\n", a, b, u, d, ud);
 return a && (b || u || d || ud);
 }
 //-----------------------------------------------------------------------------
-int CheckParametersGet(REQUEST * req)
-{
-return CheckParameters(req);
-}
-//-----------------------------------------------------------------------------
-int CheckParametersSet(REQUEST * req)
-{
-return CheckParameters(req);
-}
-//-----------------------------------------------------------------------------
 int mainGet(int argc, char **argv)
 {
-int c;
 REQUEST req;
 RESETABLE<string>   t1;
 int missedOptionArg = false;
@@ -709,7 +685,7 @@ int option_index = -1;
 while (1)
     {
     option_index = -1;
-    c = getopt_long(argc, argv, short_options_get, long_options_get, &option_index);
+    int c = getopt_long(argc, argv, short_options_get, long_options_get, &option_index);
     if (c == -1)
         break;
 
@@ -721,7 +697,6 @@ while (1)
 
         case 'p': //port
             req.port = ParseServerPort(optarg);
-            //req.portReq = 1;
             break;
 
         case 'a': //admin
@@ -791,10 +766,10 @@ while (1)
         case 'G': //Group
             req.group = " ";
             break;
-       
-       case 'I': //IP-address of user
-           req.ips = " ";
-           break;
+
+        case 'I': //IP-address of user
+            req.ips = " ";
+            break;
 
         case 'S': //Detail stat status
             req.disableDetailStat = " ";
@@ -814,7 +789,6 @@ while (1)
         case 507:
         case 508:
         case 509:
-            //printf("U%d\n", c - 500);
             req.u[c - 500] = 1;
             break;
 
@@ -828,7 +802,6 @@ while (1)
         case 607:
         case 608:
         case 609:
-            //printf("D%d\n", c - 600);
             req.d[c - 600] = 1;
             break;
 
@@ -842,7 +815,6 @@ while (1)
         case 707:
         case 708:
         case 709:
-            //printf("UD%d\n", c - 700);
             req.ud[c - 700] = " ";
             break;
 
@@ -852,7 +824,6 @@ while (1)
 
         case '?':
         case ':':
-            //printf ("Unknown option \n");
             missedOptionArg = true;
             break;
 
@@ -870,9 +841,8 @@ if (optind < argc)
     exit(PARAMETER_PARSING_ERR_CODE);
     }
 
-if (missedOptionArg || !CheckParametersGet(&req))
+if (missedOptionArg || !CheckParameters(&req))
     {
-    //printf("Parameter needed\n");
     UsageInfo();
     exit(PARAMETER_PARSING_ERR_CODE);
     }
@@ -887,7 +857,6 @@ int mainSet(int argc, char **argv)
 {
 string str;
 
-int c;
 bool isMessage = false;
 REQUEST req;
 
@@ -901,7 +870,7 @@ while (1)
     {
     int option_index = -1;
 
-    c = getopt_long(argc, argv, short_options_set, long_options_set, &option_index);
+    int c = getopt_long(argc, argv, short_options_set, long_options_set, &option_index);
 
     if (c == -1)
         break;
@@ -914,7 +883,6 @@ while (1)
 
         case 'p': //port
             req.port = ParseServerPort(optarg);
-            //req.portReq = 1;
             break;
 
         case 'a': //admin
@@ -997,7 +965,6 @@ while (1)
         case 'L': //emaiL
             ParseAnyString(optarg, &str, "koi8-ru");
             req.email = str;
-            //printf("EMAIL=%s\n", optarg);
             break;
 
         case 'P': //phone
@@ -1033,7 +1000,6 @@ while (1)
         case 507:
         case 508:
         case 509:
-            //printf("U%d\n", c - 500);
             req.u[c - 500] = ParseTraff(optarg);
             break;
 
@@ -1047,7 +1013,6 @@ while (1)
         case 607:
         case 608:
         case 609:
-            //printf("D%d\n", c - 600);
             req.d[c - 600] = ParseTraff(optarg);
             break;
 
@@ -1062,17 +1027,14 @@ while (1)
         case 708:
         case 709:
             ParseAnyString(optarg, &str, "koi8-ru");
-            //printf("UD%d\n", c - 700);
             req.ud[c - 700] = str;
             break;
 
         case '?':
-            //printf("Missing option argument\n");
             missedOptionArg = true;
             break;
 
         case ':':
-            //printf("Missing option argument\n");
             missedOptionArg = true;
             break;
 
@@ -1090,9 +1052,8 @@ if (optind < argc)
     exit(PARAMETER_PARSING_ERR_CODE);
     }
 
-if (missedOptionArg || !CheckParametersSet(&req))
+if (missedOptionArg || !CheckParameters(&req))
     {
-    //printf("Parameter needed\n");
     UsageConf();
     exit(PARAMETER_PARSING_ERR_CODE);
     }
@@ -1115,7 +1076,6 @@ if (argc <= 2)
 
 if (strcmp(argv[1], "get") == 0)
     {
-    //printf("get\n");
     return mainGet(argc - 1, argv + 1);
     }
 else if (strcmp(argv[1], "set") == 0)
diff --git a/projects/sgconf/sginfo.cpp b/projects/sgconf/sginfo.cpp
deleted file mode 100644 (file)
index 6879cb0..0000000
+++ /dev/null
@@ -1,1086 +0,0 @@
-/*
- *    This program is free software; you can redistribute it and/or modify
- *    it under the terms of the GNU General Public License as published by
- *    the Free Software Foundation; either version 2 of the License, or
- *    (at your option) any later version.
- *
- *    This program is distributed in the hope that it will be useful,
- *    but WITHOUT ANY WARRANTY; without even the implied warranty of
- *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *    GNU General Public License for more details.
- *
- *    You should have received a copy of the GNU General Public License
- *    along with this program; if not, write to the Free Software
- *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-/*
- *    Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
- */
-
- /*
- $Author: faust $
- $Revision: 1.3 $
- $Date: 2009/06/22 15:57:49 $
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <getopt.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <string.h>
-#include <iconv.h>
-#include <string>
-#include <list>
-#include <errno.h>
-
-#include "stg/common.h"
-#include "stg/netunit.h"
-#include "request.h"
-#include "common_sg.h"
-#include "sg_error_codes.h"
-
-using namespace std;
-
-time_t stgTime;
-
-int ParseReplyGet(void * data, list<string> * ans);
-int ParseReplySet(void * data, list<string> * ans);
-
-struct option long_options_get[] = {
-{"server",      1, 0, 's'},  //Server
-{"port",        1, 0, 'p'},  //Port
-{"admin",       1, 0, 'a'},  //Admin
-{"admin_pass",  1, 0, 'w'},  //passWord
-{"user",        1, 0, 'u'},  //User
-{"addcash",     0, 0, 'c'},  //Add Cash
-//{"setcash",     0, 0, 'v'},  //Set Cash
-{"credit",      0, 0, 'r'},  //cRedit
-{"tariff",      0, 0, 't'},  //Tariff
-{"message",     0, 0, 'm'},  //message
-{"password",    0, 0, 'o'},  //password
-{"down",        0, 0, 'd'},  //down
-{"passive",     0, 0, 'i'},  //passive
-{"u0",          0, 0, 500},  //U0
-{"u1",          0, 0, 501},  //U1
-{"u2",          0, 0, 502},  //U2
-{"u3",          0, 0, 503},  //U3
-{"u4",          0, 0, 504},  //U4
-{"u5",          0, 0, 505},  //U5
-{"u6",          0, 0, 506},  //U6
-{"u7",          0, 0, 507},  //U7
-{"u8",          0, 0, 508},  //U8
-{"u9",          0, 0, 509},  //U9
-{"d0",          0, 0, 600},  //D0
-{"d1",          0, 0, 601},  //D1
-{"d2",          0, 0, 602},  //D2
-{"d3",          0, 0, 603},  //D3
-{"d4",          0, 0, 604},  //D4
-{"d5",          0, 0, 605},  //D5
-{"d6",          0, 0, 606},  //D6
-{"d7",          0, 0, 607},  //D7
-{"d8",          0, 0, 608},  //D8
-{"d9",          0, 0, 609},  //D9
-
-{"ud0",         0, 0, 700},  //UserData0
-{"ud1",         0, 0, 701},  //UserData1
-{"ud2",         0, 0, 702},  //UserData2
-{"ud3",         0, 0, 703},  //UserData3
-{"ud4",         0, 0, 704},  //UserData4
-{"ud5",         0, 0, 705},  //UserData5
-{"ud6",         0, 0, 706},  //UserData6
-{"ud7",         0, 0, 707},  //UserData7
-{"ud8",         0, 0, 708},  //UserData8
-{"ud9",         0, 0, 709},  //UserData9
-
-{"prepaid",     0, 0, 'e'},  //prepaid traff
-{"create",      0, 0, 'n'},  //create
-{"delete",      0, 0, 'l'},  //delete
-
-{"note",        0, 0, 'N'},  //Note
-{"name",        0, 0, 'A'},  //nAme
-{"address",     0, 0, 'D'},  //aDdress
-{"email",       0, 0, 'L'},  //emaiL
-{"phone",       0, 0, 'P'},  //phone
-{"group",       0, 0, 'G'},  //Group
-
-{0, 0, 0, 0}};
-
-struct option long_options_set[] = {
-{"server",      1, 0, 's'},  //Server
-{"port",        1, 0, 'p'},  //Port
-{"admin",       1, 0, 'a'},  //Admin
-{"admin_pass",  1, 0, 'w'},  //passWord
-{"user",        1, 0, 'u'},  //User
-{"addcash",     1, 0, 'c'},  //Add Cash
-{"setcash",     1, 0, 'v'},  //Set Cash
-{"credit",      1, 0, 'r'},  //cRedit
-{"tariff",      1, 0, 't'},  //Tariff
-{"message",     1, 0, 'm'},  //message
-{"password",    1, 0, 'o'},  //password
-{"down",        1, 0, 'd'},  //down
-{"passive",     1, 0, 'i'},  //passive
-{"u0",          1, 0, 500},  //U0
-{"u1",          1, 0, 501},  //U1
-{"u2",          1, 0, 502},  //U2
-{"u3",          1, 0, 503},  //U3
-{"u4",          1, 0, 504},  //U4
-{"u5",          1, 0, 505},  //U5
-{"u6",          1, 0, 506},  //U6
-{"u7",          1, 0, 507},  //U7
-{"u8",          1, 0, 508},  //U8
-{"u9",          1, 0, 509},  //U9
-{"d0",          1, 0, 600},  //D0
-{"d1",          1, 0, 601},  //D1
-{"d2",          1, 0, 602},  //D2
-{"d3",          1, 0, 603},  //D3
-{"d4",          1, 0, 604},  //D4
-{"d5",          1, 0, 605},  //D5
-{"d6",          1, 0, 606},  //D6
-{"d7",          1, 0, 607},  //D7
-{"d8",          1, 0, 608},  //D8
-{"d9",          1, 0, 609},  //D9
-
-{"ud0",         1, 0, 700},  //UserData
-{"ud1",         1, 0, 701},  //UserData1
-{"ud2",         1, 0, 702},  //UserData2
-{"ud3",         1, 0, 703},  //UserData3
-{"ud4",         1, 0, 704},  //UserData4
-{"ud5",         1, 0, 705},  //UserData5
-{"ud6",         1, 0, 706},  //UserData6
-{"ud7",         1, 0, 707},  //UserData7
-{"ud8",         1, 0, 708},  //UserData8
-{"ud9",         1, 0, 709},  //UserData9
-
-{"prepaid",     1, 0, 'e'},  //prepaid traff
-{"create",      1, 0, 'n'},  //create
-{"delete",      1, 0, 'l'},  //delete
-
-{"note",        1, 0, 'N'},  //Note
-{"name",        1, 0, 'A'},  //nAme
-{"address",     1, 0, 'D'},  //aDdress
-{"email",       1, 0, 'L'},  //emaiL
-{"phone",       1, 0, 'P'},  //phone
-{"group",       1, 0, 'G'},  //Group
-
-{0, 0, 0, 0}};
-
-//-----------------------------------------------------------------------------
-void CreateRequestGet(REQUEST * req, char * r)
-{
-string r1;
-r1 = "<GetUser login=\"" + req->login.const_data() + "\"/>\n";
-strcpy(r, r1.c_str());
-}
-//-----------------------------------------------------------------------------
-double ParseCash(const char * c, string * message)
-{
-//-c 123.45:log message
-double cash;
-char * msg;
-char * str;
-str = new char[strlen(c) + 1];
-
-strncpy(str, c, strlen(c));
-str[strlen(c)] = 0;
-
-msg = strchr(str, ':');
-
-if (msg)
-    {
-    *message =  msg + 1;
-    str[msg - str] = 0;
-    }
-else
-    *message = "";
-
-if (strtodouble2(str, cash) != 0)
-    {
-    printf("Incorrect cash value %s\n", c);
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-delete[] str;
-return cash;
-}
-//-----------------------------------------------------------------------------
-double ParseCredit(const char * c)
-{
-double credit;
-if (strtodouble2(c, credit) != 0)
-    {
-    printf("Incorrect credit value %s\n", c);
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-return credit;
-}
-//-----------------------------------------------------------------------------
-double ParsePrepaidTraffic(const char * c)
-{
-double credit;
-if (strtodouble2(c, credit) != 0)
-    {
-    printf("Incorrect prepaid traffic value %s\n", c);
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-return credit;
-}
-//-----------------------------------------------------------------------------
-int64_t ParseTraff(const char * c)
-{
-int64_t traff;
-if (str2x(c, traff) != 0)
-    {
-    printf("Incorrect credit value %s\n", c);
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-return traff;
-}
-//-----------------------------------------------------------------------------
-bool ParseDownPassive(const char * dp)
-{
-if (!(dp[1] == 0 && (dp[0] == '1' || dp[0] == '0')))
-    {
-    printf("Incorrect value %s\n", dp);
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-return dp[0] - '0';
-}
-//-----------------------------------------------------------------------------
-string ParseTariff(const char * t, int &chgType)
-{
-int l = strlen(t);
-char * s;
-s = new char[l];
-char * s1, * s2;
-string ss;
-
-strcpy(s, t);
-
-s1 = strtok(s, ":");
-
-if (strlen(s1) >= TARIFF_NAME_LEN)
-    {
-    printf("Tariff name too big %s\n", s1);
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-//*tariff = s;
-
-if (CheckLogin(s1))
-    {
-    printf("Incorrect tariff value %s\n", t);
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-s2 = strtok(NULL, ":");
-
-chgType = -1;
-
-if (s2 == NULL)
-    {
-    chgType = TARIFF_NOW;
-    ss = s;
-    delete[] s;
-    return ss;
-    }
-
-
-if (strcmp(s2, "now") == 0)
-    chgType = TARIFF_NOW;
-
-if (strcmp(s2, "delayed") == 0)
-    chgType = TARIFF_DEL;
-
-if (strcmp(s2, "recalc") == 0)
-    chgType = TARIFF_REC;
-
-if (chgType < 0)
-    {
-    printf("Incorrect tariff value %s\n", t);
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-ss = s;
-delete[] s;
-return ss;
-}
-//-----------------------------------------------------------------------------
-void ParseAnyString(const char * c, string * msg)
-{
-iconv_t cd;
-char * ob = new char[strlen(c) + 1];
-char * ib = new char[strlen(c) + 1];
-
-strcpy(ib, c);
-
-char * outbuf = ob;
-char * inbuf = ib;
-
-setlocale(LC_ALL, "");
-
-char charsetF[255];
-strncpy(charsetF, nl_langinfo(CODESET), 255);
-
-char * charsetT = "koi8-ru";
-
-size_t nconv = 1;
-
-size_t insize = strlen(ib);
-size_t outsize = strlen(ib);
-
-insize = strlen(c);
-
-cd = iconv_open(charsetT, charsetF);
-if (cd == (iconv_t) -1)
-    {
-    if (errno == EINVAL)
-        {
-        printf("Warning: iconv from %s to %s failed\n", charsetF, charsetT);
-        *msg = c;
-        return;
-        }
-    else
-        printf("error iconv_open\n");
-
-    exit(ICONV_ERR_CODE);
-    }
-
-nconv = iconv (cd, &inbuf, &insize, &outbuf, &outsize);
-//printf("nconv=%d outsize=%d\n", nconv, outsize);
-if (nconv == (size_t) -1)
-    {
-    if (errno != EINVAL)
-        {
-        printf("iconv error\n");
-        exit(ICONV_ERR_CODE);
-        }
-    }
-
-*outbuf = L'\0';
-
-iconv_close(cd);
-*msg = ob;
-
-delete[] ob;
-delete[] ib;
-}
-//-----------------------------------------------------------------------------
-void CreateRequestSet(REQUEST * req, char * r)
-{
-const int strLen = 10024;
-char str[strLen];
-memset(str, 0, strLen);
-
-r[0] = 0;
-
-if (!req->usrMsg.res_empty())
-    {
-    int len = req->usrMsg.const_data().length() * 2 + 1;
-    char * msg = new char[len];
-    memset(msg, 0, len);
-    Encode12(msg, req->usrMsg.const_data().c_str(), req->usrMsg.const_data().length());
-
-    sprintf(str, "<Message login=\"%s\" msgver=\"1\" msgtype=\"1\" repeat=\"0\" repeatperiod=\"0\" showtime=\"0\" text=\"%s\"/>", req->login.const_data().c_str(), msg);
-    //sprintf(str, "<message login=\"%s\" priority=\"0\" text=\"%s\"/>\n", req->login, msg);
-    strcat(r, str);
-
-    delete[] msg;
-    return;
-    }
-
-if (req->deleteUser)
-    {
-    sprintf(str, "<DelUser login=\"%s\"/>", req->login.const_data().c_str());
-    strcat(r, str);
-    //printf("%s\n", r);
-    return;
-    }
-
-if (req->createUser)
-    {
-    sprintf(str, "<AddUser> <login value=\"%s\"/> </AddUser>", req->login.const_data().c_str());
-    strcat(r, str);
-    //printf("%s\n", r);
-    return;
-    }
-
-strcat(r, "<SetUser>\n");
-sprintf(str, "<login value=\"%s\"/>\n", req->login.const_data().c_str());
-strcat(r, str);
-if (!req->credit.res_empty())
-    {
-    sprintf(str, "<credit value=\"%f\"/>\n", req->credit.const_data());
-    strcat(r, str);
-    }
-
-if (!req->prepaidTraff.res_empty())
-    {
-    sprintf(str, "<FreeMb value=\"%f\"/>\n", req->prepaidTraff.const_data());
-    strcat(r, str);
-    }
-
-if (!req->cash.res_empty())
-    {
-    int len = req->message.length() * 2 + 1;
-    char * msg = new char[len];
-    memset(msg, 0, len);
-
-    Encode12(msg, req->message.c_str(), req->message.length());
-    sprintf(str, "<cash add=\"%f\" msg=\"%s\"/>\n", req->cash.const_data(), msg);
-    strcat(r, str);
-    delete[] msg;
-    }
-
-if (!req->setCash.res_empty())
-    {
-    int len = req->message.length() * 2 + 1;
-    char * msg = new char[len];
-    memset(msg, 0, len);
-    Encode12(msg, req->message.c_str(), req->message.length());
-    sprintf(str, "<cash set=\"%f\" msg=\"%s\"/>\n", req->setCash.const_data(), msg);
-    strcat(r, str);
-    delete[] msg;
-    }
-
-if (!req->usrPasswd.res_empty())
-    {
-    sprintf(str, "<password value=\"%s\" />\n", req->usrPasswd.const_data().c_str());
-    strcat(r, str);
-    }
-
-if (!req->down.res_empty())
-    {
-    sprintf(str, "<down value=\"%d\" />\n", req->down.const_data());
-    strcat(r, str);
-    }
-
-if (!req->passive.res_empty())
-    {
-    sprintf(str, "<passive value=\"%d\" />\n", req->passive.const_data());
-    strcat(r, str);
-    }
-
-int uPresent = false;
-int dPresent = false;
-for (int i = 0; i < DIR_NUM; i++)
-    {
-    if (!req->u[i].res_empty())
-        {
-        if (!uPresent && !dPresent)
-            {
-            sprintf(str, "<traff ");
-            strcat(r, str);
-            uPresent = true;
-            }
-
-        stringstream ss;
-        ss << req->u[i].const_data();
-        //sprintf(str, "MU%d=\"%lld\" ", i, req->u[i].const_data());
-        sprintf(str, "MU%d=\"%s\" ", i, ss.str().c_str());
-        strcat(r, str);
-        }
-    if (!req->d[i].res_empty())
-        {
-        if (!uPresent && !dPresent)
-            {
-            sprintf(str, "<traff ");
-            strcat(r, str);
-            dPresent = true;
-            }
-
-        stringstream ss;
-        ss << req->d[i].const_data();
-        sprintf(str, "MD%d=\"%s\" ", i, ss.str().c_str());
-        strcat(r, str);
-        }
-    }
-if (uPresent || dPresent)
-    {
-    strcat(r, "/>");
-    }
-
-//printf("%s\n", r);
-
-if (!req->tariff.res_empty())
-    {
-    switch (req->chgTariff)
-        {
-        case TARIFF_NOW:
-            sprintf(str, "<tariff now=\"%s\"/>\n", req->tariff.const_data().c_str());
-            strcat(r, str);
-            break;
-        case TARIFF_REC:
-            sprintf(str, "<tariff recalc=\"%s\"/>\n", req->tariff.const_data().c_str());
-            strcat(r, str);
-            break;
-        case TARIFF_DEL:
-            sprintf(str, "<tariff delayed=\"%s\"/>\n", req->tariff.const_data().c_str());
-            strcat(r, str);
-            break;
-        }
-
-    }
-
-if (!req->note.res_empty())
-    {
-    int len = req->note.const_data().length() * 2 + 1;
-    char * note = new char[len];
-    memset(note, 0, len);
-
-    Encode12(note, req->note.const_data().c_str(), req->note.const_data().length());
-
-    sprintf(str, "<note value=\"%s\"/>", note);
-    strcat(r, str);
-    delete[] note;
-    }
-
-if (!req->name.res_empty())
-    {
-    int len = req->note.const_data().length() * 2 + 1;
-    char * name = new char[len];
-    memset(name, 0, len);
-
-    Encode12(name, req->name.const_data().c_str(), req->name.const_data().length());
-
-    sprintf(str, "<name value=\"%s\"/>", name);
-    strcat(r, str);
-    delete[] name;
-    }
-
-if (!req->address.res_empty())
-    {
-    int len = req->note.const_data().length() * 2 + 1;
-    char * address = new char[len];
-    memset(address, 0, len);
-
-    Encode12(address, req->address.const_data().c_str(), req->address.const_data().length());
-
-    sprintf(str, "<address value=\"%s\"/>", address);
-    strcat(r, str);
-    delete[] address;
-    }
-
-if (!req->email.res_empty())
-    {
-    int len = req->note.const_data().length() * 2 + 1;
-    char * email = new char[len];
-    memset(email, 0, len);
-
-    Encode12(email, req->email.const_data().c_str(), req->email.const_data().length());
-
-    sprintf(str, "<email value=\"%s\"/>", email);
-    strcat(r, str);
-    delete[] email;
-    }
-
-if (!req->phone.res_empty())
-    {
-    int len = req->note.const_data().length() * 2 + 1;
-    char * phone = new char[len];
-    memset(phone, 0, len);
-
-    Encode12(phone, req->phone.const_data().c_str(), req->phone.const_data().length());
-
-    sprintf(str, "<phone value=\"%s\"/>", phone);
-    strcat(r, str);
-    delete[] phone;
-    }
-
-if (!req->group.res_empty())
-    {
-    int len = req->note.const_data().length() * 2 + 1;
-    char * group = new char[len];
-    memset(group, 0, len);
-
-    Encode12(group, req->group.const_data().c_str(), req->group.const_data().length());
-
-    sprintf(str, "<group value=\"%s\"/>", group);
-    strcat(r, str);
-    delete[] group;
-    }
-
-for (int i = 0; i < USERDATA_NUM; i++)
-    {
-    if (!req->ud[i].res_empty())
-        {
-        int len = req->ud[i].const_data().length() * 2 + 1;
-        char * ud = new char[len];
-        memset(ud, 0, len);
-
-        Encode12(ud, req->ud[i].const_data().c_str(), req->ud[i].const_data().length());
-
-        sprintf(str, "<userdata%d value=\"%s\"/>", i, ud);
-        strcat(r, str);
-        delete[] ud;
-        }
-    }
-
-strcat(r, "</SetUser>\n");
-}
-//-----------------------------------------------------------------------------
-int CheckParameters(REQUEST * req)
-{
-int u = false;
-int d = false;
-int ud = false;
-int a = !req->admLogin.res_empty()
-    && !req->admPasswd.res_empty()
-    && !req->server.res_empty()
-    && !req->port.res_empty()
-    && !req->login.res_empty();
-
-int b = !req->cash.res_empty()
-    || !req->setCash.res_empty()
-    || !req->credit.res_empty()
-    || !req->prepaidTraff.res_empty()
-    || !req->tariff.res_empty()
-    || !req->usrMsg.res_empty()
-    || !req->usrPasswd.res_empty()
-
-    || !req->note.res_empty()
-    || !req->name.res_empty()
-    || !req->address.res_empty()
-    || !req->email.res_empty()
-    || !req->phone.res_empty()
-    || !req->group.res_empty();
-
-for (int i = 0; i < DIR_NUM; i++)
-    {
-    if (req->u[i].res_empty())
-        {
-        u = true;
-        break;
-        }
-    }
-
-for (int i = 0; i < DIR_NUM; i++)
-    {
-    if (req->d[i].res_empty())
-        {
-        d = true;
-        break;
-        }
-    }
-
-for (int i = 0; i < DIR_NUM; i++)
-    {
-    if (req->ud[i].res_empty())
-        {
-        ud = true;
-        break;
-        }
-    }
-
-
-//printf("a=%d, b=%d, u=%d, d=%d ud=%d\n", a, b, u, d, ud);
-return a && (b || u || d || ud);
-}
-//-----------------------------------------------------------------------------
-int CheckParametersGet(REQUEST * req)
-{
-return CheckParameters(req);
-}
-//-----------------------------------------------------------------------------
-int CheckParametersSet(REQUEST * req)
-{
-return CheckParameters(req);
-}
-//-----------------------------------------------------------------------------
-int mainGet(int argc, char **argv)
-{
-int c;
-REQUEST req;
-RESETABLE<string>   t1;
-
-char * short_options_get = "s:p:a:w:u:crtmodieNADLPG";
-int option_index = -1;
-
-while (1)
-    {
-    option_index = -1;
-    c = getopt_long(argc, argv, short_options_get, long_options_get, &option_index);
-    if (c == -1)
-        break;
-
-    switch (c)
-        {
-        case 's': //server
-            req.server = optarg;
-            break;
-
-        case 'p': //port
-            req.port = ParseServerPort(optarg);
-            //req.portReq = 1;
-            break;
-
-        case 'a': //admin
-            req.admLogin = ParseAdminLogin(optarg);
-            break;
-
-        case 'w': //admin password
-            req.admPasswd = ParsePassword(optarg);
-            break;
-
-        case 'o': //change user password
-            req.usrPasswd = ParsePassword(optarg);
-            break;
-
-        case 'u': //user
-            req.login = ParseUser(optarg);
-            break;
-
-        case 'c': //get cash
-            req.cash = 1;
-            break;
-
-        case 'r': //credit
-            req.credit = 1;
-            break;
-
-        case 'd': //down
-            req.down = 1;
-            break;
-
-        case 'i': //passive
-            req.passive = 1;
-            break;
-
-        case 't': //tariff
-            req.tariff = " ";
-            break;
-
-        case 'e': //Prepaid Traffic
-            req.prepaidTraff = 1;
-            break;
-
-        case 'N': //Note
-            req.note = " ";
-            break;
-
-        case 'A': //nAme
-            req.name = " ";
-            break;
-
-        case 'D': //aDdress
-            req.address =" ";
-            break;
-
-        case 'L': //emaiL
-            req.email = " ";
-            break;
-
-        case 'P': //phone
-            req.phone = " ";
-            break;
-
-        case 'G': //Group
-            req.group = " ";
-            break;
-
-        case 500: //U
-        case 501:
-        case 502:
-        case 503:
-        case 504:
-        case 505:
-        case 506:
-        case 507:
-        case 508:
-        case 509:
-            //printf("U%d\n", c - 500);
-            req.u[c - 500] = 1;
-            break;
-
-        case 600: //D
-        case 601:
-        case 602:
-        case 603:
-        case 604:
-        case 605:
-        case 606:
-        case 607:
-        case 608:
-        case 609:
-            //printf("D%d\n", c - 600);
-            req.d[c - 600] = 1;
-            break;
-
-        case 700: //UserData
-        case 701:
-        case 702:
-        case 703:
-        case 704:
-        case 705:
-        case 706:
-        case 707:
-        case 708:
-        case 709:
-            //printf("UD%d\n", c - 700);
-            req.ud[c - 700] = " ";
-            break;
-
-        case '?':
-            //printf ("Unknown option \n");
-            break;
-
-        default:
-            printf ("?? getopt returned character code 0%o ??\n", c);
-        }
-    }
-
-if (optind < argc)
-    {
-    printf ("non-option ARGV-elements: ");
-    while (optind < argc)
-        printf ("%s ", argv[optind++]);
-    UsageInfo();
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-if (CheckParametersGet(&req) == 0)
-    {
-    //printf("Parameter needed\n");
-    UsageInfo();
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-
-const int rLen = 20000;
-char rstr[rLen];
-memset(rstr, 0, rLen);
-
-CreateRequestGet(&req, rstr);
-Process(req.server, req.port, req.admLogin, req.admPasswd, rstr, ParseReplyGet);
-
-return 0;
-}
-//-----------------------------------------------------------------------------
-int mainSet(int argc, char **argv)
-{
-string str;
-
-int c;
-REQUEST req;
-
-RESETABLE<string>   t1;
-
-char * short_options_set = "s:p:a:w:u:c:r:t:m:o:d:i:e:v:nlN:A:D:L:P:G:";
-
-while (1)
-    {
-    int option_index = -1;
-
-    c = getopt_long(argc, argv, short_options_set, long_options_set, &option_index);
-    if (c == -1)
-        break;
-
-    switch (c)
-        {
-        case 's': //server
-            req.server = optarg;
-            break;
-
-        case 'p': //port
-            req.port = ParseServerPort(optarg);
-            //req.portReq = 1;
-            break;
-
-        case 'a': //admin
-            req.admLogin = ParseAdminLogin(optarg);
-            break;
-
-        case 'w': //admin password
-            req.admPasswd = ParsePassword(optarg);
-            break;
-
-        case 'o': //change user password
-            req.usrPasswd = ParsePassword(optarg);
-            break;
-
-        case 'u': //user
-            req.login = ParseUser(optarg);
-            break;
-
-        case 'c': //add cash
-            req.cash = ParseCash(optarg, &req.message);
-            break;
-
-        case 'v': //set cash
-            req.setCash = ParseCash(optarg, &req.message);
-            break;
-
-        case 'r': //credit
-            req.credit = ParseCredit(optarg);
-            break;
-
-        case 'd': //down
-            req.down = ParseDownPassive(optarg);
-            break;
-
-        case 'i': //passive
-            req.passive = ParseDownPassive(optarg);
-            break;
-
-        case 't': //tariff
-            req.tariff = ParseTariff(optarg, req.chgTariff);
-            break;
-
-        case 'm': //message
-            //ParseMessage(optarg, &req.usrMsg);
-            req.usrMsg = optarg;
-            break;
-
-        case 'e': //Prepaid Traffic
-            req.prepaidTraff = ParsePrepaidTraffic(optarg);
-            break;
-
-        case 'n': //Create User
-            req.createUser = true;
-            break;
-
-        case 'l': //Delete User
-            req.deleteUser = true;
-            break;
-
-        case 'N': //Note
-            ParseAnyString(optarg, &str);
-            req.note = str;
-            break;
-
-        case 'A': //nAme
-            ParseAnyString(optarg, &str);
-            req.name = str;
-            break;
-
-        case 'D': //aDdress
-            ParseAnyString(optarg, &str);
-            req.address = str;
-            break;
-
-        case 'L': //emaiL
-            ParseAnyString(optarg, &str);
-            req.email = str;
-            break;
-
-        case 'P': //phone
-            ParseAnyString(optarg, &str);
-            req.phone = str;
-            break;
-
-        case 'G': //Group
-            ParseAnyString(optarg, &str);
-            req.group = str;
-            break;
-
-        case 500: //U
-        case 501:
-        case 502:
-        case 503:
-        case 504:
-        case 505:
-        case 506:
-        case 507:
-        case 508:
-        case 509:
-            //printf("U%d\n", c - 500);
-            req.u[c - 500] = ParseTraff(optarg);
-            break;
-
-        case 600: //D
-        case 601:
-        case 602:
-        case 603:
-        case 604:
-        case 605:
-        case 606:
-        case 607:
-        case 608:
-        case 609:
-            //printf("D%d\n", c - 600);
-            req.d[c - 600] = ParseTraff(optarg);
-            break;
-
-        case 700: //UserData
-        case 701:
-        case 702:
-        case 703:
-        case 704:
-        case 705:
-        case 706:
-        case 707:
-        case 708:
-        case 709:
-            ParseAnyString(optarg, &str);
-            //printf("UD%d\n", c - 700);
-            req.ud[c - 700] = str;
-            break;
-
-        case '?':
-            //printf ("Unknown option \n");
-            break;
-
-        default:
-            printf ("?? getopt returned character code 0%o ??\n", c);
-        }
-    }
-
-if (optind < argc)
-    {
-    printf ("non-option ARGV-elements: ");
-    while (optind < argc)
-        printf ("%s ", argv[optind++]);
-    UsageConf();
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-if (CheckParametersSet(&req) == 0)
-    {
-    //printf("Parameter needed\n");
-    UsageConf();
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-const int rLen = 20000;
-char rstr[rLen];
-memset(rstr, 0, rLen);
-
-CreateRequestGet(&req, rstr);
-Process(req.server, req.port, req.admLogin, req.admPasswd, rstr, ParseReplySet);
-//Process(&req);
-
-return 0;
-}
-//-----------------------------------------------------------------------------
-int main(int argc, char **argv)
-{
-if (argc <= 2)
-    {
-    UsageConf();
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-
-if (strcmp(argv[1], "get"))
-    {
-    return mainGet(argc - 1, argv + 1);
-    }
-else if (strcmp(argv[1], "set"))
-    {
-    return mainGet(argc - 1, argv + 1);
-    }
-else
-    {
-    UsageConf();
-    exit(PARAMETER_PARSING_ERR_CODE);
-    }
-return UNKNOWN_ERR_CODE;
-}
-//-----------------------------------------------------------------------------
-
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 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 2e92603ea3a201c5ab87c405bbc8637e40d77268..d98d7929922bc2ac02a3372757c50e753622e92f 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 519074b131707887647048d61e5b96fac8b8a657..47999efc5e0ad63ef403f1b71f5f30d94216c341 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 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