virtual const std::string & GetPassword() const = 0;
virtual const std::string & GetLogin() const = 0;
virtual PRIV const * GetPriv() const = 0;
- virtual uint16_t GetPrivAsInt() const = 0;
+ virtual uint32_t GetPrivAsInt() const = 0;
virtual const ADMIN_CONF & GetConf() const = 0;
virtual uint32_t GetIP() const = 0;
virtual std::string GetIPStr() const = 0;
class PROPERTY_NOTIFIER_BASE
{
public:
- virtual ~PROPERTY_NOTIFIER_BASE(){};
+ virtual ~PROPERTY_NOTIFIER_BASE(){}
virtual void Notify(const varParamType & oldValue, const varParamType & newValue) = 0;
};
//-----------------------------------------------------------------------------
class NOTIFIER_BASE
{
public:
- virtual ~NOTIFIER_BASE(){};
+ virtual ~NOTIFIER_BASE(){}
virtual void Notify(const varParamType & value) = 0;
};
//-----------------------------------------------------------------------------
virtual int Reload() = 0;
virtual bool IsRunning() = 0;
virtual const std::string & GetStrError() const = 0;
- virtual const std::string GetVersion() const = 0;
+ virtual std::string GetVersion() const = 0;
virtual uint16_t GetStartPosition() const = 0;
virtual uint16_t GetStopPosition() const = 0;
};
memset(rawPacket.pckt, 0, pcktSize);
}
- RAW_PACKET(const RAW_PACKET & rp)
- : rawPacket(),
- dataLen(rp.dataLen)
- {
- memcpy(rawPacket.pckt, rp.rawPacket.pckt, pcktSize);
- }
-
uint16_t GetIPVersion() const;
uint8_t GetHeaderLen() const;
uint8_t GetProto() const;
uint16_t GetDstPort() const;
bool operator==(const RAW_PACKET & rvalue) const;
-bool operator!=(const RAW_PACKET & rvalue) const { return !(*this == rvalue); };
+bool operator!=(const RAW_PACKET & rvalue) const { return !(*this == rvalue); }
bool operator<(const RAW_PACKET & rvalue) const;
union
// Only for packets without options field
uint16_t sPort;
uint16_t dPort;
- } header __attribute__ ((packed));
+ } header;
} rawPacket;
int32_t dataLen; // IP packet length. Set to -1 to use length field from the header
};
{
if (rawPacket.header.ipHeader.ip_p == 1) // for icmp proto return port 0
return 0;
-return ntohs(*((uint16_t*)(rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4)));
+const uint8_t * pos = rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4;
+return ntohs(*reinterpret_cast<const uint16_t *>(pos));
}
//-----------------------------------------------------------------------------
inline uint16_t RAW_PACKET::GetDstPort() const
{
if (rawPacket.header.ipHeader.ip_p == 1) // for icmp proto return port 0
return 0;
-return ntohs(*((uint16_t*)(rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4 + 2)));
+const uint8_t * pos = rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4 + 2;
+return ntohs(*reinterpret_cast<const uint16_t *>(pos));
}
//-----------------------------------------------------------------------------
inline bool RAW_PACKET::operator==(const RAW_PACKET & rvalue) const
if (rawPacket.header.ipHeader.ip_p != 1 && rvalue.rawPacket.header.ipHeader.ip_p != 1)
{
- if (*((uint16_t *)(rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4)) !=
- *((uint16_t *)(rvalue.rawPacket.pckt + rvalue.rawPacket.header.ipHeader.ip_hl * 4)))
+ const uint8_t * pos = rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4;
+ const uint8_t * rpos = rvalue.rawPacket.pckt + rvalue.rawPacket.header.ipHeader.ip_hl * 4;
+ if (*reinterpret_cast<const uint16_t *>(pos) != *reinterpret_cast<const uint16_t *>(rpos))
return false;
- if (*((uint16_t *)(rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4 + 2)) !=
- *((uint16_t *)(rvalue.rawPacket.pckt + rvalue.rawPacket.header.ipHeader.ip_hl * 4 + 2)))
+ pos += 2;
+ rpos += 2;
+ if (*reinterpret_cast<const uint16_t *>(pos) != *reinterpret_cast<const uint16_t *>(rpos))
return false;
}
if (rawPacket.header.ipHeader.ip_p != 1 && rvalue.rawPacket.header.ipHeader.ip_p != 1)
{
- if (*((uint16_t *)(rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4)) <
- *((uint16_t *)(rvalue.rawPacket.pckt + rvalue.rawPacket.header.ipHeader.ip_hl * 4)))
+ const uint8_t * pos = rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4;
+ const uint8_t * rpos = rvalue.rawPacket.pckt + rvalue.rawPacket.header.ipHeader.ip_hl * 4;
+ if (*reinterpret_cast<const uint16_t *>(pos) < *reinterpret_cast<const uint16_t *>(rpos))
return true;
- if (*((uint16_t *)(rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4)) >
- *((uint16_t *)(rvalue.rawPacket.pckt + rvalue.rawPacket.header.ipHeader.ip_hl * 4)))
+ if (*reinterpret_cast<const uint16_t *>(pos) > *reinterpret_cast<const uint16_t *>(rpos))
return false;
- if (*((uint16_t *)(rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4 + 2)) <
- *((uint16_t *)(rvalue.rawPacket.pckt + rvalue.rawPacket.header.ipHeader.ip_hl * 4 + 2)))
+ pos += 2;
+ rpos += 2;
+ if (*reinterpret_cast<const uint16_t *>(pos) < *reinterpret_cast<const uint16_t *>(rpos))
return true;
- if (*((uint16_t *)(rawPacket.pckt + rawPacket.header.ipHeader.ip_hl * 4 + 2)) >
- *((uint16_t *)(rvalue.rawPacket.pckt + rvalue.rawPacket.header.ipHeader.ip_hl * 4 + 2)))
+ if (*reinterpret_cast<const uint16_t *>(pos) > *reinterpret_cast<const uint16_t *>(rpos))
return false;
}
: name(n), comment(), cost(c), payDay(0)
{}
SERVICE_CONF(const std::string & n, double c, unsigned p)
- : name(n), comment(), cost(c), payDay(p)
+ : name(n), comment(), cost(c), payDay(static_cast<uint8_t>(p))
{}
SERVICE_CONF(const std::string & n, double c,
unsigned p, const std::string & com)
- : name(n), comment(com), cost(c), payDay(p)
+ : name(n), comment(com), cost(c), payDay(static_cast<uint8_t>(p))
{}
std::string name;
virtual int EditMessage(const STG_MSG & msg, const std::string & login) const = 0;
virtual int GetMessage(uint64_t id, STG_MSG * msg, const std::string & login) const = 0;
virtual int DelMessage(uint64_t id, const std::string & login) const = 0;
- virtual int GetMessageHdrs(vector<STG_MSG_HDR> * hdrsList, const std::string & login) const = 0;
+ virtual int GetMessageHdrs(std::vector<STG_MSG_HDR> * hdrsList, const std::string & login) const = 0;
virtual int SaveMonthStat(const USER_STAT & stat, int month, int year, const std::string & login) const = 0;
class TARIFFS {
public:
+ typedef std::list<TARIFF> Tariffs;
+
virtual ~TARIFFS() {}
virtual int ReadTariffs () = 0;
virtual const TARIFF * FindByName(const std::string & name) const = 0;
userdata(USERDATA_NUM),
creditExpire(0),
ips()
- {};
+ {}
std::string password;
int passive;
creditExpire(),
ips()
{
- };
+ }
USER_CONF_RES & operator=(const USER_CONF & uc)
{
creditExpire = uc.creditExpire;
ips = uc.ips;
return *this;
- };
+ }
operator USER_CONF() const
{
USER_CONF uc;
#include "stg/common.h"
#include "os_int.h"
-using namespace std;
-
//-------------------------------------------------------------------------
struct IP_MASK
{
//-------------------------------------------------------------------------
class USER_IPS
{
- friend std::ostream & operator<< (ostream & o, const USER_IPS & i);
+ 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 string & ipsStr) throw(string);
+ 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[](int idx) const;
+ const IP_MASK & operator[](IndexType idx) const;
std::string GetIpStr() const;
bool IsIPInIPS(uint32_t ip) const;
bool OnlyOneIP() const;
private:
uint32_t CalcMask(unsigned int msk) const;
- std::vector<IP_MASK> ips;
+ ContainerType ips;
};
//-------------------------------------------------------------------------
}
//-----------------------------------------------------------------------------
inline
-const IP_MASK & USER_IPS::operator[](int idx) const
+const IP_MASK & USER_IPS::operator[](IndexType idx) const
{
return ips[idx];
}
return "*";
}
-std::vector<IP_MASK>::const_iterator it(ips.begin());
-std::stringstream s;
+ContainerType::const_iterator it(ips.begin());
+std::ostringstream s;
s << inet_ntostring(it->ip);
++it;
for (; it != ips.end(); ++it)
inline
int USER_IPS::Count() const
{
-return ips.size();
+return static_cast<int>(ips.size());
}
//-----------------------------------------------------------------------------
inline
if (ips.front().ip == 0)
return true;
-for (std::vector<IP_MASK>::const_iterator it(ips.begin()); it != ips.end(); ++it)
+for (ContainerType::const_iterator it(ips.begin()); it != ips.end(); ++it)
{
uint32_t mask(CalcMask(it->mask));
if ((ip & mask) == (it->ip & mask))
}*/
//-----------------------------------------------------------------------------
inline
-const USER_IPS StrToIPS(const std::string & ipsStr) throw(std::string)
+const USER_IPS StrToIPS(const std::string & ipsStr)
{
USER_IPS ips;
char * paddr;
return ips;
}
-char * str = new char[ipsStr.size() + 1];
-strcpy(str, ipsStr.c_str());
-char * pstr = str;
+char * tmp = new char[ipsStr.size() + 1];
+strcpy(tmp, ipsStr.c_str());
+char * pstr = tmp;
while ((paddr = strtok(pstr, ",")))
{
pstr = NULL;
ipMask.push_back(paddr);
}
-delete[] str;
+delete[] tmp;
-for (unsigned int i = 0; i < ipMask.size(); i++)
+for (USER_IPS::IndexType i = 0; i < ipMask.size(); i++)
{
char str[128];
char * strIp;
#include "notifer.h"
#include "noncopyable.h"
-extern const volatile time_t stgTime;
+extern volatile time_t stgTime;
//-----------------------------------------------------------------------------
template<typename varT>
std::stringstream oldVal;
std::stringstream newVal;
- oldVal.flags(oldVal.flags() | ios::fixed);
- newVal.flags(newVal.flags() | ios::fixed);
+ oldVal.flags(oldVal.flags() | std::ios::fixed);
+ newVal.flags(newVal.flags() | std::ios::fixed);
oldVal << USER_PROPERTY<varT>::ConstData();
newVal << val;
//-------------------------------------------------------------------------
template<typename varT>
inline
-ostream & operator<< (ostream & stream, const USER_PROPERTY<varT> & value)
+std::ostream & operator<< (std::ostream & stream, const USER_PROPERTY<varT> & value)
{
return stream << value.ConstData();
}
lastCashAddTime(0),
passiveTime(0),
lastActivityTime(0)
- {};
+ {}
DIR_TRAFF up;
DIR_TRAFF down;
up = us.up;
down = us.down;
return * this;
- };
+ }
operator USER_STAT() const
{
USER_STAT us;
us.up = up;
us.down = down;
return us;
- };
+ }
RESETABLE<double> cash;
RESETABLE<double> freeMb;
friend std::ostream & operator<< (std::ostream & o, const DIR_TRAFF & traff);
public:
+ typedef std::vector<uint64_t> ContainerType;
+ typedef ContainerType::size_type IndexType;
+
//-------------------------------------------------------------------------
DIR_TRAFF();
DIR_TRAFF(const DIR_TRAFF & ts);
DIR_TRAFF & operator=(const DIR_TRAFF & ts);
~DIR_TRAFF();
- uint64_t operator[](int idx) const;
- uint64_t & operator[](int idx);
+ uint64_t operator[](IndexType idx) const;
+ uint64_t & operator[](IndexType idx);
DIR_TRAFF operator+(const DIR_TRAFF & ts);
private:
- std::vector<uint64_t> traff;
+ ContainerType traff;
};
//-----------------------------------------------------------------------------
return *this;
}
//-----------------------------------------------------------------------------
-inline uint64_t & DIR_TRAFF::operator[](int idx)
+inline uint64_t & DIR_TRAFF::operator[](IndexType idx)
{
return traff[idx];
}
//-----------------------------------------------------------------------------
-inline uint64_t DIR_TRAFF::operator[](int idx) const
+inline uint64_t DIR_TRAFF::operator[](IndexType idx) const
{
return traff[idx];
}
//-----------------------------------------------------------------------------
inline DIR_TRAFF DIR_TRAFF::operator+(const DIR_TRAFF & ts)
{
-for (int i = 0; i < DIR_NUM; i++)
+for (IndexType i = 0; i < DIR_NUM; i++)
{
traff[i] = traff[i] + ts.traff[i];
}
inline std::ostream & operator<<(std::ostream & o, const DIR_TRAFF & traff)
{
bool first = true;
-for (size_t i = 0; i < DIR_NUM; ++i)
+for (DIR_TRAFF::IndexType i = 0; i < DIR_NUM; ++i)
{
if (first)
first = false;
#include "iface.h"
-#include "loki/Singleton.h"
-
#include "thriftclient.h"
int stgInstantiateImpl(const char * server, uint16_t port, const char * password)
ACTION(ACTIVE_CLASS & ac,
typename ACTOR<ACTIVE_CLASS, DATA_TYPE>::TYPE a,
DATA_TYPE d)
- : activeClass(ac), actor(a), data(d) {};
+ : activeClass(ac), actor(a), data(d) {}
void Invoke();
private:
ACTION(const ACTION<ACTIVE_CLASS, DATA_TYPE> & rvalue);
ADMIN_IMPL();
ADMIN_IMPL(const ADMIN_CONF & ac);
ADMIN_IMPL(const PRIV & priv,
- const std::string & login,
- const std::string & password);
- virtual ~ADMIN_IMPL() {};
+ const std::string & login,
+ 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;
- const std::string & GetPassword() const { return conf.password; };
- const std::string & GetLogin() const { return conf.login; };
- PRIV const * GetPriv() const { return &conf.priv; };
- uint16_t GetPrivAsInt() const { return conf.priv.ToInt(); };
- const ADMIN_CONF & GetConf() const { return conf; };
+ const std::string & GetPassword() const { return conf.password; }
+ const std::string & GetLogin() const { return conf.login; }
+ PRIV const * GetPriv() const { return &conf.priv; }
+ uint32_t GetPrivAsInt() const { return conf.priv.ToInt(); }
+ const ADMIN_CONF & GetConf() const { return conf; }
void Print() const;
- uint32_t GetIP() const { return ip; };
+ uint32_t GetIP() const { return ip; }
std::string GetIPStr() const;
- void SetIP(uint32_t ip) { ADMIN_IMPL::ip = ip; };
+ void SetIP(uint32_t v) { ip = v; }
const std::string GetLogStr() const;
private:
ADMINS_IMPL(const ADMINS_IMPL & rvalue);
ADMINS_IMPL & operator=(const ADMINS_IMPL & rvalue);
- typedef list<ADMIN_IMPL>::iterator admin_iter;
- typedef list<ADMIN_IMPL>::const_iterator const_admin_iter;
+ typedef std::list<ADMIN_IMPL>::iterator admin_iter;
+ typedef std::list<ADMIN_IMPL>::const_iterator const_admin_iter;
int Read();
if (!priv->corpChg)
{
- string s = admin->GetLogStr() + " Add corporation \'" + corp.name + "\'. Access denied.";
+ std::string s = admin->GetLogStr() + " Add corporation \'" + corp.name + "\'. Access denied.";
strError = "Access denied.";
WriteServLog(s.c_str());
return -1;
return -1;
}
//-----------------------------------------------------------------------------
-int CORPORATIONS_IMPL::Del(const string & name, const ADMIN * admin)
+int CORPORATIONS_IMPL::Del(const std::string & name, const ADMIN * admin)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
const PRIV * priv = admin->GetPriv();
if (!priv->corpChg)
{
- string s = admin->GetLogStr() + " Delete corporation \'" + name + "\'. Access denied.";
+ std::string s = admin->GetLogStr() + " Delete corporation \'" + name + "\'. Access denied.";
strError = "Access denied.";
WriteServLog(s.c_str());
return -1;
return -1;
}
-map<int, const_crp_iter>::iterator csi;
+std::map<int, const_crp_iter>::iterator csi;
csi = searchDescriptors.begin();
while (csi != searchDescriptors.end())
{
if (!priv->corpChg)
{
- string s = admin->GetLogStr() + " Change corporation \'" + corp.name + "\'. Access denied.";
+ std::string s = admin->GetLogStr() + " Change corporation \'" + corp.name + "\'. Access denied.";
strError = "Access denied.";
WriteServLog(s.c_str());
return -1;
bool CORPORATIONS_IMPL::Read()
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-vector<string> corpsList;
+std::vector<std::string> corpsList;
if (store->GetCorpsList(&corpsList) < 0)
{
WriteServLog(store->GetStrError().c_str());
return false;
}
//-----------------------------------------------------------------------------
-bool CORPORATIONS_IMPL::Find(const string & name, CORP_CONF * corp)
+bool CORPORATIONS_IMPL::Find(const std::string & name, CORP_CONF * corp)
{
assert(corp != NULL && "Pointer to corporation is not null");
return true;
}
//-----------------------------------------------------------------------------
-bool CORPORATIONS_IMPL::Exists(const string & name) const
+bool CORPORATIONS_IMPL::Exists(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
if (data.empty())
CORPORATIONS_IMPL(const CORPORATIONS_IMPL & rvalue);
CORPORATIONS_IMPL & operator=(const CORPORATIONS_IMPL & rvalue);
- typedef list<CORP_CONF>::iterator crp_iter;
- typedef list<CORP_CONF>::const_iterator const_crp_iter;
+ typedef std::list<CORP_CONF>::iterator crp_iter;
+ typedef std::list<CORP_CONF>::const_iterator const_crp_iter;
bool Read();
public:
bool Start();
bool Stop();
- bool IsRunning() const { return _running; };
+ bool IsRunning() const { return _running; }
template <class ACTIVE_CLASS, typename DATA_TYPE>
void Enqueue(ACTIVE_CLASS & ac,
static EVENT_LOOP * _instance;
static void CreateInstance();
- EVENT_LOOP_SINGLETON() {};
- ~EVENT_LOOP_SINGLETON() {};
+ EVENT_LOOP_SINGLETON() {}
+ ~EVENT_LOOP_SINGLETON() {}
};
template <class ACTIVE_CLASS, typename DATA_TYPE>
#include "pidfile.h"
#include "eventloop.h"
-using namespace std;
-
#ifdef DEBUG
#define MAIN_DEBUG (1)
#define NO_DAEMON (1)
#define START_FILE "/._ST_ART_ED_"
-set<pid_t> executersPid;
+namespace
+{
+std::set<pid_t> executersPid;
+
+bool StartModCmp(const PLUGIN_RUNNER & lhs, const PLUGIN_RUNNER & rhs);
+bool StopModCmp(const PLUGIN_RUNNER & lhs, const PLUGIN_RUNNER & rhs);
+void StartTimer();
+int StartScriptExecuter(char * procName, int msgKey, int * msgID, SETTINGS_IMPL * settings);
+int ForkAndWait(const std::string & confDir);
+void KillExecuters();
//-----------------------------------------------------------------------------
bool StartModCmp(const PLUGIN_RUNNER & lhs, const PLUGIN_RUNNER & rhs)
return lhs.GetStopPosition() > rhs.GetStopPosition();
}
//-----------------------------------------------------------------------------
-static void StartTimer()
+void StartTimer()
{
STG_LOGGER & WriteServLog = GetStgLogger();
}
//-----------------------------------------------------------------------------
#ifndef NO_DAEMON
-int ForkAndWait(const string & confDir)
+int ForkAndWait(const std::string & confDir)
#else
-int ForkAndWait(const string &)
+int ForkAndWait(const std::string &)
#endif
{
#ifndef NO_DAEMON
pid_t childPid = fork();
-string startFile = confDir + START_FILE;
+std::string startFile = confDir + START_FILE;
unlink(startFile.c_str());
switch (childPid)
//-----------------------------------------------------------------------------
void KillExecuters()
{
-set<pid_t>::iterator pid;
+std::set<pid_t>::iterator pid;
pid = executersPid.begin();
while (pid != executersPid.end())
{
}
}
//-----------------------------------------------------------------------------
+} // namespace anonymous
+//-----------------------------------------------------------------------------
int main(int argc, char * argv[])
{
SETTINGS_IMPL * settings = NULL;
WriteServLog.SetLogFileName("/var/log/stargazer.log");
}
-vector<MODULE_SETTINGS> modSettings;
-list<PLUGIN_RUNNER> modules;
+std::vector<MODULE_SETTINGS> modSettings;
+std::list<PLUGIN_RUNNER> modules;
-list<PLUGIN_RUNNER>::iterator modIter;
+std::list<PLUGIN_RUNNER>::iterator modIter;
if (getuid())
{
}
#ifndef NO_DAEMON
-string startFile(settings->GetConfDir() + START_FILE);
+std::string startFile(settings->GetConfDir() + START_FILE);
#endif
if (ForkAndWait(settings->GetConfDir()) < 0)
for (size_t i = 0; i < modSettings.size(); i++)
{
- string modulePath = settings->GetModulesPath();
+ std::string modulePath = settings->GetModulesPath();
modulePath += "/mod_";
modulePath += modSettings[i].moduleName;
modulePath += ".so";
++modIter;
}
-srandom(stgTime);
+srandom(static_cast<unsigned int>(stgTime));
WriteServLog("Stg started successfully.");
WriteServLog("+++++++++++++++++++++++++++++++++++++++++++++");
bool stop = false;
int status;
pid_t childPid;
- set<pid_t>::iterator it;
+ std::set<pid_t>::iterator it;
switch (sig)
{
case SIGHUP:
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-PLUGIN_CREATOR<AUTH_AO> aoc;
+static PLUGIN_CREATOR<AUTH_AO> aoc;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
template <typename varType>
-class IS_CONTAINS_USER: public binary_function<varType, USER_PTR, bool>
+class IS_CONTAINS_USER: public std::binary_function<varType, USER_PTR, bool>
{
public:
bool operator()(varType notifier, USER_PTR user) const
{
return notifier.GetUser() == user;
- };
+ }
};
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-const string AUTH_AO::GetVersion() const
+std::string AUTH_AO::GetVersion() const
{
return "Always Online authorizator v.1.0";
}
users->DelNotifierUserAdd(&onAddUserNotifier);
users->DelNotifierUserDel(&onDelUserNotifier);
-list<USER_PTR>::iterator users_iter;
+std::list<USER_PTR>::iterator users_iter;
users_iter = usersList.begin();
while (users_iter != usersList.end())
{
IS_CONTAINS_USER<CHG_BEFORE_NOTIFIER<int> > IsContainsUserAOB;
IS_CONTAINS_USER<CHG_AFTER_NOTIFIER<int> > IsContainsUserAOA;
-list<CHG_BEFORE_NOTIFIER<int> >::iterator aoBIter;
-list<CHG_AFTER_NOTIFIER<int> >::iterator aoAIter;
+std::list<CHG_BEFORE_NOTIFIER<int> >::iterator aoBIter;
+std::list<CHG_AFTER_NOTIFIER<int> >::iterator aoAIter;
aoBIter = find_if(BeforeChgAONotifierList.begin(),
BeforeChgAONotifierList.end(),
IS_CONTAINS_USER<CHG_BEFORE_NOTIFIER<USER_IPS> > IsContainsUserIPB;
IS_CONTAINS_USER<CHG_AFTER_NOTIFIER<USER_IPS> > IsContainsUserIPA;
-list<CHG_BEFORE_NOTIFIER<USER_IPS> >::iterator ipBIter;
-list<CHG_AFTER_NOTIFIER<USER_IPS> >::iterator ipAIter;
+std::list<CHG_BEFORE_NOTIFIER<USER_IPS> >::iterator ipBIter;
+std::list<CHG_AFTER_NOTIFIER<USER_IPS> >::iterator ipAIter;
-ipBIter = find_if(BeforeChgIPNotifierList.begin(),
- BeforeChgIPNotifierList.end(),
- bind2nd(IsContainsUserIPB, u));
+ipBIter = std::find_if(BeforeChgIPNotifierList.begin(),
+ BeforeChgIPNotifierList.end(),
+ bind2nd(IsContainsUserIPB, u));
if (ipBIter != BeforeChgIPNotifierList.end())
{
class AUTH_AO : public AUTH {
public:
AUTH_AO();
- virtual ~AUTH_AO(){};
+ virtual ~AUTH_AO(){}
void SetUsers(USERS * u) { users = u; }
void SetSettings(const MODULE_SETTINGS &) {}
int ParseSettings() { return 0; }
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const;
+ std::string GetVersion() const;
uint16_t GetStartPosition() const { return 30; }
uint16_t GetStopPosition() const { return 30; }
bool isRunning;
MODULE_SETTINGS settings;
- list<CHG_BEFORE_NOTIFIER<int> > BeforeChgAONotifierList;
- list<CHG_AFTER_NOTIFIER<int> > AfterChgAONotifierList;
+ std::list<CHG_BEFORE_NOTIFIER<int> > BeforeChgAONotifierList;
+ std::list<CHG_AFTER_NOTIFIER<int> > AfterChgAONotifierList;
- list<CHG_BEFORE_NOTIFIER<USER_IPS> > BeforeChgIPNotifierList;
- list<CHG_AFTER_NOTIFIER<USER_IPS> > AfterChgIPNotifierList;
+ std::list<CHG_BEFORE_NOTIFIER<USER_IPS> > BeforeChgIPNotifierList;
+ std::list<CHG_AFTER_NOTIFIER<USER_IPS> > AfterChgIPNotifierList;
class ADD_USER_NONIFIER: public NOTIFIER_BASE<USER_PTR> {
public:
#include "stg/plugin_creator.h"
#include "inetaccess.h"
-extern volatile const time_t stgTime;
-
-void InitEncrypt(BLOWFISH_CTX * ctx, const string & password);
-void Decrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8);
-void Encrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8);
+extern volatile time_t stgTime;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
+namespace
+{
PLUGIN_CREATOR<AUTH_IA> iac;
+
+void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password);
+void Decrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, size_t len8);
+void Encrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, size_t len8);
+}
+
+extern "C" PLUGIN * GetPlugin();
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
{
int p;
PARAM_VALUE pv;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
///////////////////////////
pv.param = "Port";
pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
printfd(__FILE__, "Cannot parse parameter 'Port'\n");
return -1;
}
-port = p;
+port = static_cast<uint16_t>(p);
///////////////////////////
pv.param = "UserDelay";
pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
return -1;
}
/////////////////////////////////////////////////////////////
-string freeMbType;
+std::string freeMbType;
int n = 0;
pv.param = "FreeMb";
pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
if ((touchTime + MONITOR_TIME_DELAY_SEC <= stgTime) && ia->stgSettings->GetMonitoring())
{
touchTime = stgTime;
- string monFile = ia->stgSettings->GetMonitorDir() + "/inetaccess_r";
+ std::string monFile = ia->stgSettings->GetMonitorDir() + "/inetaccess_r";
TouchFile(monFile.c_str());
}
}
ia->isRunningRunTimeouter = true;
int a = -1;
-string monFile = ia->stgSettings->GetMonitorDir() + "/inetaccess_t";
+std::string monFile = ia->stgSettings->GetMonitorDir() + "/inetaccess_t";
while (ia->nonstop)
{
struct timespec ts = {0, 20000000};
}
listenAddr.sin_family = AF_INET;
-listenAddr.sin_port = htons(iaSettings.GetUserPort());
+listenAddr.sin_port = htons(static_cast<uint16_t>(iaSettings.GetUserPort()));
listenAddr.sin_addr.s_addr = inet_addr("0.0.0.0");
if (bind(listenSocket, (struct sockaddr*)&listenAddr, sizeof(listenAddr)) < 0)
struct sockaddr_in outerAddr;
socklen_t outerAddrLen(sizeof(outerAddr));
-int dataLen = recvfrom(listenSocket, buffer, bufferSize, 0, (struct sockaddr *)&outerAddr, &outerAddrLen);
+ssize_t dataLen = recvfrom(listenSocket, buffer, bufferSize, 0, (struct sockaddr *)&outerAddr, &outerAddrLen);
if (!dataLen) // EOF
{
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-map<uint32_t, IA_USER>::iterator it;
+std::map<uint32_t, IA_USER>::iterator it;
it = ip2user.begin();
uint32_t sip;
return 0;
}
//-----------------------------------------------------------------------------
-int AUTH_IA::PacketProcessor(char * buff, int dataLen, uint32_t sip, uint16_t sport, int protoVer, USER_PTR user)
+int AUTH_IA::PacketProcessor(void * buff, size_t dataLen, uint32_t sip, uint16_t sport, int protoVer, USER_PTR user)
{
std::string login(user->GetLogin());
-const int offset = LOGIN_LEN + 2 + 6; // LOGIN_LEN + sizeOfMagic + sizeOfVer;
+const size_t offset = LOGIN_LEN + 2 + 6; // LOGIN_LEN + sizeOfMagic + sizeOfVer;
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-map<uint32_t, IA_USER>::iterator it(ip2user.find(sip));
+std::map<uint32_t, IA_USER>::iterator it(ip2user.find(sip));
if (it == ip2user.end())
{
iaUser->password = user->GetProperty().password.Get();
}
-buff += offset;
-Decrypt(&iaUser->ctx, buff, buff, (dataLen - offset) / 8);
+Decrypt(&iaUser->ctx, static_cast<char *>(buff) + offset, static_cast<char *>(buff) + offset, (dataLen - offset) / 8);
char packetName[IA_MAX_TYPE_LEN];
-strncpy(packetName, buff + 4, IA_MAX_TYPE_LEN);
+strncpy(packetName, static_cast<char *>(buff) + offset + 4, IA_MAX_TYPE_LEN);
packetName[IA_MAX_TYPE_LEN - 1] = 0;
-map<string, int>::iterator pi(packetTypes.find(packetName));
+std::map<std::string, int>::iterator pi(packetTypes.find(packetName));
if (pi == packetTypes.end())
{
SendError(sip, sport, protoVer, "îÅÐÒÁ×ÉÌØÎÙÊ ÌÏÇÉÎ ÉÌÉ ÐÁÒÏÌØ!");
switch (protoVer)
{
case 6:
- if (Process_CONN_SYN_6((CONN_SYN_6 *)(buff - offset), &(it->second), sip))
+ if (Process_CONN_SYN_6(static_cast<CONN_SYN_6 *>(buff), &(it->second), sip))
return -1;
return Send_CONN_SYN_ACK_6(iaUser, sip);
case 7:
- if (Process_CONN_SYN_7((CONN_SYN_7 *)(buff - offset), &(it->second), sip))
+ if (Process_CONN_SYN_7(static_cast<CONN_SYN_7 *>(buff), &(it->second), sip))
return -1;
return Send_CONN_SYN_ACK_7(iaUser, sip);
case 8:
- if (Process_CONN_SYN_8((CONN_SYN_8 *)(buff - offset), &(it->second), sip))
+ if (Process_CONN_SYN_8(static_cast<CONN_SYN_8 *>(buff), &(it->second), sip))
return -1;
return Send_CONN_SYN_ACK_8(iaUser, sip);
}
switch (protoVer)
{
case 6:
- if (Process_CONN_ACK_6((CONN_ACK_6 *)(buff - offset), iaUser, sip))
+ if (Process_CONN_ACK_6(static_cast<CONN_ACK_6 *>(buff), iaUser, sip))
return -1;
return Send_ALIVE_SYN_6(iaUser, sip);
case 7:
- if (Process_CONN_ACK_7((CONN_ACK_6 *)(buff - offset), iaUser, sip))
+ if (Process_CONN_ACK_7(static_cast<CONN_ACK_6 *>(buff), iaUser, sip))
return -1;
return Send_ALIVE_SYN_7(iaUser, sip);
case 8:
- if (Process_CONN_ACK_8((CONN_ACK_8 *)(buff - offset), iaUser, sip))
+ if (Process_CONN_ACK_8(static_cast<CONN_ACK_8 *>(buff), iaUser, sip))
return -1;
return Send_ALIVE_SYN_8(iaUser, sip);
}
switch (protoVer)
{
case 6:
- return Process_ALIVE_ACK_6((ALIVE_ACK_6 *)(buff - offset), iaUser, sip);
+ return Process_ALIVE_ACK_6(static_cast<ALIVE_ACK_6 *>(buff), iaUser, sip);
case 7:
- return Process_ALIVE_ACK_7((ALIVE_ACK_6 *)(buff - offset), iaUser, sip);
+ return Process_ALIVE_ACK_7(static_cast<ALIVE_ACK_6 *>(buff), iaUser, sip);
case 8:
- return Process_ALIVE_ACK_8((ALIVE_ACK_8 *)(buff - offset), iaUser, sip);
+ return Process_ALIVE_ACK_8(static_cast<ALIVE_ACK_8 *>(buff), iaUser, sip);
}
break;
switch (protoVer)
{
case 6:
- if (Process_DISCONN_SYN_6((DISCONN_SYN_6 *)(buff - offset), iaUser, sip))
+ if (Process_DISCONN_SYN_6(static_cast<DISCONN_SYN_6 *>(buff), iaUser, sip))
return -1;
return Send_DISCONN_SYN_ACK_6(iaUser, sip);
case 7:
- if (Process_DISCONN_SYN_7((DISCONN_SYN_6 *)(buff - offset), iaUser, sip))
+ if (Process_DISCONN_SYN_7(static_cast<DISCONN_SYN_6 *>(buff), iaUser, sip))
return -1;
return Send_DISCONN_SYN_ACK_7(iaUser, sip);
case 8:
- if (Process_DISCONN_SYN_8((DISCONN_SYN_8 *)(buff - offset), iaUser, sip))
+ if (Process_DISCONN_SYN_8(static_cast<DISCONN_SYN_8 *>(buff), iaUser, sip))
return -1;
return Send_DISCONN_SYN_ACK_8(iaUser, sip);
}
switch (protoVer)
{
case 6:
- if (Process_DISCONN_ACK_6((DISCONN_ACK_6 *)(buff - offset), iaUser, sip, it))
+ if (Process_DISCONN_ACK_6(static_cast<DISCONN_ACK_6 *>(buff), iaUser, sip, it))
return -1;
return Send_FIN_6(iaUser, sip, it);
case 7:
- if (Process_DISCONN_ACK_7((DISCONN_ACK_6 *)(buff - offset), iaUser, sip, it))
+ if (Process_DISCONN_ACK_7(static_cast<DISCONN_ACK_6 *>(buff), iaUser, sip, it))
return -1;
return Send_FIN_7(iaUser, sip, it);
case 8:
- if (Process_DISCONN_ACK_8((DISCONN_ACK_8 *)(buff - offset), iaUser, sip, it))
+ if (Process_DISCONN_ACK_8(static_cast<DISCONN_ACK_8 *>(buff), iaUser, sip, it))
return -1;
return Send_FIN_8(iaUser, sip, it);
}
if (!ip)
return;
-map<uint32_t, IA_USER>::iterator it;
+std::map<uint32_t, IA_USER>::iterator it;
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
it = ip2user.find(ip);
}
}
//-----------------------------------------------------------------------------
-int AUTH_IA::SendError(uint32_t ip, uint16_t port, int protoVer, const string & text)
+int AUTH_IA::SendError(uint32_t ip, uint16_t port, int protoVer, const std::string & text)
{
struct sockaddr_in sendAddr;
+ssize_t res;
switch (protoVer)
{
- int res;
case 6:
case 7:
ERR err;
return 0;
}
//-----------------------------------------------------------------------------
-int AUTH_IA::Send(uint32_t ip, uint16_t port, const char * buffer, int len)
+int AUTH_IA::Send(uint32_t ip, uint16_t port, const char * buffer, size_t len)
{
struct sockaddr_in sendAddr;
sendAddr.sin_port = htons(port);
sendAddr.sin_addr.s_addr = ip;
-int res = sendto(listenSocket, buffer, len, 0, (struct sockaddr*)&sendAddr, sizeof(sendAddr));
-
-if (res == len)
+if (sendto(listenSocket, buffer, len, 0, (struct sockaddr*)&sendAddr, sizeof(sendAddr)) == static_cast<ssize_t>(len))
return 0;
return -1;
{
printfd(__FILE__, "SendMessage userIP=%s\n", inet_ntostring(ip).c_str());
-map<uint32_t, IA_USER>::iterator it;
+std::map<uint32_t, IA_USER>::iterator it;
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
it = ip2user.find(ip);
info.len = 264;
strncpy((char*)info.type, "INFO_7", 16);
-info.infoType = msg.header.type;
-info.showTime = msg.header.showTime;
+info.infoType = static_cast<int8_t>(msg.header.type);
+info.showTime = static_cast<int8_t>(msg.header.showTime);
info.sendTime = msg.header.creationTime;
size_t len = info.len;
info.len = 1056;
strncpy((char*)info.type, "INFO_8", 16);
-info.infoType = msg.header.type;
-info.showTime = msg.header.showTime;
+info.infoType = static_cast<int8_t>(msg.header.type);
+info.showTime = static_cast<int8_t>(msg.header.showTime);
info.sendTime = msg.header.creationTime;
strncpy((char*)info.text, msg.text.c_str(), IA_MAX_MSG_LEN_8 - 1);
int AUTH_IA::Process_DISCONN_ACK_6(DISCONN_ACK_6 * disconnAck,
IA_USER * iaUser,
uint32_t,
- map<uint32_t, IA_USER>::iterator)
+ std::map<uint32_t, IA_USER>::iterator)
{
#ifdef ARCH_BE
SwapBytes(disconnAck->len);
return 0;
}
//-----------------------------------------------------------------------------
-int AUTH_IA::Process_DISCONN_ACK_7(DISCONN_ACK_7 * disconnAck, IA_USER * iaUser, uint32_t sip, map<uint32_t, IA_USER>::iterator it)
+int AUTH_IA::Process_DISCONN_ACK_7(DISCONN_ACK_7 * disconnAck, IA_USER * iaUser, uint32_t sip, std::map<uint32_t, IA_USER>::iterator it)
{
return Process_DISCONN_ACK_6(disconnAck, iaUser, sip, it);
}
//-----------------------------------------------------------------------------
-int AUTH_IA::Process_DISCONN_ACK_8(DISCONN_ACK_8 * disconnAck, IA_USER * iaUser, uint32_t, map<uint32_t, IA_USER>::iterator)
+int AUTH_IA::Process_DISCONN_ACK_8(DISCONN_ACK_8 * disconnAck, IA_USER * iaUser, uint32_t, std::map<uint32_t, IA_USER>::iterator)
{
#ifdef ARCH_BE
SwapBytes(disconnAck->len);
}
//--- Fill static data in connSynAck ---
-iaUser->rnd = random();
+iaUser->rnd = static_cast<uint32_t>(random());
connSynAck6.rnd = iaUser->rnd;
connSynAck6.userTimeOut = iaSettings.GetUserTimeout();
}
//--- Fill static data in connSynAck ---
-iaUser->rnd = random();
+iaUser->rnd = static_cast<uint32_t>(random());
connSynAck8.rnd = iaUser->rnd;
connSynAck8.userTimeOut = iaSettings.GetUserTimeout();
int AUTH_IA::Send_ALIVE_SYN_6(IA_USER * iaUser, uint32_t sip)
{
aliveSyn6.len = Min8(sizeof(ALIVE_SYN_6));
-aliveSyn6.rnd = iaUser->rnd = random();
+aliveSyn6.rnd = iaUser->rnd = static_cast<uint32_t>(random());
strcpy((char*)aliveSyn6.type, "ALIVE_SYN");
aliveSyn8.hdr.protoVer[1] = 8;
aliveSyn8.len = Min8(sizeof(ALIVE_SYN_8));
-aliveSyn8.rnd = iaUser->rnd = random();
+aliveSyn8.rnd = iaUser->rnd = static_cast<uint32_t>(random());
strcpy((char*)aliveSyn8.type, "ALIVE_SYN");
{
disconnSynAck6.len = Min8(sizeof(DISCONN_SYN_ACK_6));
strcpy((char*)disconnSynAck6.type, "DISCONN_SYN_ACK");
-disconnSynAck6.rnd = iaUser->rnd = random();
+disconnSynAck6.rnd = iaUser->rnd = static_cast<uint32_t>(random());
#ifdef ARCH_BE
SwapBytes(disconnSynAck6.len);
disconnSynAck8.len = Min8(sizeof(DISCONN_SYN_ACK_8));
strcpy((char*)disconnSynAck8.type, "DISCONN_SYN_ACK");
-disconnSynAck8.rnd = iaUser->rnd = random();
+disconnSynAck8.rnd = iaUser->rnd = static_cast<uint32_t>(random());
#ifdef ARCH_BE
SwapBytes(disconnSynAck8.len);
return Send(sip, iaUser->port, (char*)&disconnSynAck8, Min8(sizeof(disconnSynAck8)));
}
//-----------------------------------------------------------------------------
-int AUTH_IA::Send_FIN_6(IA_USER * iaUser, uint32_t sip, map<uint32_t, IA_USER>::iterator it)
+int AUTH_IA::Send_FIN_6(IA_USER * iaUser, uint32_t sip, std::map<uint32_t, IA_USER>::iterator it)
{
fin6.len = Min8(sizeof(FIN_6));
strcpy((char*)fin6.type, "FIN");
return res;
}
//-----------------------------------------------------------------------------
-int AUTH_IA::Send_FIN_7(IA_USER * iaUser, uint32_t sip, map<uint32_t, IA_USER>::iterator it)
+int AUTH_IA::Send_FIN_7(IA_USER * iaUser, uint32_t sip, std::map<uint32_t, IA_USER>::iterator it)
{
return Send_FIN_6(iaUser, sip, it);
}
//-----------------------------------------------------------------------------
-int AUTH_IA::Send_FIN_8(IA_USER * iaUser, uint32_t sip, map<uint32_t, IA_USER>::iterator it)
+int AUTH_IA::Send_FIN_8(IA_USER * iaUser, uint32_t sip, std::map<uint32_t, IA_USER>::iterator it)
{
strcpy((char*)fin8.hdr.magic, IA_ID);
fin8.hdr.protoVer[0] = 0;
return res;
}
+namespace
+{
//-----------------------------------------------------------------------------
inline
-void InitEncrypt(BLOWFISH_CTX * ctx, const string & password)
+void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password)
{
unsigned char keyL[PASSWD_LEN];
memset(keyL, 0, PASSWD_LEN);
}
//-----------------------------------------------------------------------------
inline
-void Decrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8)
+void Decrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, size_t len8)
{
-for (int i = 0; i < len8; i++)
- DecodeString(dst + i * 8, src + i * 8, ctx);
+for (size_t i = 0; i < len8; i++)
+ DecodeString(static_cast<char *>(dst) + i * 8, static_cast<const char *>(src) + i * 8, ctx);
}
//-----------------------------------------------------------------------------
inline
-void Encrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8)
+void Encrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, size_t len8)
{
-for (int i = 0; i < len8; i++)
- EncodeString(dst + i * 8, src + i * 8, ctx);
+for (size_t i = 0; i < len8; i++)
+ EncodeString(static_cast<char *>(dst) + i * 8, static_cast<const char *>(src) + i * 8, ctx);
+}
+//-----------------------------------------------------------------------------
}
#include "stg/utime.h"
#include "stg/logger.h"
-extern "C" PLUGIN * GetPlugin();
-
#define IA_PROTO_VER (6)
//#define IA_DEBUG (1)
user(NULL),
phase(),
lastSendAlive(0),
- rnd(random()),
+ rnd(static_cast<uint32_t>(random())),
port(0),
ctx(),
messagesToSend(),
#ifdef IA_DEBUG
aliveSent = false;
#endif
- };
+ }
IA_USER(const IA_USER & u)
: login(u.login),
aliveSent = u.aliveSent;
#endif
memcpy(&ctx, &u.ctx, sizeof(BLOWFISH_CTX));
- };
+ }
IA_USER(const std::string & l,
CONST_USER_PTR u,
user(u),
phase(),
lastSendAlive(0),
- rnd(random()),
+ rnd(static_cast<uint32_t>(random())),
port(p),
ctx(),
messagesToSend(),
class AUTH_IA_SETTINGS {
public:
AUTH_IA_SETTINGS();
- virtual ~AUTH_IA_SETTINGS() {};
- const std::string & GetStrError() const { return errorStr; };
+ virtual ~AUTH_IA_SETTINGS() {}
+ const std::string & GetStrError() const { return errorStr; }
int ParseSettings(const MODULE_SETTINGS & s);
- int GetUserDelay() const { return userDelay; };
- int GetUserTimeout() const { return userTimeout; };
- int GetUserPort() const { return port; };
- FREEMB GetFreeMbShowType() const { return freeMbShowType; };
+ int GetUserDelay() const { return userDelay; }
+ int GetUserTimeout() const { return userTimeout; }
+ uint16_t GetUserPort() const { return port; }
+ FREEMB GetFreeMbShowType() const { return freeMbShowType; }
private:
int userDelay;
bool IsRunning() { return isRunningRunTimeouter || isRunningRun; }
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const { return "InetAccess authorization plugin v.1.4"; }
+ std::string GetVersion() const { return "InetAccess authorization plugin v.1.4"; }
uint16_t GetStartPosition() const { return 30; }
uint16_t GetStopPosition() const { return 30; }
void DelUser(USER_PTR u);
int RecvData(char * buffer, int bufferSize);
int CheckHeader(const char * buffer, int * protoVer);
- int PacketProcessor(char * buff, int dataLen, uint32_t sip, uint16_t sport, int protoVer, USER_PTR user);
+ int PacketProcessor(void * buff, size_t dataLen, uint32_t sip, uint16_t sport, int protoVer, USER_PTR user);
int Process_CONN_SYN_6(CONN_SYN_6 * connSyn, IA_USER * iaUser, uint32_t sip);
int Process_CONN_SYN_7(CONN_SYN_7 * connSyn, IA_USER * iaUser, uint32_t sip);
int Process_DISCONN_ACK_6(DISCONN_ACK_6 * disconnSyn,
IA_USER * iaUser,
uint32_t sip,
- map<uint32_t, IA_USER>::iterator it);
+ std::map<uint32_t, IA_USER>::iterator it);
int Process_DISCONN_ACK_7(DISCONN_ACK_7 * disconnSyn,
IA_USER * iaUser,
uint32_t sip,
- map<uint32_t, IA_USER>::iterator it);
+ std::map<uint32_t, IA_USER>::iterator it);
int Process_DISCONN_ACK_8(DISCONN_ACK_8 * disconnSyn,
IA_USER * iaUser,
uint32_t sip,
- map<uint32_t, IA_USER>::iterator it);
+ std::map<uint32_t, IA_USER>::iterator it);
int Send_CONN_SYN_ACK_6(IA_USER * iaUser, uint32_t sip);
int Send_CONN_SYN_ACK_7(IA_USER * iaUser, uint32_t sip);
int Send_DISCONN_SYN_ACK_7(IA_USER * iaUser, uint32_t sip);
int Send_DISCONN_SYN_ACK_8(IA_USER * iaUser, uint32_t sip);
- int Send_FIN_6(IA_USER * iaUser, uint32_t sip, map<uint32_t, IA_USER>::iterator it);
- int Send_FIN_7(IA_USER * iaUser, uint32_t sip, map<uint32_t, IA_USER>::iterator it);
- int Send_FIN_8(IA_USER * iaUser, uint32_t sip, map<uint32_t, IA_USER>::iterator it);
+ int Send_FIN_6(IA_USER * iaUser, uint32_t sip, std::map<uint32_t, IA_USER>::iterator it);
+ int Send_FIN_7(IA_USER * iaUser, uint32_t sip, std::map<uint32_t, IA_USER>::iterator it);
+ int Send_FIN_8(IA_USER * iaUser, uint32_t sip, std::map<uint32_t, IA_USER>::iterator it);
int Timeouter();
int SendError(uint32_t ip, uint16_t port, int protoVer, const std::string & text);
- int Send(uint32_t ip, uint16_t port, const char * buffer, int len);
+ int Send(uint32_t ip, uint16_t port, const char * buffer, size_t len);
int RealSendMessage6(const STG_MSG & msg, uint32_t ip, IA_USER & user);
int RealSendMessage7(const STG_MSG & msg, uint32_t ip, IA_USER & user);
int RealSendMessage8(const STG_MSG & msg, uint32_t ip, IA_USER & user);
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
+namespace
+{
PLUGIN_CREATOR<DEBUG_CAP> cdc;
+}
+
+extern "C" BASE_PLUGIN * GetPlugin();
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
uint16_t sport,
uint16_t dport,
uint16_t len);
-const string DEBUG_CAP::GetVersion() const
+std::string DEBUG_CAP::GetVersion() const
{
return "Debug_cap v.0.01a";
}
traffCnt = tc;
}
//-----------------------------------------------------------------------------
-const string & DEBUG_CAP::GetStrError() const
+const std::string & DEBUG_CAP::GetStrError() const
{
return errorStr;
}
#include "stg/plugin.h"
#include "stg/module_settings.h"
-using namespace std;
-extern "C" PLUGIN * GetPlugin();
-
//-----------------------------------------------------------------------------
struct iphdr_eth {
uint8_t ihl:4,
//-----------------------------------------------------------------------------
class CAP_SETTINGS {
public:
- const string & GetStrError() const { static string s; return s; }
- int ParseSettings(const MODULE_SETTINGS & s) { return 0; }
+ const std::string & GetStrError() const { static std::string s; return s; }
+ int ParseSettings(const MODULE_SETTINGS & s) { return 0; }
};
//-----------------------------------------------------------------------------
class DEBUG_CAP :public PLUGIN
int Reload() { return 0; }
int ParseSettings() { return 0; }
bool IsRunning();
- const string & GetStrError() const;
- const string GetVersion() const;
+ const std::string & GetStrError() const;
+ std::string GetVersion() const;
uint16_t GetStartPosition() const;
uint16_t GetStopPosition() const;
private:
static void * Run1(void *);
static void * Run2(void *);
static void * Run3(void *);
- mutable string errorStr;
+ mutable std::string errorStr;
CAP_SETTINGS capSettings;
pthread_t thread;
bool nonstop;
#include "stg/plugin_creator.h"
#include "cap_nf.h"
+namespace
+{
PLUGIN_CREATOR<NF_CAP> cnc;
+}
+
+extern "C" PLUGIN * GetPlugin();
PLUGIN * GetPlugin()
{
pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
NF_CAP * cap = static_cast<NF_CAP *>(c);
-uint8_t buf[BUF_SIZE];
-int res;
-struct sockaddr_in sin;
-socklen_t slen;
cap->stoppedUDP = false;
while (cap->runningUDP)
{
}
// Data
- slen = sizeof(sin);
- res = recvfrom(cap->sockUDP, buf, BUF_SIZE, 0, reinterpret_cast<struct sockaddr *>(&sin), &slen);
+ struct sockaddr_in sin;
+ socklen_t slen = sizeof(sin);
+ uint8_t buf[BUF_SIZE];
+ ssize_t res = recvfrom(cap->sockUDP, buf, BUF_SIZE, 0, reinterpret_cast<struct sockaddr *>(&sin), &slen);
if (!cap->runningUDP)
break;
pthread_sigmask(SIG_BLOCK, &signalSet, NULL);
NF_CAP * cap = static_cast<NF_CAP *>(c);
-uint8_t buf[BUF_SIZE];
-int res;
-int sd;
-struct sockaddr_in sin;
-socklen_t slen;
cap->stoppedTCP = false;
while (cap->runningTCP)
{
}
// Data
- slen = sizeof(sin);
- sd = accept(cap->sockTCP, reinterpret_cast<struct sockaddr *>(&sin), &slen);
+ struct sockaddr_in sin;
+ socklen_t slen = sizeof(sin);
+ int sd = accept(cap->sockTCP, reinterpret_cast<struct sockaddr *>(&sin), &slen);
if (!cap->runningTCP)
break;
continue;
}
- res = recv(sd, buf, BUF_SIZE, MSG_WAITALL);
+ uint8_t buf[BUF_SIZE];
+ ssize_t res = recv(sd, buf, BUF_SIZE, MSG_WAITALL);
if (res < 0)
cap->logger("recv error: %s", strerror(errno));
return NULL;
}
-void NF_CAP::ParseBuffer(uint8_t * buf, int size)
+void NF_CAP::ParseBuffer(uint8_t * buf, ssize_t size)
{
RAW_PACKET ip;
NF_HEADER * hdr = reinterpret_cast<NF_HEADER *>(buf);
uint8_t eType; // Engine type
uint8_t eID; // Engine ID
uint16_t sInterval; // Sampling mode and interval
-} __attribute__ ((packed));
+};
struct NF_DATA {
uint32_t srcAddr; // Flow source address
uint8_t srcMask; // Source address mask in "slash" notation
uint8_t dstMask; // Destination address mask in "slash" notation
uint16_t pad2; // 2-byte padding
-} __attribute__ ((packed));
+};
#define BUF_SIZE (sizeof(NF_HEADER) + 30 * sizeof(NF_DATA))
int Reload() { return 0; }
bool IsRunning() { return runningTCP || runningUDP; }
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const { return VERSION; }
+ std::string GetVersion() const { return VERSION; }
uint16_t GetStartPosition() const { return START_POS; }
uint16_t GetStopPosition() const { return STOP_POS; }
static void * RunUDP(void *);
static void * RunTCP(void *);
- void ParseBuffer(uint8_t *, int);
+ void ParseBuffer(uint8_t * buf, ssize_t size);
bool OpenTCP();
bool OpenUDP();
void CloseUDP() { close(sockUDP); }
};
-extern "C" PLUGIN * GetPlugin();
-
#endif
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
+namespace
+{
PLUGIN_CREATOR<DIVERT_CAP> dcc;
+}
+
+extern "C" PLUGIN * GetPlugin();
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-const std::string DIVERT_CAP::GetVersion() const
+std::string DIVERT_CAP::GetVersion() const
{
return "Divert_cap v.1.0";
}
class TRAFFCOUNTER;
class SETTINGS;
-extern "C" PLUGIN * GetPlugin();
-
//-----------------------------------------------------------------------------
class DIVERT_CAP : public PLUGIN {
public:
void SetSettings(const MODULE_SETTINGS & s) { settings = s; }
int ParseSettings();
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const;
+ std::string GetVersion() const;
uint16_t GetStartPosition() const { return 40; }
uint16_t GetStopPosition() const { return 40; }
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
+namespace
+{
PLUGIN_CREATOR<BPF_CAP> bcc;
+}
+
+extern "C" PLUGIN * GetPlugin();
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-const std::string BPF_CAP::GetVersion() const
+std::string BPF_CAP::GetVersion() const
{
return "bpf_cap v.1.0";
}
#include "stg/module_settings.h"
#include "stg/logger.h"
-extern "C" PLUGIN * GetPlugin();
-
#define BUFF_LEN (128)
class TRAFFCOUNTER;
int ParseSettings();
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const;
+ std::string GetVersion() const;
uint16_t GetStartPosition() const { return 40; }
uint16_t GetStopPosition() const { return 40; }
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
+namespace
+{
PLUGIN_CREATOR<ETHER_CAP> ecc;
+}
+
+extern "C" PLUGIN * GetPlugin();
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-const std::string ETHER_CAP::GetVersion() const
+std::string ETHER_CAP::GetVersion() const
{
return "Ether_cap v.1.2";
}
char padding1[8];
};
-ETH_IP * ethIP;
-
char ethip[sizeof(ETH_IP)];
memset(ðip, 0, sizeof(ETH_IP));
-ethIP = (ETH_IP *)ðip;
+ETH_IP * ethIP = static_cast<ETH_IP *>(static_cast<void *>(ðip));
ethIP->rp.dataLen = -1;
char * iface = NULL;
int ETHER_CAP::EthCapRead(void * buffer, int blen, char **)
{
struct sockaddr_ll addr;
-int addrLen, res;
+int addrLen;
if (!WaitPackets(capSock))
{
addrLen = sizeof(addr);
-res = recvfrom(capSock, ((char*)buffer) + 2, blen, 0, (struct sockaddr *)&addr, (socklen_t*)&addrLen);
-
-if (res < 0)
+if (recvfrom(capSock, ((char*)buffer) + 2, blen, 0, (struct sockaddr *)&addr, (socklen_t*)&addrLen) < 0)
{
logger("recvfrom error: %s", strerror(errno));
return ENODATA;
class TRAFFCOUNTER;
class SETTINGS;
-extern "C" PLUGIN * GetPlugin();
-
class TRAFFCOUNTER;
//-----------------------------------------------------------------------------
int ParseSettings() { return 0; }
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const;
+ std::string GetVersion() const;
uint16_t GetStartPosition() const { return 40; }
uint16_t GetStopPosition() const { return 40; }
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
+namespace
+{
PLUGIN_CREATOR<IPQ_CAP> icc;
+}
+
+extern "C" PLUGIN * GetPlugin();
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-const std::string IPQ_CAP::GetVersion() const
+std::string IPQ_CAP::GetVersion() const
{
return "ipq_cap v.1.2";
}
class TRAFFCOUNTER;
class SETTINGS;
-extern "C" PLUGIN * GetPlugin();
-
//-----------------------------------------------------------------------------
class IPQ_CAP :public PLUGIN {
public:
int ParseSettings() { return 0; }
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const;
+ std::string GetVersion() const;
uint16_t GetStartPosition() const { return 40; }
uint16_t GetStopPosition() const { return 40; }
std::string cookie = paramList.getString(0);
paramList.verifyEnd(1);
-std::map<std::string, xmlrpc_c::value> structVal;
+std::map<std::string, xmlrpc_c::value> mainStructVal;
std::vector<xmlrpc_c::value> retval;
ADMIN_INFO adminInfo;
if (config->GetAdminInfo(cookie, &adminInfo))
{
- structVal["result"] = xmlrpc_c::value_boolean(false);
- *retvalPtr = xmlrpc_c::value_struct(structVal);
+ mainStructVal["result"] = xmlrpc_c::value_boolean(false);
+ *retvalPtr = xmlrpc_c::value_struct(mainStructVal);
return;
}
un += utsn.nodename;
structVal["version"] = xmlrpc_c::value_string(SERVER_VERSION);
-structVal["tariff_num"] = xmlrpc_c::value_int(tariffs->Count());
+structVal["tariff_num"] = xmlrpc_c::value_int(static_cast<int>(tariffs->Count()));
structVal["tariff"] = xmlrpc_c::value_int(2);
-structVal["users_num"] = xmlrpc_c::value_int(users->Count());
+structVal["users_num"] = xmlrpc_c::value_int(static_cast<int>(users->Count()));
structVal["uname"] = xmlrpc_c::value_string(un);
structVal["dir_num"] = xmlrpc_c::value_int(DIR_NUM);
-structVal["day_fee"] = xmlrpc_c::value_int(dayFee);
+structVal["day_fee"] = xmlrpc_c::value_int(static_cast<int>(dayFee));
std::vector<xmlrpc_c::value> dirnameVal;
#include "messages_methods.h"
#include "rpcconfig.h"
-extern const volatile time_t stgTime;
+extern volatile time_t stgTime;
//------------------------------------------------------------------------------
}
message.text = IconvString(xmlrpc_c::value_string(it->second), "UTF-8", "CP1251");
-message.header.creationTime = stgTime;
+message.header.creationTime = static_cast<int>(stgTime);
message.header.lastSendTime = 0;
std::vector<xmlrpc_c::value>::iterator lit;
#include "admins_methods.h"
#include "messages_methods.h"
+namespace
+{
PLUGIN_CREATOR<RPC_CONFIG> rpcc;
+}
+
+extern "C" PLUGIN * GetPlugin();
RPC_CONFIG_SETTINGS::RPC_CONFIG_SETTINGS()
: errorStr(),
int RPC_CONFIG_SETTINGS::ParseSettings(const MODULE_SETTINGS & s)
{
-int p;
PARAM_VALUE pv;
-std::vector<PARAM_VALUE>::const_iterator pvi;
-
pv.param = "Port";
+std::vector<PARAM_VALUE>::const_iterator pvi;
pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
if (pvi == s.moduleParams.end())
{
printfd(__FILE__, "Parameter 'Port' not found\n");
return -1;
}
+int p;
if (ParseIntInRange(pvi->value[0], 2, 65535, &p))
{
errorStr = "Cannot parse parameter \'Port\': " + errorStr;
printfd(__FILE__, "Cannot parse parameter 'Port'\n");
return -1;
}
-port = p;
+port = static_cast<uint16_t>(p);
pv.param = "CookieTimeout";
pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
return ret;
}
-void RPC_CONFIG::SetStgSettings(const SETTINGS * settings)
+void RPC_CONFIG::SetStgSettings(const SETTINGS * s)
{
- dayFee = settings->GetDayFee();
+ dayFee = s->GetDayFee();
dirNames.erase(dirNames.begin(), dirNames.end());
for (size_t i = 0; i < DIR_NUM; ++i) {
- dirNames.push_back(settings->GetDirName(i));
+ dirNames.push_back(s->GetDirName(i));
}
}
#define RPC_CONFIG_VERSION "Stargazer RPC v. 0.2"
-extern "C" PLUGIN * GetPlugin();
-
class ADMINS;
class TARIFFS;
class USERS;
private:
std::string errorStr;
- int port;
+ uint16_t port;
double cookieTimeout;
};
bool IsRunning() { return running && !stopped; }
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const { return RPC_CONFIG_VERSION; }
+ std::string GetVersion() const { return RPC_CONFIG_VERSION; }
uint16_t GetStartPosition() const { return 20; }
uint16_t GetStopPosition() const { return 20; }
structVal["status"] = xmlrpc_c::value_boolean(ptr->GetConnected());
structVal["aonline"] = xmlrpc_c::value_boolean(ptr->GetProperty().alwaysOnline.Get());
structVal["currip"] = xmlrpc_c::value_string(inet_ntostring(ptr->GetCurrIP()));
-structVal["pingtime"] = xmlrpc_c::value_int(ptr->GetPingTime());
+structVal["pingtime"] = xmlrpc_c::value_int(static_cast<int>(ptr->GetPingTime()));
structVal["ips"] = xmlrpc_c::value_string(ptr->GetProperty().ips.Get().GetIpStr());
std::map<std::string, xmlrpc_c::value> traffInfo;
structVal["disableddetailstat"] = xmlrpc_c::value_boolean(ptr->GetProperty().disabledDetailStat.Get());
structVal["passive"] = xmlrpc_c::value_boolean(ptr->GetProperty().passive.Get());
structVal["lastcash"] = xmlrpc_c::value_double(ptr->GetProperty().lastCashAdd.Get());
-structVal["lasttimecash"] = xmlrpc_c::value_int(ptr->GetProperty().lastCashAddTime.Get());
-structVal["lastactivitytime"] = xmlrpc_c::value_int(ptr->GetProperty().lastActivityTime.Get());
-structVal["creditexpire"] = xmlrpc_c::value_int(ptr->GetProperty().creditExpire.Get());
+structVal["lasttimecash"] = xmlrpc_c::value_int(static_cast<int>(ptr->GetProperty().lastCashAddTime.Get()));
+structVal["lastactivitytime"] = xmlrpc_c::value_int(static_cast<int>(ptr->GetProperty().lastActivityTime.Get()));
+structVal["creditexpire"] = xmlrpc_c::value_int(static_cast<int>(ptr->GetProperty().creditExpire.Get()));
*info = xmlrpc_c::value_struct(structVal);
}
if ((it = structVal.find("userdata")) != structVal.end())
{
- std::vector<USER_PROPERTY_LOGGED<string> *> userdata;
+ std::vector<USER_PROPERTY_LOGGED<std::string> *> userdata;
userdata.push_back(ptr->GetProperty().userdata0.GetPointer());
userdata.push_back(ptr->GetProperty().userdata1.GetPointer());
userdata.push_back(ptr->GetProperty().userdata2.GetPointer());
xmlrpc_c::value * const retvalPtr)
{
std::string cookie = paramList.getString(0);
-std::vector<xmlrpc_c::value> subnetsStr = paramList.getArray(1);
+typedef std::vector<xmlrpc_c::value> ValueVector;
+ValueVector subnetsStr = paramList.getArray(1);
paramList.verifyEnd(2);
std::vector<IP_MASK> subnets;
-std::vector<xmlrpc_c::value>::iterator it;
-
-for (it = subnetsStr.begin(); it != subnetsStr.end(); ++it)
+for (ValueVector::const_iterator it(subnetsStr.begin()); it != subnetsStr.end(); ++it)
{
IP_MASK ipm;
if (ParseNet(xmlrpc_c::value_string(*it), ipm))
return;
}
-std::vector<xmlrpc_c::value> ips;
+ValueVector ips;
USER_PTR u;
{
uint32_t ip = u->GetCurrIP();
- std::vector<IP_MASK>::iterator it;
- for (it = subnets.begin(); it != subnets.end(); ++it)
+ for (std::vector<IP_MASK>::const_iterator it(subnets.begin()); it != subnets.end(); ++it)
{
if ((it->ip & it->mask) == (ip & it->mask))
{
//-----------------------------------------------------------------------------
int CONFIGPROTO::ParseCommand()
{
-list<string>::iterator n;
+std::list<std::string>::iterator n;
int done = 0;
char str[9];
-int len;
if (requestList.empty())
return 0;
{
strncpy(str, (*n).c_str(), 8);
str[8] = 0;
- len = strlen(str);
+ size_t len = strlen(str);
++n;
if (n == requestList.end())
done = 1;
--n;
- if (XML_Parse(xmlParser, (*n).c_str(), len, done) == XML_STATUS_ERROR)
+ if (XML_Parse(xmlParser, (*n).c_str(), static_cast<int>(len), done) == XML_STATUS_ERROR)
{
logger("Invalid configuration request");
printfd(__FILE__, "Parse error at line %d:\n%s\n",
ADMINS * admins;
BASE_PARSER * currParser;
- vector<BASE_PARSER *> dataParser;
+ std::vector<BASE_PARSER *> dataParser;
XML_Parser xmlParser;
sprintf(s, "<version value=\"%s\"/>", SERVER_VERSION);
answerList->push_back(s);
-sprintf(s, "<tariff_num value=\"%llu\"/>", (unsigned long long)tariffs->Count());
+sprintf(s, "<tariff_num value=\"%llu\"/>", static_cast<unsigned long long>(tariffs->Count()));
answerList->push_back(s);
sprintf(s, "<tariff value=\"%d\"/>", 2);
answerList->push_back(s);
-sprintf(s, "<users_num value=\"%llu\"/>", (unsigned long long)users->Count());
+sprintf(s, "<users_num value=\"%llu\"/>", static_cast<unsigned long long>(users->Count()));
answerList->push_back(s);
sprintf(s, "<uname value=\"%s\"/>", un);
for (int i = 0; i< DIR_NUM; i++)
{
- string dn2e;
+ std::string dn2e;
Encode12str(dn2e, settings->GetDirName(i));
sprintf(s, "<dir_name_%d value=\"%s\"/>", i, dn2e.c_str());
answerList->push_back(s);
//-----------------------------------------------------------------------------
void PARSER_GET_USER::CreateAnswer()
{
-string s;
-string enc;
+std::string s;
+std::string enc;
USER_PTR u;
answerList->push_back(s);
-vector<USER_PROPERTY_LOGGED<string> *> userdata;
+std::vector<USER_PROPERTY_LOGGED<std::string> *> userdata;
userdata.push_back(u->GetProperty().userdata0.GetPointer());
userdata.push_back(u->GetProperty().userdata1.GetPointer());
userdata.push_back(u->GetProperty().userdata2.GetPointer());
userdata.push_back(u->GetProperty().userdata8.GetPointer());
userdata.push_back(u->GetProperty().userdata9.GetPointer());
-string tmpI;
+std::string tmpI;
for (unsigned i = 0; i < userdata.size(); i++)
{
Encode12str(enc, userdata[i]->Get());
strprintf(&s, "<PingTime value=\"%lu\" />", u->GetPingTime());
answerList->push_back(s);
-stringstream sstr;
+std::ostringstream sstr;
sstr << u->GetProperty().ips.Get();
strprintf(&s, "<ip value=\"%s\" />", sstr.str().c_str());
answerList->push_back(s);
for (int j = 0; j < DIR_NUM; j++)
{
- string s;
+ std::string s;
x2str(upload[j], s);
sprintf(st, " MU%d=\"%s\"", j, s.c_str());
strcat(ss, st);
{
answerList->erase(answerList->begin(), answerList->end());
-string s;
-string userStart;
-string traffStart;
-string traffMiddle;
-string traffFinish;
-string middle;
-string userFinish;
+std::string s;
+std::string userStart;
+std::string traffStart;
+std::string traffMiddle;
+std::string traffFinish;
+std::string middle;
+std::string userFinish;
-string enc;
+std::string enc;
USER_PTR u;
users->CloseSearch(h);
return;
}
-string updateTime;
+std::string updateTime;
x2str(time(NULL), updateTime);
if (lastUpdateFound)
middle += s;
}
- vector<USER_PROPERTY_LOGGED<string> *> userdata;
+ std::vector<USER_PROPERTY_LOGGED<std::string> *> userdata;
userdata.push_back(u->GetProperty().userdata0.GetPointer());
userdata.push_back(u->GetProperty().userdata1.GetPointer());
userdata.push_back(u->GetProperty().userdata2.GetPointer());
userdata.push_back(u->GetProperty().userdata8.GetPointer());
userdata.push_back(u->GetProperty().userdata9.GetPointer());
- string tmpI;
+ std::string tmpI;
for (unsigned i = 0; i < userdata.size(); i++)
{
if (userdata[i]->ModificationTime() > lastUserUpdateTime)
if (u->GetProperty().ips.ModificationTime() > lastUserUpdateTime)
{
- stringstream sstr;
+ std::ostringstream sstr;
sstr << u->GetProperty().ips.Get();
strprintf(&s, "<ip value=\"%s\" />", sstr.str().c_str());
middle += s;
{
for (int j = 0; j < DIR_NUM; j++)
{
- string s;
+ std::string s;
x2str(upload[j], s);
sprintf(st, " MU%d=\"%s\" ", j, s.c_str());
traffMiddle += st;
upr = new RESETABLE<uint64_t>[DIR_NUM];
downr = new RESETABLE<uint64_t>[DIR_NUM];
-};
+}
//-----------------------------------------------------------------------------
-string PARSER_CHG_USER::EncChar2String(const char * strEnc)
+std::string PARSER_CHG_USER::EncChar2String(const char * strEnc)
{
-string str;
+std::string str;
Decode21str(str, strEnc);
return str;
}
int dir;
DIR_TRAFF dtu;
DIR_TRAFF dtd;
- unsigned long long t = 0;
+ uint64_t t = 0;
while (attr[j])
{
dir = attr[j][2] - '0';
if (!u->GetProperty().note.Set(ucr->note.const_data(), currAdmin, login, store))
res = -1;
-vector<USER_PROPERTY_LOGGED<string> *> userdata;
+std::vector<USER_PROPERTY_LOGGED<std::string> *> userdata;
userdata.push_back(u->GetProperty().userdata0.GetPointer());
userdata.push_back(u->GetProperty().userdata1.GetPointer());
userdata.push_back(u->GetProperty().userdata2.GetPointer());
printfd(__FILE__, "User not found. %s\n", logins[i].c_str());
continue;
}
- msg.header.creationTime = stgTime;
+ msg.header.creationTime = static_cast<unsigned int>(stgTime);
u->AddMessage(&msg);
result = res_ok;
}
return;
}
-string s;
+std::string s;
//answerList->clear();
answerList->erase(answerList->begin(), answerList->end());
}
else
{
- string s;
+ std::string s;
strprintf(&s, "<DelAdmin Result=\"Error. %s\"/>", admins->GetStrError().c_str());
answerList->push_back(s);
}
}
else
{
- string s;
+ std::string s;
strprintf(&s, "<AddAdmin Result=\"Error. %s\"/>", admins->GetStrError().c_str());
answerList->push_back(s);
}
if (admins->Change(conf, currAdmin) != 0)
{
- string s;
+ std::string s;
strprintf(&s, "<ChgAdmin Result = \"%s\"/>", admins->GetStrError().c_str());
answerList->push_back(s);
}
//-----------------------------------------------------------------------------
void PARSER_GET_TARIFFS::CreateAnswer()
{
-string s;
+std::string s;
char vs[100];
int hd, hn, md, mn;
}
else
{
- string s;
+ std::string s;
strprintf(&s, "<AddTariff Result=\"Error. %s\"/>", tariffs->GetStrError().c_str());
answerList->push_back(s);
}
if (users->TariffInUse(tariffToDel))
{
- string s;
+ std::string s;
strprintf(&s, "<DelTariff Result=\"Error. Tariff \'%s\' cannot be deleted. Tariff in use.\"/>", tariffToDel.c_str());
answerList->push_back(s);
return;
}
else
{
- string s;
+ std::string s;
strprintf(&s, "<DelTariff Result=\"Error. %s\"/>", tariffs->GetStrError().c_str());
answerList->push_back(s);
}
// CHG TARIFF
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-int PARSER_CHG_TARIFF::ParseSlashedIntParams(int paramsNum, const string & s, int * params)
+int PARSER_CHG_TARIFF::ParseSlashedIntParams(int paramsNum, const std::string & s, int * params)
{
char * str = new char[s.size() + 1];
char * p;
return 0;
}
//-----------------------------------------------------------------------------
-int PARSER_CHG_TARIFF::ParseSlashedDoubleParams(int paramsNum, const string & s, double * params)
+int PARSER_CHG_TARIFF::ParseSlashedDoubleParams(int paramsNum, const std::string & s, double * params)
{
char * str = new char[s.size() + 1];
char * p;
}
else
{
- string s;
+ std::string s;
if (strcasecmp(el, "PriceDayA") == 0)
{
}
else
{
- string s;
+ std::string s;
strprintf(&s, "<SetTariff Result=\"Change tariff error! %s\"/>", tariffs->GetStrError().c_str());
answerList->push_back(s);
return;
//-----------------------------------------------------------------------------
int CONFIGPROTO::Prepare()
{
-list<string> ansList; //óÀÄÁ ÂÕÄÅÔ ÐÏÍÅÝÅÎ ÏÔ×ÅÔ ÄÌÑ ÍÅÎÅÄÖÅÒÁ ËÌÉÅÎÔÏ×
+std::list<std::string> ansList; //óÀÄÁ ÂÕÄÅÔ ÐÏÍÅÝÅÎ ÏÔ×ÅÔ ÄÌÑ ÍÅÎÅÄÖÅÒÁ ËÌÉÅÎÔÏ×
int res;
struct sockaddr_in listenAddr;
if (0 != setsockopt(listenSocket, SOL_SOCKET, SO_REUSEADDR, &lng, 4))
{
- errorStr = "Setsockopt failed. " + string(strerror(errno));
+ errorStr = "Setsockopt failed. " + std::string(strerror(errno));
logger("setsockopt error: %s", strerror(errno));
return -1;
}
SendError("Bad request");
return -1;
}
- int ret = recv(sock, &buf[pos], stgHdrLen - pos, 0);
+ ssize_t ret = recv(sock, &buf[pos], static_cast<int>(stgHdrLen) - static_cast<int>(pos), 0);
if (ret <= 0)
{
if (ret < 0)
return ENODATA;
}
- int ret = recv(sock, &login[pos], ADM_LOGIN_LEN - pos, 0);
+ ssize_t ret = recv(sock, &login[pos], ADM_LOGIN_LEN - static_cast<int>(pos), 0);
if (ret <= 0)
{
return ENODATA;
}
- int ret = recv(sock, &loginS[pos], ADM_LOGIN_LEN - pos, 0);
+ ssize_t ret = recv(sock, &loginS[pos], ADM_LOGIN_LEN - static_cast<int>(pos), 0);
if (ret <= 0)
{
break;
}
- int ret = recv(sock, &bufferS[pos], sizeof(bufferS) - pos, 0);
+ ssize_t ret = recv(sock, &bufferS[pos], sizeof(bufferS) - static_cast<int>(pos), 0);
if (ret < 0)
{
// Network error
return SendDataAnswer(sock);
}
}
-return 0;
+//return 0;
}
//-----------------------------------------------------------------------------
int CONFIGPROTO::SendDataAnswer(int sock)
{
-list<string>::iterator li;
+std::list<std::string>::iterator li;
li = answerList.begin();
BLOWFISH_CTX ctx;
if (n % 8 == 0)
{
EncodeString(buffS, buff, &ctx);
- int ret = send(sock, buffS, 8, 0);
+ int ret = static_cast<int>(send(sock, buffS, 8, 0));
if (ret < 0)
{
return -1;
answerList.clear();
-return send(sock, buffS, 8, 0);
+return static_cast<int>(send(sock, buffS, 8, 0));
}
//-----------------------------------------------------------------------------
void CONFIGPROTO::SendError(const char * text)
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-PLUGIN_CREATOR<STG_CONFIG> stgc;
+static PLUGIN_CREATOR<STG_CONFIG> stgc;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
{
int p;
PARAM_VALUE pv;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
///////////////////////////
pv.param = "Port";
pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
printfd(__FILE__, "%s\n", errorStr.c_str());
return -1;
}
-port = p;
+port = static_cast<uint16_t>(p);
return 0;
}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-const std::string STG_CONFIG::GetVersion() const
+std::string STG_CONFIG::GetVersion() const
{
return "Stg configurator v.0.08";
}
uint16_t GetPort() const { return port; }
private:
std::string errorStr;
- int port;
+ uint16_t port;
};
//-----------------------------------------------------------------------------
class STG_CONFIG :public PLUGIN {
public:
STG_CONFIG();
- virtual ~STG_CONFIG(){};
+ virtual ~STG_CONFIG(){}
void SetUsers(USERS * u) { users = u; }
void SetTariffs(TARIFFS * t) { tariffs = t; }
bool IsRunning() { return isRunning; }
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const;
+ std::string GetVersion() const;
uint16_t GetStartPosition() const { return 20; }
uint16_t GetStopPosition() const { return 20; }
#include "stg/plugin_creator.h"
#include "ping.h"
-PLUGIN_CREATOR<PING> pc;
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-//-----------------------------------------------------------------------------
-PLUGIN * GetPlugin()
+namespace
{
-return pc.GetPlugin();
-}
+PLUGIN_CREATOR<PING> pc;
+
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
// ëÌÁÓÓ ÄÌÑ ÐÏÉÓËÁ ÀÚÅÒÁ × ÓÐÉÓËÅ ÎÏÔÉÆÉËÁÔÏÒÏ×
template <typename varType>
-class IS_CONTAINS_USER: public binary_function<varType, USER_PTR, bool>
+class IS_CONTAINS_USER: public std::binary_function<varType, USER_PTR, bool>
{
public:
IS_CONTAINS_USER(const USER_PTR & u) : user(u) {}
bool operator()(varType notifier) const
{
return notifier.GetUser() == user;
- };
+ }
private:
const USER_PTR & user;
};
+}
+
+extern "C" PLUGIN * GetPlugin();
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+PLUGIN * GetPlugin()
+{
+return pc.GetPlugin();
+}
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
int PING_SETTINGS::ParseSettings(const MODULE_SETTINGS & s)
{
PARAM_VALUE pv;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
pv.param = "PingDelay";
pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
users->DelNotifierUserAdd(&onAddUserNotifier);
users->DelNotifierUserDel(&onDelUserNotifier);
-list<USER_PTR>::iterator users_iter;
+std::list<USER_PTR>::iterator users_iter;
users_iter = usersList.begin();
while (users_iter != usersList.end())
{
while (ping->nonstop)
{
- list<USER_PTR>::iterator iter = ping->usersList.begin();
+ std::list<USER_PTR>::iterator iter = ping->usersList.begin();
{
STG_LOCKER lock(&ping->mutex, __FILE__, __LINE__);
while (iter != ping->usersList.end())
IS_CONTAINS_USER<CHG_CURRIP_NOTIFIER_PING> IsContainsUserCurrIP(u);
IS_CONTAINS_USER<CHG_IPS_NOTIFIER_PING> IsContainsUserIP(u);
-list<CHG_CURRIP_NOTIFIER_PING>::iterator currIPter;
-list<CHG_IPS_NOTIFIER_PING>::iterator IPIter;
+std::list<CHG_CURRIP_NOTIFIER_PING>::iterator currIPter;
+std::list<CHG_IPS_NOTIFIER_PING>::iterator IPIter;
currIPter = find_if(ChgCurrIPNotifierList.begin(),
ChgCurrIPNotifierList.end(),
UnSetUserNotifiers(u);
-list<USER_PTR>::iterator users_iter;
+std::list<USER_PTR>::iterator users_iter;
users_iter = usersList.begin();
while (users_iter != usersList.end())
bool IsRunning();
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const { return "Pinger v.1.01"; }
+ std::string GetVersion() const { return "Pinger v.1.01"; }
uint16_t GetStartPosition() const { return 10; }
uint16_t GetStopPosition() const { return 10; }
#include "stg/plugin_creator.h"
#include "radius.h"
-extern volatile const time_t stgTime;
-
-void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password);
-void Decrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8);
-void Encrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8);
+extern volatile time_t stgTime;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
+namespace
+{
PLUGIN_CREATOR<RADIUS> radc;
+
+void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password);
+void Decrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, unsigned long len8);
+void Encrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, unsigned long len8);
+}
+extern "C" PLUGIN * GetPlugin();
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
printfd(__FILE__, "Cannot parse parameter 'Port'\n");
return -1;
}
-port = p;
+port = static_cast<uint16_t>(p);
///////////////////////////
pv.param = "Password";
pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
{
int8_t buf[RAD_MAX_PACKET_LEN];
socklen_t outerAddrLen = sizeof(struct sockaddr_in);
- int dataLen = recvfrom(sock, buf, RAD_MAX_PACKET_LEN, 0, reinterpret_cast<struct sockaddr *>(outerAddr), &outerAddrLen);
+ ssize_t dataLen = recvfrom(sock, buf, RAD_MAX_PACKET_LEN, 0, reinterpret_cast<struct sockaddr *>(outerAddr), &outerAddrLen);
if (dataLen < 0)
{
logger("recvfrom error: %s", strerror(errno));
return 0;
}
//-----------------------------------------------------------------------------
-int RADIUS::Send(const RAD_PACKET & packet, struct sockaddr_in * outerAddr)
+ssize_t RADIUS::Send(const RAD_PACKET & packet, struct sockaddr_in * outerAddr)
{
size_t len = sizeof(RAD_PACKET);
char buf[1032];
Encrypt(&ctx, buf, (char *)&packet, len / 8);
-int res = sendto(sock, buf, len, 0, reinterpret_cast<struct sockaddr *>(outerAddr), sizeof(struct sockaddr_in));
+ssize_t res = sendto(sock, buf, len, 0, reinterpret_cast<struct sockaddr *>(outerAddr), sizeof(struct sockaddr_in));
if (res < 0)
logger("sendto error: %s", strerror(errno));
return res;
printfd(__FILE__, "RADIUS::ProcessData Unsupported packet type: %d\n", packet->packetType);
return -1;
};
-return 0;
}
//-----------------------------------------------------------------------------
int RADIUS::ProcessAutzPacket(RAD_PACKET * packet)
return CanAuthService(svc) || CanAcctService(svc);
}
//-----------------------------------------------------------------------------
+namespace
+{
+
inline
void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password)
{
}
//-----------------------------------------------------------------------------
inline
-void Encrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8)
+void Encrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, unsigned long len8)
{
// len8 - длина в 8-ми байтовых блоках
if (dst != src)
memcpy(dst, src, len8 * 8);
-for (int i = 0; i < len8; i++)
- Blowfish_Encrypt(ctx, (uint32_t *)(dst + i*8), (uint32_t *)(dst + i*8 + 4));
+for (size_t i = 0; i < len8; i++)
+ Blowfish_Encrypt(ctx, static_cast<uint32_t *>(dst) + i * 2, static_cast<uint32_t *>(dst) + i * 2 + 1);
}
//-----------------------------------------------------------------------------
inline
-void Decrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, int len8)
+void Decrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, unsigned long len8)
{
// len8 - длина в 8-ми байтовых блоках
if (dst != src)
memcpy(dst, src, len8 * 8);
-for (int i = 0; i < len8; i++)
- Blowfish_Decrypt(ctx, (uint32_t *)(dst + i*8), (uint32_t *)(dst + i*8 + 4));
+for (size_t i = 0; i < len8; i++)
+ Blowfish_Decrypt(ctx, static_cast<uint32_t *>(dst) + i * 2, static_cast<uint32_t *>(dst) + i * 2 + 1);
}
+
+} // namespace anonymous
authServices(), acctServices()
{}
virtual ~RAD_SETTINGS() {}
- const string & GetStrError() const { return errorStr; }
+ const std::string & GetStrError() const { return errorStr; }
int ParseSettings(const MODULE_SETTINGS & s);
uint16_t GetPort() const { return port; }
const std::string & GetPassword() const { return password; }
- const std::list<string> & GetAuthServices() const { return authServices; }
- const std::list<string> & GetAcctServices() const { return acctServices; }
+ const std::list<std::string> & GetAuthServices() const { return authServices; }
+ const std::list<std::string> & GetAcctServices() const { return acctServices; }
private:
int ParseServices(const std::vector<std::string> & str, std::list<std::string> * lst);
bool IsRunning() { return isRunning; }
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const { return "RADIUS data access plugin v 0.6"; }
+ std::string GetVersion() const { return "RADIUS data access plugin v 0.6"; }
uint16_t GetStartPosition() const { return 30; }
uint16_t GetStopPosition() const { return 30; }
int PrepareNet();
int FinalizeNet();
- int Send(const RAD_PACKET & packet, struct sockaddr_in * outerAddr);
+ ssize_t Send(const RAD_PACKET & packet, struct sockaddr_in * outerAddr);
int RecvData(RAD_PACKET * packet, struct sockaddr_in * outerAddr);
int ProcessData(RAD_PACKET * packet);
void PrintServices(const std::list<std::string> & svcs);
- struct Printer : public unary_function<std::string, void>
+ struct Printer : public std::unary_function<std::string, void>
{
void operator()(const std::string & line)
{
printfd("radius.cpp", "'%s'\n", line.c_str());
- };
+ }
};
- struct SPrinter : public unary_function<std::pair<std::string, RAD_SESSION>, void>
+ struct SPrinter : public std::unary_function<std::pair<std::string, RAD_SESSION>, void>
{
void operator()(const std::pair<std::string, RAD_SESSION> & it)
{
printfd("radius.cpp", "%s - ('%s', '%s')\n", it.first.c_str(), it.second.userName.c_str(), it.second.serviceType.c_str());
- };
+ }
};
BLOWFISH_CTX ctx;
~NRMapParser() {}
bool ReadFile(const std::string & fileName);
- const std::vector<NET_ROUTER> & GetMap() const { return nrmap; };
- const std::string & GetErrorStr() const { return errorStr; };
+ const std::vector<NET_ROUTER> & GetMap() const { return nrmap; }
+ const std::string & GetErrorStr() const { return errorStr; }
private:
NRMapParser(const NRMapParser & rvalue);
#include "ur_functor.h"
#include "send_functor.h"
-extern volatile const time_t stgTime;
-
-#define RS_MAX_ROUTERS (100)
+extern volatile time_t stgTime;
using RS::REMOTE_SCRIPT;
USER_PTR user;
};
+PLUGIN_CREATOR<REMOTE_SCRIPT> rsc;
+
} // namespace anonymous
+extern "C" PLUGIN * GetPlugin();
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-PLUGIN_CREATOR<REMOTE_SCRIPT> rsc;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
{
int p;
PARAM_VALUE pv;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
netRouters.clear();
///////////////////////////
pv.param = "Port";
printfd(__FILE__, "Cannot parse parameter 'Port'\n");
return -1;
}
-port = p;
+port = static_cast<uint16_t>(p);
///////////////////////////
pv.param = "SendPeriod";
pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-map<uint32_t, RS::USER>::iterator it(authorizedUsers.begin());
+std::map<uint32_t, RS::USER>::iterator it(authorizedUsers.begin());
while (it != authorizedUsers.end())
{
if (difftime(stgTime, it->second.lastSentTime) - (rand() % halfPeriod) > sendPeriod)
memset(packetTail.padding, 0, sizeof(packetTail.padding));
strcpy((char*)packetTail.magic, RS_ID);
-vector<string>::const_iterator it;
+std::vector<std::string>::const_iterator it;
std::string params;
for(it = rsSettings.GetUserParams().begin();
it != rsSettings.GetUserParams().end();
std::for_each(
rsu.routers.begin(),
rsu.routers.end(),
- PacketSender(sock, buffer, sizeof(buffer), htons(rsSettings.GetPort()))
+ PacketSender(sock, buffer, sizeof(buffer), static_cast<uint16_t>(htons(rsSettings.GetPort())))
);
return false;
struct sockaddr_in sendAddr;
sendAddr.sin_family = AF_INET;
-sendAddr.sin_port = htons(rsSettings.GetPort());
+sendAddr.sin_port = static_cast<uint16_t>(htons(rsSettings.GetPort()));
sendAddr.sin_addr.s_addr = routerIP;
-int res = sendto(sock, buffer, sizeof(buffer), 0, (struct sockaddr *)&sendAddr, sizeof(sendAddr));
+ssize_t res = sendto(sock, buffer, sizeof(buffer), 0, (struct sockaddr *)&sendAddr, sizeof(sendAddr));
if (res < 0)
logger("sendto error: %s", strerror(errno));
return std::vector<uint32_t>();
}
//-----------------------------------------------------------------------------
-string REMOTE_SCRIPT::GetUserParam(USER_PTR u, const string & paramName) const
+std::string REMOTE_SCRIPT::GetUserParam(USER_PTR u, const std::string & paramName) const
{
-string value = "";
+std::string value = "";
if (strcasecmp(paramName.c_str(), "cash") == 0)
strprintf(&value, "%f", u->GetProperty().cash.Get());
else
void REMOTE_SCRIPT::DelRSU(USER_PTR user)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-const map<uint32_t, RS::USER>::iterator it(
+const std::map<uint32_t, RS::USER>::iterator it(
authorizedUsers.find(user->GetCurrIP())
);
if (it != authorizedUsers.end())
rs.DelRSU(user);
}
//-----------------------------------------------------------------------------
-void REMOTE_SCRIPT::InitEncrypt(BLOWFISH_CTX * ctx, const string & password) const
+void REMOTE_SCRIPT::InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password) const
{
unsigned char keyL[PASSWD_LEN]; // Пароль для шифровки
memset(keyL, 0, PASSWD_LEN);
Blowfish_Init(ctx, keyL, PASSWD_LEN);
}
//-----------------------------------------------------------------------------
-void REMOTE_SCRIPT::Encrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, size_t len8) const
+void REMOTE_SCRIPT::Encrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, size_t len8) const
{
if (dst != src)
memcpy(dst, src, len8 * 8);
for (size_t i = 0; i < len8; ++i)
- Blowfish_Encrypt(ctx, (uint32_t *)(dst + i * 8), (uint32_t *)(dst + i * 8 + 4));
+ Blowfish_Encrypt(ctx, static_cast<uint32_t *>(dst) + i * 2, static_cast<uint32_t *>(dst) + i * 2 + 1);
}
//-----------------------------------------------------------------------------
const std::string & GetStrError() const { return errorStr; }
int ParseSettings(const MODULE_SETTINGS & s);
int GetSendPeriod() const { return sendPeriod; }
- int GetPort() const { return port; }
+ uint16_t GetPort() const { return port; }
const std::vector<NET_ROUTER> & GetSubnetsMap() const { return netRouters; }
const std::vector<std::string> & GetUserParams() const { return userParams; }
const std::string & GetPassword() const { return password; }
private:
int sendPeriod;
uint16_t port;
- string errorStr;
+ std::string errorStr;
std::vector<NET_ROUTER> netRouters;
- std::vector<string> userParams;
- string password;
- string subnetFile;
+ std::vector<std::string> userParams;
+ std::string password;
+ std::string subnetFile;
};
//-----------------------------------------------------------------------------
class REMOTE_SCRIPT : public PLUGIN {
bool IsRunning() { return isRunning; }
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const { return "Remote script v 0.3"; }
+ std::string GetVersion() const { return "Remote script v 0.3"; }
uint16_t GetStartPosition() const { return 10; }
uint16_t GetStopPosition() const { return 10; }
void SetUserNotifiers(USER_PTR u);
void UnSetUserNotifiers(USER_PTR u);
- void InitEncrypt(BLOWFISH_CTX * ctx, const string & password) const;
- void Encrypt(BLOWFISH_CTX * ctx, char * dst, const char * src, size_t len8) const;
+ void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password) const;
+ void Encrypt(BLOWFISH_CTX * ctx, void * dst, const void * src, size_t len8) const;
mutable BLOWFISH_CTX ctx;
#include "stg/os_int.h"
-class PacketSender : public std::unary_function<uint32_t, int> {
+class PacketSender : public std::unary_function<uint32_t, ssize_t> {
public:
- PacketSender(int s, char * b, int l, uint16_t p)
+ PacketSender(int s, char * b, size_t l, uint16_t p)
: sock(s),
buffer(b),
length(l),
- port(p) {};
- int operator() (uint32_t ip)
+ port(p) {}
+ ssize_t operator() (uint32_t ip)
{
struct sockaddr_in sendAddr;
private:
int sock;
char * buffer;
- int length;
+ size_t length;
uint16_t port;
};
{
public:
UpdateRouter(REMOTE_SCRIPT & t)
- : obj(t) {};
+ : obj(t) {}
void operator() (std::pair<const uint32_t, USER> & val)
{
#include "smux.h"
#include "utils.h"
+namespace
+{
PLUGIN_CREATOR<SMUX> smc;
-PLUGIN * GetPlugin()
-{
-return smc.GetPlugin();
-}
+bool SPrefixLess(const Sensors::value_type & a,
+ const Sensors::value_type & b);
bool SPrefixLess(const Sensors::value_type & a,
const Sensors::value_type & b)
return a.first.PrefixLess(b.first);
}
+}
+
+extern "C" PLUGIN * GetPlugin();
+
+PLUGIN * GetPlugin()
+{
+return smc.GetPlugin();
+}
+
SMUX_SETTINGS::SMUX_SETTINGS()
: errorStr(),
ip(0),
printfd(__FILE__, "Cannot parse parameter 'Port'\n");
return -1;
}
-port = p;
+port = static_cast<uint16_t>(p);
pv.param = "Password";
pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
bool IsRunning() { return running && !stopped; }
const std::string & GetStrError() const { return errorStr; }
- const std::string GetVersion() const { return "Stg SMUX Plugin 1.1"; }
+ std::string GetVersion() const { return "Stg SMUX Plugin 1.1"; }
uint16_t GetStartPosition() const { return 10; }
uint16_t GetStopPosition() const { return 10; }
std::map<std::string, size_t>::const_iterator it(data.begin());
while (it != data.end())
{
- sensors[prefixOid.copyWithSuffix(2, idx)] = new ConstSensor<std::string>(it->first);
- sensors[prefixOid.copyWithSuffix(3, idx)] = new ConstSensor<int>(it->second);
+ sensors[prefixOid.copyWithSuffix(2, static_cast<unsigned int>(idx))] = new ConstSensor<std::string>(it->first);
+ sensors[prefixOid.copyWithSuffix(3, static_cast<unsigned int>(idx))] = new ConstSensor<unsigned long>(it->second);
++idx;
++it;
}
#include "types.h"
+namespace
+{
+
+bool ParseArcs(const char * str, ptrdiff_t length, unsigned * a, size_t * pos);
+bool StringToArcs(const char * str, size_t length, std::vector<unsigned> & arcs);
+bool AppendToArcs(const char * str, size_t length, std::vector<unsigned> & arcs);
+
bool ParseArcs(const char * str, ptrdiff_t length, unsigned * a, size_t * pos)
{
if (length == 0)
while ((left - str) < length)
{
char * pos = NULL;
- unsigned arc = strtoul(left, &pos, 10);
+ unsigned arc = static_cast<unsigned int>(strtoul(left, &pos, 10));
if (pos == left)
return false;
a[arcPos++] = arc;
return true;
}
+}
+
OID::OID(const std::string & str)
: arcs()
{
void OID::ToOID(OBJECT_IDENTIFIER_t * oid) const
{
-OBJECT_IDENTIFIER_set_arcs(oid, &arcs.front(), sizeof(unsigned), arcs.size());
+OBJECT_IDENTIFIER_set_arcs(oid, &arcs.front(), sizeof(unsigned), static_cast<unsigned int>(arcs.size()));
}
OID & OID::operator=(const OID & rvalue)
}
arcs[arcPos++] = arc;
}
-OBJECT_IDENTIFIER_set_arcs(oi, arcs, sizeof(arcs[0]), arcPos);
+OBJECT_IDENTIFIER_set_arcs(oi, arcs, sizeof(arcs[0]), static_cast<unsigned int>(arcPos));
return true;
}
objectSyntax->present = ObjectSyntax_PR_simple;
SimpleSyntax_t * simpleSyntax = &objectSyntax->choice.simple;
simpleSyntax->present = SimpleSyntax_PR_string;
-OCTET_STRING_fromBuf(&simpleSyntax->choice.string, value.c_str(), value.length());
+OCTET_STRING_fromBuf(&simpleSyntax->choice.string, value.c_str(), static_cast<int>(value.length()));
return true;
}
#define adm_enc_passwd "cjeifY8m3"
-using namespace std;
-
-int GetFileList(vector<string> * fileList, const string & directory, mode_t mode, const string & ext);
+int GetFileList(std::vector<std::string> * fileList, const std::string & directory, mode_t mode, const std::string & ext);
const int pt_mega = 1024 * 1024;
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
+namespace
+{
PLUGIN_CREATOR<FILES_STORE> fsc;
+}
+
+extern "C" STORE * GetStore();
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
{
}
//-----------------------------------------------------------------------------
-int FILES_STORE_SETTINGS::ParseOwner(const vector<PARAM_VALUE> & moduleParams, const string & owner, uid_t * uid)
+int FILES_STORE_SETTINGS::ParseOwner(const std::vector<PARAM_VALUE> & moduleParams, const std::string & owner, uid_t * uid)
{
PARAM_VALUE pv;
pv.param = owner;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
pvi = find(moduleParams.begin(), moduleParams.end(), pv);
if (pvi == moduleParams.end())
{
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE_SETTINGS::ParseGroup(const vector<PARAM_VALUE> & moduleParams, const string & group, gid_t * gid)
+int FILES_STORE_SETTINGS::ParseGroup(const std::vector<PARAM_VALUE> & moduleParams, const std::string & group, gid_t * gid)
{
PARAM_VALUE pv;
pv.param = group;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
pvi = find(moduleParams.begin(), moduleParams.end(), pv);
if (pvi == moduleParams.end())
{
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE_SETTINGS::ParseYesNo(const string & value, bool * val)
+int FILES_STORE_SETTINGS::ParseYesNo(const std::string & value, bool * val)
{
if (0 == strcasecmp(value.c_str(), "yes"))
{
return -1;
}
//-----------------------------------------------------------------------------
-int FILES_STORE_SETTINGS::ParseMode(const vector<PARAM_VALUE> & moduleParams, const string & modeStr, mode_t * mode)
+int FILES_STORE_SETTINGS::ParseMode(const std::vector<PARAM_VALUE> & moduleParams, const std::string & modeStr, mode_t * mode)
{
PARAM_VALUE pv;
pv.param = modeStr;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
pvi = find(moduleParams.begin(), moduleParams.end(), pv);
if (pvi == moduleParams.end())
{
if (ParseMode(s.moduleParams, "UserLogMode", &userLogMode) < 0)
return -1;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
PARAM_VALUE pv;
pv.param = "RemoveBak";
pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
return 0;
}
//-----------------------------------------------------------------------------
-const string & FILES_STORE_SETTINGS::GetStrError() const
+const std::string & FILES_STORE_SETTINGS::GetStrError() const
{
return errorStr;
}
pw = getpwnam(user);
if (!pw)
{
- errorStr = string("User \'") + string(user) + string("\' not found in system.");
+ errorStr = std::string("User \'") + std::string(user) + std::string("\' not found in system.");
printfd(__FILE__, "%s\n", errorStr.c_str());
return -1;
}
grp = getgrnam(gr);
if (!grp)
{
- errorStr = string("Group \'") + string(gr) + string("\' not found in system.");
+ errorStr = std::string("Group \'") + std::string(gr) + std::string("\' not found in system.");
printfd(__FILE__, "%s\n", errorStr.c_str());
return -1;
}
char c;
if (strlen(str) > 3)
{
- errorStr = string("Error parsing mode \'") + str + string("\'");
+ errorStr = std::string("Error parsing mode \'") + str + std::string("\'");
printfd(__FILE__, "%s\n", errorStr.c_str());
return -1;
}
for (int i = 0; i < 3; i++)
if (str[i] > '7' || str[i] < '0')
{
- errorStr = string("Error parsing mode \'") + str + string("\'");
+ errorStr = std::string("Error parsing mode \'") + str + std::string("\'");
printfd(__FILE__, "%s\n", errorStr.c_str());
return -1;
}
pthread_mutexattr_init(&attr);
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init(&mutex, &attr);
-};
+}
//-----------------------------------------------------------------------------
int FILES_STORE::ParseSettings()
{
return ret;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::GetUsersList(vector<string> * userList) const
+int FILES_STORE::GetUsersList(std::vector<std::string> * userList) const
{
-vector<string> files;
+std::vector<std::string> files;
if (GetFileList(&files, storeSettings.GetUsersDir(), S_IFDIR, ""))
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = "Failed to open '" + storeSettings.GetUsersDir() + "': " + string(strerror(errno));
+ errorStr = "Failed to open '" + storeSettings.GetUsersDir() + "': " + std::string(strerror(errno));
return -1;
}
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::GetAdminsList(vector<string> * adminList) const
+int FILES_STORE::GetAdminsList(std::vector<std::string> * adminList) const
{
-vector<string> files;
+std::vector<std::string> files;
if (GetFileList(&files, storeSettings.GetAdminsDir(), S_IFREG, ".adm"))
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = "Failed to open '" + storeSettings.GetAdminsDir() + "': " + string(strerror(errno));
+ errorStr = "Failed to open '" + storeSettings.GetAdminsDir() + "': " + std::string(strerror(errno));
return -1;
}
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::GetTariffsList(vector<string> * tariffList) const
+int FILES_STORE::GetTariffsList(std::vector<std::string> * tariffList) const
{
-vector<string> files;
+std::vector<std::string> files;
if (GetFileList(&files, storeSettings.GetTariffsDir(), S_IFREG, ".tf"))
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = "Failed to open '" + storeSettings.GetTariffsDir() + "': " + string(strerror(errno));
+ errorStr = "Failed to open '" + storeSettings.GetTariffsDir() + "': " + std::string(strerror(errno));
return -1;
}
if (!(strcmp(entry->d_name, ".") && strcmp(entry->d_name, "..")))
continue;
- string str = path;
- str += "/" + string(entry->d_name);
+ std::string str = path;
+ str += "/" + std::string(entry->d_name);
struct stat st;
if (stat(str.c_str(), &st))
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::AddUser(const string & login) const
+int FILES_STORE::AddUser(const std::string & login) const
{
-string fileName;
+std::string fileName;
strprintf(&fileName, "%s%s", storeSettings.GetUsersDir().c_str(), login.c_str());
if (mkdir(fileName.c_str(), S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) == -1)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = string("mkdir failed. Message: '") + strerror(errno) + "'";
+ errorStr = std::string("mkdir failed. Message: '") + strerror(errno) + "'";
printfd(__FILE__, "FILES_STORE::AddUser - mkdir failed. Message: '%s'\n", strerror(errno));
return -1;
}
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::DelUser(const string & login) const
+int FILES_STORE::DelUser(const std::string & login) const
{
-string dirName;
-string dirName1;
+std::string dirName;
+std::string dirName1;
-strprintf(&dirName, "%s/"DELETED_USERS_DIR, storeSettings.GetWorkDir().c_str());
+strprintf(&dirName, "%s/%s", storeSettings.GetWorkDir().c_str(), DELETED_USERS_DIR);
if (access(dirName.c_str(), F_OK) != 0)
{
if (mkdir(dirName.c_str(), 0700) != 0)
if (access(dirName.c_str(), F_OK) == 0)
{
- strprintf(&dirName, "%s/"DELETED_USERS_DIR"/%s.%lu", storeSettings.GetWorkDir().c_str(), login.c_str(), time(NULL));
+ strprintf(&dirName, "%s/%s/%s.%lu", storeSettings.GetWorkDir().c_str(), DELETED_USERS_DIR, login.c_str(), time(NULL));
strprintf(&dirName1, "%s/%s", storeSettings.GetUsersDir().c_str(), login.c_str());
if (rename(dirName1.c_str(), dirName.c_str()))
{
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::RestoreUserConf(USER_CONF * conf, const string & login) const
+int FILES_STORE::RestoreUserConf(USER_CONF * conf, const std::string & login) const
{
-string fileName;
+std::string fileName;
fileName = storeSettings.GetUsersDir() + "/" + login + "/conf";
if (RestoreUserConf(conf, login, fileName))
{
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::RestoreUserConf(USER_CONF * conf, const string & login, const string & fileName) const
+int FILES_STORE::RestoreUserConf(USER_CONF * conf, const std::string & login, const std::string & fileName) const
{
CONFIGFILE cf(fileName);
int e = cf.Error();
-string str;
+std::string str;
if (e)
{
return -1;
}
-string ipStr;
+std::string ipStr;
cf.ReadString("IP", &ipStr, "?");
-USER_IPS i;
+USER_IPS ips;
try
{
- i = StrToIPS(ipStr);
+ ips = StrToIPS(ipStr);
}
-catch (const string & s)
+catch (const std::string & s)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
errorStr = "User \'" + login + "\' data not read. Parameter IP address. " + s;
printfd(__FILE__, "FILES_STORE::RestoreUserConf - ip read failed for user '%s'\n", login.c_str());
return -1;
}
-conf->ips = i;
+conf->ips = ips;
if (cf.ReadInt("alwaysOnline", &conf->alwaysOnline, 0) != 0)
{
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::RestoreUserStat(USER_STAT * stat, const string & login) const
+int FILES_STORE::RestoreUserStat(USER_STAT * stat, const std::string & login) const
{
-string fileName;
+std::string fileName;
fileName = storeSettings.GetUsersDir() + "/" + login + "/stat";
if (RestoreUserStat(stat, login, fileName))
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::RestoreUserStat(USER_STAT * stat, const string & login, const string & fileName) const
+int FILES_STORE::RestoreUserStat(USER_STAT * stat, const std::string & login, const std::string & fileName) const
{
CONFIGFILE cf(fileName);
if (cf.ReadULongLongInt(s, &traff, 0) != 0)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = "User \'" + login + "\' stat not read. Parameter " + string(s);
+ errorStr = "User \'" + login + "\' stat not read. Parameter " + std::string(s);
printfd(__FILE__, "FILES_STORE::RestoreUserStat - download stat read failed for user '%s'\n", login.c_str());
return -1;
}
if (cf.ReadULongLongInt(s, &traff, 0) != 0)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = "User \'" + login + "\' stat not read. Parameter " + string(s);
+ errorStr = "User \'" + login + "\' stat not read. Parameter " + std::string(s);
printfd(__FILE__, "FILES_STORE::RestoreUserStat - upload stat read failed for user '%s'\n", login.c_str());
return -1;
}
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::SaveUserConf(const USER_CONF & conf, const string & login) const
+int FILES_STORE::SaveUserConf(const USER_CONF & conf, const std::string & login) const
{
-string fileName;
+std::string fileName;
fileName = storeSettings.GetUsersDir() + "/" + login + "/conf";
CONFIGFILE cfstat(fileName, true);
if (e)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = string("User \'") + login + "\' conf not written\n";
+ errorStr = std::string("User \'") + login + "\' conf not written\n";
printfd(__FILE__, "FILES_STORE::SaveUserConf - conf write failed for user '%s'\n", login.c_str());
return -1;
}
}
cfstat.WriteInt("CreditExpire", conf.creditExpire);
-stringstream ipStr;
+std::ostringstream ipStr;
ipStr << conf.ips;
cfstat.WriteString("IP", ipStr.str());
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::SaveUserStat(const USER_STAT & stat, const string & login) const
+int FILES_STORE::SaveUserStat(const USER_STAT & stat, const std::string & login) const
{
char s[22];
-string fileName;
+std::string fileName;
fileName = storeSettings.GetUsersDir() + "/" + login + "/stat";
{
if (e)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = string("User \'") + login + "\' stat not written\n";
+ errorStr = std::string("User \'") + login + "\' stat not written\n";
printfd(__FILE__, "FILES_STORE::SaveUserStat - stat write failed for user '%s'\n", login.c_str());
return -1;
}
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::WriteLogString(const string & str, const string & login) const
+int FILES_STORE::WriteLogString(const std::string & str, const std::string & login) const
{
FILE * f;
time_t tm = time(NULL);
-string fileName;
+std::string fileName;
fileName = storeSettings.GetUsersDir() + "/" + login + "/log";
f = fopen(fileName.c_str(), "at");
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::WriteLog2String(const string & str, const string & login) const
+int FILES_STORE::WriteLog2String(const std::string & str, const std::string & login) const
{
FILE * f;
time_t tm = time(NULL);
-string fileName;
+std::string fileName;
fileName = storeSettings.GetUsersDir() + "/" + login + "/log2";
f = fopen(fileName.c_str(), "at");
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::WriteUserChgLog(const string & login,
- const string & admLogin,
+int FILES_STORE::WriteUserChgLog(const std::string & login,
+ const std::string & admLogin,
uint32_t admIP,
- const string & paramName,
- const string & oldValue,
- const string & newValue,
- const string & message) const
+ const std::string & paramName,
+ const std::string & oldValue,
+ const std::string & newValue,
+ const std::string & message) const
{
-string userLogMsg = "Admin \'" + admLogin + "\', " + inet_ntostring(admIP) + ": \'"
+std::string userLogMsg = "Admin \'" + admLogin + "\', " + inet_ntostring(admIP) + ": \'"
+ paramName + "\' parameter changed from \'" + oldValue +
"\' to \'" + newValue + "\'. " + message;
return WriteLogString(userLogMsg, login);
}
//-----------------------------------------------------------------------------
-int FILES_STORE::WriteUserConnect(const string & login, uint32_t ip) const
+int FILES_STORE::WriteUserConnect(const std::string & login, uint32_t ip) const
{
-string logStr = "Connect, " + inet_ntostring(ip);
+std::string logStr = "Connect, " + inet_ntostring(ip);
if (WriteLogString(logStr, login))
return -1;
return WriteLog2String(logStr, login);
}
//-----------------------------------------------------------------------------
-int FILES_STORE::WriteUserDisconnect(const string & login,
+int FILES_STORE::WriteUserDisconnect(const std::string & login,
const DIR_TRAFF & up,
const DIR_TRAFF & down,
const DIR_TRAFF & sessionUp,
double freeMb,
const std::string & reason) const
{
-stringstream logStr;
+std::ostringstream logStr;
logStr << "Disconnect, "
<< " session upload: \'"
<< sessionUp
return WriteLog2String(logStr.str(), login);
}
//-----------------------------------------------------------------------------
-int FILES_STORE::SaveMonthStat(const USER_STAT & stat, int month, int year, const string & login) const
+int FILES_STORE::SaveMonthStat(const USER_STAT & stat, int month, int year, const std::string & login) const
{
// Classic stats
-string stat1;
+std::string stat1;
strprintf(&stat1,"%s/%s/stat.%d.%02d",
storeSettings.GetUsersDir().c_str(), login.c_str(), year + 1900, month + 1);
}
// New stats
-string stat2;
+std::string stat2;
strprintf(&stat2,"%s/%s/stat2.%d.%02d",
storeSettings.GetUsersDir().c_str(), login.c_str(), year + 1900, month + 1);
return 0;
}
//-----------------------------------------------------------------------------*/
-int FILES_STORE::AddAdmin(const string & login) const
+int FILES_STORE::AddAdmin(const std::string & login) const
{
-string fileName;
+std::string fileName;
strprintf(&fileName, "%s/%s.adm", storeSettings.GetAdminsDir().c_str(), login.c_str());
if (Touch(fileName))
return 0;
}
//-----------------------------------------------------------------------------*/
-int FILES_STORE::DelAdmin(const string & login) const
+int FILES_STORE::DelAdmin(const std::string & login) const
{
-string fileName;
+std::string fileName;
strprintf(&fileName, "%s/%s.adm", storeSettings.GetAdminsDir().c_str(), login.c_str());
if (unlink(fileName.c_str()))
{
char pass[ADM_PASSWD_LEN + 1];
char adminPass[ADM_PASSWD_LEN + 1];
-string fileName;
+std::string fileName;
strprintf(&fileName, "%s/%s.adm", storeSettings.GetAdminsDir().c_str(), ac.login.c_str());
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::RestoreAdmin(ADMIN_CONF * ac, const string & login) const
+int FILES_STORE::RestoreAdmin(ADMIN_CONF * ac, const std::string & login) const
{
-string fileName;
+std::string fileName;
strprintf(&fileName, "%s/%s.adm", storeSettings.GetAdminsDir().c_str(), login.c_str());
CONFIGFILE cf(fileName);
char pass[ADM_PASSWD_LEN + 1];
char passwordE[2 * ADM_PASSWD_LEN + 2];
BLOWFISH_CTX ctx;
-string p;
+std::string p;
if (cf.Error())
{
return -1;
}
-int a;
-
if (cf.ReadString("password", &p, "*"))
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
ac->password = password;
-if (cf.ReadInt("ChgConf", &a, 0) == 0)
+uint16_t a;
+
+if (cf.ReadUShortInt("ChgConf", &a, 0) == 0)
ac->priv.userConf = a;
else
{
return -1;
}
-if (cf.ReadInt("ChgPassword", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgPassword", &a, 0) == 0)
ac->priv.userPasswd = a;
else
{
return -1;
}
-if (cf.ReadInt("ChgStat", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgStat", &a, 0) == 0)
ac->priv.userStat = a;
else
{
return -1;
}
-if (cf.ReadInt("ChgCash", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgCash", &a, 0) == 0)
ac->priv.userCash = a;
else
{
return -1;
}
-if (cf.ReadInt("UsrAddDel", &a, 0) == 0)
+if (cf.ReadUShortInt("UsrAddDel", &a, 0) == 0)
ac->priv.userAddDel = a;
else
{
return -1;
}
-if (cf.ReadInt("ChgAdmin", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgAdmin", &a, 0) == 0)
ac->priv.adminChg = a;
else
{
return -1;
}
-if (cf.ReadInt("ChgTariff", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgTariff", &a, 0) == 0)
ac->priv.tariffChg = a;
else
{
return -1;
}
-if (cf.ReadInt("ChgService", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgService", &a, 0) == 0)
ac->priv.serviceChg = a;
else
ac->priv.serviceChg = 0;
-if (cf.ReadInt("ChgCorp", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgCorp", &a, 0) == 0)
ac->priv.corpChg = a;
else
ac->priv.corpChg = 0;
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::AddTariff(const string & name) const
+int FILES_STORE::AddTariff(const std::string & name) const
{
-string fileName;
+std::string fileName;
strprintf(&fileName, "%s/%s.tf", storeSettings.GetTariffsDir().c_str(), name.c_str());
if (Touch(fileName))
{
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::DelTariff(const string & name) const
+int FILES_STORE::DelTariff(const std::string & name) const
{
-string fileName;
+std::string fileName;
strprintf(&fileName, "%s/%s.tf", storeSettings.GetTariffsDir().c_str(), name.c_str());
if (unlink(fileName.c_str()))
{
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::RestoreTariff(TARIFF_DATA * td, const string & tariffName) const
+int FILES_STORE::RestoreTariff(TARIFF_DATA * td, const std::string & tariffName) const
{
-string fileName = storeSettings.GetTariffsDir() + "/" + tariffName + ".tf";
+std::string fileName = storeSettings.GetTariffsDir() + "/" + tariffName + ".tf";
CONFIGFILE conf(fileName);
-string str;
+std::string str;
td->tariffConf.name = tariffName;
if (conf.Error() != 0)
return -1;
}
-string param;
+std::string param;
for (int i = 0; i<DIR_NUM; i++)
{
strprintf(¶m, "Time%d", i);
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::SaveTariff(const TARIFF_DATA & td, const string & tariffName) const
+int FILES_STORE::SaveTariff(const TARIFF_DATA & td, const std::string & tariffName) const
{
-string fileName = storeSettings.GetTariffsDir() + "/" + tariffName + ".tf";
+std::string fileName = storeSettings.GetTariffsDir() + "/" + tariffName + ".tf";
{
CONFIGFILE cf(fileName, true);
return e;
}
- string param;
+ std::string param;
for (int i = 0; i < DIR_NUM; i++)
{
strprintf(¶m, "PriceDayA%d", i);
strprintf(¶m, "Threshold%d", i);
cf.WriteInt(param, td.dirPrice[i].threshold);
- string s;
+ std::string s;
strprintf(¶m, "Time%d", i);
strprintf(&s, "%0d:%0d-%0d:%0d",
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::WriteDetailedStat(const map<IP_DIR_PAIR, STAT_NODE> & statTree,
+int FILES_STORE::WriteDetailedStat(const std::map<IP_DIR_PAIR, STAT_NODE> & statTree,
time_t lastStat,
- const string & login) const
+ const std::string & login) const
{
char fn[FN_STR_LEN];
char dn[FN_STR_LEN];
if (mkdir(dn, 0700) != 0)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = "Directory \'" + string(dn) + "\' cannot be created.";
+ errorStr = "Directory \'" + std::string(dn) + "\' cannot be created.";
printfd(__FILE__, "FILES_STORE::WriteDetailStat - mkdir failed. Message: '%s'\n", strerror(errno));
return -1;
}
if (mkdir(dn, 0700) != 0)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = "Directory \'" + string(dn) + "\' cannot be created.";
+ errorStr = "Directory \'" + std::string(dn) + "\' cannot be created.";
printfd(__FILE__, "FILES_STORE::WriteDetailStat - mkdir failed. Message: '%s'\n", strerror(errno));
return -1;
}
if (mkdir(dn, 0700) != 0)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = "Directory \'" + string(dn) + "\' cannot be created.";
+ errorStr = "Directory \'" + std::string(dn) + "\' cannot be created.";
printfd(__FILE__, "FILES_STORE::WriteDetailStat - mkdir failed. Message: '%s'\n", strerror(errno));
return -1;
}
if (!statFile)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = "File \'" + string(fn) + "\' cannot be written.";
+ errorStr = "File \'" + std::string(fn) + "\' cannot be written.";
printfd(__FILE__, "FILES_STORE::WriteDetailStat - fopen failed. Message: '%s'\n", strerror(errno));
return -1;
}
h1, m1, s1, h2, m2, s2) < 0)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = string("fprint failed. Message: '") + strerror(errno) + "'";
+ errorStr = std::string("fprint failed. Message: '") + strerror(errno) + "'";
printfd(__FILE__, "FILES_STORE::WriteDetailStat - fprintf failed. Message: '%s'\n", strerror(errno));
fclose(statFile);
return -1;
}
-map<IP_DIR_PAIR, STAT_NODE>::const_iterator stIter;
+std::map<IP_DIR_PAIR, STAT_NODE>::const_iterator stIter;
stIter = statTree.begin();
while (stIter != statTree.end())
{
- string u, d;
+ std::string u, d;
x2str(stIter->second.up, u);
x2str(stIter->second.down, d);
#ifdef TRAFF_STAT_WITH_PORTS
stIter->second.cash) < 0)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = string("fprint failed. Message: '");
+ errorStr = std::string("fprint failed. Message: '");
errorStr += strerror(errno);
errorStr += "'";
printfd(__FILE__, "FILES_STORE::WriteDetailStat - fprintf failed. Message: '%s'\n", strerror(errno));
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::AddMessage(STG_MSG * msg, const string & login) const
+int FILES_STORE::AddMessage(STG_MSG * msg, const std::string & login) const
{
-string fn;
-string dn;
+std::string fn;
+std::string dn;
struct timeval tv;
strprintf(&dn, "%s/%s/messages", storeSettings.GetUsersDir().c_str(), login.c_str());
return EditMessage(*msg, login);
}
//-----------------------------------------------------------------------------
-int FILES_STORE::EditMessage(const STG_MSG & msg, const string & login) const
+int FILES_STORE::EditMessage(const STG_MSG & msg, const std::string & login) const
{
-string fileName;
+std::string fileName;
FILE * msgFile;
strprintf(&fileName, "%s/%s/messages/%lld", storeSettings.GetUsersDir().c_str(), login.c_str(), msg.header.id);
if (access(fileName.c_str(), F_OK) != 0)
{
- string idstr;
+ std::string idstr;
x2str(msg.header.id, idstr);
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
errorStr = "Message for user \'";
if (!res)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = string("fprintf failed. Message: '") + strerror(errno) + "'";
+ errorStr = std::string("fprintf failed. Message: '") + strerror(errno) + "'";
printfd(__FILE__, "FILES_STORE::EditMessage - fprintf failed. Message: '%s'\n", strerror(errno));
fclose(msgFile);
return -1;
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::GetMessage(uint64_t id, STG_MSG * msg, const string & login) const
+int FILES_STORE::GetMessage(uint64_t id, STG_MSG * msg, const std::string & login) const
{
-string fn;
+std::string fn;
strprintf(&fn, "%s/%s/messages/%lld", storeSettings.GetUsersDir().c_str(), login.c_str(), id);
msg->header.id = id;
return ReadMessage(fn, &msg->header, &msg->text);
}
//-----------------------------------------------------------------------------
-int FILES_STORE::DelMessage(uint64_t id, const string & login) const
+int FILES_STORE::DelMessage(uint64_t id, const std::string & login) const
{
-string fn;
+std::string fn;
strprintf(&fn, "%s/%s/messages/%lld", storeSettings.GetUsersDir().c_str(), login.c_str(), id);
return unlink(fn.c_str());
}
//-----------------------------------------------------------------------------
-int FILES_STORE::GetMessageHdrs(vector<STG_MSG_HDR> * hdrsList, const string & login) const
+int FILES_STORE::GetMessageHdrs(std::vector<STG_MSG_HDR> * hdrsList, const std::string & login) const
{
-string dn(storeSettings.GetUsersDir() + "/" + login + "/messages/");
+std::string dn(storeSettings.GetUsersDir() + "/" + login + "/messages/");
if (access(dn.c_str(), F_OK) != 0)
{
return 0;
}
-vector<string> messages;
+std::vector<std::string> messages;
GetFileList(&messages, dn, S_IFREG, "");
for (unsigned i = 0; i < messages.size(); i++)
if (unlink((dn + messages[i]).c_str()))
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = string("unlink failed. Message: '") + strerror(errno) + "'";
+ errorStr = std::string("unlink failed. Message: '") + strerror(errno) + "'";
printfd(__FILE__, "FILES_STORE::GetMessageHdrs - unlink failed. Message: '%s'\n", strerror(errno));
return -1;
}
if (unlink((dn + messages[i]).c_str()))
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
- errorStr = string("unlink failed. Message: '") + strerror(errno) + "'";
+ errorStr = std::string("unlink failed. Message: '") + strerror(errno) + "'";
printfd(__FILE__, "FILES_STORE::GetMessageHdrs - unlink failed. Message: '%s'\n", strerror(errno));
return -1;
}
return 0;
}
//-----------------------------------------------------------------------------
-int FILES_STORE::ReadMessage(const string & fileName,
+int FILES_STORE::ReadMessage(const std::string & fileName,
STG_MSG_HDR * hdr,
- string * text) const
+ std::string * text) const
{
FILE * msgFile;
msgFile = fopen(fileName.c_str(), "rt");
return -1;
}
//-----------------------------------------------------------------------------
-int GetFileList(vector<string> * fileList, const string & directory, mode_t mode, const string & ext)
+int GetFileList(std::vector<std::string> * fileList, const std::string & directory, mode_t mode, const std::string & ext)
{
DIR * d = opendir(directory.c_str());
if (!(strcmp(entry->d_name, ".") && strcmp(entry->d_name, "..")))
continue;
- string str = directory + "/" + string(entry->d_name);
+ std::string str = directory + "/" + std::string(entry->d_name);
struct stat st;
if (stat(str.c_str(), &st))
#include "stg/user_traff.h"
#include "stg/logger.h"
-//-----------------------------------------------------------------------------
-extern "C" STORE * GetStore();
//-----------------------------------------------------------------------------
class FILES_STORE_SETTINGS {
public:
int RemoveDir(const char * path) const;
int Touch(const std::string & path) const;
- mutable string errorStr;
+ mutable std::string errorStr;
std::string version;
FILES_STORE_SETTINGS storeSettings;
MODULE_SETTINGS settings;
#include "stg/plugin_creator.h"
#include "firebird_store.h"
-using namespace std;
-
+namespace
+{
PLUGIN_CREATOR<FIREBIRD_STORE> frsc;
+}
+
+extern "C" STORE * GetStore();
//-----------------------------------------------------------------------------
STORE * GetStore()
{
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::ParseSettings()
{
-vector<PARAM_VALUE>::iterator i;
-string s;
+std::vector<PARAM_VALUE>::iterator i;
+std::string s;
for(i = settings.moduleParams.begin(); i != settings.moduleParams.end(); ++i)
{
s = i->param;
- transform(s.begin(), s.end(), s.begin(), ToLower());
+ std::transform(s.begin(), s.end(), s.begin(), ToLower());
if (s == "server")
{
db_server = *(i->value.begin());
#include <ctime>
#include <string>
#include <vector>
-#include <map>
#include "stg/store.h"
#include "stg/locker.h"
#include "stg/logger.h"
struct ToLower {
- char operator() (char c) const { return std::tolower(c); }
+ char operator() (char c) const { return static_cast<char>(std::tolower(c)); }
};
-extern "C" STORE * GetStore();
-
class FIREBIRD_STORE : public STORE {
public:
FIREBIRD_STORE();
int GetTariffsList(std::vector<std::string> * tariffsList) const;
int AddTariff(const std::string & name) const;
- int DelTariff(const string & name) const;
+ int DelTariff(const std::string & name) const;
int SaveTariff(const TARIFF_DATA & td, const std::string & tariffName) const;
int RestoreTariff(TARIFF_DATA * td, const std::string & tariffName) const;
int AddCorp(const std::string & name) const;
int DelCorp(const std::string & name) const;
- inline void SetSettings(const MODULE_SETTINGS & s) { settings = s; };
+ inline void SetSettings(const MODULE_SETTINGS & s) { settings = s; }
int ParseSettings();
- inline const string & GetStrError() const { return strError; };
+ inline const std::string & GetStrError() const { return strError; }
- inline const string & GetVersion() const { return version; };
+ inline const std::string & GetVersion() const { return version; }
int GetServicesList(std::vector<std::string> * servicesList) const;
int SaveService(const SERVICE_CONF & sc) const;
#include "stg/ibpp.h"
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::GetCorpsList(vector<string> * corpsList) const
+int FIREBIRD_STORE::GetCorpsList(std::vector<std::string> * corpsList) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
IBPP::Transaction tr = IBPP::TransactionFactory(db, IBPP::amRead, til, tlr);
IBPP::Statement st = IBPP::StatementFactory(db, tr);
-string name;
+std::string name;
try
{
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::RestoreCorp(CORP_CONF * cc, const string & name) const
+int FIREBIRD_STORE::RestoreCorp(CORP_CONF * cc, const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::AddCorp(const string & name) const
+int FIREBIRD_STORE::AddCorp(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::DelCorp(const string & name) const
+int FIREBIRD_STORE::DelCorp(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
*
*/
-#include <sstream>
-
#include "firebird_store.h"
#include "stg/ibpp.h"
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::AddMessage(STG_MSG * msg, const string & login) const
+int FIREBIRD_STORE::AddMessage(STG_MSG * msg, const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
}
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::EditMessage(const STG_MSG & msg,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::GetMessage(uint64_t id,
STG_MSG * msg,
- const string &) const
+ const std::string &) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::DelMessage(uint64_t id, const string &) const
+int FIREBIRD_STORE::DelMessage(uint64_t id, const std::string &) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::GetMessageHdrs(vector<STG_MSG_HDR> * hdrsList,
- const string & login) const
+int FIREBIRD_STORE::GetMessageHdrs(std::vector<STG_MSG_HDR> * hdrsList,
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
#include "stg/ibpp.h"
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::GetServicesList(vector<string> * servicesList) const
+int FIREBIRD_STORE::GetServicesList(std::vector<std::string> * servicesList) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
IBPP::Transaction tr = IBPP::TransactionFactory(db, IBPP::amRead, til, tlr);
IBPP::Statement st = IBPP::StatementFactory(db, tr);
-string name;
+std::string name;
try
{
}
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::RestoreService(SERVICE_CONF * sc,
- const string & name) const
+ const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
st->Get(4, sc->cost);
int16_t pd;
st->Get(5, pd);
- sc->payDay = pd;
+ sc->payDay = static_cast<uint8_t>(pd);
}
else
{
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::AddService(const string & name) const
+int FIREBIRD_STORE::AddService(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::DelService(const string & name) const
+int FIREBIRD_STORE::DelService(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
#include "stg/ibpp.h"
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::GetTariffsList(vector<string> * tariffsList) const
+int FIREBIRD_STORE::GetTariffsList(std::vector<std::string> * tariffsList) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
IBPP::Transaction tr = IBPP::TransactionFactory(db, IBPP::amRead, til, tlr);
IBPP::Statement st = IBPP::StatementFactory(db, tr);
-string name;
+std::string name;
try
{
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::AddTariff(const string & name) const
+int FIREBIRD_STORE::AddTariff(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::DelTariff(const string & name) const
+int FIREBIRD_STORE::DelTariff(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
}
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::SaveTariff(const TARIFF_DATA & td,
- const string & tariffName) const
+ const std::string & tariffName) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
}
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::RestoreTariff(TARIFF_DATA * td,
- const string & tariffName) const
+ const std::string & tariffName) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
#include "stg/ibpp.h"
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::GetUsersList(vector<string> * usersList) const
+int FIREBIRD_STORE::GetUsersList(std::vector<std::string> * usersList) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
IBPP::Transaction tr = IBPP::TransactionFactory(db, IBPP::amRead, til, tlr);
IBPP::Statement st = IBPP::StatementFactory(db, tr);
-string name;
+std::string name;
try
{
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::AddUser(const string & name) const
+int FIREBIRD_STORE::AddUser(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::DelUser(const string & login) const
+int FIREBIRD_STORE::DelUser(const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
}
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::SaveUserStat(const USER_STAT & stat,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
}
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::SaveStat(const USER_STAT & stat,
- const string & login,
+ const std::string & login,
int year,
int month) const
{
}
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::SaveUserConf(const USER_CONF & conf,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
int i;
int32_t uid;
IBPP::Timestamp creditExpire;
-vector<string>::const_iterator it;
+std::vector<std::string>::const_iterator it;
try
{
}
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::RestoreUserStat(USER_STAT * stat,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
}
//-----------------------------------------------------------------------------
int FIREBIRD_STORE::RestoreUserConf(USER_CONF * conf,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
int i;
IBPP::Timestamp timestamp;
IP_MASK im;
-string name;
+std::string name;
bool test;
try
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::WriteUserChgLog(const string & login,
- const string & admLogin,
+int FIREBIRD_STORE::WriteUserChgLog(const std::string & login,
+ const std::string & admLogin,
uint32_t admIP,
- const string & paramName,
- const string & oldValue,
- const string & newValue,
- const string & message = "") const
+ const std::string & paramName,
+ const std::string & oldValue,
+ const std::string & newValue,
+ const std::string & message = "") const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
IBPP::Timestamp now;
now.Now();
-string temp = ""; // Composed message for log
+std::string temp = ""; // Composed message for log
try
{
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::WriteUserConnect(const string & login, uint32_t ip) const
+int FIREBIRD_STORE::WriteUserConnect(const std::string & login, uint32_t ip) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::WriteUserDisconnect(const string & login,
+int FIREBIRD_STORE::WriteUserDisconnect(const std::string & login,
const DIR_TRAFF & up,
const DIR_TRAFF & down,
const DIR_TRAFF & sessionUp,
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::WriteDetailedStat(const map<IP_DIR_PAIR, STAT_NODE> & statTree,
+int FIREBIRD_STORE::WriteDetailedStat(const std::map<IP_DIR_PAIR, STAT_NODE> & statTree,
time_t lastStat,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
try
{
tr->Start();
- map<IP_DIR_PAIR, STAT_NODE>::const_iterator it;
+ std::map<IP_DIR_PAIR, STAT_NODE>::const_iterator it;
it = statTree.begin();
st->Prepare("insert into tb_detail_stats \
(till_time, from_time, fk_user, dir_num, \
return 0;
}
//-----------------------------------------------------------------------------
-int FIREBIRD_STORE::SaveMonthStat(const USER_STAT & stat, int month, int year, const string & login) const
+int FIREBIRD_STORE::SaveMonthStat(const USER_STAT & stat, int month, int year, const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
#include <cerrno>
#include <cstdio>
#include <cstdlib>
-#include <string>
#include <algorithm>
#include <mysql.h>
#include "mysql_store.h"
#define adm_enc_passwd "cjeifY8m3"
-char qbuf[4096];
-using namespace std;
+namespace
+{
+char qbuf[4096];
const int pt_mega = 1024 * 1024;
-const string badSyms = "'`";
+const std::string badSyms = "'`";
const char repSym = '\"';
const int RepitTimes = 3;
-int GetInt(const string & str, int * val, int defaultVal)
+template <typename T>
+int GetInt(const std::string & str, T * val, T defaultVal = T())
{
char *res;
- *val = strtol(str.c_str(), &res, 10);
+ *val = static_cast<T>(strtoll(str.c_str(), &res, 10));
if (*res != 0)
{
return 0;
}
-int GetDouble(const string & str, double * val, double defaultVal)
+int GetDouble(const std::string & str, double * val, double defaultVal)
{
char *res;
return 0;
}
-int GetTime(const string & str, time_t * val, time_t defaultVal)
+int GetTime(const std::string & str, time_t * val, time_t defaultVal)
{
char *res;
}
//-----------------------------------------------------------------------------
-string ReplaceStr(string source, const string symlist, const char chgsym)
+std::string ReplaceStr(std::string source, const std::string symlist, const char chgsym)
{
- string::size_type pos=0;
+ std::string::size_type pos=0;
- while( (pos = source.find_first_of(symlist,pos)) != string::npos)
+ while( (pos = source.find_first_of(symlist,pos)) != std::string::npos)
source.replace(pos, 1,1, chgsym);
return source;
}
-int GetULongLongInt(const string & str, uint64_t * val, uint64_t defaultVal)
+int GetULongLongInt(const std::string & str, uint64_t * val, uint64_t defaultVal)
{
char *res;
}
PLUGIN_CREATOR<MYSQL_STORE> msc;
+}
+
+extern "C" STORE * GetStore();
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
{
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE_SETTINGS::ParseParam(const vector<PARAM_VALUE> & moduleParams,
- const string & name, string & result)
+int MYSQL_STORE_SETTINGS::ParseParam(const std::vector<PARAM_VALUE> & moduleParams,
+ const std::string & name, std::string & result)
{
PARAM_VALUE pv;
pv.param = name;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
pvi = find(moduleParams.begin(), moduleParams.end(), pv);
if (pvi == moduleParams.end())
{
settings(),
logger(GetPluginLogger(GetStgLogger(), "store_mysql"))
{
-};
+}
//-----------------------------------------------------------------------------
int MYSQL_STORE::MysqlQuery(const char* sQuery,MYSQL * sock) const
{
{
if(mysql_select_db(sock, storeSettings.GetDBName().c_str()))
{
- string res = "CREATE DATABASE " + storeSettings.GetDBName();
+ std::string res = "CREATE DATABASE " + storeSettings.GetDBName();
if(MysqlQuery(res.c_str(),sock))
{
return ret;
}
//-----------------------------------------------------------------------------
-bool MYSQL_STORE::IsTablePresent(const string & str,MYSQL * sock)
+bool MYSQL_STORE::IsTablePresent(const std::string & str,MYSQL * sock)
{
MYSQL_RES* result;
return -1;
}
-unsigned int num_rows = mysql_num_rows(result);
+my_ulonglong num_rows = mysql_num_rows(result);
if(result)
mysql_free_result(result);
-return (num_rows == 1);
+return num_rows == 1;
}
//-----------------------------------------------------------------------------
int MYSQL_STORE::CheckAllTables(MYSQL * sock)
}
//tariffs-----------------------------------------------------------------------
-string param, res;
+std::string param, res;
if(!IsTablePresent("tariffs",sock))
{
res = "CREATE TABLE tariffs (name VARCHAR(40) DEFAULT '' PRIMARY KEY,";
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
-int MYSQL_STORE::GetAllParams(vector<string> * ParamList,
- const string & table, const string & name) const
+int MYSQL_STORE::GetAllParams(std::vector<std::string> * ParamList,
+ const std::string & table, const std::string & name) const
{
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL * sock=NULL;
-unsigned int num,i;
+my_ulonglong num, i;
ParamList->clear();
num = mysql_num_rows(res);
-for(i=0;i<num;i++)
+for(i = 0; i < num; i++)
{
row = mysql_fetch_row(res);
ParamList->push_back(row[0]);
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::GetUsersList(vector<string> * usersList) const
+int MYSQL_STORE::GetUsersList(std::vector<std::string> * usersList) const
{
if(GetAllParams(usersList, "users", "login"))
return -1;
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::GetAdminsList(vector<string> * adminsList) const
+int MYSQL_STORE::GetAdminsList(std::vector<std::string> * adminsList) const
{
if(GetAllParams(adminsList, "admins", "login"))
return -1;
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::GetTariffsList(vector<string> * tariffsList) const
+int MYSQL_STORE::GetTariffsList(std::vector<std::string> * tariffsList) const
{
if(GetAllParams(tariffsList, "tariffs", "name"))
return -1;
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::AddUser(const string & login) const
+int MYSQL_STORE::AddUser(const std::string & login) const
{
sprintf(qbuf,"INSERT INTO users SET login='%s'", login.c_str());
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::DelUser(const string & login) const
+int MYSQL_STORE::DelUser(const std::string & login) const
{
sprintf(qbuf,"DELETE FROM users WHERE login='%s' LIMIT 1", login.c_str());
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::RestoreUserConf(USER_CONF * conf, const string & login) const
+int MYSQL_STORE::RestoreUserConf(USER_CONF * conf, const std::string & login) const
{
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL * sock;
-string query;
+std::string query;
query = "SELECT login, Password, Passive, Down, DisabledDetailStat, \
AlwaysOnline, Tariff, Address, Phone, Email, Note, \
row = mysql_fetch_row(res);
-string param;
+std::string param;
conf->password = row[1];
return -1;
}
-if (GetInt(row[2],&conf->passive, 0) != 0)
+if (GetInt(row[2],&conf->passive) != 0)
{
mysql_free_result(res);
errorStr = "User \'" + login + "\' data not read. Parameter Passive.";
return -1;
}
-if (GetInt(row[3], &conf->disabled, 0) != 0)
+if (GetInt(row[3], &conf->disabled) != 0)
{
mysql_free_result(res);
errorStr = "User \'" + login + "\' data not read. Parameter Down.";
return -1;
}
-if (GetInt(row[4], &conf->disabledDetailStat, 0) != 0)
+if (GetInt(row[4], &conf->disabledDetailStat) != 0)
{
mysql_free_result(res);
errorStr = "User \'" + login + "\' data not read. Parameter DisabledDetailStat.";
return -1;
}
-if (GetInt(row[5], &conf->alwaysOnline, 0) != 0)
+if (GetInt(row[5], &conf->alwaysOnline) != 0)
{
mysql_free_result(res);
errorStr = "User \'" + login + "\' data not read. Parameter AlwaysOnline.";
GetTime(row[15+USERDATA_NUM], &conf->creditExpire, 0);
-string ipStr = row[16+USERDATA_NUM];
+std::string ipStr = row[16+USERDATA_NUM];
USER_IPS i;
try
{
i = StrToIPS(ipStr);
}
-catch (const string & s)
+catch (const std::string & s)
{
mysql_free_result(res);
errorStr = "User \'" + login + "\' data not read. Parameter IP address. " + s;
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::RestoreUserStat(USER_STAT * stat, const string & login) const
+int MYSQL_STORE::RestoreUserStat(USER_STAT * stat, const std::string & login) const
{
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL * sock;
-string query;
+std::string query;
query = "SELECT ";
if (GetULongLongInt(row[startPos+i*2], &traff, 0) != 0)
{
mysql_free_result(res);
- errorStr = "User \'" + login + "\' stat not read. Parameter " + string(s);
+ errorStr = "User \'" + login + "\' stat not read. Parameter " + std::string(s);
mysql_close(sock);
return -1;
}
if (GetULongLongInt(row[startPos+i*2+1], &traff, 0) != 0)
{
mysql_free_result(res);
- errorStr = "User \'" + login + "\' stat not read. Parameter " + string(s);
+ errorStr = "User \'" + login + "\' stat not read. Parameter " + std::string(s);
mysql_close(sock);
return -1;
}
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::SaveUserConf(const USER_CONF & conf, const string & login) const
+int MYSQL_STORE::SaveUserConf(const USER_CONF & conf, const std::string & login) const
{
-string param;
-string res;
+std::string param;
+std::string res;
strprintf(&res,"UPDATE users SET Password='%s', Passive=%d, Down=%d, DisabledDetailStat = %d, "\
"AlwaysOnline=%d, Tariff='%s', Address='%s', Phone='%s', Email='%s', "\
strprintf(¶m, " CreditExpire=%d,", conf.creditExpire);
res += param;
-stringstream ipStr;
+std::ostringstream ipStr;
ipStr << conf.ips;
strprintf(¶m, " IP='%s'", ipStr.str().c_str());
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::SaveUserStat(const USER_STAT & stat, const string & login) const
+int MYSQL_STORE::SaveUserStat(const USER_STAT & stat, const std::string & login) const
{
-string param;
-string res;
+std::string param;
+std::string res;
res = "UPDATE users SET";
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::WriteLogString(const string & str, const string & login) const
+int MYSQL_STORE::WriteLogString(const std::string & str, const std::string & login) const
{
-string res, tempStr;
+std::string res, tempStr;
time_t t;
tm * lt;
return -1;
}
-unsigned int num_rows = mysql_num_rows(result);
+my_ulonglong num_rows = mysql_num_rows(result);
mysql_free_result(result);
strprintf(&res, "%s -- %s",LogDate(t), str.c_str());
-string send;
+std::string send;
strprintf(&send,"INSERT INTO logs_%02d_%4d SET login='%s', text='%s'",
lt->tm_mon+1, lt->tm_year+1900,
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::WriteUserChgLog(const string & login,
- const string & admLogin,
+int MYSQL_STORE::WriteUserChgLog(const std::string & login,
+ const std::string & admLogin,
uint32_t admIP,
- const string & paramName,
- const string & oldValue,
- const string & newValue,
- const string & message) const
+ const std::string & paramName,
+ const std::string & oldValue,
+ const std::string & newValue,
+ const std::string & message) const
{
-string userLogMsg = "Admin \'" + admLogin + "\', " + inet_ntostring(admIP) + ": \'"
+std::string userLogMsg = "Admin \'" + admLogin + "\', " + inet_ntostring(admIP) + ": \'"
+ paramName + "\' parameter changed from \'" + oldValue +
"\' to \'" + newValue + "\'. " + message;
return WriteLogString(userLogMsg, login);
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::WriteUserConnect(const string & login, uint32_t ip) const
+int MYSQL_STORE::WriteUserConnect(const std::string & login, uint32_t ip) const
{
-string logStr = "Connect, " + inet_ntostring(ip);
+std::string logStr = "Connect, " + inet_ntostring(ip);
return WriteLogString(logStr, login);
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::WriteUserDisconnect(const string & login,
+int MYSQL_STORE::WriteUserDisconnect(const std::string & login,
const DIR_TRAFF & up,
const DIR_TRAFF & down,
const DIR_TRAFF & sessionUp,
double /*freeMb*/,
const std::string & /*reason*/) const
{
-string logStr = "Disconnect, ";
-stringstream sssu;
-stringstream sssd;
-stringstream ssmu;
-stringstream ssmd;
-stringstream sscash;
+std::string logStr = "Disconnect, ";
+std::ostringstream sssu;
+std::ostringstream sssd;
+std::ostringstream ssmu;
+std::ostringstream ssmd;
+std::ostringstream sscash;
ssmu << up;
ssmd << down;
}
//-----------------------------------------------------------------------------
int MYSQL_STORE::SaveMonthStat(const USER_STAT & stat, int month, int year,
- const string & login) const
+ const std::string & login) const
{
-string param, res;
+std::string param, res;
strprintf(&res, "INSERT INTO stat SET login='%s', month=%d, year=%d,",
login.c_str(), month+1, year+1900);
return 0;
}
//-----------------------------------------------------------------------------*/
-int MYSQL_STORE::AddAdmin(const string & login) const
+int MYSQL_STORE::AddAdmin(const std::string & login) const
{
sprintf(qbuf,"INSERT INTO admins SET login='%s'", login.c_str());
return 0;
}
//-----------------------------------------------------------------------------*/
-int MYSQL_STORE::DelAdmin(const string & login) const
+int MYSQL_STORE::DelAdmin(const std::string & login) const
{
sprintf(qbuf,"DELETE FROM admins where login='%s' LIMIT 1", login.c_str());
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::RestoreAdmin(ADMIN_CONF * ac, const string & login) const
+int MYSQL_STORE::RestoreAdmin(ADMIN_CONF * ac, const std::string & login) const
{
char pass[ADM_PASSWD_LEN + 1];
char password[ADM_PASSWD_LEN + 1];
memset(password, 0, sizeof(password));
memset(passwordE, 0, sizeof(passwordE));
-string p;
+std::string p;
MYSQL_RES *res;
MYSQL_ROW row;
MYSQL * sock;
row = mysql_fetch_row(res);
p = row[1];
-int a;
if(p.length() == 0)
{
ac->password = password;
-if (GetInt(row[2], &a, 0) == 0)
+uint16_t a;
+
+if (GetInt(row[2], &a) == 0)
ac->priv.userConf = a;
else
{
return -1;
}
-if (GetInt(row[3], &a, 0) == 0)
+if (GetInt(row[3], &a) == 0)
ac->priv.userPasswd = a;
else
{
return -1;
}
-if (GetInt(row[4], &a, 0) == 0)
+if (GetInt(row[4], &a) == 0)
ac->priv.userStat = a;
else
{
return -1;
}
-if (GetInt(row[5], &a, 0) == 0)
+if (GetInt(row[5], &a) == 0)
ac->priv.userCash = a;
else
{
return -1;
}
-if (GetInt(row[6], &a, 0) == 0)
+if (GetInt(row[6], &a) == 0)
ac->priv.userAddDel = a;
else
{
return -1;
}
-if (GetInt(row[7], &a, 0) == 0)
+if (GetInt(row[7], &a) == 0)
ac->priv.tariffChg = a;
else
{
return -1;
}
-if (GetInt(row[8], &a, 0) == 0)
+if (GetInt(row[8], &a) == 0)
ac->priv.adminChg = a;
else
{
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::AddTariff(const string & name) const
+int MYSQL_STORE::AddTariff(const std::string & name) const
{
sprintf(qbuf,"INSERT INTO tariffs SET name='%s'", name.c_str());
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::DelTariff(const string & name) const
+int MYSQL_STORE::DelTariff(const std::string & name) const
{
sprintf(qbuf,"DELETE FROM tariffs WHERE name='%s' LIMIT 1", name.c_str());
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::RestoreTariff(TARIFF_DATA * td, const string & tariffName) const
+int MYSQL_STORE::RestoreTariff(TARIFF_DATA * td, const std::string & tariffName) const
{
MYSQL_RES *res;
MYSQL_ROW row;
return -1;
}
-string str;
+std::string str;
td->tariffConf.name = tariffName;
row = mysql_fetch_row(res);
-string param;
+std::string param;
for (int i = 0; i<DIR_NUM; i++)
{
strprintf(¶m, "Time%d", i);
td->dirPrice[i].priceNightB /= (1024*1024);
strprintf(¶m, "Threshold%d", i);
- if (GetInt(row[5+i*8], &td->dirPrice[i].threshold, 0) < 0)
+ if (GetInt(row[5+i*8], &td->dirPrice[i].threshold) < 0)
{
mysql_free_result(res);
errorStr = "Cannot read tariff " + tariffName + ". Parameter " + param;
}
strprintf(¶m, "SinglePrice%d", i);
- if (GetInt(row[8+i*8], &td->dirPrice[i].singlePrice, 0) < 0)
+ if (GetInt(row[8+i*8], &td->dirPrice[i].singlePrice) < 0)
{
mysql_free_result(res);
errorStr = "Cannot read tariff " + tariffName + ". Parameter " + param;
}
strprintf(¶m, "NoDiscount%d", i);
- if (GetInt(row[7+i*8], &td->dirPrice[i].noDiscount, 0) < 0)
+ if (GetInt(row[7+i*8], &td->dirPrice[i].noDiscount) < 0)
{
mysql_free_result(res);
errorStr = "Cannot read tariff " + tariffName + ". Parameter " + param;
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::SaveTariff(const TARIFF_DATA & td, const string & tariffName) const
+int MYSQL_STORE::SaveTariff(const TARIFF_DATA & td, const std::string & tariffName) const
{
-string param;
+std::string param;
-string res="UPDATE tariffs SET";
+std::string res="UPDATE tariffs SET";
for (int i = 0; i < DIR_NUM; i++)
{
td.dirPrice[i].threshold);
res += param;
- string s;
+ std::string s;
strprintf(¶m, " Time%d", i);
strprintf(&s, "%0d:%0d-%0d:%0d",
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::WriteDetailedStat(const map<IP_DIR_PAIR, STAT_NODE> & statTree,
+int MYSQL_STORE::WriteDetailedStat(const std::map<IP_DIR_PAIR, STAT_NODE> & statTree,
time_t lastStat,
- const string & login) const
+ const std::string & login) const
{
-string res, stTime, endTime, tempStr;
+std::string res, stTime, endTime, tempStr;
time_t t;
tm * lt;
return -1;
}
-unsigned int num_rows = mysql_num_rows(result);
+my_ulonglong num_rows = mysql_num_rows(result);
mysql_free_result(result);
endTime.c_str()
);
-map<IP_DIR_PAIR, STAT_NODE>::const_iterator stIter;
+std::map<IP_DIR_PAIR, STAT_NODE>::const_iterator stIter;
stIter = statTree.begin();
while (stIter != statTree.end())
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::AddMessage(STG_MSG * msg, const string & login) const
+int MYSQL_STORE::AddMessage(STG_MSG * msg, const std::string & login) const
{
struct timeval tv;
gettimeofday(&tv, NULL);
-msg->header.id = ((long long)tv.tv_sec) * 1000000 + ((long long)tv.tv_usec);
+msg->header.id = static_cast<uint64_t>(tv.tv_sec) * 1000000 + static_cast<uint64_t>(tv.tv_usec);
sprintf(qbuf,"INSERT INTO messages SET login='%s', id=%lld",
login.c_str(),
- (long long)msg->header.id
+ static_cast<long long>(msg->header.id)
);
if(MysqlSetQuery(qbuf))
return EditMessage(*msg, login);
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::EditMessage(const STG_MSG & msg, const string & login) const
+int MYSQL_STORE::EditMessage(const STG_MSG & msg, const std::string & login) const
{
-string res;
+std::string res;
strprintf(&res,"UPDATE messages SET type=%d, lastSendTime=%u, creationTime=%u, "\
"showTime=%u, stgRepeat=%d, repeatPeriod=%u, text='%s' "\
msg.header.repeatPeriod,
(ReplaceStr(msg.text,badSyms,repSym)).c_str(),
login.c_str(),
- (long long)msg.header.id
+ msg.header.id
);
if(MysqlSetQuery(res.c_str()))
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::GetMessage(uint64_t id, STG_MSG * msg, const string & login) const
+int MYSQL_STORE::GetMessage(uint64_t id, STG_MSG * msg, const std::string & login) const
{
MYSQL_RES *res;
MYSQL_ROW row;
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::DelMessage(uint64_t id, const string & login) const
+int MYSQL_STORE::DelMessage(uint64_t id, const std::string & login) const
{
sprintf(qbuf,"DELETE FROM messages WHERE login='%s' AND id=%lld LIMIT 1",
- login.c_str(),(long long)id);
+ login.c_str(), static_cast<long long>(id));
if(MysqlSetQuery(qbuf))
{
return 0;
}
//-----------------------------------------------------------------------------
-int MYSQL_STORE::GetMessageHdrs(vector<STG_MSG_HDR> * hdrsList, const string & login) const
+int MYSQL_STORE::GetMessageHdrs(std::vector<STG_MSG_HDR> * hdrsList, const std::string & login) const
{
MYSQL_RES *res;
MYSQL_ROW row;
return -1;
}
-unsigned int i, num_rows = mysql_num_rows(res);
-long long int unsigned id = 0;
+unsigned int i;
+my_ulonglong num_rows = mysql_num_rows(res);
+uint64_t id = 0;
-for (i=0; i<num_rows; i++)
+for (i = 0; i < num_rows; i++)
{
row = mysql_fetch_row(res);
if (str2x(row[1], id))
#include <mysql/mysql.h>
#include <string>
+#include <vector>
+#include <map>
#include "stg/module_settings.h"
#include "stg/store.h"
#include "stg/user_traff.h"
#include "stg/logger.h"
-using namespace std;
-//-----------------------------------------------------------------------------
-extern "C" STORE * GetStore();
//-----------------------------------------------------------------------------
class MYSQL_STORE_SETTINGS
{
MYSQL_STORE_SETTINGS();
virtual ~MYSQL_STORE_SETTINGS() {}
virtual int ParseSettings(const MODULE_SETTINGS & s);
- virtual const string & GetStrError() const { return errorStr; }
+ virtual const std::string & GetStrError() const { return errorStr; }
- const string & GetDBUser() const { return dbUser; }
- const string & GetDBPassword() const { return dbPass; }
- const string & GetDBHost() const { return dbHost; }
- const string & GetDBName() const { return dbName; }
+ const std::string & GetDBUser() const { return dbUser; }
+ const std::string & GetDBPassword() const { return dbPass; }
+ const std::string & GetDBHost() const { return dbHost; }
+ const std::string & GetDBName() const { return dbName; }
private:
MYSQL_STORE_SETTINGS(const MYSQL_STORE_SETTINGS & rvalue);
const MODULE_SETTINGS * settings;
- int ParseParam(const vector<PARAM_VALUE> & moduleParams,
- const string & name, string & result);
+ int ParseParam(const std::vector<PARAM_VALUE> & moduleParams,
+ const std::string & name, std::string & result);
- string errorStr;
+ std::string errorStr;
- string dbUser;
- string dbPass;
- string dbName;
- string dbHost;
+ std::string dbUser;
+ std::string dbPass;
+ std::string dbName;
+ std::string dbHost;
};
//-----------------------------------------------------------------------------
class MYSQL_STORE: public STORE
public:
MYSQL_STORE();
virtual ~MYSQL_STORE() {}
- virtual const string & GetStrError() const { return errorStr; }
+ virtual const std::string & GetStrError() const { return errorStr; }
//User
- virtual int GetUsersList(vector<string> * usersList) const;
- virtual int AddUser(const string & login) const;
- virtual int DelUser(const string & login) const;
- virtual int SaveUserStat(const USER_STAT & stat, const string & login) const;
- virtual int SaveUserConf(const USER_CONF & conf, const string & login) const;
- virtual int RestoreUserStat(USER_STAT * stat, const string & login) const;
- virtual int RestoreUserConf(USER_CONF * conf, const string & login) const;
- virtual int WriteUserChgLog(const string & login,
- const string & admLogin,
+ virtual int GetUsersList(std::vector<std::string> * usersList) const;
+ virtual int AddUser(const std::string & login) const;
+ virtual int DelUser(const std::string & login) const;
+ virtual int SaveUserStat(const USER_STAT & stat, const std::string & login) const;
+ virtual int SaveUserConf(const USER_CONF & conf, const std::string & login) const;
+ virtual int RestoreUserStat(USER_STAT * stat, const std::string & login) const;
+ virtual int RestoreUserConf(USER_CONF * conf, const std::string & login) const;
+ virtual int WriteUserChgLog(const std::string & login,
+ const std::string & admLogin,
uint32_t admIP,
- const string & paramName,
- const string & oldValue,
- const string & newValue,
- const string & message = "") const;
- virtual int WriteUserConnect(const string & login, uint32_t ip) const;
- virtual int WriteUserDisconnect(const string & login,
+ const std::string & paramName,
+ const std::string & oldValue,
+ const std::string & newValue,
+ const std::string & message = "") const;
+ virtual int WriteUserConnect(const std::string & login, uint32_t ip) const;
+ virtual int WriteUserDisconnect(const std::string & login,
const DIR_TRAFF & up,
const DIR_TRAFF & down,
const DIR_TRAFF & sessionUp,
double freeMb,
const std::string & reason) const;
- virtual int WriteDetailedStat(const map<IP_DIR_PAIR, STAT_NODE> & statTree,
+ virtual int WriteDetailedStat(const std::map<IP_DIR_PAIR, STAT_NODE> & statTree,
time_t lastStat,
- const string & login) const;
+ const std::string & login) const;
- virtual int AddMessage(STG_MSG * msg, const string & login) const;
- virtual int EditMessage(const STG_MSG & msg, const string & login) const;
- virtual int GetMessage(uint64_t id, STG_MSG * msg, const string & login) const;
- virtual int DelMessage(uint64_t id, const string & login) const;
- virtual int GetMessageHdrs(vector<STG_MSG_HDR> * hdrsList, const string & login) const;
+ virtual int AddMessage(STG_MSG * msg, const std::string & login) const;
+ virtual int EditMessage(const STG_MSG & msg, const std::string & login) const;
+ virtual int GetMessage(uint64_t id, STG_MSG * msg, const std::string & login) const;
+ virtual int DelMessage(uint64_t id, const std::string & login) const;
+ virtual int GetMessageHdrs(std::vector<STG_MSG_HDR> * hdrsList, const std::string & login) const;
- virtual int SaveMonthStat(const USER_STAT & stat, int month, int year, const string & login) const;
+ virtual int SaveMonthStat(const USER_STAT & stat, int month, int year, const std::string & login) const;
//Admin
- virtual int GetAdminsList(vector<string> * adminsList) const;
- virtual int AddAdmin(const string & login) const;
- virtual int DelAdmin(const string & login) const;
- virtual int RestoreAdmin(ADMIN_CONF * ac, const string & login) const;
+ virtual int GetAdminsList(std::vector<std::string> * adminsList) const;
+ virtual int AddAdmin(const std::string & login) const;
+ virtual int DelAdmin(const std::string & login) const;
+ virtual int RestoreAdmin(ADMIN_CONF * ac, const std::string & login) const;
virtual int SaveAdmin(const ADMIN_CONF & ac) const;
//Tariff
- virtual int GetTariffsList(vector<string> * tariffsList) const;
- virtual int AddTariff(const string & name) const;
- virtual int DelTariff(const string & name) const;
- virtual int SaveTariff(const TARIFF_DATA & td, const string & tariffName) const;
- virtual int RestoreTariff(TARIFF_DATA * td, const string & tariffName) const;
+ virtual int GetTariffsList(std::vector<std::string> * tariffsList) const;
+ virtual int AddTariff(const std::string & name) const;
+ virtual int DelTariff(const std::string & name) const;
+ virtual int SaveTariff(const TARIFF_DATA & td, const std::string & tariffName) const;
+ virtual int RestoreTariff(TARIFF_DATA * td, const std::string & tariffName) const;
//Corparation
- virtual int GetCorpsList(vector<string> *) const {return 0;};
- virtual int SaveCorp(const CORP_CONF &) const {return 0;};
- virtual int RestoreCorp(CORP_CONF *, const string &) const {return 0;};
- virtual int AddCorp(const string &) const {return 0;};
- virtual int DelCorp(const string &) const {return 0;};
+ virtual int GetCorpsList(std::vector<std::string> *) const {return 0;}
+ virtual int SaveCorp(const CORP_CONF &) const {return 0;}
+ virtual int RestoreCorp(CORP_CONF *, const std::string &) const {return 0;}
+ virtual int AddCorp(const std::string &) const {return 0;}
+ virtual int DelCorp(const std::string &) const {return 0;}
// Services
- virtual int GetServicesList(vector<string> *) const {return 0;};
- virtual int SaveService(const SERVICE_CONF &) const {return 0;};
- virtual int RestoreService(SERVICE_CONF *, const string &) const {return 0;};
- virtual int AddService(const string &) const {return 0;};
- virtual int DelService(const string &) const {return 0;};
+ virtual int GetServicesList(std::vector<std::string> *) const {return 0;}
+ virtual int SaveService(const SERVICE_CONF &) const {return 0;}
+ virtual int RestoreService(SERVICE_CONF *, const std::string &) const {return 0;}
+ virtual int AddService(const std::string &) const {return 0;}
+ virtual int DelService(const std::string &) const {return 0;}
virtual void SetSettings(const MODULE_SETTINGS & s) { settings = s; }
virtual int ParseSettings();
- virtual const string & GetVersion() const { return version; }
+ virtual const std::string & GetVersion() const { return version; }
private:
MYSQL_STORE(const MYSQL_STORE & rvalue);
MYSQL_STORE & operator=(const MYSQL_STORE & rvalue);
- virtual int WriteLogString(const string & str, const string & login) const;
- int GetAllParams(vector<string> * ParamList, const string & table, const string & name) const;
+ virtual int WriteLogString(const std::string & str, const std::string & login) const;
+ int GetAllParams(std::vector<std::string> * ParamList, const std::string & table, const std::string & name) const;
int CheckAllTables(MYSQL * sock);
- bool IsTablePresent(const string & str,MYSQL * sock);
- mutable string errorStr;
+ bool IsTablePresent(const std::string & str,MYSQL * sock);
+ mutable std::string errorStr;
int MysqlQuery(const char* sQuery,MYSQL * sock) const;
int MysqlGetQuery(const char * Query,MYSQL * & sock) const;
int MysqlSetQuery(const char * Query) const;
MYSQL * MysqlConnect() const ;
- string version;
+ std::string version;
MYSQL_STORE_SETTINGS storeSettings;
MODULE_SETTINGS settings;
#include "postgresql_store_utils.h"
#include "postgresql_store.h"
-PLUGIN_CREATOR<POSTGRESQL_STORE> pqStoreeCreator;
+namespace
+{
+PLUGIN_CREATOR<POSTGRESQL_STORE> pgsc;
+}
+
+extern "C" STORE * GetStore();
//-----------------------------------------------------------------------------
STORE * GetStore()
{
-return pqStoreeCreator.GetPlugin();
+return pgsc.GetPlugin();
}
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::ParseSettings()
{
std::vector<PARAM_VALUE>::iterator i;
-string s;
+std::string s;
for(i = settings.moduleParams.begin(); i != settings.moduleParams.end(); ++i)
{
#include <string>
#include <vector>
-#include <map>
#include "stg/store.h"
#include "stg/logger.h"
// Recommended DB version is 6 (support FreeMb logging on disconnects)
#define DB_MIN_VERSION 5
-extern "C" STORE * GetStore();
-
class POSTGRESQL_STORE : public STORE {
public:
POSTGRESQL_STORE();
// Tariffs
int GetTariffsList(std::vector<std::string> * tariffsList) const;
int AddTariff(const std::string & name) const;
- int DelTariff(const string & name) const;
+ int DelTariff(const std::string & name) const;
int SaveTariff(const TARIFF_DATA & td, const std::string & tariffName) const;
int RestoreTariff(TARIFF_DATA * td, const std::string & tariffName) const;
int DelService(const std::string & name) const;
// Settings
- inline void SetSettings(const MODULE_SETTINGS & s) { settings = s; };
+ inline void SetSettings(const MODULE_SETTINGS & s) { settings = s; }
int ParseSettings();
- inline const string & GetStrError() const { return strError; };
- inline const string & GetVersion() const { return versionString; };
+ inline const std::string & GetStrError() const { return strError; }
+ inline const std::string & GetVersion() const { return versionString; }
private:
POSTGRESQL_STORE(const POSTGRESQL_STORE & rvalue);
POSTGRESQL_STORE & operator=(const POSTGRESQL_STORE & rvalue);
int EscapeString(std::string & value) const;
- std::string Int2TS(uint32_t value) const;
- uint32_t TS2Int(const std::string & value) const;
+ std::string Int2TS(time_t value) const;
+ time_t TS2Int(const std::string & value) const;
int SaveStat(const USER_STAT & stat, const std::string & login, int year = 0, int month = 0) const;
PLUGIN_LOGGER logger;
};
-extern const volatile time_t stgTime;
-
#endif //POSTGRESQL_STORE_H
cryptedPass[ADM_PASSWD_LEN] = 0;
Encode12(encodedPass, cryptedPass, ADM_PASSWD_LEN);
-std::string password = encodedPass;
+std::string pass = encodedPass;
std::string login = ac.login;
-if (EscapeString(password))
+if (EscapeString(pass))
{
printfd(__FILE__, "POSTGRESQL_STORE::SaveAdmin(): 'Failed to escape password'\n");
if (RollbackTransaction())
std::stringstream query;
query << "UPDATE tb_admins SET "
- << "passwd = '" << password << "', "
+ << "passwd = '" << pass << "', "
<< "chg_conf = " << ac.priv.userConf << ", "
<< "chg_password = " << ac.priv.userPasswd << ", "
<< "chg_stat = " << ac.priv.userStat << ", "
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::RestoreAdmin(ADMIN_CONF * ac, const string & login) const
+int POSTGRESQL_STORE::RestoreAdmin(ADMIN_CONF * ac, const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "SELECT login, passwd, \
chg_conf, chg_password, chg_stat, \
chg_cash, usr_add_del, chg_tariff, \
return 0;
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::AddAdmin(const string & login) const
+int POSTGRESQL_STORE::AddAdmin(const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "INSERT INTO tb_admins \
(login, passwd, \
chg_conf, chg_password, chg_stat, \
return 0;
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::DelAdmin(const string & login) const
+int POSTGRESQL_STORE::DelAdmin(const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "DELETE FROM tb_admins WHERE login = '" << elogin << "'";
result = PQexec(connection, query.str().c_str());
#include "stg/locker.h"
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::GetCorpsList(vector<string> * corpsList) const
+int POSTGRESQL_STORE::GetCorpsList(std::vector<std::string> * corpsList) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "UPDATE tb_corporations SET "
<< "cash = " << cc.cash
<< "WHERE name = '" << ename << "'";
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::RestoreCorp(CORP_CONF * cc, const string & name) const
+int POSTGRESQL_STORE::RestoreCorp(CORP_CONF * cc, const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "SELECT cash FROM tb_corporations WHERE name = '" << ename << "'";
result = PQexec(connection, query.str().c_str());
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::AddCorp(const string & name) const
+int POSTGRESQL_STORE::AddCorp(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "INSERT INTO tb_corporations \
(name, cash) \
VALUES \
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::DelCorp(const string & name) const
+int POSTGRESQL_STORE::DelCorp(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "DELETE FROM tb_corporations WHERE name = '" << ename << "'";
result = PQexec(connection, query.str().c_str());
#include "stg/message.h"
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::AddMessage(STG_MSG * msg, const string & login) const
+int POSTGRESQL_STORE::AddMessage(STG_MSG * msg, const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "SELECT sp_add_message("
<< "'" << elogin << "', "
<< "CAST(1 AS SMALLINT), " // Here need to be a version, but, it's uninitiated actually
}
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::EditMessage(const STG_MSG & msg,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "UPDATE tb_messages SET "
<< "fk_user = (SELECT pk_user FROM tb_users WHERE name = '" << elogin << "'), "
<< "ver = " << msg.header.ver << ", "
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::GetMessage(uint64_t id,
STG_MSG * msg,
- const string &) const
+ const std::string &) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
}
}
-string login;
+std::string login;
PGresult * result;
if (StartTransaction())
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "SELECT ver, msg_type, last_send_time, \
creation_time, show_time, repeat, \
repeat_period, msg_text \
return -1;
}
-/*std::stringstream tuple;
-
-for (int i = 0; i < 8; ++i)
- {
- tuple << PQgetvalue(result, 0, i) << " ";
- }*/
-
str2x(PQgetvalue(result, 0, 0), msg->header.ver);
str2x(PQgetvalue(result, 0, 1), msg->header.type);
-msg->header.lastSendTime = TS2Int(PQgetvalue(result, 0, 2));
-msg->header.creationTime = TS2Int(PQgetvalue(result, 0, 3));
+msg->header.lastSendTime = static_cast<unsigned int>(TS2Int(PQgetvalue(result, 0, 2)));
+msg->header.creationTime = static_cast<unsigned int>(TS2Int(PQgetvalue(result, 0, 3)));
str2x(PQgetvalue(result, 0, 4), msg->header.showTime);
str2x(PQgetvalue(result, 0, 5), msg->header.repeat);
str2x(PQgetvalue(result, 0, 6), msg->header.repeatPeriod);
PQclear(result);
-/*tuple >> msg->header.ver;
-tuple >> msg->header.type;
-tuple >> msg->header.lastSendTime;
-tuple >> msg->header.creationTime;
-tuple >> msg->header.showTime;
-tuple >> msg->header.repeat;
-tuple >> msg->header.repeatPeriod;
-tuple >> msg->text;*/
-
if (CommitTransaction())
{
printfd(__FILE__, "POSTGRESQL_STORE::GetMessage(): 'Failed to commit transaction'\n");
return 0;
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::DelMessage(uint64_t id, const string &) const
+int POSTGRESQL_STORE::DelMessage(uint64_t id, const std::string &) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "DELETE FROM tb_messages WHERE pk_message = " << id;
result = PQexec(connection, query.str().c_str());
return 0;
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::GetMessageHdrs(vector<STG_MSG_HDR> * hdrsList,
- const string & login) const
+int POSTGRESQL_STORE::GetMessageHdrs(std::vector<STG_MSG_HDR> * hdrsList,
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "SELECT pk_message, ver, msg_type, \
last_send_time, creation_time, show_time, \
repeat, repeat_period \
tuple << PQgetvalue(result, i, 0) << " ";
tuple << PQgetvalue(result, i, 1) << " ";
tuple << PQgetvalue(result, i, 2) << " ";
- header.lastSendTime = TS2Int(PQgetvalue(result, i, 3));
- header.creationTime = TS2Int(PQgetvalue(result, i, 4));
+ header.lastSendTime = static_cast<unsigned int>(TS2Int(PQgetvalue(result, i, 3)));
+ header.creationTime = static_cast<unsigned int>(TS2Int(PQgetvalue(result, i, 4)));
tuple << PQgetvalue(result, i, 5) << " ";
tuple << PQgetvalue(result, i, 6) << " ";
tuple << PQgetvalue(result, i, 7) << " ";
#include "stg/locker.h"
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::GetServicesList(vector<string> * servicesList) const
+int POSTGRESQL_STORE::GetServicesList(std::vector<std::string> * servicesList) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "UPDATE tb_services SET "
<< "comment = '" << ecomment << "', "
<< "cost = " << sc.cost << ", "
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::RestoreService(SERVICE_CONF * sc,
- const string & name) const
+ const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "SELECT comment, cost, pay_day FROM tb_services WHERE name = '" << ename << "'";
result = PQexec(connection, query.str().c_str());
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::AddService(const string & name) const
+int POSTGRESQL_STORE::AddService(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "INSERT INTO tb_services \
(name, comment, cost, pay_day) \
VALUES \
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::DelService(const string & name) const
+int POSTGRESQL_STORE::DelService(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "DELETE FROM tb_services WHERE name = '" << ename << "'";
result = PQexec(connection, query.str().c_str());
#include "stg/locker.h"
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::GetTariffsList(vector<string> * tariffsList) const
+int POSTGRESQL_STORE::GetTariffsList(std::vector<std::string> * tariffsList) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::AddTariff(const string & name) const
+int POSTGRESQL_STORE::AddTariff(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "SELECT sp_add_tariff('" << ename << "', " << DIR_NUM << ")";
result = PQexec(connection, query.str().c_str());
return 0;
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::DelTariff(const string & name) const
+int POSTGRESQL_STORE::DelTariff(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "DELETE FROM tb_tariffs WHERE name = '" << ename << "'";
result = PQexec(connection, query.str().c_str());
}
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::SaveTariff(const TARIFF_DATA & td,
- const string & tariffName) const
+ const std::string & tariffName) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
double pda, pdb, pna, pnb;
int threshold;
-std::stringstream query;
-query << "SELECT pk_tariff FROM tb_tariffs WHERE name = '" << ename << "'";
+ {
+ std::ostringstream query;
+ query << "SELECT pk_tariff FROM tb_tariffs WHERE name = '" << ename << "'";
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_TUPLES_OK)
{
return -1;
}
-std::stringstream tuple;
-tuple << PQgetvalue(result, 0, 0);
+ {
+ std::stringstream tuple;
+ tuple << PQgetvalue(result, 0, 0);
-PQclear(result);
+ PQclear(result);
-tuple >> id;
+ tuple >> id;
+ }
-query.str("");
-query << "UPDATE tb_tariffs SET \
- fee = " << td.tariffConf.fee << ", \
- free = " << td.tariffConf.free << ", \
- passive_cost = " << td.tariffConf.passiveCost << ", \
- traff_type = " << td.tariffConf.traffType << " \
- WHERE pk_tariff = " << id;
+ {
+ std::ostringstream query;
+ query << "UPDATE tb_tariffs SET \
+ fee = " << td.tariffConf.fee << ", \
+ free = " << td.tariffConf.free << ", \
+ passive_cost = " << td.tariffConf.passiveCost << ", \
+ traff_type = " << td.tariffConf.traffType << " \
+ WHERE pk_tariff = " << id;
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_COMMAND_OK)
{
threshold = td.dirPrice[i].threshold;
}
- std::stringstream query;
- query << "UPDATE tb_tariffs_params SET \
- price_day_a = " << pda << ", \
- price_day_b = " << pdb << ", \
- price_night_a = " << pna << ", \
- price_night_b = " << pnb << ", \
- threshold = " << threshold << ", \
- time_day_begins = CAST('" << td.dirPrice[i].hDay
- << ":"
- << td.dirPrice[i].mDay << "' AS TIME), \
- time_day_ends = CAST('" << td.dirPrice[i].hNight
- << ":"
- << td.dirPrice[i].mNight << "' AS TIME) \
- WHERE fk_tariff = " << id << " AND dir_num = " << i;
-
- result = PQexec(connection, query.str().c_str());
+ {
+ std::ostringstream query;
+ query << "UPDATE tb_tariffs_params SET \
+ price_day_a = " << pda << ", \
+ price_day_b = " << pdb << ", \
+ price_night_a = " << pna << ", \
+ price_night_b = " << pnb << ", \
+ threshold = " << threshold << ", \
+ time_day_begins = CAST('" << td.dirPrice[i].hDay
+ << ":"
+ << td.dirPrice[i].mDay << "' AS TIME), \
+ time_day_ends = CAST('" << td.dirPrice[i].hNight
+ << ":"
+ << td.dirPrice[i].mNight << "' AS TIME) \
+ WHERE fk_tariff = " << id << " AND dir_num = " << i;
+
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_COMMAND_OK)
{
}
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::RestoreTariff(TARIFF_DATA * td,
- const string & tariffName) const
+ const std::string & tariffName) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
td->tariffConf.name = tariffName;
-std::stringstream query;
+std::ostringstream query;
query << "SELECT pk_tariff, \
fee, \
free, \
return -1;
}
-std::stringstream tuple;
-tuple << PQgetvalue(result, 0, 0) << " ";
-tuple << PQgetvalue(result, 0, 1) << " ";
-tuple << PQgetvalue(result, 0, 2) << " ";
-tuple << PQgetvalue(result, 0, 3) << " ";
-tuple << PQgetvalue(result, 0, 4) << " ";
-
int id;
-tuple >> id;
-tuple >> td->tariffConf.fee;
-tuple >> td->tariffConf.free;
-tuple >> td->tariffConf.passiveCost;
-tuple >> td->tariffConf.traffType;
+
+ {
+ std::stringstream tuple;
+ tuple << PQgetvalue(result, 0, 0) << " ";
+ tuple << PQgetvalue(result, 0, 1) << " ";
+ tuple << PQgetvalue(result, 0, 2) << " ";
+ tuple << PQgetvalue(result, 0, 3) << " ";
+ tuple << PQgetvalue(result, 0, 4) << " ";
+
+ tuple >> id;
+ tuple >> td->tariffConf.fee;
+ tuple >> td->tariffConf.free;
+ tuple >> td->tariffConf.passiveCost;
+ tuple >> td->tariffConf.traffType;
+ }
PQclear(result);
for (int i = 0; i < std::min(tuples, DIR_NUM); ++i)
{
- std::stringstream tuple;
- tuple << PQgetvalue(result, i, 0) << " ";
- tuple << PQgetvalue(result, i, 1) << " ";
- tuple << PQgetvalue(result, i, 2) << " ";
- tuple << PQgetvalue(result, i, 3) << " ";
- tuple << PQgetvalue(result, i, 4) << " ";
- tuple << PQgetvalue(result, i, 5) << " ";
- tuple << PQgetvalue(result, i, 6) << " ";
- tuple << PQgetvalue(result, i, 7) << " ";
- tuple << PQgetvalue(result, i, 8) << " ";
- tuple << PQgetvalue(result, i, 9) << " ";
-
int dir;
- tuple >> dir;
- tuple >> td->dirPrice[dir].priceDayA;
- td->dirPrice[dir].priceDayA /= 1024 * 1024;
- tuple >> td->dirPrice[dir].priceDayB;
- td->dirPrice[dir].priceDayB /= 1024 * 1024;
- tuple >> td->dirPrice[dir].priceNightA;
- td->dirPrice[dir].priceNightA /= 1024 * 1024;
- tuple >> td->dirPrice[dir].priceNightB;
- td->dirPrice[dir].priceNightB /= 1024 * 1024;
- tuple >> td->dirPrice[dir].threshold;
- tuple >> td->dirPrice[dir].hDay;
- tuple >> td->dirPrice[dir].mDay;
- tuple >> td->dirPrice[dir].hNight;
- tuple >> td->dirPrice[dir].mNight;
+ {
+ std::stringstream tuple;
+ tuple << PQgetvalue(result, i, 0) << " ";
+ tuple << PQgetvalue(result, i, 1) << " ";
+ tuple << PQgetvalue(result, i, 2) << " ";
+ tuple << PQgetvalue(result, i, 3) << " ";
+ tuple << PQgetvalue(result, i, 4) << " ";
+ tuple << PQgetvalue(result, i, 5) << " ";
+ tuple << PQgetvalue(result, i, 6) << " ";
+ tuple << PQgetvalue(result, i, 7) << " ";
+ tuple << PQgetvalue(result, i, 8) << " ";
+ tuple << PQgetvalue(result, i, 9) << " ";
+
+ tuple >> dir;
+ tuple >> td->dirPrice[dir].priceDayA;
+ td->dirPrice[dir].priceDayA /= 1024 * 1024;
+ tuple >> td->dirPrice[dir].priceDayB;
+ td->dirPrice[dir].priceDayB /= 1024 * 1024;
+ tuple >> td->dirPrice[dir].priceNightA;
+ td->dirPrice[dir].priceNightA /= 1024 * 1024;
+ tuple >> td->dirPrice[dir].priceNightB;
+ td->dirPrice[dir].priceNightB /= 1024 * 1024;
+ tuple >> td->dirPrice[dir].threshold;
+ tuple >> td->dirPrice[dir].hDay;
+ tuple >> td->dirPrice[dir].mDay;
+ tuple >> td->dirPrice[dir].hNight;
+ tuple >> td->dirPrice[dir].mNight;
+ }
if (std::fabs(td->dirPrice[dir].priceDayA - td->dirPrice[dir].priceNightA) > 1.0e-3 &&
std::fabs(td->dirPrice[dir].priceDayB - td->dirPrice[dir].priceNightB) > 1.0e-3)
#include "postgresql_store.h"
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::GetUsersList(vector<string> * usersList) const
+int POSTGRESQL_STORE::GetUsersList(std::vector<std::string> * usersList) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::AddUser(const string & name) const
+int POSTGRESQL_STORE::AddUser(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "SELECT sp_add_user('" << elogin << "')";
result = PQexec(connection, query.str().c_str());
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::DelUser(const string & login) const
+int POSTGRESQL_STORE::DelUser(const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "DELETE FROM tb_users WHERE name = '" << elogin << "'";
result = PQexec(connection, query.str().c_str());
}
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::SaveUserStat(const USER_STAT & stat,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
}
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::SaveStat(const USER_STAT & stat,
- const string & login,
+ const std::string & login,
int year,
int month) const
{
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "UPDATE tb_users SET "
"cash = " << stat.cash << ", "
"free_mb = " << stat.freeMb << ", "
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::SaveUserConf(const USER_CONF & conf,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "SELECT pk_user FROM tb_users WHERE name = '" << elogin << "'";
result = PQexec(connection, query.str().c_str());
return -1;
}
-std::stringstream tuple;
-tuple << PQgetvalue(result, 0, 0);
+uint32_t uid;
-PQclear(result);
+ {
+ std::stringstream tuple;
+ tuple << PQgetvalue(result, 0, 0);
-uint32_t uid;
+ PQclear(result);
-tuple >> uid;
+ tuple >> uid;
+ }
std::string eaddress = conf.address;
std::string eemail = conf.email;
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::RestoreUserStat(USER_STAT * stat,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
-query << "SELECT cash, free_mb, "
- "last_activity_time, last_cash_add, "
- "last_cash_add_time, passive_time "
- "FROM tb_users "
- "WHERE name = '" << elogin << "'";
+ {
+ std::ostringstream query;
+ query << "SELECT cash, free_mb, "
+ "last_activity_time, last_cash_add, "
+ "last_cash_add_time, passive_time "
+ "FROM tb_users "
+ "WHERE name = '" << elogin << "'";
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_TUPLES_OK)
{
return -1;
}
-std::stringstream tuple;
-tuple << PQgetvalue(result, 0, 0) << " ";
-tuple << PQgetvalue(result, 0, 1) << " ";
-stat->lastActivityTime = TS2Int(PQgetvalue(result, 0, 2));
-tuple << PQgetvalue(result, 0, 3) << " ";
-stat->lastCashAddTime = TS2Int(PQgetvalue(result, 0, 4));
-tuple << PQgetvalue(result, 0, 5) << " ";
-
-PQclear(result);
+ {
+ std::stringstream tuple;
+ tuple << PQgetvalue(result, 0, 0) << " ";
+ tuple << PQgetvalue(result, 0, 1) << " ";
+ stat->lastActivityTime = TS2Int(PQgetvalue(result, 0, 2));
+ tuple << PQgetvalue(result, 0, 3) << " ";
+ stat->lastCashAddTime = TS2Int(PQgetvalue(result, 0, 4));
+ tuple << PQgetvalue(result, 0, 5) << " ";
-tuple >> stat->cash
- >> stat->freeMb
- >> stat->lastCashAdd
- >> stat->passiveTime;
+ PQclear(result);
-query.str("");
+ tuple >> stat->cash
+ >> stat->freeMb
+ >> stat->lastCashAdd
+ >> stat->passiveTime;
+ }
-query << "SELECT dir_num, upload, download "
- "FROM tb_stats_traffic "
- "WHERE fk_user IN (SELECT pk_user FROM tb_users WHERE name = '" << elogin << "') AND "
- "DATE_TRUNC('month', stats_date) = DATE_TRUNC('month', CAST('" << Int2TS(stgTime) << "' AS TIMESTAMP))";
+ {
+ std::ostringstream query;
+ query << "SELECT dir_num, upload, download "
+ "FROM tb_stats_traffic "
+ "WHERE fk_user IN (SELECT pk_user FROM tb_users WHERE name = '" << elogin << "') AND "
+ "DATE_TRUNC('month', stats_date) = DATE_TRUNC('month', CAST('" << Int2TS(stgTime) << "' AS TIMESTAMP))";
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_TUPLES_OK)
{
//-----------------------------------------------------------------------------
int POSTGRESQL_STORE::RestoreUserConf(USER_CONF * conf,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
-query << "SELECT tb_users.pk_user, tb_users.address, tb_users.always_online, "
- "tb_users.credit, tb_users.credit_expire, tb_users.disabled, "
- "tb_users.disabled_detail_stat, tb_users.email, tb_users.grp, "
- "tb_users.note, tb_users.passive, tb_users.passwd, tb_users.phone, "
- "tb_users.real_name, tf1.name, tf2.name, tb_corporations.name "
- "FROM tb_users LEFT JOIN tb_tariffs AS tf1 "
- "ON tf1.pk_tariff = tb_users.fk_tariff "
- "LEFT JOIN tb_tariffs AS tf2 "
- "ON tf2.pk_tariff = tb_users.fk_tariff_change "
- "LEFT JOIN tb_corporations "
- "ON tb_corporations.pk_corporation = tb_users.fk_corporation "
- "WHERE tb_users.name = '" << elogin << "'";
+ {
+ std::ostringstream query;
+ query << "SELECT tb_users.pk_user, tb_users.address, tb_users.always_online, "
+ "tb_users.credit, tb_users.credit_expire, tb_users.disabled, "
+ "tb_users.disabled_detail_stat, tb_users.email, tb_users.grp, "
+ "tb_users.note, tb_users.passive, tb_users.passwd, tb_users.phone, "
+ "tb_users.real_name, tf1.name, tf2.name, tb_corporations.name "
+ "FROM tb_users LEFT JOIN tb_tariffs AS tf1 "
+ "ON tf1.pk_tariff = tb_users.fk_tariff "
+ "LEFT JOIN tb_tariffs AS tf2 "
+ "ON tf2.pk_tariff = tb_users.fk_tariff_change "
+ "LEFT JOIN tb_corporations "
+ "ON tb_corporations.pk_corporation = tb_users.fk_corporation "
+ "WHERE tb_users.name = '" << elogin << "'";
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_TUPLES_OK)
{
uint32_t uid;
-std::stringstream tuple;
-
-tuple << PQgetvalue(result, 0, 0) << " "; // uid
-conf->address = PQgetvalue(result, 0, 1); // address
-conf->alwaysOnline = !strncmp(PQgetvalue(result, 0, 2), "t", 1);
-tuple << PQgetvalue(result, 0, 3) << " "; // credit
-conf->creditExpire = TS2Int(PQgetvalue(result, 0, 4)); // creditExpire
-conf->disabled = !strncmp(PQgetvalue(result, 0, 5), "t", 1);
-conf->disabledDetailStat = !strncmp(PQgetvalue(result, 0, 6), "t", 1);
-conf->email = PQgetvalue(result, 0, 7); // email
-conf->group = PQgetvalue(result, 0, 8); // group
-conf->note = PQgetvalue(result, 0, 9); // note
-conf->passive = !strncmp(PQgetvalue(result, 0, 10), "t", 1);
-conf->password = PQgetvalue(result, 0, 11); // password
-conf->phone = PQgetvalue(result, 0, 12); // phone
-conf->realName = PQgetvalue(result, 0, 13); // realName
-conf->tariffName = PQgetvalue(result, 0, 14); // tariffName
-conf->nextTariff = PQgetvalue(result, 0, 15); // nextTariff
-conf->corp = PQgetvalue(result, 0, 16); // corp
+ {
+ std::stringstream tuple;
+ tuple << PQgetvalue(result, 0, 0) << " "; // uid
+ conf->address = PQgetvalue(result, 0, 1); // address
+ conf->alwaysOnline = !strncmp(PQgetvalue(result, 0, 2), "t", 1);
+ tuple << PQgetvalue(result, 0, 3) << " "; // credit
+ conf->creditExpire = TS2Int(PQgetvalue(result, 0, 4)); // creditExpire
+ conf->disabled = !strncmp(PQgetvalue(result, 0, 5), "t", 1);
+ conf->disabledDetailStat = !strncmp(PQgetvalue(result, 0, 6), "t", 1);
+ conf->email = PQgetvalue(result, 0, 7); // email
+ conf->group = PQgetvalue(result, 0, 8); // group
+ conf->note = PQgetvalue(result, 0, 9); // note
+ conf->passive = !strncmp(PQgetvalue(result, 0, 10), "t", 1);
+ conf->password = PQgetvalue(result, 0, 11); // password
+ conf->phone = PQgetvalue(result, 0, 12); // phone
+ conf->realName = PQgetvalue(result, 0, 13); // realName
+ conf->tariffName = PQgetvalue(result, 0, 14); // tariffName
+ conf->nextTariff = PQgetvalue(result, 0, 15); // nextTariff
+ conf->corp = PQgetvalue(result, 0, 16); // corp
-PQclear(result);
+ PQclear(result);
-if (conf->tariffName == "")
- conf->tariffName = NO_TARIFF_NAME;
-if (conf->corp == "")
- conf->corp = NO_CORP_NAME;
+ if (conf->tariffName == "")
+ conf->tariffName = NO_TARIFF_NAME;
+ if (conf->corp == "")
+ conf->corp = NO_CORP_NAME;
-tuple >> uid
- >> conf->credit;
+ tuple >> uid
+ >> conf->credit;
+ }
-query.str("");
-query << "SELECT name FROM tb_services "
- "WHERE pk_service IN (SELECT fk_service "
- "FROM tb_users_services "
- "WHERE fk_user = " << uid << ")";
+ {
+ std::ostringstream query;
+ query << "SELECT name FROM tb_services "
+ "WHERE pk_service IN (SELECT fk_service "
+ "FROM tb_users_services "
+ "WHERE fk_user = " << uid << ")";
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_TUPLES_OK)
{
PQclear(result);
-query.str("");
-query << "SELECT num, data "
- "FROM tb_users_data "
- "WHERE fk_user = " << uid;
+ {
+ std::ostringstream query;
+ query << "SELECT num, data "
+ "FROM tb_users_data "
+ "WHERE fk_user = " << uid;
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_TUPLES_OK)
{
PQclear(result);
-query.str("");
-query << "SELECT host(ip), masklen(ip) "
- "FROM tb_allowed_ip "
- "WHERE fk_user = " << uid;
+ {
+ std::ostringstream query;
+ query << "SELECT host(ip), masklen(ip) "
+ "FROM tb_allowed_ip "
+ "WHERE fk_user = " << uid;
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_TUPLES_OK)
{
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::WriteUserChgLog(const string & login,
- const string & admLogin,
+int POSTGRESQL_STORE::WriteUserChgLog(const std::string & login,
+ const std::string & admLogin,
uint32_t admIP,
- const string & paramName,
- const string & oldValue,
- const string & newValue,
- const string & message = "") const
+ const std::string & paramName,
+ const std::string & oldValue,
+ const std::string & newValue,
+ const std::string & message = "") const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
query << "SELECT sp_add_param_log_entry("
"'" << elogin << "', "
"'" << eadminLogin << "', CAST('"
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::WriteUserConnect(const string & login, uint32_t ip) const
+int POSTGRESQL_STORE::WriteUserConnect(const std::string & login, uint32_t ip) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-std::stringstream query;
+std::ostringstream query;
if (version < 6)
{
query << "SELECT sp_add_session_log_entry("
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::WriteUserDisconnect(const string & login,
+int POSTGRESQL_STORE::WriteUserDisconnect(const std::string & login,
const DIR_TRAFF & up,
const DIR_TRAFF & down,
const DIR_TRAFF & sessionUp,
return -1;
}
-std::stringstream query;
-if (version < 6)
{
- // Old database version - no freeMb logging support
- query << "SELECT sp_add_session_log_entry("
- "'" << elogin << "', "
- "CAST('" << Int2TS(stgTime) << "' AS TIMESTAMP), "
- "'d', CAST('0.0.0.0/0' AS INET), "
- << cash << ")";
- }
-else
- {
- query << "SELECT sp_add_session_log_entry("
- "'" << elogin << "', "
- "CAST('" << Int2TS(stgTime) << "' AS TIMESTAMP), "
- "'d', CAST('0.0.0.0/0' AS INET), "
- << cash << ", " << freeMb << ", '" << ereason << "')";
- }
+ std::ostringstream query;
+ if (version < 6)
+ {
+ // Old database version - no freeMb logging support
+ query << "SELECT sp_add_session_log_entry("
+ "'" << elogin << "', "
+ "CAST('" << Int2TS(stgTime) << "' AS TIMESTAMP), "
+ "'d', CAST('0.0.0.0/0' AS INET), "
+ << cash << ")";
+ }
+ else
+ {
+ query << "SELECT sp_add_session_log_entry("
+ "'" << elogin << "', "
+ "CAST('" << Int2TS(stgTime) << "' AS TIMESTAMP), "
+ "'d', CAST('0.0.0.0/0' AS INET), "
+ << cash << ", " << freeMb << ", '" << ereason << "')";
+ }
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_TUPLES_OK)
{
for (int i = 0; i < DIR_NUM; ++i)
{
- std::stringstream query;
+ std::ostringstream query;
query << "INSERT INTO tb_sessions_data "
"(fk_session_log, "
"dir_num, "
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::WriteDetailedStat(const map<IP_DIR_PAIR, STAT_NODE> & statTree,
+int POSTGRESQL_STORE::WriteDetailedStat(const std::map<IP_DIR_PAIR, STAT_NODE> & statTree,
time_t lastStat,
- const string & login) const
+ const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
return -1;
}
-map<IP_DIR_PAIR, STAT_NODE>::const_iterator it;
+std::map<IP_DIR_PAIR, STAT_NODE>::const_iterator it;
time_t currTime = time(NULL);
for (it = statTree.begin(); it != statTree.end(); ++it)
{
- std::stringstream query;
+ std::ostringstream query;
query << "INSERT INTO tb_detail_stats "
"(till_time, from_time, fk_user, "
"dir_num, ip, download, upload, cost) "
}
//-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::SaveMonthStat(const USER_STAT & stat, int month, int year, const string & login) const
+int POSTGRESQL_STORE::SaveMonthStat(const USER_STAT & stat, int month, int year, const std::string & login) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
{
PGresult * result;
-std::stringstream query;
-query << "DELETE FROM tb_users_services WHERE fk_user = " << uid;
+ {
+ std::ostringstream query;
+ query << "DELETE FROM tb_users_services WHERE fk_user = " << uid;
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+
+ if (PQresultStatus(result) != PGRES_COMMAND_OK)
+ {
+ strError = PQresultErrorMessage(result);
+ PQclear(result);
+ printfd(__FILE__, "POSTGRESQL_STORE::SaveUserServices(): '%s'\n", strError.c_str());
+ return -1;
+ }
-if (PQresultStatus(result) != PGRES_COMMAND_OK)
- {
- strError = PQresultErrorMessage(result);
PQclear(result);
- printfd(__FILE__, "POSTGRESQL_STORE::SaveUserServices(): '%s'\n", strError.c_str());
- return -1;
}
-PQclear(result);
-
std::vector<std::string>::const_iterator it;
for (it = services.begin(); it != services.end(); ++it)
return -1;
}
- std::stringstream query;
+ std::ostringstream query;
query << "INSERT INTO tb_users_services "
"(fk_user, fk_service) "
"VALUES "
{
PGresult * result;
-std::stringstream query;
-query << "DELETE FROM tb_allowed_ip WHERE fk_user = " << uid;
+ {
+ std::ostringstream query;
+ query << "DELETE FROM tb_allowed_ip WHERE fk_user = " << uid;
-result = PQexec(connection, query.str().c_str());
+ result = PQexec(connection, query.str().c_str());
+ }
if (PQresultStatus(result) != PGRES_COMMAND_OK)
{
for (int i = 0; i < ips.Count(); ++i)
{
- std::stringstream query;
+ std::ostringstream query;
query << "INSERT INTO tb_allowed_ip "
"(fk_user, ip) "
"VALUES "
PGresult * result;
- std::stringstream query;
+ std::ostringstream query;
query << "SELECT sp_set_user_data("
<< uid << ", "
<< "CAST(" << i << " AS SMALLINT), "
#include "stg/common.h"
#include "postgresql_store.h"
+extern volatile time_t stgTime;
+
int POSTGRESQL_STORE::StartTransaction() const
{
PGresult * result = PQexec(connection, "BEGIN");
return 0;
}
-std::string POSTGRESQL_STORE::Int2TS(uint32_t ts) const
+std::string POSTGRESQL_STORE::Int2TS(time_t ts) const
{
char buf[32];
struct tm brokenTime;
-time_t tt = ts;
brokenTime.tm_wday = 0;
brokenTime.tm_yday = 0;
brokenTime.tm_isdst = 0;
-gmtime_r(&tt, &brokenTime);
+gmtime_r(&ts, &brokenTime);
strftime(buf, 32, "%Y-%m-%d %H:%M:%S", &brokenTime);
return buf;
}
-uint32_t POSTGRESQL_STORE::TS2Int(const std::string & ts) const
+time_t POSTGRESQL_STORE::TS2Int(const std::string & ts) const
{
struct tm brokenTime;
struct ToLower : public std::unary_function<char, char>
{
-char operator() (char c) const { return std::tolower(c); }
+char operator() (char c) const { return static_cast<char>(std::tolower(c)); }
};
#endif
if (!priv->serviceChg)
{
- string s = admin->GetLogStr() + " Add service \'" + service.name + "\'. Access denied.";
+ std::string s = admin->GetLogStr() + " Add service \'" + service.name + "\'. Access denied.";
strError = "Access denied.";
WriteServLog(s.c_str());
return -1;
return -1;
}
//-----------------------------------------------------------------------------
-int SERVICES_IMPL::Del(const string & name, const ADMIN * admin)
+int SERVICES_IMPL::Del(const std::string & name, const ADMIN * admin)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
const PRIV * priv = admin->GetPriv();
if (!priv->serviceChg)
{
- string s = admin->GetLogStr() + " Delete service \'" + name + "\'. Access denied.";
+ std::string s = admin->GetLogStr() + " Delete service \'" + name + "\'. Access denied.";
strError = "Access denied.";
WriteServLog(s.c_str());
return -1;
return -1;
}
-map<int, const_srv_iter>::iterator csi;
+std::map<int, const_srv_iter>::iterator csi;
csi = searchDescriptors.begin();
while (csi != searchDescriptors.end())
{
if (!priv->serviceChg)
{
- string s = admin->GetLogStr() + " Change service \'" + service.name + "\'. Access denied.";
+ std::string s = admin->GetLogStr() + " Change service \'" + service.name + "\'. Access denied.";
strError = "Access denied.";
WriteServLog(s.c_str());
return -1;
bool SERVICES_IMPL::Read()
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-vector<string> servicesList;
+std::vector<std::string> servicesList;
if (store->GetServicesList(&servicesList) < 0)
{
WriteServLog(store->GetStrError().c_str());
return false;
}
//-----------------------------------------------------------------------------
-bool SERVICES_IMPL::Find(const string & name, SERVICE_CONF * service)
+bool SERVICES_IMPL::Find(const std::string & name, SERVICE_CONF * service)
{
assert(service != NULL && "Pointer to service is not null");
return true;
}
//-----------------------------------------------------------------------------
-bool SERVICES_IMPL::Exists(const string & name) const
+bool SERVICES_IMPL::Exists(const std::string & name) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
if (data.empty())
SERVICES_IMPL(const SERVICES_IMPL & rvalue);
SERVICES_IMPL & operator=(const SERVICES_IMPL & rvalue);
- typedef list<SERVICE_CONF>::iterator srv_iter;
- typedef list<SERVICE_CONF>::const_iterator const_srv_iter;
+ typedef std::list<SERVICE_CONF>::iterator srv_iter;
+ typedef std::list<SERVICE_CONF>::const_iterator const_srv_iter;
bool Read();
bool GetFreeMbAllowInet() const { return freeMbAllowInet; }
bool GetDayFeeIsLastDay() const { return dayFeeIsLastDay; }
bool GetWriteFreeMbTraffCost() const
- { return writeFreeMbTraffCost; };
+ { return writeFreeMbTraffCost; }
bool GetShowFeeInCash() const { return showFeeInCash; }
const std::string & GetMonitorDir() const { return monitorDir; }
bool GetMonitoring() const { return monitoring; }
#include "stg/common.h"
+#include "stg_timer.h"
+
+void * StgTimer(void *);
+
static int nonstop;
static pthread_t thrStgTimer;
static bool isTimerRunning = false;
isTimerRunning = false;
if (a == 0)
- if (pthread_create(&thrStgTimer, NULL, StgTimer, NULL))
+ if (pthread_create(&thrStgTimer, NULL, &StgTimer, NULL))
{
isTimerRunning = false;
return -1;
int stgUsleep(unsigned long t)
{
#ifdef STG_TIMER_DEBUG
-struct timespec ts = {(t / TIME_SPEED) / 1000000, ((t / TIME_SPEED) % 1000000) * 1000};
+struct timespec ts = {static_cast<time_t>((t / TIME_SPEED) / 1000000), static_cast<long>(((t / TIME_SPEED) % 1000000) * 1000)};
return nanosleep(&ts, NULL);
#else
-struct timespec ts = {t / 1000000, (t % 1000000) * 1000};
+struct timespec ts = {static_cast<time_t>(t / 1000000), static_cast<long>((t % 1000000) * 1000)};
return nanosleep(&ts, NULL);
#endif
}
#include <ctime>
-extern volatile const time_t stgTime;
+extern volatile time_t stgTime;
int RunStgTimer();
void StopStgTimer();
void WaitTimer();
}
}
//-----------------------------------------------------------------------------
-double TARIFF_IMPL::GetPriceWithoutFreeMb(int dir, int mb, time_t t) const
+double TARIFF_IMPL::GetPriceWithoutFreeMb(int dir, int64_t mb, time_t t) const
{
int interval = Interval(dir, t);
return tariffData.dirPrice[dir].priceNightA;
else
return tariffData.dirPrice[dir].priceDayA;
-
-/*if (tariffData.dirPrice[dir].noDiscount && tariffData.dirPrice[dir].singlePrice)
- {
- return tariffData.dirPrice[dir].priceDayA;
- }
-else
- {
- if (tariffData.dirPrice[dir].noDiscount)
- {
- // Without threshold
- if (interval == TARIFF_DAY)
- return tariffData.dirPrice[dir].priceDayA;
- else
- return tariffData.dirPrice[dir].priceNightA;
- }
-
- if (tariffData.dirPrice[dir].singlePrice)
- {
- // Without day/night
- if (mb < tariffData.dirPrice[dir].threshold)
- return tariffData.dirPrice[dir].priceDayA;
- else
- return tariffData.dirPrice[dir].priceDayB;
- }
-
- if (mb < tariffData.dirPrice[dir].threshold)
- {
- if (interval == TARIFF_DAY)
- return tariffData.dirPrice[dir].priceDayA;
- else
- return tariffData.dirPrice[dir].priceNightA;
- }
- else
- {
- if (interval == TARIFF_DAY)
- return tariffData.dirPrice[dir].priceDayB;
- else
- return tariffData.dirPrice[dir].priceNightB;
- }
- }*/
}
//-----------------------------------------------------------------------------
TARIFF_IMPL()
: TARIFF(),
tariffData()
- {};
+ {}
TARIFF_IMPL(const std::string & name)
: TARIFF(),
tariffData(name)
- {};
+ {}
TARIFF_IMPL(const TARIFF_DATA & td)
: TARIFF(),
tariffData(td)
- {};
+ {}
TARIFF_IMPL(const TARIFF_IMPL & t)
: TARIFF(),
tariffData(t.tariffData)
- {};
- virtual ~TARIFF_IMPL() {};
+ {}
+ virtual ~TARIFF_IMPL() {}
double GetPriceWithTraffType(uint64_t up,
uint64_t down,
private:
TARIFF_DATA tariffData;
- double GetPriceWithoutFreeMb(int dir, int mb, time_t t) const;
+ double GetPriceWithoutFreeMb(int dir, int64_t mb, time_t t) const;
int Interval(int dir, time_t t) const;
};
WriteServLog("%s", store->GetStrError().c_str());
}
-int tariffsNum = tariffsList.size();
+Tariffs::size_type tariffsNum = tariffsList.size();
-for (int i = 0; i < tariffsNum; i++)
+for (Tariffs::size_type i = 0; i < tariffsNum; i++)
{
TARIFF_DATA td;
if (store->RestoreTariff(&td, tariffsList[i]))
assert(tdl != NULL && "Tariffs data list is not null");
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-std::list<TARIFF_IMPL>::const_iterator it = tariffs.begin();
+Tariffs::const_iterator it = tariffs.begin();
for (; it != tariffs.end(); ++it)
{
tdl->push_back(it->GetTariffData());
class TARIFFS_IMPL : public TARIFFS {
public:
+ typedef std::list<TARIFF_IMPL> Tariffs;
+
TARIFFS_IMPL(STORE * store);
virtual ~TARIFFS_IMPL();
- int ReadTariffs ();
+ int ReadTariffs ();
const TARIFF * FindByName(const std::string & name) const;
- const TARIFF * GetNoTariff() const { return &noTariff; };
- size_t Count() const;
- int Del(const std::string & name, const ADMIN * admin);
- int Add(const std::string & name, const ADMIN * admin);
- int Chg(const TARIFF_DATA & td, const ADMIN * admin);
+ const TARIFF * GetNoTariff() const { return &noTariff; }
+ size_t Count() const;
+ int Del(const std::string & name, const ADMIN * admin);
+ int Add(const std::string & name, const ADMIN * admin);
+ int Chg(const TARIFF_DATA & td, const ADMIN * admin);
void AddNotifierAdd(NOTIFIER_BASE<TARIFF_DATA> * notifier);
void DelNotifierAdd(NOTIFIER_BASE<TARIFF_DATA> * notifier);
void AddNotifierDel(NOTIFIER_BASE<TARIFF_DATA> * notifier);
void DelNotifierDel(NOTIFIER_BASE<TARIFF_DATA> * notifier);
- void GetTariffsData(std::list<TARIFF_DATA> * tdl);
+ void GetTariffsData(std::list<TARIFF_DATA> * tdl);
const std::string & GetStrError() const { return strError; }
TARIFFS_IMPL(const TARIFFS_IMPL & rvalue);
TARIFFS_IMPL & operator=(const TARIFFS_IMPL & rvalue);
- std::list<TARIFF_IMPL> tariffs;
+ Tariffs tariffs;
STORE * store;
STG_LOGGER & WriteServLog;
mutable pthread_mutex_t mutex;
if (!running)
return;
-static time_t touchTime = stgTime - MONITOR_TIME_DELAY_SEC;
+time_t touchTime = stgTime - MONITOR_TIME_DELAY_SEC;
if (monitoring && (touchTime + MONITOR_TIME_DELAY_SEC <= stgTime))
{
- static std::string monFile = monitorDir + "/traffcounter_p";
+ std::string monFile = monitorDir + "/traffcounter_p";
printfd(__FILE__, "Monitor=%d file TRAFFCOUNTER %s\n", monitoring, monFile.c_str());
touchTime = stgTime;
TouchFile(monFile.c_str());
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-int oldPacketsSize = packets.size();
-int oldIp2packetsSize = ip2packets.size();
+Packets::size_type oldPacketsSize = packets.size();
+Index::size_type oldIp2packetsSize = ip2packets.size();
pp_iter pi;
pi = packets.begin();
-std::map<RAW_PACKET, PACKET_EXTRA_DATA> newPackets;
+Packets newPackets;
ip2packets.erase(ip2packets.begin(), ip2packets.end());
while (pi != packets.end())
{
rul.proto = 0xff;
rul.dir = 0xff;
- for (size_t i = 0; i < PROTOMAX; i++)
+ for (uint8_t i = 0; i < PROTOMAX; i++)
{
if (strcasecmp(tp, protoName[i]) == 0)
rul.proto = i;
}
- for (size_t i = 0; i < DIR_NUM + 1; i++)
+ for (uint32_t i = 0; i < DIR_NUM + 1; i++)
{
if (td == dirName[i])
rul.dir = i;
{
char addr[50], mask[20], port1[20], port2[20], ports[40];
-int len = strlen(ta);
+size_t len = strlen(ta);
char n = 0;
-int i, p;
+size_t i, p;
memset(addr, 0, sizeof(addr));
for (i = 0; i < len; i++)
{
struct in_addr ipaddr;
char *res;
-msk = strtol(mask, &res, 10);
+msk = static_cast<uint16_t>(strtol(mask, &res, 10));
if (*res != 0)
return true;
-prt1 = strtol(port1, &res, 10);
+prt1 = static_cast<uint16_t>(strtol(port1, &res, 10));
if (*res != 0)
return true;
-prt2 = strtol(port2, &res, 10);
+prt2 = static_cast<uint16_t>(strtol(port2, &res, 10));
if (*res != 0)
return true;
printf("dir=%u \n", static_cast<unsigned>(rule.dir));
}
//-----------------------------------------------------------------------------
-void TRAFFCOUNTER_IMPL::SetMonitorDir(const std::string & monitorDir)
+void TRAFFCOUNTER_IMPL::SetMonitorDir(const std::string & dir)
{
-TRAFFCOUNTER_IMPL::monitorDir = monitorDir;
-monitoring = (monitorDir != "");
+monitorDir = dir;
+monitoring = !monitorDir.empty();
}
//-----------------------------------------------------------------------------
void UnSetUserNotifiers(USER_IMPL * user);
typedef std::list<RULE>::iterator rule_iter;
- typedef std::map<RAW_PACKET, PACKET_EXTRA_DATA>::iterator pp_iter;
- typedef std::multimap<uint32_t, pp_iter>::iterator ip2p_iter;
- typedef std::multimap<uint32_t, pp_iter>::const_iterator ip2p_citer;
std::list<RULE> rules;
- std::map<RAW_PACKET, PACKET_EXTRA_DATA> packets; // Packets tree
+ typedef std::map<RAW_PACKET, PACKET_EXTRA_DATA> Packets;
+ typedef Packets::iterator pp_iter;
+ typedef std::multimap<uint32_t, pp_iter> Index;
+ typedef Index::iterator ip2p_iter;
+ typedef Index::const_iterator ip2p_citer;
- std::multimap<uint32_t, pp_iter> ip2packets; // IP-to-Packet index
+ Packets packets; // Packets tree
+
+ Index ip2packets; // IP-to-Packet index
std::string dirName[DIR_NUM + 1];
pthread_mutex_destroy(&mutex);
}
//-----------------------------------------------------------------------------
-void USER_IMPL::SetLogin(string const & l)
+void USER_IMPL::SetLogin(const std::string & l)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
assert(login.empty() && "Login is already set");
if (!fakeConnect)
{
- string scriptOnConnect = settings->GetScriptsDir() + "/OnConnect";
+ std::string scriptOnConnect = settings->GetScriptsDir() + "/OnConnect";
if (access(scriptOnConnect.c_str(), X_OK) == 0)
{
dirsStr[i] = enabledDirs[i] ? '1' : '0';
}
- string scriptOnConnectParams;
+ std::string scriptOnConnectParams;
strprintf(&scriptOnConnectParams,
"%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"",
scriptOnConnect.c_str(),
if (!fakeDisconnect)
{
- string scriptOnDisonnect = settings->GetScriptsDir() + "/OnDisconnect";
+ std::string scriptOnDisonnect = settings->GetScriptsDir() + "/OnDisconnect";
if (access(scriptOnDisonnect.c_str(), X_OK) == 0)
{
dirsStr[i] = enabledDirs[i] ? '1' : '0';
}
- string scriptOnDisonnectParams;
+ std::string scriptOnDisonnectParams;
strprintf(&scriptOnDisonnectParams,
"%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"",
scriptOnDisonnect.c_str(),
{
//return;
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-cout << "============================================================" << endl;
-cout << "id=" << id << endl;
-cout << "login=" << login << endl;
-cout << "password=" << password << endl;
-cout << "passive=" << passive << endl;
-cout << "disabled=" << disabled << endl;
-cout << "disabledDetailStat=" << disabledDetailStat << endl;
-cout << "alwaysOnline=" << alwaysOnline << endl;
-cout << "tariffName=" << tariffName << endl;
-cout << "address=" << address << endl;
-cout << "phone=" << phone << endl;
-cout << "email=" << email << endl;
-cout << "note=" << note << endl;
-cout << "realName=" <<realName << endl;
-cout << "group=" << group << endl;
-cout << "credit=" << credit << endl;
-cout << "nextTariff=" << nextTariff << endl;
-cout << "userdata0" << userdata0 << endl;
-cout << "userdata1" << userdata1 << endl;
-cout << "creditExpire=" << creditExpire << endl;
-cout << "ips=" << ips << endl;
-cout << "------------------------" << endl;
-cout << "up=" << up << endl;
-cout << "down=" << down << endl;
-cout << "cash=" << cash << endl;
-cout << "freeMb=" << freeMb << endl;
-cout << "lastCashAdd=" << lastCashAdd << endl;
-cout << "lastCashAddTime=" << lastCashAddTime << endl;
-cout << "passiveTime=" << passiveTime << endl;
-cout << "lastActivityTime=" << lastActivityTime << endl;
-cout << "============================================================" << endl;
+std::cout << "============================================================" << std::endl;
+std::cout << "id=" << id << std::endl;
+std::cout << "login=" << login << std::endl;
+std::cout << "password=" << password << std::endl;
+std::cout << "passive=" << passive << std::endl;
+std::cout << "disabled=" << disabled << std::endl;
+std::cout << "disabledDetailStat=" << disabledDetailStat << std::endl;
+std::cout << "alwaysOnline=" << alwaysOnline << std::endl;
+std::cout << "tariffName=" << tariffName << std::endl;
+std::cout << "address=" << address << std::endl;
+std::cout << "phone=" << phone << std::endl;
+std::cout << "email=" << email << std::endl;
+std::cout << "note=" << note << std::endl;
+std::cout << "realName=" <<realName << std::endl;
+std::cout << "group=" << group << std::endl;
+std::cout << "credit=" << credit << std::endl;
+std::cout << "nextTariff=" << nextTariff << std::endl;
+std::cout << "userdata0" << userdata0 << std::endl;
+std::cout << "userdata1" << userdata1 << std::endl;
+std::cout << "creditExpire=" << creditExpire << std::endl;
+std::cout << "ips=" << ips << std::endl;
+std::cout << "------------------------" << std::endl;
+std::cout << "up=" << up << std::endl;
+std::cout << "down=" << down << std::endl;
+std::cout << "cash=" << cash << std::endl;
+std::cout << "freeMb=" << freeMb << std::endl;
+std::cout << "lastCashAdd=" << lastCashAdd << std::endl;
+std::cout << "lastCashAddTime=" << lastCashAddTime << std::endl;
+std::cout << "passiveTime=" << passiveTime << std::endl;
+std::cout << "lastActivityTime=" << lastActivityTime << std::endl;
+std::cout << "============================================================" << std::endl;
}
//-----------------------------------------------------------------------------
void USER_IMPL::Run()
return (cash - tariff->GetFee() >= -credit);
}
//-----------------------------------------------------------------------------
-string USER_IMPL::GetEnabledDirs()
+std::string USER_IMPL::GetEnabledDirs()
{
//STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-string dirs = "";
+std::string dirs = "";
for(int i = 0; i < DIR_NUM; i++)
dirs += enabledDirs[i] ? "1" : "0";
return dirs;
IP_DIR_PAIR idp(ip, dir);
#endif
-map<IP_DIR_PAIR, STAT_NODE>::iterator lb;
+std::map<IP_DIR_PAIR, STAT_NODE>::iterator lb;
lb = traffStat.lower_bound(idp);
if (lb == traffStat.end() || lb->first != idp)
{
traffStat.insert(lb,
- pair<IP_DIR_PAIR, STAT_NODE>(idp,
- STAT_NODE(len, 0, cost)));
+ std::make_pair(idp,
+ STAT_NODE(len, 0, cost)));
}
else
{
IP_DIR_PAIR idp(ip, dir);
#endif
-map<IP_DIR_PAIR, STAT_NODE>::iterator lb;
+std::map<IP_DIR_PAIR, STAT_NODE>::iterator lb;
lb = traffStat.lower_bound(idp);
if (lb == traffStat.end() || lb->first != idp)
{
traffStat.insert(lb,
- pair<IP_DIR_PAIR, STAT_NODE>(idp,
- STAT_NODE(0, len, cost)));
+ std::make_pair(idp,
+ STAT_NODE(0, len, cost)));
}
else
{
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-string scriptOnAdd = settings->GetScriptsDir() + "/OnUserAdd";
+std::string scriptOnAdd = settings->GetScriptsDir() + "/OnUserAdd";
if (access(scriptOnAdd.c_str(), X_OK) == 0)
{
- string scriptOnAddParams;
+ std::string scriptOnAddParams;
strprintf(&scriptOnAddParams,
"%s \"%s\"",
scriptOnAdd.c_str(),
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-string scriptOnDel = settings->GetScriptsDir() + "/OnUserDel";
+std::string scriptOnDel = settings->GetScriptsDir() + "/OnUserDel";
if (access(scriptOnDel.c_str(), X_OK) == 0)
{
- string scriptOnDelParams;
+ std::string scriptOnDelParams;
strprintf(&scriptOnDelParams,
"%s \"%s\"",
scriptOnDel.c_str(),
secMonth += 24 * 3600;
}
-int dt = secMonth - passiveTime;
+time_t dt = secMonth - passiveTime;
if (dt < 0)
dt = 0;
-return double(dt) / (secMonth);
+return static_cast<double>(dt) / secMonth;
}
//-----------------------------------------------------------------------------
void USER_IMPL::SetPassiveTimeAsNewUser()
msg->header.repeat--;
#ifndef DEBUG
//TODO: gcc v. 4.x generate ICE on x86_64
- msg->header.lastSendTime = time(NULL);
+ msg->header.lastSendTime = static_cast<int>(time(NULL));
#else
- msg->header.lastSendTime = stgTime;
+ msg->header.lastSendTime = static_cast<int>(stgTime);
#endif
if (store->AddMessage(msg, login))
{
{
// No lock `cause we are already locked from caller
int ret = -1;
-set<const AUTH*>::iterator it(authorizedBy.begin());
+std::set<const AUTH*>::iterator it(authorizedBy.begin());
while (it != authorizedBy.end())
{
if (!(*it++)->SendMessage(msg, currIP))
{
#ifndef DEBUG
//TODO: gcc v. 4.x generate ICE on x86_64
- msg.header.lastSendTime = time(NULL);
+ msg.header.lastSendTime = static_cast<int>(time(NULL));
#else
- msg.header.lastSendTime = stgTime;
+ msg.header.lastSendTime = static_cast<int>(stgTime);
#endif
msg.header.repeat--;
}
}
//-----------------------------------------------------------------------------
-void CHG_TARIFF_NOTIFIER::Notify(const string &, const string & newTariff)
+void CHG_TARIFF_NOTIFIER::Notify(const std::string &, const std::string & newTariff)
{
if (user->settings->GetReconnectOnTariffChange() && user->connected)
user->Disconnect(false, "Change tariff");
bool GetConnected() const { return connected; }
time_t GetConnectedModificationTime() const { return connected.ModificationTime(); }
- int GetAuthorized() const { return authorizedBy.size(); }
+ int GetAuthorized() const { return static_cast<int>(authorizedBy.size()); }
int Authorize(uint32_t ip, uint32_t enabledDirs, const AUTH * auth);
void Unauthorize(const AUTH * auth);
bool IsAuthorizedBy(const AUTH * auth) const;
const std::string & GetStrError() const { return errorStr; }
- USER_PROPERTIES & GetProperty() { return property; };
- const USER_PROPERTIES & GetProperty() const { return property; };
+ USER_PROPERTIES & GetProperty() { return property; }
+ const USER_PROPERTIES & GetProperty() const { return property; }
void SetDeleted() { deleted = true; }
bool GetDeleted() const { return deleted; }
#include "users_impl.h"
#include "stg_timer.h"
-using namespace std;
-
-extern const volatile time_t stgTime;
+extern volatile time_t stgTime;
//#define USERS_DEBUG 1
pthread_mutex_destroy(&mutex);
}
//-----------------------------------------------------------------------------
-int USERS_IMPL::FindByNameNonLock(const string & login, user_iter * user)
+int USERS_IMPL::FindByNameNonLock(const std::string & login, user_iter * user)
{
-map<string, user_iter>::iterator iter;
+std::map<std::string, user_iter>::iterator iter;
iter = loginIndex.find(login);
if (iter != loginIndex.end())
{
return -1;
}
//-----------------------------------------------------------------------------
-int USERS_IMPL::FindByName(const string & login, USER_PTR * user)
+int USERS_IMPL::FindByName(const std::string & login, USER_PTR * user)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
user_iter u;
return 0;
}
//-----------------------------------------------------------------------------
-bool USERS_IMPL::TariffInUse(const string & tariffName) const
+bool USERS_IMPL::TariffInUse(const std::string & tariffName) const
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-list<USER_IMPL>::const_iterator iter;
+std::list<USER_IMPL>::const_iterator iter;
iter = users.begin();
while (iter != users.end())
{
return false;
}
//-----------------------------------------------------------------------------
-int USERS_IMPL::Add(const string & login, const ADMIN * admin)
+int USERS_IMPL::Add(const std::string & login, const ADMIN * admin)
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
const PRIV * priv = admin->GetPriv();
{
// Fire all "on add" notifiers
- set<NOTIFIER_BASE<USER_PTR> *>::iterator ni = onAddNotifiers.begin();
+ std::set<NOTIFIER_BASE<USER_PTR> *>::iterator ni = onAddNotifiers.begin();
while (ni != onAddNotifiers.end())
{
(*ni)->Notify(&users.front());
{
// Fire all "on add" implementation notifiers
- set<NOTIFIER_BASE<USER_IMPL_PTR> *>::iterator ni = onAddNotifiersImpl.begin();
+ std::set<NOTIFIER_BASE<USER_IMPL_PTR> *>::iterator ni = onAddNotifiersImpl.begin();
while (ni != onAddNotifiersImpl.end())
{
(*ni)->Notify(&users.front());
return 0;
}
//-----------------------------------------------------------------------------
-void USERS_IMPL::Del(const string & login, const ADMIN * admin)
+void USERS_IMPL::Del(const std::string & login, const ADMIN * admin)
{
const PRIV * priv = admin->GetPriv();
user_iter u;
}
{
- set<NOTIFIER_BASE<USER_PTR> *>::iterator ni = onDelNotifiers.begin();
+ std::set<NOTIFIER_BASE<USER_PTR> *>::iterator ni = onDelNotifiers.begin();
while (ni != onDelNotifiers.end())
{
(*ni)->Notify(&(*u));
}
{
- set<NOTIFIER_BASE<USER_IMPL_PTR> *>::iterator ni = onDelNotifiersImpl.begin();
+ std::set<NOTIFIER_BASE<USER_IMPL_PTR> *>::iterator ni = onDelNotifiersImpl.begin();
while (ni != onDelNotifiersImpl.end())
{
(*ni)->Notify(&(*u));
//-----------------------------------------------------------------------------
int USERS_IMPL::ReadUsers()
{
-vector<string> usersList;
+std::vector<std::string> usersList;
usersList.clear();
if (store->GetUsersList(&usersList) < 0)
{
printfd(__FILE__,"Day = %d Min = %d\n", day, min);
time_t touchTime = stgTime - MONITOR_TIME_DELAY_SEC;
-string monFile = us->settings->GetMonitorDir() + "/users_r";
+std::string monFile = us->settings->GetMonitorDir() + "/users_r";
printfd(__FILE__, "Monitor=%d file USERS %s\n", us->settings->GetMonitoring(), monFile.c_str());
us->isRunning = true;
//printfd(__FILE__,"New Minute. old = %02d current = %02d\n", min, t->tm_min);
//printfd(__FILE__,"New Day. old = %2d current = %2d\n", day, t->tm_mday);
- for_each(us->users.begin(), us->users.end(), mem_fun_ref(&USER_IMPL::Run));
+ for_each(us->users.begin(), us->users.end(), std::mem_fun_ref(&USER_IMPL::Run));
tt = stgTime;
localtime_r(&tt, &t);
++ui;
}
-list<USER_TO_DEL>::iterator iter;
+std::list<USER_TO_DEL>::iterator iter;
iter = us->usersToDelete.begin();
while (iter != us->usersToDelete.end())
{
if (t.tm_hour == 23 && t.tm_min == 59)
{
printfd(__FILE__,"MidnightResetSessionStat\n");
- for_each(users.begin(), users.end(), mem_fun_ref(&USER_IMPL::MidnightResetSessionStat));
+ for_each(users.begin(), users.end(), std::mem_fun_ref(&USER_IMPL::MidnightResetSessionStat));
}
if (TimeToWriteDetailStat(t))
int usersCnt = 0;
// ðÉÛÅÍ ÀÚÅÒÏ× ÞÁÓÔÑÍÉ. ÷ ÐÅÒÅÒÙ×ÁÈ ×ÙÚÙ×ÁÅÍ USER::Run
- list<USER_IMPL>::iterator usr = users.begin();
+ std::list<USER_IMPL>::iterator usr = users.begin();
while (usr != users.end())
{
usersCnt++;
usr->WriteDetailStat();
++usr;
if (usersCnt % 10 == 0)
- for_each(users.begin(), users.end(), mem_fun_ref(&USER_IMPL::Run));
+ for_each(users.begin(), users.end(), std::mem_fun_ref(&USER_IMPL::Run));
}
}
if (settings->GetSpreadFee())
{
printfd(__FILE__, "Spread DayFee\n");
- for_each(users.begin(), users.end(), mem_fun_ref(&USER_IMPL::ProcessDayFeeSpread));
+ for_each(users.begin(), users.end(), std::mem_fun_ref(&USER_IMPL::ProcessDayFeeSpread));
}
else
{
if (t.tm_mday == dayFee)
{
printfd(__FILE__, "DayFee\n");
- for_each(users.begin(), users.end(), mem_fun_ref(&USER_IMPL::ProcessDayFee));
+ for_each(users.begin(), users.end(), std::mem_fun_ref(&USER_IMPL::ProcessDayFee));
}
}
if (t1.tm_mday == dayResetTraff)
{
printfd(__FILE__, "ResetTraff\n");
- for_each(users.begin(), users.end(), mem_fun_ref(&USER_IMPL::ProcessNewMonth));
+ for_each(users.begin(), users.end(), std::mem_fun_ref(&USER_IMPL::ProcessNewMonth));
//for_each(users.begin(), users.end(), mem_fun_ref(&USER_IMPL::SetPrepaidTraff));
}
}
}
printfd(__FILE__, "Before USERS::Run()\n");
-for_each(users.begin(), users.end(), mem_fun_ref(&USER_IMPL::Run));
+for_each(users.begin(), users.end(), std::mem_fun_ref(&USER_IMPL::Run));
// 'cause bind2st accepts only constant first param
-for (list<USER_IMPL>::iterator it = users.begin();
+for (std::list<USER_IMPL>::iterator it = users.begin();
it != users.end();
++it)
it->WriteDetailStat(true);
-for_each(users.begin(), users.end(), mem_fun_ref(&USER_IMPL::WriteStat));
+for_each(users.begin(), users.end(), std::mem_fun_ref(&USER_IMPL::WriteStat));
//for_each(users.begin(), users.end(), mem_fun_ref(&USER_IMPL::WriteConf));
printfd(__FILE__, "USERS::Stop()\n");
printfd(__FILE__, "RealDelUser() users to del: %d\n", usersToDelete.size());
-list<USER_TO_DEL>::iterator iter;
+std::list<USER_TO_DEL>::iterator iter;
iter = usersToDelete.begin();
while (iter != usersToDelete.end())
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-const map<uint32_t, user_iter>::iterator it(
+const std::map<uint32_t, user_iter>::iterator it(
ipIndex.lower_bound(ip)
);
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-const map<uint32_t, user_iter>::iterator it(
+const std::map<uint32_t, user_iter>::iterator it(
ipIndex.find(ip)
);
//-----------------------------------------------------------------------------
bool USERS_IMPL::FindByIPIdx(uint32_t ip, user_iter & iter) const
{
-map<uint32_t, user_iter>::const_iterator it(ipIndex.find(ip));
+std::map<uint32_t, user_iter>::const_iterator it(ipIndex.find(ip));
if (it == ipIndex.end())
return false;
iter = it->second;
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
-map<uint32_t, user_iter>::const_iterator it(ipIndex.find(ip));
+std::map<uint32_t, user_iter>::const_iterator it(ipIndex.find(ip));
return it != ipIndex.end();
}
# define INET_ADDRSTRLEN 16
#endif
-using namespace std;
+namespace
+{
+//---------------------------------------------------------------------------
+unsigned char koi2win[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
+ 0xA0, 0xA1, 0xA2, 0xB8, 0xBA, 0xA5, 0xB3, 0xBF,
+ 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xB4, 0xAE, 0xAF,
+ 0xB0, 0xB1, 0xB2, 0xA8, 0xAA, 0xB5, 0xB2, 0xAF,
+ 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xA5, 0xBE, 0xBF,
+ 0xFE, 0xE0, 0xE1, 0xF6, 0xE4, 0xE5, 0xF4, 0xE3,
+ 0xF5, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE,
+ 0xEF, 0xFF, 0xF0, 0xF1, 0xF2, 0xF3, 0xE6, 0xE2,
+ 0xFC, 0xFB, 0xE7, 0xF8, 0xFD, 0xF9, 0xF7, 0xFA,
+ 0xDE, 0xC0, 0xC1, 0xD6, 0xC4, 0xC5, 0xD4, 0xC3,
+ 0xD5, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE,
+ 0xCF, 0xDF, 0xD0, 0xD1, 0xD2, 0xD3, 0xC6, 0xC2,
+ 0xDC, 0xDB, 0xC7, 0xD8, 0xDD, 0xD9, 0xD7, 0xDA};
+
+
+unsigned char win2koi[] = {
+ 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
+ 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
+ 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
+ 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
+ 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
+ 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
+ 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
+ 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
+ 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
+ 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
+ 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
+ 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
+ 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
+ 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
+ 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
+ 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
+ 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
+ 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
+ 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
+ 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xBD, 0xA6, 0xA7,
+ 0xB3, 0xA9, 0xB4, 0xAB, 0xAC, 0xAD, 0xAE, 0xB7,
+ 0xB0, 0xB1, 0xB6, 0xA6, 0xAD, 0xB5, 0xB6, 0xB7,
+ 0xA3, 0xB9, 0xA4, 0xBB, 0xBC, 0xBD, 0xBE, 0xA7,
+ 0xE1, 0xE2, 0xF7, 0xE7, 0xE4, 0xE5, 0xF6, 0xFA,
+ 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0,
+ 0xF2, 0xF3, 0xF4, 0xF5, 0xE6, 0xE8, 0xE3, 0xFE,
+ 0xFB, 0xFD, 0xFF, 0xF9, 0xF8, 0xFC, 0xE0, 0xF1,
+ 0xC1, 0xC2, 0xD7, 0xC7, 0xC4, 0xC5, 0xD6, 0xDA,
+ 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0,
+ 0xD2, 0xD3, 0xD4, 0xD5, 0xC6, 0xC8, 0xC3, 0xDE,
+ 0xDB, 0xDD, 0xDF, 0xD9, 0xD8, 0xDC, 0xC0, 0xD1};
+}
#ifdef WIN32
//-----------------------------------------------------------------------------
return 0;
}
//-----------------------------------------------------------------------------
-int strprintf(string * str, const char * fmt, ...)
+int strprintf(std::string * str, const char * fmt, ...)
{
char buff[1024];
return n;
}
//-----------------------------------------------------------------------------
-const char *IntToKMG(long long a, int stat)
+const char *IntToKMG(int64_t a, int stat)
{
-static int64_t M = 1024*1024;
-static int64_t G = 1024*1024*1024;
+static const double K = 1024;
+static const double M = 1024 * 1024;
+static const double G = 1024 * 1024 * 1024;
static char str[30];
+double value = a;
switch (stat)
{
#endif
break;
case ST_KB:
- sprintf(str, "%.2f kb", double(a)/1024.0);
+ sprintf(str, "%.2f kb", value / K);
break;
case ST_MB:
- sprintf(str, "%.2f Mb", double(a)/(1024.0*1024.0));
+ sprintf(str, "%.2f Mb", value / M);
break;
default:
if (a > G)
{
- sprintf(str, "%.2f Gb", double(a)/double(G));
+ sprintf(str, "%.2f Gb", value / G);
return &str[0];
}
if (a < -G)
{
- sprintf(str, "%.2f Gb", double(a)/double(G));
+ sprintf(str, "%.2f Gb", value / G);
return &str[0];
}
if (a > M)
{
- sprintf(str, "%.2f Mb", double(a)/double(M));
+ sprintf(str, "%.2f Mb", value / M);
return &str[0];
}
if (a < -M)
{
- sprintf(str, "%.2f Mb", double(a)/double(M));
+ sprintf(str, "%.2f Mb", value / M);
return &str[0];
}
- sprintf(str, "%.2f kb", double(a)/1024.0);
+ sprintf(str, "%.2f kb", value / K);
break;
}
return str;
}
//---------------------------------------------------------------------------
-unsigned char koi2win[] = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
- 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
- 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
- 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
- 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
- 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
- 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
- 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
- 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
- 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
- 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
- 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
- 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
- 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
- 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
- 0xA0, 0xA1, 0xA2, 0xB8, 0xBA, 0xA5, 0xB3, 0xBF,
- 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xB4, 0xAE, 0xAF,
- 0xB0, 0xB1, 0xB2, 0xA8, 0xAA, 0xB5, 0xB2, 0xAF,
- 0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xA5, 0xBE, 0xBF,
- 0xFE, 0xE0, 0xE1, 0xF6, 0xE4, 0xE5, 0xF4, 0xE3,
- 0xF5, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE,
- 0xEF, 0xFF, 0xF0, 0xF1, 0xF2, 0xF3, 0xE6, 0xE2,
- 0xFC, 0xFB, 0xE7, 0xF8, 0xFD, 0xF9, 0xF7, 0xFA,
- 0xDE, 0xC0, 0xC1, 0xD6, 0xC4, 0xC5, 0xD4, 0xC3,
- 0xD5, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE,
- 0xCF, 0xDF, 0xD0, 0xD1, 0xD2, 0xD3, 0xC6, 0xC2,
- 0xDC, 0xDB, 0xC7, 0xD8, 0xDD, 0xD9, 0xD7, 0xDA};
-
-
-unsigned char win2koi[] = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
- 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
- 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
- 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
- 0x48, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x4E, 0x4F,
- 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
- 0x58, 0x59, 0x5A, 0x5B, 0x5C, 0x5D, 0x5E, 0x5F,
- 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
- 0x68, 0x69, 0x6A, 0x6B, 0x6C, 0x6D, 0x6E, 0x6F,
- 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
- 0x78, 0x79, 0x7A, 0x7B, 0x7C, 0x7D, 0x7E, 0x7F,
- 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
- 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F,
- 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
- 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F,
- 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xBD, 0xA6, 0xA7,
- 0xB3, 0xA9, 0xB4, 0xAB, 0xAC, 0xAD, 0xAE, 0xB7,
- 0xB0, 0xB1, 0xB6, 0xA6, 0xAD, 0xB5, 0xB6, 0xB7,
- 0xA3, 0xB9, 0xA4, 0xBB, 0xBC, 0xBD, 0xBE, 0xA7,
- 0xE1, 0xE2, 0xF7, 0xE7, 0xE4, 0xE5, 0xF6, 0xFA,
- 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0,
- 0xF2, 0xF3, 0xF4, 0xF5, 0xE6, 0xE8, 0xE3, 0xFE,
- 0xFB, 0xFD, 0xFF, 0xF9, 0xF8, 0xFC, 0xE0, 0xF1,
- 0xC1, 0xC2, 0xD7, 0xC7, 0xC4, 0xC5, 0xD6, 0xDA,
- 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0,
- 0xD2, 0xD3, 0xD4, 0xD5, 0xC6, 0xC8, 0xC3, 0xDE,
- 0xDB, 0xDD, 0xDF, 0xD9, 0xD8, 0xDC, 0xC0, 0xD1};
-//---------------------------------------------------------------------------
void KOIToWin(const char * s1, char * s2, int l)
{
unsigned char t;
}
}
//---------------------------------------------------------------------------
-void KOIToWin(const string & s1, string * s2)
+void KOIToWin(const std::string & s1, std::string * s2)
{
s2->erase(s2->begin(), s2->end());
unsigned char t;
}
}
//---------------------------------------------------------------------------
-void WinToKOI(const string & s1, string * s2)
+void WinToKOI(const std::string & s1, std::string * s2)
{
s2->erase(s2->begin(), s2->end());
unsigned char t;
}
}
//---------------------------------------------------------------------------
-void Encode12str(string & dst, const string & src)
+void Encode12str(std::string & dst, const std::string & src)
{
dst.erase(dst.begin(), dst.end());
for (size_t i = 0; i < src.length(); i++)
c1 -= 'a';
c2 -= 'a';
- dst.push_back(c1 + (c2 << 4));
+ dst.push_back(static_cast<char>(c1 + (c2 << 4)));
}
}
//---------------------------------------------------------------------------
c1 -= 'a';
c2 -= 'a';
- dst[i] = c1 + (c2 << 4);
+ dst[i] = static_cast<char>(c1 + (c2 << 4));
}
dst[strlen(src) / 2] = 0;
}
return htonl(0xFFffFFff << (32 - msk));
}
//---------------------------------------------------------------------------
-void TouchFile(const string & fileName)
+void TouchFile(const std::string & fileName)
{
FILE * f = fopen(fileName.c_str(), "w");
if (f)
#endif //WIN32
void SwapBytes(uint16_t & value)
{
- value = (value >> 8) |
- (value << 8);
+ value = static_cast<uint16_t>((value >> 8) |
+ (value << 8));
}
//---------------------------------------------------------------------------
void SwapBytes(uint32_t & value)
{
- value = (value >> 24) |
- ((value << 8) & 0x00FF0000L)|
- ((value >> 8) & 0x0000FF00L)|
- (value << 24);
+ value = static_cast<uint32_t>((value >> 24) |
+ ((value << 8) & 0x00FF0000L) |
+ ((value >> 8) & 0x0000FF00L) |
+ (value << 24));
}
//---------------------------------------------------------------------------
void SwapBytes(uint64_t & value)
{
- value = (value >> 56) |
- ((value << 40) & 0x00FF000000000000LL) |
- ((value << 24) & 0x0000FF0000000000LL) |
- ((value << 8) & 0x000000FF00000000LL) |
- ((value >> 8) & 0x00000000FF000000LL) |
- ((value >> 24) & 0x0000000000FF0000LL) |
- ((value >> 40) & 0x000000000000FF00LL) |
- (value << 56);
+ value = static_cast<uint64_t>((value >> 56) |
+ ((value << 40) & 0x00FF000000000000LL) |
+ ((value << 24) & 0x0000FF0000000000LL) |
+ ((value << 8) & 0x000000FF00000000LL) |
+ ((value >> 8) & 0x00000000FF000000LL) |
+ ((value >> 24) & 0x0000000000FF0000LL) |
+ ((value >> 40) & 0x000000000000FF00LL) |
+ (value << 56));
}
//---------------------------------------------------------------------------
void SwapBytes(int16_t & value)
value = temp;
}
//---------------------------------------------------------------------------
-int str2x(const std::string & str, int & x)
+int str2x(const std::string & str, int32_t & x)
{
-x = strtol(str.c_str(), NULL, 10);
+x = static_cast<int32_t>(strtol(str.c_str(), NULL, 10));
if (errno == ERANGE)
return -1;
return 0;
}
//---------------------------------------------------------------------------
-int str2x(const std::string & str, unsigned & x)
+int str2x(const std::string & str, uint32_t & x)
{
-x = strtoul(str.c_str(), NULL, 10);
-
-if (errno == ERANGE)
- return -1;
-
-return 0;
-}
-//---------------------------------------------------------------------------
-int str2x(const std::string & str, long & x)
-{
-x = strtol(str.c_str(), NULL, 10);
-
-if (errno == ERANGE)
- return -1;
-
-return 0;
-}
-//---------------------------------------------------------------------------
-int str2x(const std::string & str, unsigned long & x)
-{
-x = strtoul(str.c_str(), NULL, 10);
+x = static_cast<uint32_t>(strtoul(str.c_str(), NULL, 10));
if (errno == ERANGE)
return -1;
}
#ifndef WIN32
//---------------------------------------------------------------------------
-int str2x(const std::string & str, long long & x)
+int str2x(const std::string & str, int64_t & x)
{
x = strtoll(str.c_str(), NULL, 10);
return 0;
}
//---------------------------------------------------------------------------
-int str2x(const std::string & str, unsigned long long & x)
+int str2x(const std::string & str, uint64_t & x)
{
x = strtoull(str.c_str(), NULL, 10);
}
#endif
//---------------------------------------------------------------------------
-const std::string & x2str(unsigned x, std::string & s)
-{
-return unsigned2str(x, s);
-}
-//---------------------------------------------------------------------------
-const std::string & x2str(unsigned long x, std::string & s)
+const std::string & x2str(uint32_t x, std::string & s)
{
return unsigned2str(x, s);
}
//---------------------------------------------------------------------------
-const std::string & x2str(unsigned long long x, std::string & s)
+const std::string & x2str(uint64_t x, std::string & s)
{
return unsigned2str(x, s);
}
return 0;
}
-int ParseUnsigned(const string & str, unsigned * val)
+int ParseUnsigned(const std::string & str, unsigned * val)
{
if (str2x<unsigned>(str, *val))
return -1;
return 0;
}
-int ParseIntInRange(const string & str, int min, int max, int * val)
+int ParseIntInRange(const std::string & str, int min, int max, int * val)
{
if (ParseInt(str, val) != 0)
return -1;
return 0;
}
-int ParseUnsignedInRange(const string & str, unsigned min,
+int ParseUnsignedInRange(const std::string & str, unsigned min,
unsigned max, unsigned * val)
{
if (ParseUnsigned(str, val) != 0)
#define ST_MB 3
//-----------------------------------------------------------------------------
-const char * IntToKMG(long long a, int statType = ST_F);
+const char * IntToKMG(int64_t a, int statType = ST_F);
const char * LogDate(time_t t);
int ParesTimeStat(const char * str);
int IsTimeStat(struct tm * t, int statTime);
return s;
}
//-----------------------------------------------------------------------------
-int str2x(const std::string & str, int & x);
-int str2x(const std::string & str, unsigned & x);
-int str2x(const std::string & str, long & x);
-int str2x(const std::string & str, unsigned long & x);
+int str2x(const std::string & str, int32_t & x);
+int str2x(const std::string & str, uint32_t & x);
#ifndef WIN32
-int str2x(const std::string & str, long long & x);
-int str2x(const std::string & str, unsigned long long & x);
+int str2x(const std::string & str, int64_t & x);
+int str2x(const std::string & str, uint64_t & x);
#endif
//-----------------------------------------------------------------------------
-const std::string & x2str(unsigned x, std::string & s);
-const std::string & x2str(unsigned long x, std::string & s);
-const std::string & x2str(unsigned long long x, std::string & s);
+const std::string & x2str(uint32_t x, std::string & s);
+const std::string & x2str(uint64_t x, std::string & s);
//-----------------------------------------------------------------------------
char * stg_strptime(const char *, const char *, struct tm *);
time_t stg_timegm(struct tm *);
#define _XOPEN_SOURCE
#include <time.h>
+#include "stg/common.h"
+
char * stg_strptime(const char * a, const char * b, struct tm * tm)
{
return strptime(a, b, tm);
{
return TrimR(TrimL(val));
}
-//---------------------------------------------------------------------------
}
+//---------------------------------------------------------------------------
+} // namespace anonymous
//---------------------------------------------------------------------------
bool StringCaseCmp(const std::string & str1, const std::string & str2)
return;
}
+<<<<<<< Updated upstream
std::string parameter = Trim(line.substr(0, pos));
std::string value = Trim(line.substr(pos + 1));
+=======
+ std::string parameter = line.substr(0, pos);
+ std::string value = line.substr(pos + 1);
+>>>>>>> Stashed changes
param_val[parameter] = value;
}
}
if (it != param_val.end())
{
char *res;
- *val = strtol(it->second.c_str(), &res, 10);
+ *val = static_cast<int>(strtol(it->second.c_str(), &res, 10));
if (*res != 0)
{
*val = defaultVal; //Error!
if (it != param_val.end())
{
char *res;
- *val = strtoul(it->second.c_str(), &res, 10);
+ *val = static_cast<unsigned int>(strtoul(it->second.c_str(), &res, 10));
if (*res != 0)
{
*val = defaultVal; //Error!
int ReadDouble(const std::string & param, double * val, double defaultVal) const;
void WriteString(const std::string & param, const char * val) { return WriteString(param, std::string(val)); }
- void WriteString(const std::string & param, const std::string & val);
void WriteInt(const std::string & param, int64_t val);
void WriteDouble(const std::string & param, double val);
DOTCONFDocument(CaseSensitive caseSensitivity = CASESENSITIVE);
virtual ~DOTCONFDocument();
- void setErrorCallback(DOTCONFCallback _callback, void * _data) { errorCallback = _callback; errorCallbackData = _data; };
+ void setErrorCallback(DOTCONFCallback _callback, void * _data) { errorCallback = _callback; errorCallbackData = _data; }
int setContent(const char * _fileName);
#ifdef IBPP_WINDOWS\r
mHandle = 0;\r
#endif\r
- };\r
+ }\r
};\r
\r
extern GDS gds;\r
\r
IBS status;\r
unsigned short bytesread;\r
- int result = (*gds.Call()->m_get_segment)(status.Self(), &mHandle, &bytesread,\r
+ ISC_STATUS result = (*gds.Call()->m_get_segment)(status.Self(), &mHandle, &bytesread,\r
(unsigned short)size, (char*)buffer);\r
if (result == isc_segstr_eof) return 0; // Fin du blob\r
if (result != isc_segment && status.Errors())\r
{\r
status.Reset();\r
unsigned short bytesread;\r
- int result = (*gds.Call()->m_get_segment)(status.Self(), &mHandle,\r
+ ISC_STATUS result = (*gds.Call()->m_get_segment)(status.Self(), &mHandle,\r
&bytesread, (unsigned short)blklen,\r
const_cast<char*>(data.data()+pos));\r
if (result == isc_segstr_eof) break; // End of blob\r
#ifdef ISC_INT64_DEFINED\r
#undef ISC_INT64_DEFINED\r
#else\r
-typedef long long int ISC_INT64;\r
-typedef unsigned long long int ISC_UINT64;\r
+//typedef long long int ISC_INT64;\r
+//typedef unsigned long long int ISC_UINT64;\r
+typedef int64_t ISC_INT64;\r
+typedef uint64_t ISC_UINT64;\r
#endif\r
\r
// Nickolay: it is easier to assume that integer is at least 32-bit.\r
int mDate; // The date : 1 == 1 Jan 1900\r
\r
public:\r
- void Clear() { mDate = MinDate - 1; };\r
+ void Clear() { mDate = MinDate - 1; }\r
void Today();\r
void SetDate(int year, int month, int day);\r
void SetDate(int dt);\r
void StartOfMonth();\r
void EndOfMonth();\r
\r
- Date() { Clear(); };\r
+ Date() { Clear(); }\r
Date(int dt) { SetDate(dt); }\r
Date(int year, int month, int day);\r
Date(const Date&); // Copy Constructor\r
bool operator<(const Date& rv) const { return mDate < rv.GetDate(); }\r
bool operator>(const Date& rv) const { return mDate > rv.GetDate(); }\r
\r
- virtual ~Date() { };\r
+ virtual ~Date() { }\r
};\r
\r
/* Class Time represent purely a Time. It is usefull in interactions\r
bool operator<(const Time& rv) const { return mTime < rv.GetTime(); }\r
bool operator>(const Time& rv) const { return mTime > rv.GetTime(); }\r
\r
- virtual ~Time() { };\r
+ virtual ~Time() { }\r
};\r
\r
/* Class Timestamp represent a date AND a time. It is usefull in\r
User& operator=(const User& r) { copyfrom(r); return *this; }\r
User(const User& r) { copyfrom(r); }\r
User() : userid(0), groupid(0) { }\r
- ~User() { };\r
+ ~User() { }\r
};\r
\r
// Interface Wrapper\r
virtual IBlob* AddRef() = 0;\r
virtual void Release() = 0;\r
\r
- virtual ~IBlob() { };\r
+ virtual ~IBlob() { }\r
};\r
\r
/* IArray is the interface to the array capabilities of IBPP. Array is the\r
virtual IArray* AddRef() = 0;\r
virtual void Release() = 0;\r
\r
- virtual ~IArray() { };\r
+ virtual ~IArray() { }\r
};\r
\r
/* IService is the interface to the service capabilities of IBPP. Service is\r
virtual IService* AddRef() = 0;\r
virtual void Release() = 0;\r
\r
- virtual ~IService() { };\r
+ virtual ~IService() { }\r
};\r
\r
/* IDatabase is the interface to the database connections in IBPP. Database\r
virtual IDatabase* AddRef() = 0;\r
virtual void Release() = 0;\r
\r
- virtual ~IDatabase() { };\r
+ virtual ~IDatabase() { }\r
};\r
\r
/* ITransaction is the interface to the transaction connections in IBPP.\r
virtual ITransaction* AddRef() = 0;\r
virtual void Release() = 0;\r
\r
- virtual ~ITransaction() { };\r
+ virtual ~ITransaction() { }\r
};\r
\r
/*\r
virtual IRow* AddRef() = 0;\r
virtual void Release() = 0;\r
\r
- virtual ~IRow() {};\r
+ virtual ~IRow() {}\r
};\r
\r
/* IStatement is the interface to the statements execution in IBPP.\r
virtual IStatement* AddRef() = 0;\r
virtual void Release() = 0;\r
\r
- virtual ~IStatement() { };\r
+ virtual ~IStatement() { }\r
\r
// DEPRECATED METHODS (WON'T BE AVAILABLE IN VERSIONS 3.x)\r
virtual bool Get(int, char*) = 0; // DEPRECATED\r
virtual IEvents* AddRef() = 0;\r
virtual void Release() = 0;\r
\r
- virtual ~IEvents() { };\r
+ virtual ~IEvents() { }\r
};\r
\r
/* Class EventInterface is merely a pure interface.\r
{\r
public:\r
virtual void ibppEventHandler(Events, const std::string&, int) = 0;\r
- virtual ~EventInterface() { };\r
+ virtual ~EventInterface() { }\r
};\r
\r
// --- Factories ---\r
_("No statement has been executed or no result set available."));\r
\r
IBS status;\r
- int code = (*gds.Call()->m_dsql_fetch)(status.Self(), &mHandle, 1, mOutRow->Self());\r
+ ISC_STATUS code = (*gds.Call()->m_dsql_fetch)(status.Self(), &mHandle, 1, mOutRow->Self());\r
if (code == 100) // This special code means "no more rows"\r
{\r
mResultSetAvailable = false;\r
row = rowimpl;\r
\r
IBS status;\r
- int code = (*gds.Call()->m_dsql_fetch)(status.Self(), &mHandle, 1,\r
+ ISC_STATUS code = (*gds.Call()->m_dsql_fetch)(status.Self(), &mHandle, 1,\r
rowimpl->Self());\r
if (code == 100) // This special code means "no more rows"\r
{\r
tpb->Insert(table);\r
tpb->Insert(isc_tpb_protected);\r
break;\r
- default :\r
+ /*default :\r
throw LogicExceptionImpl("Transaction::AddReservation",\r
- _("Illegal TTR value detected."));\r
+ _("Illegal TTR value detected."));*/\r
}\r
}\r
else throw LogicExceptionImpl("Transaction::AddReservation",\r
tpb->Insert(isc_tpb_rec_version); break;\r
case IBPP::ilReadCommitted : tpb->Insert(isc_tpb_read_committed);\r
tpb->Insert(isc_tpb_no_rec_version); break;\r
- default : tpb->Insert(isc_tpb_concurrency); break;\r
+ case IBPP::ilConcurrency : tpb->Insert(isc_tpb_concurrency); break;\r
}\r
\r
if (lr == IBPP::lrNoWait) tpb->Insert(isc_tpb_nowait);\r
pthread_mutex_unlock(&lockerMutex);
#endif
pthread_mutex_lock(mutex);
- };
+ }
~STG_LOCKER()
{
std::cout << "Unlock: " << lockID << " " << file << ":" << line << " " << mutex << " " << pthread_self() << std::endl;
pthread_mutex_unlock(&lockerMutex);
#endif
- };
+ }
private:
STG_LOCKER(const STG_LOCKER & rvalue);
STG_LOCKER & operator=(const STG_LOCKER & rvalue);
class STG_LOGGER_LOCKER
{
public:
- STG_LOGGER_LOCKER(pthread_mutex_t * m) : mutex(m) { pthread_mutex_lock(mutex); };
- ~STG_LOGGER_LOCKER() { pthread_mutex_unlock(mutex); };
+ STG_LOGGER_LOCKER(pthread_mutex_t * m) : mutex(m) { pthread_mutex_lock(mutex); }
+ ~STG_LOGGER_LOCKER() { pthread_mutex_unlock(mutex); }
private:
STG_LOGGER_LOCKER(const STG_LOGGER_LOCKER & rvalue);
class STG_PINGER
{
public:
+ typedef std::multimap<uint32_t, time_t> PingIPs;
+ typedef PingIPs::size_type SizeType;
+
STG_PINGER(time_t delay = 15);
~STG_PINGER();
int Stop();
void AddIP(uint32_t ip);
void DelIP(uint32_t ip);
- int GetPingIPNum() const;
+ SizeType GetPingIPNum() const { return pingIP.size(); }
void PrintAllIP();
int GetIPTime(uint32_t ip, time_t * t) const;
void SetDelayTime(time_t d) { delay = d; }
static void * RunSendPing(void * d);
static void * RunRecvPing(void * d);
- int delay;
+ time_t delay;
bool nonstop;
bool isRunningRecver;
bool isRunningSender;
ipToDel.erase(ipToDel.begin(), ipToDel.end());
}
//-----------------------------------------------------------------------------
-int STG_PINGER::GetPingIPNum() const
-{
-return pingIP.size();
-}
-//-----------------------------------------------------------------------------
void STG_PINGER::PrintAllIP()
{
STG_LOCKER lock(&mutex, __FILE__, __LINE__);
//-----------------------------------------------------------------------------
uint16_t STG_PINGER::PingCheckSum(void * data, int len)
{
-unsigned short * buf = (unsigned short *)data;
-unsigned int sum = 0;
-unsigned short result;
+uint16_t * buf = static_cast<uint16_t *>(data);
+uint32_t sum = 0;
+uint32_t result;
for ( sum = 0; len > 1; len -= 2 )
sum += *buf++;
if ( len == 1 )
- sum += *(unsigned char*)buf;
+ sum += *reinterpret_cast<uint8_t*>(buf);
sum = (sum >> 16) + (sum & 0xFFFF);
sum += (sum >> 16);
result = ~sum;
-return result;
+return static_cast<uint16_t>(result);
}
//-----------------------------------------------------------------------------
int STG_PINGER::SendPing(uint32_t ip)
memset(&pmSend, 0, sizeof(pmSend));
pmSend.hdr.type = ICMP_ECHO;
-pmSend.hdr.un.echo.id = pid;
+pmSend.hdr.un.echo.id = static_cast<uint16_t>(pid);
memcpy(pmSend.msg, &ip, sizeof(ip));
pmSend.hdr.checksum = PingCheckSum(&pmSend, sizeof(pmSend));
char buf[128];
memset(buf, 0, sizeof(buf));
-int bytes;
socklen_t len = sizeof(addr);
-bytes = recvfrom(recvSocket, &buf, sizeof(buf), 0, (struct sockaddr*)&addr, &len);
-if (bytes > 0)
+if (recvfrom(recvSocket, &buf, sizeof(buf), 0, reinterpret_cast<struct sockaddr*>(&addr), &len))
{
- struct IP_HDR * ip = (struct IP_HDR *)buf;
- struct ICMP_HDR *icmp = (struct ICMP_HDR *)(buf + ip->ihl * 4);
+ struct IP_HDR * ip = static_cast<struct IP_HDR *>(static_cast<void *>(buf));
+ struct ICMP_HDR *icmp = static_cast<struct ICMP_HDR *>(static_cast<void *>(buf + ip->ihl * 4));
if (icmp->un.echo.id != pid)
return 0;
- ipAddr = *(uint32_t*)(buf + sizeof(ICMP_HDR) + ip->ihl * 4);
+ ipAddr = *static_cast<uint32_t*>(static_cast<void *>(buf + sizeof(ICMP_HDR) + ip->ihl * 4));
}
return ipAddr;