//-----------------------------------------------------------------------------
struct PARAM_VALUE
{
- PARAM_VALUE()
- : param(),
- value()
- {}
bool operator==(const PARAM_VALUE & rhs) const
{ return !strcasecmp(param.c_str(), rhs.param.c_str()); }
//-----------------------------------------------------------------------------
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()); }
#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;
};
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;
};
//-------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-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
bool USER_IPS::IsIPInIPS(uint32_t ip) const
{
if (ips.empty())
- {
return false;
- }
if (ips.front().ip == 0)
return true;
}
//-----------------------------------------------------------------------------
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;
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);
}
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++)
$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>
#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[] = {
//-----------------------------------------------------------------------------
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");
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;
case 'p': //port
req.port = ParseServerPort(optarg);
- //req.portReq = 1;
break;
case 'a': //admin
break;
case '?':
- //printf ("Unknown option \n");
break;
default:
if (CheckParameters(&req) == 0)
{
- //printf("Parameter needed\n");
Usage();
exit(PARAMETER_PARSING_ERR_CODE);
}
+#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;
//---------------------------------------------------------------------------
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
printf ("<%s>%s</%s>\n", el, attr[1], el);
return;
}
-// }
parse_depth++;
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;
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;
//-----------------------------------------------------------------------------
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)
{
}
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;
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;
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)
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)
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();
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();
-#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
{
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-// ëÌÁÓÓ ÄÌÑ ÐÏÉÓËÁ ÀÚÅÒÁ × ÓÐÉÓËÅ ÎÏÔÉÆÉËÁÔÏÒÏ×
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;
ping->isRunning = true;
long delay = (10000000 * ping->pingSettings.GetPingDelay()) / 3 + 50000000;
-
+
while (ping->nonstop)
{
std::list<USER_PTR>::iterator iter = ping->usersList.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;
{
uint32_t ip = u->GetCurrIP();
if (ip)
- {
pinger.AddIP(ip);
- }
}
}
{
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)
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;
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;
//-----------------------------------------------------------------------------
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; }
#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> {
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();
}
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);
$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)
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,
class TARIFF_IMPL : public TARIFF {
public:
- TARIFF_IMPL()
- : TARIFF(),
- tariffData()
- {}
explicit TARIFF_IMPL(const std::string & name)
: TARIFF(),
tariffData(name)
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;
//-----------------------------------------------------------------------------
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)
{
USER_IMPL * u;
while (users->SearchNext(h, &u) == 0)
- {
SetUserNotifiers(u);
- }
users->CloseSearch(h);
running = true;
USER_IMPL * u;
while (users->SearchNext(h, &u) == 0)
- {
UnSetUserNotifiers(u);
- }
users->CloseSearch(h);
//5 seconds to thread stops itself
{
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");
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");
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)
{
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
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;
{
password = "*_EMPTY_PASSWORD_*";
tariffName = NO_TARIFF_NAME;
+tariff = tariffs->FindByName(tariffName);
ips = StrToIPS("*");
lastWriteStat = stgTime + random() % settings->GetStatWritePeriod();
lastWriteDetailedStat = stgTime;
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;
+#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