]> git.stg.codes - stg.git/commitdiff
Merge branch 'master' into full-month-stats
authorMaxim Mamontov <faust.madf@gmail.com>
Fri, 26 Jul 2013 18:53:47 +0000 (21:53 +0300)
committerMaxim Mamontov <faust.madf@gmail.com>
Fri, 26 Jul 2013 18:53:47 +0000 (21:53 +0300)
Conflicts:
projects/stargazer/plugins/store/postgresql/postgresql_store_users.cpp

197 files changed:
doc/xmlrpc/API-user.xml
include/stg/admin.h
include/stg/notifer.h
include/stg/os_int.h
include/stg/plugin.h
include/stg/raw_ip_packet.h
include/stg/service_conf.h
include/stg/store.h
include/stg/tariffs.h
include/stg/user.h
include/stg/user_conf.h
include/stg/user_ips.h
include/stg/user_property.h
include/stg/user_stat.h
include/stg/user_traff.h
include/stg/users.h
projects/convertor/Makefile [deleted file]
projects/convertor/build [deleted file]
projects/convertor/convertor.conf [deleted file]
projects/convertor/main.cpp [deleted file]
projects/convertor/settings_impl.cpp [deleted file]
projects/convertor/settings_impl.h [deleted file]
projects/rlm_stg/Makefile
projects/rlm_stg/build
projects/rlm_stg/iface.cpp
projects/rscriptd/Makefile
projects/rscriptd/build
projects/rscriptd/rscriptd.conf
projects/sgauth/Makefile
projects/sgauth/build
projects/sgauth/main.cpp
projects/sgauth/settings_impl.cpp
projects/sgauth/settings_impl.h
projects/sgauth/sgauth.conf
projects/sgauthstress/build
projects/sgconf/Makefile
projects/sgconf/build
projects/sgconf/common_sg.cpp
projects/sgconf/common_sg.h
projects/sgconf/main.cpp
projects/sgconf/request.h
projects/sgconf_xml/Makefile
projects/sgconf_xml/build
projects/sgconv/Makefile [new file with mode: 0644]
projects/sgconv/build [new file with mode: 0755]
projects/sgconv/main.cpp [new file with mode: 0644]
projects/sgconv/settings_impl.cpp [new file with mode: 0644]
projects/sgconv/settings_impl.h [new file with mode: 0644]
projects/sgconv/sgconv.conf [new file with mode: 0644]
projects/stargazer/Makefile
projects/stargazer/actions.h
projects/stargazer/admin_impl.h
projects/stargazer/admins_impl.h
projects/stargazer/build
projects/stargazer/corps_impl.cpp
projects/stargazer/corps_impl.h
projects/stargazer/eventloop.h
projects/stargazer/inst/freebsd/etc/stargazer/conf-available.d/mod_cap_nf.conf
projects/stargazer/inst/freebsd/etc/stargazer/conf-available.d/mod_ia.conf
projects/stargazer/inst/freebsd/etc/stargazer/conf-available.d/mod_remote_script.conf
projects/stargazer/inst/freebsd/etc/stargazer/conf-available.d/mod_rpc.conf
projects/stargazer/inst/freebsd/etc/stargazer/conf-available.d/mod_smux.conf
projects/stargazer/inst/freebsd/etc/stargazer/conf-available.d/store_files.conf
projects/stargazer/inst/freebsd/etc/stargazer/conf-available.d/store_firebird.conf
projects/stargazer/inst/freebsd/etc/stargazer/conf-available.d/store_mysql.conf
projects/stargazer/inst/freebsd/etc/stargazer/conf-available.d/store_postgresql.conf
projects/stargazer/inst/linux/etc/init.d/stargazer.gentoo
projects/stargazer/inst/linux/etc/stargazer/OnChange
projects/stargazer/inst/linux/etc/stargazer/OnConnect
projects/stargazer/inst/linux/etc/stargazer/OnDisconnect
projects/stargazer/inst/linux/etc/stargazer/OnUserAdd
projects/stargazer/inst/linux/etc/stargazer/OnUserDel
projects/stargazer/inst/linux/etc/stargazer/conf-available.d/mod_cap_nf.conf
projects/stargazer/inst/linux/etc/stargazer/conf-available.d/mod_ia.conf
projects/stargazer/inst/linux/etc/stargazer/conf-available.d/mod_remote_script.conf
projects/stargazer/inst/linux/etc/stargazer/conf-available.d/mod_rpc.conf
projects/stargazer/inst/linux/etc/stargazer/conf-available.d/mod_smux.conf
projects/stargazer/inst/linux/etc/stargazer/conf-available.d/store_files.conf
projects/stargazer/inst/linux/etc/stargazer/conf-available.d/store_firebird.conf
projects/stargazer/inst/linux/etc/stargazer/conf-available.d/store_mysql.conf
projects/stargazer/inst/linux/etc/stargazer/conf-available.d/store_postgresql.conf
projects/stargazer/main.cpp
projects/stargazer/plugins/Makefile.in
projects/stargazer/plugins/authorization/ao/Makefile
projects/stargazer/plugins/authorization/ao/ao.cpp
projects/stargazer/plugins/authorization/ao/ao.h
projects/stargazer/plugins/authorization/inetaccess/inetaccess.cpp
projects/stargazer/plugins/authorization/inetaccess/inetaccess.h
projects/stargazer/plugins/capture/cap_debug/debug_cap.cpp
projects/stargazer/plugins/capture/cap_debug/debug_cap.h
projects/stargazer/plugins/capture/cap_nf/cap_nf.cpp
projects/stargazer/plugins/capture/cap_nf/cap_nf.h
projects/stargazer/plugins/capture/divert_freebsd/divert_cap.cpp
projects/stargazer/plugins/capture/divert_freebsd/divert_cap.h
projects/stargazer/plugins/capture/ether_freebsd/ether_cap.cpp
projects/stargazer/plugins/capture/ether_freebsd/ether_cap.h
projects/stargazer/plugins/capture/ether_linux/ether_cap.cpp
projects/stargazer/plugins/capture/ether_linux/ether_cap.h
projects/stargazer/plugins/capture/ipq_linux/ipq_cap.cpp
projects/stargazer/plugins/capture/ipq_linux/ipq_cap.h
projects/stargazer/plugins/capture/ipq_linux/libipq.h
projects/stargazer/plugins/configuration/rpcconfig/admins_methods.cpp
projects/stargazer/plugins/configuration/rpcconfig/info_methods.cpp
projects/stargazer/plugins/configuration/rpcconfig/messages_methods.cpp
projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.cpp
projects/stargazer/plugins/configuration/rpcconfig/rpcconfig.h
projects/stargazer/plugins/configuration/rpcconfig/user_helper.cpp
projects/stargazer/plugins/configuration/rpcconfig/user_helper.h
projects/stargazer/plugins/configuration/rpcconfig/users_methods.cpp
projects/stargazer/plugins/configuration/rpcconfig/users_methods.h
projects/stargazer/plugins/configuration/rpcconfig/utils.cpp [deleted file]
projects/stargazer/plugins/configuration/rpcconfig/utils.h [deleted file]
projects/stargazer/plugins/configuration/sgconfig/Makefile
projects/stargazer/plugins/configuration/sgconfig/configproto.cpp
projects/stargazer/plugins/configuration/sgconfig/configproto.h
projects/stargazer/plugins/configuration/sgconfig/parser.cpp
projects/stargazer/plugins/configuration/sgconfig/parser_admin.cpp
projects/stargazer/plugins/configuration/sgconfig/parser_tariff.cpp
projects/stargazer/plugins/configuration/sgconfig/rsconf.cpp
projects/stargazer/plugins/configuration/sgconfig/stgconfig.cpp
projects/stargazer/plugins/configuration/sgconfig/stgconfig.h
projects/stargazer/plugins/other/ping/ping.cpp
projects/stargazer/plugins/other/ping/ping.h
projects/stargazer/plugins/other/radius/radius.cpp
projects/stargazer/plugins/other/radius/radius.h
projects/stargazer/plugins/other/rscript/nrmap_parser.h
projects/stargazer/plugins/other/rscript/rscript.cpp
projects/stargazer/plugins/other/rscript/rscript.h
projects/stargazer/plugins/other/rscript/send_functor.h
projects/stargazer/plugins/other/rscript/ur_functor.h
projects/stargazer/plugins/other/smux/smux.cpp
projects/stargazer/plugins/other/smux/smux.h
projects/stargazer/plugins/other/smux/tables.cpp
projects/stargazer/plugins/other/smux/types.cpp
projects/stargazer/plugins/other/smux/utils.cpp
projects/stargazer/plugins/other/smux/value2os.h
projects/stargazer/plugins/store/files/file_store.cpp
projects/stargazer/plugins/store/files/file_store.h
projects/stargazer/plugins/store/firebird/firebird_store.cpp
projects/stargazer/plugins/store/firebird/firebird_store.h
projects/stargazer/plugins/store/firebird/firebird_store_corporations.cpp
projects/stargazer/plugins/store/firebird/firebird_store_messages.cpp
projects/stargazer/plugins/store/firebird/firebird_store_services.cpp
projects/stargazer/plugins/store/firebird/firebird_store_tariffs.cpp
projects/stargazer/plugins/store/firebird/firebird_store_users.cpp
projects/stargazer/plugins/store/mysql/mysql_store.cpp
projects/stargazer/plugins/store/mysql/mysql_store.h
projects/stargazer/plugins/store/postgresql/postgresql_store.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store.h
projects/stargazer/plugins/store/postgresql/postgresql_store_admins.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store_corporations.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store_messages.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store_services.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store_tariffs.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store_users.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store_utils.cpp
projects/stargazer/plugins/store/postgresql/postgresql_store_utils.h
projects/stargazer/services_impl.cpp
projects/stargazer/services_impl.h
projects/stargazer/settings_impl.h
projects/stargazer/stg_timer.cpp
projects/stargazer/stg_timer.h
projects/stargazer/store_loader.cpp
projects/stargazer/tariff_impl.cpp
projects/stargazer/tariff_impl.h
projects/stargazer/tariffs_impl.cpp
projects/stargazer/tariffs_impl.h
projects/stargazer/traffcounter_impl.cpp
projects/stargazer/traffcounter_impl.h
projects/stargazer/user_impl.cpp
projects/stargazer/user_impl.h
projects/stargazer/users_impl.cpp
projects/stargazer/users_impl.h
stglibs/Makefile.in
stglibs/common.lib/common.cpp
stglibs/common.lib/include/stg/common.h
stglibs/common.lib/strptime.cpp
stglibs/conffiles.lib/conffiles.cpp
stglibs/conffiles.lib/include/stg/conffiles.h
stglibs/dotconfpp.lib/include/stg/dotconfpp.h
stglibs/ia.lib/ia.cpp
stglibs/ia.lib/include/stg/ia.h
stglibs/ibpp.lib/_ibpp.h
stglibs/ibpp.lib/blob.cpp
stglibs/ibpp.lib/ibase.h
stglibs/ibpp.lib/include/stg/ibpp.h
stglibs/ibpp.lib/statement.cpp
stglibs/ibpp.lib/transaction.cpp
stglibs/locker.lib/include/stg/locker.h
stglibs/logger.lib/include/stg/logger.h
stglibs/pinger.lib/include/stg/pinger.h
stglibs/pinger.lib/pinger.cpp
stglibs/scriptexecuter.lib/include/stg/scriptexecuter.h
stglibs/scriptexecuter.lib/scriptexecuter.c
stglibs/srvconf.lib/include/stg/servconf.h
stglibs/srvconf.lib/parser.cpp
stglibs/srvconf.lib/servconf.cpp

index fac4f2be8b597e2d3a7354b99842cd7d23a0e021..82f8e7eeb1950d5a19ed9d74402b1ecf1fe50358 100644 (file)
                 <link linkend="stargazer.set_user_cash"><function>stargazer.set_user_cash</function></link>,
                 <link linkend="stargazer.chg_user_tariff"><function>stargazer.chg_user_tariff</function></link>
                 <link linkend="stargazer.get_online_ips"><function>stargazer.get_online_ips</function></link>
+                <link linkend="stargazer.get_user_auth_by"><function>stargazer.get_user_auth_by</function></link>
             </para>
         </refsect1>
     </refentry>
                 <link linkend="stargazer.set_user_cash"><function>stargazer.set_user_cash</function></link>,
                 <link linkend="stargazer.chg_user_tariff"><function>stargazer.chg_user_tariff</function></link>
                 <link linkend="stargazer.get_online_ips"><function>stargazer.get_online_ips</function></link>
+                <link linkend="stargazer.get_user_auth_by"><function>stargazer.get_user_auth_by</function></link>
             </para>
         </refsect1>
     </refentry>
                 <link linkend="stargazer.set_user_cash"><function>stargazer.set_user_cash</function></link>,
                 <link linkend="stargazer.chg_user_tariff"><function>stargazer.chg_user_tariff</function></link>
                 <link linkend="stargazer.get_online_ips"><function>stargazer.get_online_ips</function></link>
+                <link linkend="stargazer.get_user_auth_by"><function>stargazer.get_user_auth_by</function></link>
             </para>
         </refsect1>
     </refentry>
                 <link linkend="stargazer.set_user_cash"><function>stargazer.set_user_cash</function></link>,
                 <link linkend="stargazer.chg_user_tariff"><function>stargazer.chg_user_tariff</function></link>
                 <link linkend="stargazer.get_online_ips"><function>stargazer.get_online_ips</function></link>
+                <link linkend="stargazer.get_user_auth_by"><function>stargazer.get_user_auth_by</function></link>
             </para>
         </refsect1>
     </refentry>
                 <link linkend="stargazer.set_user_cash"><function>stargazer.set_user_cash</function></link>,
                 <link linkend="stargazer.chg_user_tariff"><function>stargazer.chg_user_tariff</function></link>
                 <link linkend="stargazer.get_online_ips"><function>stargazer.get_online_ips</function></link>
+                <link linkend="stargazer.get_user_auth_by"><function>stargazer.get_user_auth_by</function></link>
             </para>
         </refsect1>
     </refentry>
                 <link linkend="stargazer.set_user_cash"><function>stargazer.set_user_cash</function></link>,
                 <link linkend="stargazer.chg_user_tariff"><function>stargazer.chg_user_tariff</function></link>
                 <link linkend="stargazer.get_online_ips"><function>stargazer.get_online_ips</function></link>
+                <link linkend="stargazer.get_user_auth_by"><function>stargazer.get_user_auth_by</function></link>
             </para>
         </refsect1>
     </refentry>
                 <link linkend="stargazer.add_user_cash"><function>stargazer.add_user_cash</function></link>,
                 <link linkend="stargazer.chg_user_tariff"><function>stargazer.chg_user_tariff</function></link>
                 <link linkend="stargazer.get_online_ips"><function>stargazer.get_online_ips</function></link>
+                <link linkend="stargazer.get_user_auth_by"><function>stargazer.get_user_auth_by</function></link>
             </para>
         </refsect1>
     </refentry>
                 <link linkend="stargazer.add_user_cash"><function>stargazer.add_user_cash</function></link>,
                 <link linkend="stargazer.set_user_cash"><function>stargazer.set_user_cash</function></link>
                 <link linkend="stargazer.get_online_ips"><function>stargazer.get_online_ips</function></link>
+                <link linkend="stargazer.get_user_auth_by"><function>stargazer.get_user_auth_by</function></link>
             </para>
         </refsect1>
     </refentry>
                 <link linkend="stargazer.add_user_cash"><function>stargazer.add_user_cash</function></link>,
                 <link linkend="stargazer.set_user_cash"><function>stargazer.set_user_cash</function></link>
                 <link linkend="stargazer.chg_user_tariff"><function>stargazer.chg_user_tariff</function></link>
+                <link linkend="stargazer.get_user_auth_by"><function>stargazer.get_user_auth_by</function></link>
+            </para>
+        </refsect1>
+    </refentry>
+    <refentry id="stargazer.get_user_auth_by">
+        <refmeta>
+            <refentrytitle>stargazer.get_user_auth_by</refentrytitle>
+        </refmeta>
+        <refnamediv>
+            <refname>stargazer.get_user_auth_by</refname>
+            <refpurpose>Получение списка авторизаторов которыми авторизован пользователь</refpurpose>
+        </refnamediv>
+        <refsynopsisdiv>
+            <funcsynopsis>
+                <funcprototype>
+                    <funcdef><function>stargazer.get_user_auth_by</function></funcdef>
+                    <paramdef>string <parameter>cookie</parameter></paramdef>
+                    <paramdef>string <parameter>login</parameter></paramdef>
+                </funcprototype>
+            </funcsynopsis>
+        </refsynopsisdiv>
+        <refsect1>
+            <title>Description</title>
+            <para>Метод <function>stargazer.get_user_auth_by</function> позволяет получить список авторизаторов которыми в данный момент авторизован пользователь.</para>
+            <variablelist>
+                <varlistentry>
+                    <term>string <parameter>cookie</parameter></term>
+                    <listitem>
+                        <para>Авторизационный cookie. Для авторизации в системе используется метод <function><link linkend="stargazer.login">stargazer.login</link></function></para>
+                    </listitem>
+                </varlistentry>
+                <varlistentry>
+                    <term>string <parameter>login</parameter></term>
+                    <listitem>
+                        <para>Логин пользователя</para>
+                    </listitem>
+                </varlistentry>
+            </variablelist>
+            <refsect2>
+                <title>Return Value</title>
+                <para>Возвращает структуру:</para>
+                <variablelist>
+                    <varlistentry>
+                        <term>bool <structfield>result</structfield></term>
+                        <listitem>
+                            <para>Результат операции. true - успешно, false - неудача (неправильный или устаревший cookie).</para>
+                        </listitem>
+                    </varlistentry>
+                    <varlistentry>
+                        <term>array of strings <structfield>auths</structfield></term>
+                        <listitem>
+                            <para>Список авторизаторов которыми авторизован пользователь.</para>
+                        </listitem>
+                    </varlistentry>
+                </variablelist>
+            </refsect2>
+        </refsect1>
+        <refsect1>
+            <title>See also</title>
+            <para>
+                <link linkend="stargazer.get_users"><function>stargazer.get_users</function></link>,
+                <link linkend="stargazer.get_user"><function>stargazer.get_user</function></link>,
+                <link linkend="stargazer.add_user"><function>stargazer.add_user</function></link>,
+                <link linkend="stargazer.chg_user"><function>stargazer.chg_user</function></link>,
+                <link linkend="stargazer.del_user"><function>stargazer.del_user</function></link>,
+                <link linkend="stargazer.add_user_cash"><function>stargazer.add_user_cash</function></link>,
+                <link linkend="stargazer.set_user_cash"><function>stargazer.set_user_cash</function></link>
+                <link linkend="stargazer.chg_user_tariff"><function>stargazer.chg_user_tariff</function></link>
+                <link linkend="stargazer.get_online_ips"><function>stargazer.get_online_ips</function></link>
             </para>
         </refsect1>
     </refentry>
index 7552a1a12a39c415165e259b841236b5845a4568..961968a1065234e12a2a803c2812abf078b23655 100644 (file)
@@ -32,7 +32,7 @@ public:
     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;
index 57f9928e1aa7989cfbb2cbc417570fbb1372de57..6f2133282d355ea081e783a4a19d1f2e184e2921 100644 (file)
@@ -12,7 +12,7 @@ template <typename varParamType>
 class PROPERTY_NOTIFIER_BASE
 {
 public:
-    virtual      ~PROPERTY_NOTIFIER_BASE(){};
+    virtual      ~PROPERTY_NOTIFIER_BASE(){}
     virtual void Notify(const varParamType & oldValue, const varParamType & newValue) = 0;
 };
 //-----------------------------------------------------------------------------
@@ -20,7 +20,7 @@ template <typename varParamType>
 class NOTIFIER_BASE
 {
 public:
-    virtual      ~NOTIFIER_BASE(){};
+    virtual      ~NOTIFIER_BASE(){}
     virtual void Notify(const varParamType & value) = 0;
 };
 //-----------------------------------------------------------------------------
index cc017b84b8b5624bd1f3389f3b203ea01c8ff4a7..00ab3fad579fd3169be8a3c0aed8b7f28bb6bbd2 100644 (file)
@@ -31,7 +31,7 @@
 #include <stdint.h>
 #endif
 
-#ifdef FREE_BSD5
+#if defined(FREE_BSD5) || defined(DARWIN)
 #include <inttypes.h>
 #endif
 
index 2ecf7af08161e56faa7d02564cb4a765d77d559e..114ffc8bc61e58f67ed0e1fb05868007df6f1b0e 100644 (file)
@@ -62,7 +62,7 @@ public:
     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;
 };
index f07bf2280b4ab2db68c5b1532ca819bd1236579c..b94faf868b40451484bd4b5c9b1e03910544a82f 100644 (file)
@@ -23,13 +23,6 @@ struct RAW_PACKET
     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;
@@ -40,7 +33,7 @@ uint16_t    GetSrcPort() 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
@@ -52,7 +45,7 @@ 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
 };
@@ -93,14 +86,16 @@ inline uint16_t RAW_PACKET::GetSrcPort() 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)));
+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
@@ -113,12 +108,14 @@ if (rawPacket.header.ipHeader.ip_dst.s_addr != rvalue.rawPacket.header.ipHeader.
 
 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;
     }
 
@@ -142,18 +139,18 @@ if (rawPacket.header.ipHeader.ip_dst.s_addr > rvalue.rawPacket.header.ipHeader.i
 
 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;
     }
 
index ef487f8ee78a41e624191930dd12660604dc0257..ca58154b2a08d53612b64f6419f4f6e4cdbcfa6b 100644 (file)
@@ -17,11 +17,11 @@ SERVICE_CONF(const std::string & n, double c)
     : 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;
index e966076f00a7a4b9c288e60df325ace1b8a8fe99..412ed65dc5bc200e1a13f3c3c8d04aa15eb83eb8 100644 (file)
@@ -79,7 +79,7 @@ public:
     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;
 
index 9a35f6458145dfde2334c678733515e877392e20..13a3f05cfb49d569f316ed45a1a1a68ddd3caa7a 100644 (file)
@@ -32,6 +32,8 @@ struct TARIFF_DATA;
 
 class TARIFFS {
 public:
+    typedef std::list<TARIFF> Tariffs;
+
     virtual ~TARIFFS() {}
     virtual int ReadTariffs () = 0;
     virtual const TARIFF * FindByName(const std::string & name) const = 0;
index b9d638d626a5437a0ebc8c1b49d501c7ba43781b..0adb342ae9261841017370c169398e22449f981a 100644 (file)
@@ -24,6 +24,9 @@
 #include <ctime>
 #include <string>
 
+#include <vector>
+#include <string>
+
 #include "os_int.h"
 #include "notifer.h"
 #include "message.h"
@@ -77,6 +80,7 @@ public:
                                           const AUTH * auth) = 0;
     virtual void                Unauthorize(const AUTH * auth) = 0;*/
     virtual bool                IsAuthorizedBy(const AUTH * auth) const = 0;
+    virtual std::vector<std::string> GetAuthorizers() const = 0;
 
     virtual int                 AddMessage(STG_MSG * msg) = 0;
 
index 70cb4fa7f5f2fd0d76e01f9abb02ef1b78dd0f55..599336583a4ebc159e400e76279b15e12292b9bb 100644 (file)
@@ -37,7 +37,7 @@ struct USER_CONF
           userdata(USERDATA_NUM),
           creditExpire(0),
           ips()
-    {};
+    {}
 
     std::string              password;
     int                      passive;
@@ -81,7 +81,7 @@ struct USER_CONF_RES
           creditExpire(),
           ips()
     {
-    };
+    }
 
     USER_CONF_RES & operator=(const USER_CONF & uc)
     {
@@ -107,7 +107,7 @@ struct USER_CONF_RES
         creditExpire = uc.creditExpire;
         ips          = uc.ips;
         return *this;
-    };
+    }
     operator USER_CONF() const
     {
         USER_CONF uc;
index a29e28128c07f5a651df94e839128fe4bf2df70e..264b58960ac2df91e5fa59d991b5583219a8a98a 100644 (file)
@@ -44,8 +44,6 @@
 #include "stg/common.h"
 #include "os_int.h"
 
-using namespace std;
-
 //-------------------------------------------------------------------------
 struct IP_MASK
 {
@@ -57,25 +55,28 @@ uint32_t 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;
-    int  Count() const;
+    size_t  Count() const;
     void Add(const IP_MASK &im);
     void Erase();
 
 private:
     uint32_t CalcMask(unsigned int msk) const;
-    std::vector<IP_MASK> ips;
+    ContainerType ips;
 };
 //-------------------------------------------------------------------------
 
@@ -98,7 +99,7 @@ return *this;
 }
 //-----------------------------------------------------------------------------
 inline
-const IP_MASK & USER_IPS::operator[](int idx) const
+const IP_MASK & USER_IPS::operator[](IndexType idx) const
 {
 return ips[idx];
 }
@@ -116,8 +117,8 @@ if (ips[0].ip == 0)
     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)
@@ -128,7 +129,7 @@ return s.str();
 }
 //-----------------------------------------------------------------------------
 inline
-int USER_IPS::Count() const
+size_t USER_IPS::Count() const
 {
 return ips.size();
 }
@@ -152,7 +153,7 @@ if (ips.empty())
 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))
@@ -196,7 +197,7 @@ return s;
 }*/
 //-----------------------------------------------------------------------------
 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;
@@ -215,18 +216,18 @@ if (ipsStr[0] == '*' && ipsStr.size() == 1)
     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;
index 9030d37fa459af8c2fc2299602d1a52ab8dba4b9..2ff8909cdc25331ef800d40b7ee61d355432d16b 100644 (file)
@@ -24,7 +24,7 @@ $Author: faust $
 #include "notifer.h"
 #include "noncopyable.h"
 
-extern const volatile time_t stgTime;
+extern volatile time_t stgTime;
 
 //-----------------------------------------------------------------------------
 template<typename varT>
@@ -295,8 +295,8 @@ if ((priv->userConf && !isStat) ||
     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;
@@ -377,7 +377,7 @@ else
 //-------------------------------------------------------------------------
 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();
 }
index 42d436fdc96c472675eef9f2e5d0ce980d4db05e..54f11dec3a80ff748adfc819093a8f62cd4c2942 100644 (file)
@@ -123,7 +123,7 @@ struct USER_STAT
           lastCashAddTime(0),
           passiveTime(0),
           lastActivityTime(0)
-    {};
+    {}
 
     DIR_TRAFF   up;
     DIR_TRAFF   down;
@@ -161,7 +161,7 @@ struct USER_STAT_RES
         up = us.up;
         down = us.down;
         return * this;
-    };
+    }
     operator USER_STAT() const
     {
         USER_STAT us;
@@ -174,7 +174,7 @@ struct USER_STAT_RES
         us.up               = up;
         us.down             = down;
         return us;
-    };
+    }
 
     RESETABLE<double>      cash;
     RESETABLE<double>      freeMb;
index 7ed1636152a05a7abd13b2ee6b290889f9c0978e..aee1171c9b387d876bd321fd6b0d6a5985205d43 100644 (file)
@@ -40,17 +40,20 @@ class DIR_TRAFF
     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;
 };
 //-----------------------------------------------------------------------------
 
@@ -75,19 +78,19 @@ traff = ts.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];
     }
@@ -97,7 +100,7 @@ return *this;
 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;
index 2ba238332297b5b70d0267dc4e967d5aacec9428..b97a9be5b67cde56472999f0c0e39ada583ff59c 100644 (file)
@@ -53,6 +53,7 @@ public:
 
     virtual int  FindByIPIdx(uint32_t ip, USER_PTR * user) const = 0;
     virtual bool IsIPInIndex(uint32_t ip) const = 0;
+    virtual bool IsIPInUse(uint32_t ip, const std::string & login, CONST_USER_PTR * user) const = 0;
 
     virtual int  OpenSearch() = 0;
     virtual int  SearchNext(int handle, USER_PTR * u) = 0;
diff --git a/projects/convertor/Makefile b/projects/convertor/Makefile
deleted file mode 100644 (file)
index efacbb6..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-###############################################################################
-# $Id: Makefile,v 1.12 2009/03/03 15:49:34 faust Exp $
-###############################################################################
-
-include ../../Makefile.conf
-
-PROG = convertor
-
-SRCS = ./main.cpp \
-       ./settings_impl.cpp
-
-STGLIBS = dotconfpp \
-         conffiles \
-         logger \
-         crypto \
-          common
-
-STGLIBS_INCS = $(addprefix -I ../../stglibs/,$(addsuffix .lib/include,$(STGLIBS)))
-STGLIBS_LIBS = $(addprefix -L ../../stglibs/,$(addsuffix .lib,$(STGLIBS)))
-
-LIBS += $(addprefix -lstg,$(STGLIBS)) $(LIB_THREAD)
-
-ifeq ($(OS),linux)
-LIBS += -ldl
-else
-LIBS += -lc -liconv
-endif
-
-SEARCH_DIRS = -I ../../include
-
-OBJS = $(notdir $(patsubst %.cpp, %.o, $(patsubst %.c, %.o, $(SRCS))))
-
-CXXFLAGS += $(DEFS) $(STGLIBS_INCS) $(SEARCH_DIRS)
-CFLAGS += $(DEFS) $(STGLIBS_INCS) $(SEARCH_DIRS)
-LDFLAGS += -Wl,-E $(STGLIBS_LIBS)
-
-.PHONY: all clean distclean libs plugins install uninstall
-all: libs plugins $(PROG) ../../Makefile.conf
-
-libs:
-       $(MAKE) -C $(DIR_LIBSRC)
-
-plugins: libs 
-       $(MAKE) -C $(DIR_PLUGINS)
-
-$(PROG): $(OBJS)
-       $(CXX) $^ $(LDFLAGS) $(LIBS) -o $(PROG)
-
-clean:
-       rm -f deps $(PROG) *.o tags *.*~ .OS
-       rm -f .OS
-       rm -f .store
-       rm -f .db.sql
-       rm -f core*
-       $(MAKE) -C $(DIR_LIBSRC) clean
-       $(MAKE) -C $(DIR_PLUGINS) clean
-
-distclean: clean
-       rm -f ../../Makefile.conf
-
-ifneq ($(MAKECMDGOALS),distclean)
-ifneq ($(MAKECMDGOALS),clean)
-ifneq ($(MAKECMDGOALS),uninstall)
--include deps
-endif
-endif
-endif
-
-deps:  $(SRCS) ../../Makefile.conf
-       $(MAKE) -C $(DIR_LIBSRC)
-       @>deps ;\
-       for file in $(SRCS); do\
-         echo "$$file" | grep ".c$$" > /dev/null;\
-         if [ $$? -eq 0 ];\
-         then\
-           echo "`$(CC) $(CFLAGS) -MM $$file` Makefile" >> deps ;\
-           printf '%b\n' '\t$$(CC) $(CFLAGS) -c $$<' >> deps ;\
-         else\
-           echo "`$(CXX) $(CXXFLAGS) -MM $$file` Makefile" >> deps ;\
-           printf '%b\n' '\t$$(CXX) $(CXXFLAGS) -c $$<' >> deps ;\
-         fi;\
-       done
diff --git a/projects/convertor/build b/projects/convertor/build
deleted file mode 100755 (executable)
index 0144b0f..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-#!/bin/sh
-
-#   $Revision: 1.20 $
-#   $Author: faust $
-#   $Date: 2010/04/14 08:58:43 $
-######################################################
-
-OS=unknown
-sys=`uname -s`
-release=`uname -r | cut -b1`
-BUILD_DIR=`pwd`
-CONFFILE="../../Makefile.conf"
-PREFIX="/"
-BIN_MODE=0755
-DATA_MODE=0644
-DIR_MODE=0755
-OWNER=root
-VAR_DIR="./inst/var/stargazer"
-DEFS="-DDEBUG"
-MAKEOPTS="-j1"
-CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall -I/usr/local/include"
-LDFLAGS="$LDFLAGS -L/usr/local/lib"
-
-if [ "$sys" = "Linux" ]
-then
-    OS=linux
-    release=""
-    MAKE="make"
-fi
-
-if [ "$sys" = "FreeBSD" ]
-then
-    case $release in
-        4) OS=bsd;;
-        5) OS=bsd5;;
-        6) OS=bsd5;;
-        7) OS=bsd7;;
-        8) OS=bsd7;;
-        9) OS=bsd7;;
-        *) OS=unknown;;
-    esac
-    MAKE="gmake"
-fi
-
-if [ "$OS" = "unknown" ]
-then 
-    echo "#############################################################################"
-    echo "# Sorry, but convertor currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #"
-    echo "#############################################################################"
-    exit 1
-fi
-
-echo "#############################################################################"
-echo "       Building convertor for $sys $release"
-echo "#############################################################################"
-
-STG_LIBS="logger.lib 
-          locker.lib
-         crypto.lib 
-         common.lib 
-         conffiles.lib
-         dotconfpp.lib"
-
-PLUGINS="store/files"
-
-if [ "$OS" = "linux" ]
-then
-    DEFS="$DEFS -DLINUX"
-    LIB_THREAD=-lpthread
-else
-    if [ "$OS" = "bsd" ]
-    then
-        DEFS="$DEFS -DFREE_BSD"
-        LIB_THREAD=-lc_r
-    else
-        DEFS="$DEFS -DFREE_BSD5"
-        if [ "$OS" = "bsd7" ]
-        then
-            LIB_THREAD=-lpthread
-        else
-            LIB_THREAD=-lc_r
-        fi
-    fi
-fi
-
-if [ -z "$CC" ]
-then
-    CC=gcc
-fi
-
-if [ -z "$CXX" ]
-then
-    CXX=g++
-fi
-
-echo -n "Checking CC... "
-$CC --version > /dev/null 2> /dev/null
-if [ $? != 0 ]
-then
-    echo "FAIL!"
-    echo "$CC not found"
-    exit;
-fi
-echo "found"
-echo -n "Checking CXX... "
-$CXX --version > /dev/null 2> /dev/null
-if [ $? != 0 ]
-then
-    echo "FAIL!"
-    echo "$CXX not found"
-    exit;
-fi
-echo "found"
-
-echo -n "Checking endianess... "
-echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
-$CC $CFLAGS $LDFLAGS -L/usr/lib/mysql -L/usr/local/lib/mysql build_check.c -o fake > /dev/null 2> /dev/null
-if [ $? != 0 ]
-then
-    echo "FAIL!"
-    echo "Endianess checking failed"
-    exit;
-else
-    ./fake
-    if [ $? = 1 ]
-    then
-        ARCH=le
-        CXXFLAGS="$CXXFLAGS -DARCH_LE"
-        CFLAGS="$CFLAGS -DARCH_LE"
-        echo "Little Endian"
-    else
-        ARCH=be
-        CXXFLAGS="$CXXFLAGS -DARCH_BE"
-        CFLAGS="$CFLAGS -DARCH_BE"
-        echo "Big Endian"
-    fi
-fi
-rm -f fake
-
-echo -n "Checking for -lfbclient... "
-$CC $CFLAGS $LDFLAGS build_check.c -lfbclient $LIB_THREAD -o fake > /dev/null 2> /dev/null
-if [ $? != 0 ]
-then
-    CHECK_FBCLIENT=no
-    echo "no"
-else
-    CHECK_FBCLIENT=yes
-    echo "yes"
-fi
-rm -f fake
-
-echo -n "Checking for mysql_config... "
-MYSQL_VERSION=`mysql_config --version 2> /dev/null`
-if [ $? != 0 ]
-then
-    echo "no";
-    echo -n "Checking for -lmysqlclient... "
-    $CC $CFLAGS $LDFLAGS build_check.c -lmysqlclient_r $LIB_THREAD -o fake > /dev/null 2> /dev/null
-    if [ $? != 0 ]
-    then
-        CHECK_MYSQLCLIENT=no
-        echo "no"
-    else
-        CHECK_MYSQLCLIENT=yes
-        echo "yes"
-    fi
-    rm -f fake
-else
-    echo "yes"
-    echo -n "Checking for mysql_config --cflags... "
-    MYSQL_CFLAGS=`mysql_config --cflags 2> /dev/null`
-    if [ $? != 0 ]
-    then
-        CHECK_MYSQLCLIENT=no
-        echo "no"
-    else
-        echo "[$MYSQL_CFLAGS]"
-        echo -n "Checking for mysql_config --libs_r... "
-        MYSQL_LDFLAGS=`mysql_config --libs_r 2> /dev/null`
-        if [ $? != 0 ]
-        then
-            CHECK_MYSQLCLIENT=no
-            echo "no"
-        else
-            CHECK_MYSQLCLIENT=yes
-            echo "[$MYSQL_LDFLAGS]"
-        fi
-    fi
-fi
-
-echo -n "Checking for pg_config... "
-PG_VERSION=`pg_config --version 2> /dev/null`
-if [ $? != 0 ]
-then
-    echo "no";
-    echo -n "Checking for -lpq... "
-    $CC $CFLAGS $LDFLAGS build_check.c -lpq $LIB_THREAD -o fake > /dev/null 2> /dev/null
-    if [ $? != 0 ]
-    then
-        CHECK_PQ=no
-        echo "no"
-    else
-        CHECK_PQ=yes
-        echo "yes"
-    fi
-    rm -f fake
-else
-    echo "yes";
-    echo -n "Checking for pg_config --includedir... "
-    PG_CFLAGS=`pg_config --includedir 2> /dev/null`
-    if [ $? != 0 ]
-    then
-        CHECK_PQ=no
-        echo "no"
-    else
-        echo "[$PG_CFLAGS]"
-        echo -n "Checking for pg_config --libdir... "
-        PG_LDFLAGS=`pg_config --libdir 2> /dev/null`
-        if [ $? != 0 ]
-        then
-            CHECK_PQ=no
-            echo "no"
-        else
-            CHECK_PQ=yes
-            echo "[$PG_LDFLAGS]"
-        fi
-    fi
-fi
-
-rm -f build_check.c
-
-if [ "$CHECK_FBCLIENT" = "yes" ]
-then
-    STG_LIBS="$STG_LIBS
-          ibpp.lib"
-    PLUGINS="$PLUGINS
-         store/firebird"
-fi
-
-if [ "$CHECK_PQ" = "yes" ]
-then
-    PLUGINS="$PLUGINS
-             store/postgresql"
-fi
-
-if [ "$CHECK_MYSQLCLIENT" = "yes" ]
-then
-    PLUGINS="$PLUGINS
-         store/mysql"
-fi
-
-echo "OS=$OS" > $CONFFILE
-echo "STG_TIME=yes" >> $CONFFILE
-echo "DIR_BUILD=$BUILD_DIR" >> $CONFFILE
-echo "DIR_LIB=\$(DIR_BUILD)/../../lib" >> $CONFFILE
-echo "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs" >> $CONFFILE
-echo "DIR_INCLUDE=\$(DIR_BUILD)/../../include" >> $CONFFILE
-echo "DIR_MOD=\$(DIR_BUILD)/../stargazer/modules" >> $CONFFILE
-echo "DIR_PLUGINS=\$(DIR_BUILD)/../stargazer/plugins" >> $CONFFILE
-echo "ARCH=$ARCH" >> $CONFFILE
-echo "CHECK_FBCLIENT=$CHECK_FBCLIENT" >> $CONFFILE
-echo "DEFS=$DEFS" >> $CONFFILE
-echo -n "STG_LIBS=" >> $CONFFILE
-for lib in $STG_LIBS
-do
-    echo -n "$lib " >> $CONFFILE
-done
-echo "" >> $CONFFILE
-echo -n "PLUGINS=" >> $CONFFILE
-for plugin in $PLUGINS
-do
-    echo -n "$plugin " >> $CONFFILE
-done
-echo "" >> $CONFFILE
-echo "CXXFLAGS=$CXXFLAGS" >> $CONFFILE
-echo "CFLAGS=$CFLAGS" >> $CONFFILE
-echo "LDFLAGS=$LDFLAGS" >> $CONFFILE
-echo "LIB_THREAD=$LIB_THREAD" >> $CONFFILE
-echo "PREFIX=$PREFIX" >> $CONFFILE
-echo "BIN_MODE=$BIN_MODE" >> $CONFFILE
-echo "DATA_MODE=$DATA_MODE" >> $CONFFILE
-echo "DIR_MODE=$DIR_MODE" >> $CONFFILE
-echo "OWNER=$OWNER" >> $CONFFILE
-echo "VAR_DIR=$VAR_DIR" >> $CONFFILE
-
-mkdir -p ../stargazer/modules
-
-$MAKE $MAKEOPTS
-
diff --git a/projects/convertor/convertor.conf b/projects/convertor/convertor.conf
deleted file mode 100644 (file)
index 41e18b6..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-################################################################################
-#                   Stargazer Convertor Configuration file                     #
-################################################################################
-
-# The path to directory with server modules
-# Parameter: required
-# Value: directory path
-# Default: /usr/lib/stg
-ModulesPath = /usr/lib/stg
-
-#################################################################################
-Store module
-# Configure the module that works with the database server
-# Option - the name of the module without 'mod_' at the beginning and '.so'
-# in the end ie full name of the module mod_store_files.so
-<SourceStoreModule store_files>
-
-    # Working server directory, provides data on tariffs, users, administrators.
-    # Parameter: required
-    # Value: directory path
-    WorkDir = /var/stargazer
-
-    # Owner, group and permissions of the files of user statistics (stat)
-    # Parameter: required
-    # Values: any, supported by OS
-    ConfOwner = root
-    ConfGroup = root
-    ConfMode = 600
-
-    # Owner, group and permissions on user configuration files (conf)
-    # Parameter: required
-    # Values: any, supported by OS
-    StatOwner = root
-    StatGroup = root
-    StatMode = 640
-
-    # Owner, group and permissions for user log files (log)
-    # Parameter: required
-    # Values: any, supported by OS
-    UserLogOwner = root
-    UserLogGroup = root
-    UserLogMode = 640
-
-</SourceStoreModule>
-
-#<DestStoreModule store_firebird>
-    # Database server address
-    # Parameter: required
-    # Value: IP address or DNS name
-    # Default: localhost
-    # server = localhost
-
-    # Path to the database on the server or its alias
-    # Parameter: required
-    # Value: file path
-    # Default: /var/stg/stargazer.fdb
-    # database = /var/stg/stargazer.fdb
-
-    # Database username
-    # Parameter: required
-    # Value: any, supported by database
-    # Default: stg
-    # user = stg
-
-    # Database password
-    # Parameter: required
-    # Value: any, supported by database
-    # Default: 123456
-    # password = 123456
-#</DestStoreModule>
-
-<DestStoreModule store_postgresql>
-    # Database server address
-    # Parameter: required
-    # Value: IP address or DNS name
-    # Default: localhost
-    server = localhost
-
-    # Database name
-    # Parameter: required
-    # Value: any, supported by database
-    # Default: stargazer
-    database = stargazer
-
-    # Database username
-    # Parameter: mandatory
-    # Value: any, supported by database
-    # Default: stg
-    user = stg
-
-    # Database password
-    # Parameter: required
-    # Value: any, supported by database
-    # Default: 123456
-    password = 123456
-
-</DestStoreModule>
-
-#<DestStoreModule store_mysql>
-    # Database server address
-    # Parameter: required
-    # Value: IP address or DNS name
-    # Default: localhost
-    # dbhost = localhost
-
-    # Database name
-    # Parameter: required
-    # Value: any, supported by database
-    # Default: stg
-    # dbname = stg
-
-    # Database username
-    # Parameter: required
-    # Value: any, supported by database
-    # Default: stg
-    # dbuser = stg
-
-    # Database password
-    # Parameter: required
-    # Value: any, supported by database
-    # Default: 123456
-    # rootdbpass = 123456
-
-#</DestStoreModule>
diff --git a/projects/convertor/main.cpp b/projects/convertor/main.cpp
deleted file mode 100644 (file)
index e0679d0..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- *    This program is free software; you can redistribute it and/or modify
- *    it under the terms of the GNU General Public License as published by
- *    the Free Software Foundation; either version 2 of the License, or
- *    (at your option) any later version.
- *
- *    This program is distributed in the hope that it will be useful,
- *    but WITHOUT ANY WARRANTY; without even the implied warranty of
- *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *    GNU General Public License for more details.
- *
- *    You should have received a copy of the GNU General Public License
- *    along with this program; if not, write to the Free Software
- *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-/*
- *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
- */
-
- /*
- $Revision: 1.11 $
- $Date: 2010/03/25 12:32:30 $
- $Author: faust $
- */
-
-#include <dlfcn.h>
-
-#include <string>
-#include <vector>
-#include <iostream>
-#include <ctime>
-#include <algorithm>
-
-#include "stg/common.h"
-#include "stg/store.h"
-#include "stg/conffiles.h"
-
-#include "stg/user_stat.h"
-#include "stg/user_conf.h"
-#include "stg/corp_conf.h"
-#include "stg/service_conf.h"
-#include "stg/admin_conf.h"
-#include "stg/tariff_conf.h"
-#include "stg/settings.h"
-#include "stg/message.h"
-
-#include "settings_impl.h"
-
-using namespace std;
-
-volatile time_t stgTime = time(NULL);
-
-int main(int argc, char **argv)
-{
-printfd(__FILE__, "Start\n");
-
-STORE * fromStore = NULL;
-STORE * toStore = NULL;
-
-SETTINGS_IMPL * settings = NULL;
-
-string modulePath;
-
-MODULE_SETTINGS fromStoreSettings;
-MODULE_SETTINGS toStoreSettings;
-
-ADMIN_CONF ac;
-USER_CONF uc;
-USER_STAT us;
-STG_MSG msg;
-TARIFF_DATA td;
-CORP_CONF cc;
-SERVICE_CONF sc;
-vector<STG_MSG_HDR> hdrs;
-
-if (argc == 2)
-    settings = new SETTINGS_IMPL(argv[1]);
-else
-    settings = new SETTINGS_IMPL();
-
-if (settings->ReadSettings())
-    {
-    printfd(__FILE__, "Error reading settings\n");
-    delete settings;
-    return -1;
-    }
-
-fromStoreSettings = settings->GetSourceStoreModuleSettings();
-toStoreSettings = settings->GetDestStoreModuleSettings();
-modulePath = settings->GetModulesPath();
-
-string sourcePlugin(modulePath + "/mod_" + fromStoreSettings.moduleName + ".so");
-string destPlugin(modulePath + "/mod_" + toStoreSettings.moduleName + ".so");
-
-void * src_lh = dlopen(sourcePlugin.c_str(), RTLD_NOW);
-if (!src_lh)
-    {
-    printfd(__FILE__, "Source storage plugin loading failed: %s\n", dlerror());
-    delete settings;
-    return -1;
-    }
-
-void * dst_lh = dlopen(destPlugin.c_str(), RTLD_NOW);
-if (!dst_lh)
-    {
-    printfd(__FILE__, "Destination storage plugin loading failed: %s\n", dlerror());
-    delete settings;
-    return -1;
-    }
-
-STORE * (*GetSourceStore)();
-STORE * (*GetDestStore)();
-GetSourceStore = (STORE * (*)())dlsym(src_lh, "GetStore");
-if (!GetSourceStore)
-    {
-    printfd(__FILE__, "Source storage plugin loading failed. GetStore not found: %s\n", dlerror());
-    delete settings;
-    return -1;
-    }
-GetDestStore = (STORE * (*)())dlsym(dst_lh, "GetStore");
-if (!GetDestStore)
-    {
-    printfd(__FILE__, "Storage plugin (firebird) loading failed. GetStore not found: %s\n", dlerror());
-    delete settings;
-    return -1;
-    }
-
-fromStore = GetSourceStore();
-toStore = GetDestStore();
-
-vector<string> entities;
-vector<string> ready;
-fromStore->SetSettings(fromStoreSettings);
-fromStore->ParseSettings();
-toStore->SetSettings(toStoreSettings);
-toStore->ParseSettings();
-
-printfd(__FILE__, "Importing admins:\n");
-entities.erase(entities.begin(), entities.end());
-ready.erase(ready.begin(), ready.end());
-if (fromStore->GetAdminsList(&entities))
-    {
-    printfd(__FILE__, "Error getting admins list: %s\n", fromStore->GetStrError().c_str());
-    dlclose(src_lh);
-    dlclose(dst_lh);
-    delete settings;
-    return -1;
-    }
-if (toStore->GetAdminsList(&ready))
-    {
-    printfd(__FILE__, "Error getting admins list: %s\n", toStore->GetStrError().c_str());
-    dlclose(src_lh);
-    dlclose(dst_lh);
-    delete settings;
-    return -1;
-    }
-
-vector<string>::const_iterator it;
-for (it = entities.begin(); it != entities.end(); ++it)
-    {
-    printfd(__FILE__, "\t - %s\n", it->c_str());
-    if (find(ready.begin(), ready.end(), *it) == ready.end())
-        if (toStore->AddAdmin(*it))
-            {
-            printfd(__FILE__, "Error adding admin: %s\n", toStore->GetStrError().c_str());
-            dlclose(src_lh);
-            dlclose(dst_lh);
-            delete settings;
-            return -1;
-            }
-    if (fromStore->RestoreAdmin(&ac, *it))
-        {
-        printfd(__FILE__, "Error getting admin's confi: %s\n", fromStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    ac.login = *it;
-    if (toStore->SaveAdmin(ac))
-        {
-        printfd(__FILE__, "Error saving admin's conf: %s\n", toStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    }
-
-printfd(__FILE__, "Importing tariffs:\n");
-entities.erase(entities.begin(), entities.end());
-ready.erase(ready.begin(), ready.end());
-if (fromStore->GetTariffsList(&entities))
-    {
-    printfd(__FILE__, "Error getting tariffs list: %s\n", fromStore->GetStrError().c_str());
-    dlclose(src_lh);
-    dlclose(dst_lh);
-    delete settings;
-    return -1;
-    }
-if (toStore->GetTariffsList(&ready))
-    {
-    printfd(__FILE__, "Error getting tariffs list: %s\n", toStore->GetStrError().c_str());
-    dlclose(src_lh);
-    dlclose(dst_lh);
-    delete settings;
-    return -1;
-    }
-
-for (it = entities.begin(); it != entities.end(); ++it)
-    {
-    printfd(__FILE__, "\t - %s\n", it->c_str());
-    if (find(ready.begin(), ready.end(), *it) == ready.end())
-        if (toStore->AddTariff(*it))
-            {
-            printfd(__FILE__, "Error adding tariff: %s\n", toStore->GetStrError().c_str());
-            dlclose(src_lh);
-            dlclose(dst_lh);
-            delete settings;
-            return -1;
-            }
-    if (fromStore->RestoreTariff(&td, *it))
-        {
-        printfd(__FILE__, "Error getting tariff's data: %s\n", fromStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    if (toStore->SaveTariff(td, *it))
-        {
-        printfd(__FILE__, "Error saving tariff's data: %s\n", toStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    }
-
-printfd(__FILE__, "Importing services:\n");
-entities.erase(entities.begin(), entities.end());
-ready.erase(ready.begin(), ready.end());
-if (fromStore->GetServicesList(&entities))
-    {
-    printfd(__FILE__, "Error getting service list: %s\n", fromStore->GetStrError().c_str());
-    dlclose(src_lh);
-    dlclose(dst_lh);
-    delete settings;
-    return -1;
-    }
-if (toStore->GetServicesList(&ready))
-    {
-    printfd(__FILE__, "Error getting service list: %s\n", toStore->GetStrError().c_str());
-    dlclose(src_lh);
-    dlclose(dst_lh);
-    delete settings;
-    return -1;
-    }
-
-for (it = entities.begin(); it != entities.end(); ++it)
-    {
-    printfd(__FILE__, "\t - %s\n", it->c_str());
-    if (find(ready.begin(), ready.end(), *it) == ready.end())
-        if (toStore->AddService(*it))
-            {
-            printfd(__FILE__, "Error adding service: %s\n", toStore->GetStrError().c_str());
-            dlclose(src_lh);
-            dlclose(dst_lh);
-            delete settings;
-            return -1;
-            }
-    if (fromStore->RestoreService(&sc, *it))
-        {
-        printfd(__FILE__, "Error getting service's data: %s\n", fromStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    if (toStore->SaveService(sc))
-        {
-        printfd(__FILE__, "Error saving service's data: %s\n", toStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    }
-
-printfd(__FILE__, "Importing corporations:\n");
-entities.erase(entities.begin(), entities.end());
-ready.erase(ready.begin(), ready.end());
-if (fromStore->GetCorpsList(&entities))
-    {
-    printfd(__FILE__, "Error getting corporations list: %s\n", fromStore->GetStrError().c_str());
-    dlclose(src_lh);
-    dlclose(dst_lh);
-    delete settings;
-    return -1;
-    }
-if (toStore->GetCorpsList(&ready))
-    {
-    printfd(__FILE__, "Error getting corporations list: %s\n", toStore->GetStrError().c_str());
-    dlclose(src_lh);
-    dlclose(dst_lh);
-    delete settings;
-    return -1;
-    }
-
-for (it = entities.begin(); it != entities.end(); ++it)
-    {
-    printfd(__FILE__, "\t - %s\n", it->c_str());
-    if (find(ready.begin(), ready.end(), *it) == ready.end())
-        if (toStore->AddCorp(*it))
-            {
-            printfd(__FILE__, "Error adding corporation: %s\n", toStore->GetStrError().c_str());
-            dlclose(src_lh);
-            dlclose(dst_lh);
-            delete settings;
-            return -1;
-            }
-    if (fromStore->RestoreCorp(&cc, *it))
-        {
-        printfd(__FILE__, "Error getting corporation's data: %s\n", fromStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    if (toStore->SaveCorp(cc))
-        {
-        printfd(__FILE__, "Error saving corporation's data: %s\n", toStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    }
-
-printfd(__FILE__, "Importing users:\n");
-entities.erase(entities.begin(), entities.end());
-ready.erase(ready.begin(), ready.end());
-if (fromStore->GetUsersList(&entities))
-    {
-    printfd(__FILE__, "Error getting users list: %s\n", fromStore->GetStrError().c_str());
-    dlclose(src_lh);
-    dlclose(dst_lh);
-    delete settings;
-    return -1;
-    }
-if (toStore->GetUsersList(&ready))
-    {
-    printfd(__FILE__, "Error getting users list: %s\n", toStore->GetStrError().c_str());
-    dlclose(src_lh);
-    dlclose(dst_lh);
-    delete settings;
-    return -1;
-    }
-
-sort(ready.begin(), ready.end());
-for (it = entities.begin(); it != entities.end(); ++it)
-    {
-    printfd(__FILE__, "\t - %s\n", it->c_str());
-    if (!binary_search(ready.begin(), ready.end(), *it)) {
-        if (toStore->AddUser(*it))
-            {
-            printfd(__FILE__, "Error adding user: %s\n", toStore->GetStrError().c_str());
-            dlclose(src_lh);
-            dlclose(dst_lh);
-            delete settings;
-            return -1;
-            }
-    } else {
-        printfd(__FILE__, "\t\t(adding passed)\n");
-    }
-    if (fromStore->RestoreUserConf(&uc, *it))
-        {
-        printfd(__FILE__, "Error getting user's conf: %s\n", fromStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    if (fromStore->RestoreUserStat(&us, *it))
-        {
-        printfd(__FILE__, "Error getting user's stat: %s\n", fromStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    if (toStore->SaveUserConf(uc, *it))
-        {
-        printfd(__FILE__, "Error saving user's conf: %s\n", toStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    if (toStore->SaveUserStat(us, *it))
-        {
-        printfd(__FILE__, "Error saving user's stat: %s\n", toStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    hdrs.erase(hdrs.begin(), hdrs.end());
-    if (fromStore->GetMessageHdrs(&hdrs, *it))
-        {
-        printfd(__FILE__, "Error getting user's messages: %s\n", fromStore->GetStrError().c_str());
-        dlclose(src_lh);
-        dlclose(dst_lh);
-        delete settings;
-        return -1;
-        }
-    vector<STG_MSG_HDR>::iterator mit;
-    for (mit = hdrs.begin(); mit != hdrs.end(); ++mit)
-        {
-        if (fromStore->GetMessage(mit->id, &msg, *it))
-            {
-            printfd(__FILE__, "Error getting message for a user: %s\n", fromStore->GetStrError().c_str());
-            dlclose(src_lh);
-            dlclose(dst_lh);
-            delete settings;
-            return -1;
-            }
-        printfd(__FILE__, "\t\t * %s\n", msg.text.c_str());
-        if (toStore->AddMessage(&msg, *it))
-            {
-            printfd(__FILE__, "Error adding message to a user: %s\n", toStore->GetStrError().c_str());
-            dlclose(src_lh);
-            dlclose(dst_lh);
-            delete settings;
-            return -1;
-            }
-        }
-    }
-
-dlclose(src_lh);
-dlclose(dst_lh);
-printfd(__FILE__, "Done\n");
-delete settings;
-return 0;
-}
diff --git a/projects/convertor/settings_impl.cpp b/projects/convertor/settings_impl.cpp
deleted file mode 100644 (file)
index 645865c..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- *    This program is free software; you can redistribute it and/or modify
- *    it under the terms of the GNU General Public License as published by
- *    the Free Software Foundation; either version 2 of the License, or
- *    (at your option) any later version.
- *
- *    This program is distributed in the hope that it will be useful,
- *    but WITHOUT ANY WARRANTY; without even the implied warranty of
- *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *    GNU General Public License for more details.
- *
- *    You should have received a copy of the GNU General Public License
- *    along with this program; if not, write to the Free Software
- *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-/*
- *    Date: 27.10.2002
- */
-
-/*
- *    Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
- */
-
-/*
-$Revision: 1.6 $
-$Date: 2009/06/22 16:26:54 $
-*/
-
-#include "stg/dotconfpp.h"
-#include "stg/module_settings.h"
-#include "stg/common.h"
-
-#include "settings_impl.h"
-
-int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, std::vector<PARAM_VALUE> * params)
-{
-if (!node)
-    return 0;
-
-PARAM_VALUE pv;
-
-pv.param = node->getName();
-
-if (node->getValue(1))
-    {
-    strError = "Unexpected value \'" + std::string(node->getValue(1)) + "\'.";
-    printfd(__FILE__, "SETTINGS_IMPL::ParseModuleSettings() - %s\n", strError.c_str());
-    return -1;
-    }
-
-const char * value = node->getValue(0);
-
-if (!value)
-    {
-    strError = "Module name expected.";
-    printfd(__FILE__, "SETTINGS_IMPL::ParseModuleSettings() - %s\n", strError.c_str());
-    return -1;
-    }
-
-const DOTCONFDocumentNode * childNode = node->getChildNode();
-while (childNode)
-    {
-    pv.param = childNode->getName();
-    int i = 0;
-    while ((value = childNode->getValue(i)) != NULL)
-        {
-        pv.value.push_back(value);
-        ++i;
-        }
-    params->push_back(pv);
-    pv.value.clear();
-    childNode = childNode->getNextNode();
-    }
-
-return 0;
-}
-//-----------------------------------------------------------------------------
-int SETTINGS_IMPL::ReadSettings()
-{
-const char * requiredOptions[] = {
-    "ModulesPath",
-    "SourceStoreModule",
-    "DestStoreModule",
-    NULL
-    };
-int sourceStoreModulesCount = 0;
-int destStoreModulesCount = 0;
-
-DOTCONFDocument conf(DOTCONFDocument::CASEINSENSITIVE);
-conf.setRequiredOptionNames(requiredOptions);
-
-if(conf.setContent(confFile.c_str()) != 0)
-    {
-    strError = "Cannot read file " + confFile + ".";
-    printfd(__FILE__, "SETTINGS_IMPL::ReadSettings() - %s\n", strError.c_str());
-    return -1;
-    }
-
-const DOTCONFDocumentNode * node = conf.getFirstNode();
-
-while (node)
-    {
-    if (strcasecmp(node->getName(), "ModulesPath") == 0)
-        {
-        modulesPath = node->getValue(0);
-        }
-
-    if (strcasecmp(node->getName(), "SourceStoreModule") == 0)
-        {
-        if (node->getValue(1))
-            {
-            strError = "Unexpected \'" + std::string(node->getValue(1)) + "\'.";
-            printfd(__FILE__, "SETTINGS_IMPL::ReadSettings() - %s\n", strError.c_str());
-            return -1;
-            }
-
-        if (sourceStoreModulesCount)
-            {
-            strError = "Should be only one source StoreModule.";
-            printfd(__FILE__, "SETTINGS_IMPL::ReadSettings() - %s\n", strError.c_str());
-            return -1;
-            }
-        ++sourceStoreModulesCount;
-
-        sourceStoreModuleSettings.moduleName = node->getValue(0);
-        ParseModuleSettings(node, &sourceStoreModuleSettings.moduleParams);
-        }
-
-    if (strcasecmp(node->getName(), "DestStoreModule") == 0)
-        {
-        if (node->getValue(1))
-            {
-            strError = "Unexpected \'" + std::string(node->getValue(1)) + "\'.";
-            printfd(__FILE__, "SETTINGS_IMPL::ReadSettings() - %s\n", strError.c_str());
-            return -1;
-            }
-
-        if (destStoreModulesCount)
-            {
-            strError = "Should be only one dest StoreModule.";
-            printfd(__FILE__, "SETTINGS_IMPL::ReadSettings() - %s\n", strError.c_str());
-            return -1;
-            }
-        ++destStoreModulesCount;
-
-        destStoreModuleSettings.moduleName = node->getValue(0);
-        ParseModuleSettings(node, &destStoreModuleSettings.moduleParams);
-        }
-
-    node = node->getNextNode();
-    }
-
-return 0;
-}
-//-----------------------------------------------------------------------------
diff --git a/projects/convertor/settings_impl.h b/projects/convertor/settings_impl.h
deleted file mode 100644 (file)
index eec21d6..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
- /*
- $Revision: 1.6 $
- $Date: 2009/06/22 16:26:54 $
- */
-
-/*
- *    This program is free software; you can redistribute it and/or modify
- *    it under the terms of the GNU General Public License as published by
- *    the Free Software Foundation; either version 2 of the License, or
- *    (at your option) any later version.
- *
- *    This program is distributed in the hope that it will be useful,
- *    but WITHOUT ANY WARRANTY; without even the implied warranty of
- *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *    GNU General Public License for more details.
- *
- *    You should have received a copy of the GNU General Public License
- *    along with this program; if not, write to the Free Software
- *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-/*
- *    Date: 27.10.2002
- */
-
-/*
- *    Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
- */
-
-#ifndef SETTINGS_IMPL_H
-#define SETTINGS_IMPL_H
-
-#include <string>
-#include <vector>
-
-struct MODULE_SETTINGS;
-class DOTCONFDocumentNode;
-
-class SETTINGS_IMPL {
-public:
-    SETTINGS_IMPL() : confFile("./convertor.conf") {}
-    SETTINGS_IMPL(const std::string & cf) : confFile(cf) {}
-    ~SETTINGS_IMPL() {}
-    int ReadSettings();
-
-    std::string GetStrError() const { return strError; }
-
-    const std::string & GetConfDir() const;
-
-    const std::string & GetModulesPath() const { return modulesPath; }
-    const MODULE_SETTINGS & GetSourceStoreModuleSettings() const { return sourceStoreModuleSettings; }
-    const MODULE_SETTINGS & GetDestStoreModuleSettings() const { return destStoreModuleSettings; }
-
-private:
-    int ParseModuleSettings(const DOTCONFDocumentNode * dirNameNode, std::vector<PARAM_VALUE> * params);
-
-    std::string strError;
-    std::string modulesPath;
-    std::string confFile;
-
-    MODULE_SETTINGS sourceStoreModuleSettings;
-    MODULE_SETTINGS destStoreModuleSettings;
-};
-
-#endif
index 98f5f2d24cddaa53d6525d2cac669b3bc5b16a47..3d4104838be58f4aa0a851281f2b08758a983648 100644 (file)
@@ -57,13 +57,30 @@ distclean: clean
 install: install-bin
 
 install-bin:
-       install -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/lib/$(PROG)
+ifeq ($(DEBUG), yes)
+ifeq ($(OS), linux)
+       install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/lib/freeradius/$(PROG)
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/lib/$(PROG)
+endif
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/lib/freeradius/$(PROG)
+ifeq ($(OS), linux)
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/lib/freeradius/$(PROG)
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/lib/$(PROG)
+endif
+endif
        $(MAKE) -C $(DIR_LIBSRC) install
 
 uninstall: uninstall-bin
 
 uninstall-bin:
+ifeq ($(OS), linux)
+       rm -f $(PREFIX)/usr/lib/freeradius/$(PROG)
+else
        rm -f $(PREFIX)/usr/lib/$(PROG)
+endif
 
 ifneq ($(MAKECMDGOALS),distclean)
 ifneq ($(MAKECMDGOALS),clean)
index 0145d0388fd79e7e45326ce4375d597edaa9e711..6459cdb9e4f5e3fc049fada62d5bfba6e8f13b0a 100755 (executable)
@@ -16,18 +16,15 @@ DATA_MODE=0644
 DIR_MODE=0755
 OWNER=root
 
-if [ -z $1 ]
+if [ "$1" = "debug" ]
 then
-    MAKEOPTS="-j1"
+   DEFS="$DEFS -DDEBUG"
+   MAKEOPTS="$MAKEOPTS -j1"
+   CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall -Wextra"
+   DEBUG="yes"
 else
-    if [ "$1" = "debug" ]
-    then
-        DEFS="-DDEBUG"
-        MAKEOPTS="-j1"
-        CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall"
-    else
-        MAKEOPTS="-j1"
-    fi
+   DEFS="$DEFS -DNDEBUG"
+   DEBUG="no"
 fi
 
 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
@@ -56,15 +53,15 @@ fi
 
 if [ "$OS" = "unknown" ]
 then 
-    echo "#############################################################################"
-    echo "# Sorry, but rlm_stg currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #"
-    echo "#############################################################################"
+    printf "#############################################################################\n"
+    printf "# Sorry, but rlm_stg currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #\n"
+    printf "#############################################################################\n"
     exit 1
 fi
 
-echo "#############################################################################"
-echo "       Building rlm_stg for $sys $release"
-echo "#############################################################################"
+printf "#############################################################################\n"
+printf "       Building rlm_stg for $sys $release\n"
+printf "#############################################################################\n"
 
 STG_LIBS="crypto.lib common.lib"
 
@@ -98,32 +95,32 @@ then
     CXX=g++
 fi
 
-echo -n "Checking CC... "
+printf "Checking CC... "
 $CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CC not found"
+    printf "FAIL!\n"
+    printf "$CC not found\n"
     exit;
 fi
-echo "found"
-echo -n "Checking CXX... "
+printf "found\n"
+printf "Checking CXX... "
 $CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CXX not found"
+    printf "FAIL!\n"
+    printf "$CXX not found\n"
     exit;
 fi
-echo "found"
+printf "found\n"
 
-echo -n "Checking endianess... "
-echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
+printf "Checking endianess... "
+printf "int main() { int probe = 0x00000001; return *(char *)&probe; }\n" > build_check.c
 $CC $CFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "Endianess checking failed"
+    printf "FAIL!\n"
+    printf "Endianess checking failed\n"
     exit;
 else
     ./fake
@@ -132,38 +129,39 @@ else
         ARCH=le
         CXXFLAGS="$CXXFLAGS -DARCH_LE"
         CFLAGS="$CFLAGS -DARCH_LE"
-        echo "Little Endian"
+        printf "Little Endian\n"
     else
         ARCH=be
         CXXFLAGS="$CXXFLAGS -DARCH_BE"
         CFLAGS="$CFLAGS -DARCH_BE"
-        echo "Big Endian"
+        printf "Big Endian\n"
     fi
 fi
 rm -f fake
 
-echo "OS=$OS" > $CONFFILE
-echo "STG_TIME=yes" >> $CONFFILE
-echo "DIR_BUILD=$BUILD_DIR" >> $CONFFILE
-echo "DIR_LIB=\$(DIR_BUILD)/../../lib" >> $CONFFILE
-echo "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs" >> $CONFFILE
-echo "DIR_INCLUDE=\$(DIR_BUILD)/../../include" >> $CONFFILE
-echo "ARCH=$ARCH" >> $CONFFILE
-echo "DEFS=$DEFS" >> $CONFFILE
-echo -n "STG_LIBS=" >> $CONFFILE
+printf "OS=$OS\n" > $CONFFILE
+printf "STG_TIME=yes\n" >> $CONFFILE
+printf "DEBUG=$DEBUG\n" >> $CONFFILE
+printf "DIR_BUILD=$BUILD_DIR\n" >> $CONFFILE
+printf "DIR_LIB=\$(DIR_BUILD)/../../lib\n" >> $CONFFILE
+printf "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs\n" >> $CONFFILE
+printf "DIR_INCLUDE=\$(DIR_BUILD)/../../include\n" >> $CONFFILE
+printf "ARCH=$ARCH\n" >> $CONFFILE
+printf "DEFS=$DEFS\n" >> $CONFFILE
+printf "STG_LIBS=" >> $CONFFILE
 for lib in $STG_LIBS
 do
-    echo -n "$lib " >> $CONFFILE
+    printf "$lib " >> $CONFFILE
 done
-echo "" >> $CONFFILE
-echo "CXXFLAGS=$CXXFLAGS" >> $CONFFILE
-echo "CFLAGS=$CFLAGS" >> $CONFFILE
-echo "LDFLAGS=$LDFLAGS" >> $CONFFILE
-echo "LIB_THREAD=$LIB_THREAD" >> $CONFFILE
-echo "PREFIX=$PREFIX" >> $CONFFILE
-echo "BIN_MODE=$BIN_MODE" >> $CONFFILE
-echo "DATA_MODE=$DATA_MODE" >> $CONFFILE
-echo "DIR_MODE=$DIR_MODE" >> $CONFFILE
-echo "OWNER=$OWNER" >> $CONFFILE
+printf "\n" >> $CONFFILE
+printf "CXXFLAGS=$CXXFLAGS\n" >> $CONFFILE
+printf "CFLAGS=$CFLAGS\n" >> $CONFFILE
+printf "LDFLAGS=$LDFLAGS\n" >> $CONFFILE
+printf "LIB_THREAD=$LIB_THREAD\n" >> $CONFFILE
+printf "PREFIX=$PREFIX\n" >> $CONFFILE
+printf "BIN_MODE=$BIN_MODE\n" >> $CONFFILE
+printf "DATA_MODE=$DATA_MODE\n" >> $CONFFILE
+printf "DIR_MODE=$DIR_MODE\n" >> $CONFFILE
+printf "OWNER=$OWNER\n" >> $CONFFILE
 $MAKE $MAKEOPTS
 
index 9d6a78333c0ffcfee64ab8535e1b81d1ffc9aab1..741017b57b18dc7ed8f040580d1c7118ae06b23b 100644 (file)
@@ -1,7 +1,5 @@
 #include "iface.h"
 
-#include "loki/Singleton.h"
-
 #include "thriftclient.h"
 
 int stgInstantiateImpl(const char * server, uint16_t port, const char * password)
index 0912be081cc26b33cc1ad1afa8a95b7bf623dbd6..ce0b76dce38c50fddce86e887aad56e16d05363a 100644 (file)
@@ -57,13 +57,24 @@ distclean: clean
 install: install-bin install-data
 
 install-bin:
-       install -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+ifeq ($(DEBUG), yes)
+       install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+endif
        $(MAKE) -C $(DIR_LIBSRC) install
 
 install-data:
        # Install etc
        mkdir -m $(DIR_MODE) -p $(PREFIX)/etc/rscriptd
        install -m $(DATA_MODE) -o $(OWNER) ./rscriptd.conf $(PREFIX)/etc/rscriptd/rscriptd.conf
+ifeq ($(OS), linux)
+       install -D -m $(BIN_MODE) -o $(OWNER) ../stargazer/inst/linux/etc/stargazer/OnConnect $(PREFIX)/etc/rscriptd/
+       install -D -m $(BIN_MODE) -o $(OWNER) ../stargazer/inst/linux/etc/stargazer/OnDisconnect $(PREFIX)/etc/rscriptd/
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) ../stargazer/inst/freebsd/etc/stargazer/OnConnect $(PREFIX)/etc/rscriptd/
+       install -D -m $(BIN_MODE) -o $(OWNER) ../stargazer/inst/freebsd/etc/stargazer/OnDisconnect $(PREFIX)/etc/rscriptd/
+endif
 
 uninstall: uninstall-bin uninstall-data
 
@@ -73,7 +84,8 @@ uninstall-bin:
 uninstall-data:
        # Uninstall etc
        rm -f $(PREFIX)/etc/rscriptd/rscriptd.conf
-
+       rm -f $(PREFIX)/etc/rscriptd/OnConnect
+       rm -f $(PREFIX)/etc/rscriptd/OnDisconnect
 
 ifneq ($(MAKECMDGOALS),distclean)
 ifneq ($(MAKECMDGOALS),clean)
index 885eef76558f36c88353c0ff33300d20bfa54561..c7aa090dc9d2bf79a1cd7591ff44813690f2e131 100755 (executable)
@@ -16,18 +16,15 @@ DATA_MODE=0644
 DIR_MODE=0755
 OWNER=root
 
-if [ -z $1 ]
+if [ "$1" = "debug" ]
 then
-    MAKEOPTS="-j1"
+   DEFS="$DEFS -DDEBUG"
+   MAKEOPTS="$MAKEOPTS -j1"
+   CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall -Wextra"
+   DEBUG="yes"
 else
-    if [ "$1" = "debug" ]
-    then
-        DEFS="-DDEBUG"
-        MAKEOPTS="-j1"
-        CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall"
-    else
-        MAKEOPTS="-j1"
-    fi
+   DEFS="$DEFS -DNDEBUG"
+   DEBUG="no"
 fi
 
 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
@@ -56,15 +53,15 @@ fi
 
 if [ "$OS" = "unknown" ]
 then 
-    echo "#############################################################################"
-    echo "# Sorry, but rscriptd currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #"
-    echo "#############################################################################"
+    printf "#############################################################################\n"
+    printf "# Sorry, but rscriptd currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #\n"
+    printf "#############################################################################\n"
     exit 1
 fi
 
-echo "#############################################################################"
-echo "       Building rscriptd for $sys $release"
-echo "#############################################################################"
+printf "#############################################################################\n"
+printf "       Building rscriptd for $sys $release\n"
+printf "#############################################################################\n"
 
 STG_LIBS="logger.lib 
           locker.lib
@@ -103,32 +100,32 @@ then
     CXX=g++
 fi
 
-echo -n "Checking CC... "
+printf "Checking CC... "
 $CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CC not found"
+    printf "FAIL!\n"
+    printf "$CC not found\n"
     exit;
 fi
-echo "found"
-echo -n "Checking CXX... "
+printf "found\n"
+printf "Checking CXX... "
 $CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CXX not found"
+    printf "FAIL!\n"
+    printf "$CXX not found\n"
     exit;
 fi
-echo "found"
+printf "found\n"
 
-echo -n "Checking endianess... "
-echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
+printf "Checking endianess... "
+printf "int main() { int probe = 0x00000001; return *(char *)&probe; }\n" > build_check.c
 $CC $CFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "Endianess checking failed"
+    printf "FAIL!\n"
+    printf "Endianess checking failed\n"
     exit;
 else
     ./fake
@@ -137,40 +134,41 @@ else
         ARCH=le
         CXXFLAGS="$CXXFLAGS -DARCH_LE"
         CFLAGS="$CFLAGS -DARCH_LE"
-        echo "Little Endian"
+        printf "Little Endian\n"
     else
         ARCH=be
         CXXFLAGS="$CXXFLAGS -DARCH_BE"
         CFLAGS="$CFLAGS -DARCH_BE"
-        echo "Big Endian"
+        printf "Big Endian\n"
     fi
 fi
 rm -f fake
 rm -f build_check.c
 
-echo "OS=$OS" > $CONFFILE
-echo "STG_TIME=yes" >> $CONFFILE
-echo "DIR_BUILD=$BUILD_DIR" >> $CONFFILE
-echo "DIR_LIB=\$(DIR_BUILD)/../../lib" >> $CONFFILE
-echo "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs" >> $CONFFILE
-echo "DIR_INCLUDE=\$(DIR_BUILD)/../../include" >> $CONFFILE
-echo "ARCH=$ARCH" >> $CONFFILE
-echo "DEFS=$DEFS" >> $CONFFILE
-echo -n "STG_LIBS=" >> $CONFFILE
+printf "OS=$OS\n" > $CONFFILE
+printf "STG_TIME=yes\n" >> $CONFFILE
+printf "DEBUG=$DEBUG\n" >> $CONFFILE
+printf "DIR_BUILD=$BUILD_DIR\n" >> $CONFFILE
+printf "DIR_LIB=\$(DIR_BUILD)/../../lib\n" >> $CONFFILE
+printf "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs\n" >> $CONFFILE
+printf "DIR_INCLUDE=\$(DIR_BUILD)/../../include\n" >> $CONFFILE
+printf "ARCH=$ARCH\n" >> $CONFFILE
+printf "DEFS=$DEFS\n" >> $CONFFILE
+printf "STG_LIBS=" >> $CONFFILE
 for lib in $STG_LIBS
 do
-    echo -n "$lib " >> $CONFFILE
+    printf "$lib " >> $CONFFILE
 done
-echo "" >> $CONFFILE
-echo "LIB_THREAD=$LIB_THREAD" >> $CONFFILE
-echo "CXXFLAGS=$CXXFLAGS" >> $CONFFILE
-echo "CFLAGS=$CFLAGS" >> $CONFFILE
-echo "LDFLAGS=$LDFLAGS" >> $CONFFILE
-echo "PREFIX=$PREFIX" >> $CONFFILE
-echo "BIN_MODE=$BIN_MODE" >> $CONFFILE
-echo "DATA_MODE=$DATA_MODE" >> $CONFFILE
-echo "DIR_MODE=$DIR_MODE" >> $CONFFILE
-echo "OWNER=$OWNER" >> $CONFFILE
+printf "\n" >> $CONFFILE
+printf "LIB_THREAD=$LIB_THREAD\n" >> $CONFFILE
+printf "CXXFLAGS=$CXXFLAGS\n" >> $CONFFILE
+printf "CFLAGS=$CFLAGS\n" >> $CONFFILE
+printf "LDFLAGS=$LDFLAGS\n" >> $CONFFILE
+printf "PREFIX=$PREFIX\n" >> $CONFFILE
+printf "BIN_MODE=$BIN_MODE\n" >> $CONFFILE
+printf "DATA_MODE=$DATA_MODE\n" >> $CONFFILE
+printf "DIR_MODE=$DIR_MODE\n" >> $CONFFILE
+printf "OWNER=$OWNER\n" >> $CONFFILE
 
 $MAKE $MAKEOPTS
 
index fc0fb99f95daeaaa555d77b06ee9132455bf9cf2..45b7b5c0cf28bc64d19fb885516f6be88357ba0e 100644 (file)
@@ -1,8 +1,68 @@
-LogFileName=./rscriptd.log
-ExecutersNum=1
-ConfigDir=./
-Password=123456
-Port=9999
-UserTimeout=60
-ScriptOnConnect=./OnConnect
-ScriptOnDisconnect=./OnDisconnect
+################################################################################
+#                         Rscriptd Configuration file                          #
+################################################################################
+
+# LOG file name
+# Parameter: optional
+# Value: file path
+# Default: /var/log/rscriptd.log
+LogFileName = /var/log/rscriptd.log
+
+# Amount of rscriptd-exec processes.
+# These processes are responsible for the execution of scripts 
+# OnConnect and OnDisconnect.
+# Amount of processes means how many scripts can be executed simultaneously.
+# Recommend to leave 1 to avoid errors when executing scripts
+# Parameter: optional
+# Value: 1 ... 1024
+# Default: 1
+ExecutersNum = 1
+
+# Message queue identifier for the script executer.
+# It may be changed if there're a needs to run multiple copies of rscriptd.
+# Warning: If you do not understand it, do not touch this setting!
+# Parameter: optional
+# Value: 0 ... 2 ^ 32
+# Default: 5555
+# ExecMsgKey = 5555
+
+# The path to directory where config files are
+# Parameter: optional
+# Value: directory path
+# Default: /etc/rscriptd
+ConfigDir = /etc/rscriptd
+
+# Defines password for the encryption exchange between
+# Stargazer server and rscriptd.
+# Parameter: optional
+# Value: any
+# Default: 123456
+Password = 123456
+
+# Defines port number for communication between
+# Stargazer server and rscriptd.
+# Parameter: optional
+# Value: 1 ... 65535
+# Default: 9999
+Port = 9999
+
+# User timeout. If Stargazer does not respond during this time,
+# the user will be disconnected.
+# Parameter: optional
+# Values: 5 ... 600
+# Default: 60
+UserTimeout = 60
+
+# Defines file which runs when user gets access
+# Parameter: optional
+# Value: file path
+# Default: /etc/rscriptd/OnConnect
+ScriptOnConnect = /etc/rscriptd/OnConnect
+
+# Defines file which runs when user loses access
+# Parameter: optional
+# Value: file path
+# Default: /etc/rscriptd/OnDisconnect
+ScriptOnDisconnect = /etc/rscriptd/OnDisconnect
+
+################################################################################
index 99cd0e47e71755345350886711884d84a42ab668..a59371c9309a2eba4b2f2ae3d39d06b506912e7d 100644 (file)
@@ -58,7 +58,11 @@ distclean: clean
 install: install-bin install-data
 
 install-bin:
-       install -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+ifeq ($(DEBUG), yes)
+       install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+endif
        $(MAKE) -C $(DIR_LIBSRC) install
 
 install-data:
index ec747e2aad38a1c00860f62d972a76062f0f479e..5ea022a2fc0ed8aa2dc3b083481b84e2c5674590 100755 (executable)
@@ -16,18 +16,15 @@ DATA_MODE=0644
 DIR_MODE=0755
 OWNER=root
 
-if [ -z $1 ]
+if [ "$1" = "debug" ]
 then
-    MAKEOPTS="-j1"
+   DEFS="$DEFS -DDEBUG"
+   MAKEOPTS="$MAKEOPTS -j1"
+   CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall -Wextra"
+   DEBUG="yes"
 else
-    if [ "$1" = "debug" ]
-    then
-        DEFS="-DDEBUG"
-        MAKEOPTS="-j1"
-        CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall"
-    else
-        MAKEOPTS="-j1"
-    fi
+   DEFS="$DEFS -DNDEBUG"
+   DEBUG="no"
 fi
 
 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
@@ -56,15 +53,15 @@ fi
 
 if [ "$OS" = "unknown" ]
 then 
-    echo "#############################################################################"
-    echo "# Sorry, but sgauth currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #"
-    echo "#############################################################################"
+    printf "#############################################################################\n"
+    printf "# Sorry, but sgauth currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #\n"
+    printf "#############################################################################\n"
     exit 1
 fi
 
-echo "#############################################################################"
-echo "       Building sgauth for $sys $release"
-echo "#############################################################################"
+printf "#############################################################################\n"
+printf "       Building sgauth for $sys $release\n"
+printf "#############################################################################\n"
 
 STG_LIBS="crypto.lib 
          common.lib 
@@ -101,32 +98,32 @@ then
     CXX=g++
 fi
 
-echo -n "Checking CC... "
+printf "Checking CC... "
 $CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CC not found"
+    printf "FAIL!\n"
+    printf "$CC not found\n"
     exit;
 fi
-echo "found"
-echo -n "Checking CXX... "
+printf "found\n"
+printf "Checking CXX... "
 $CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CXX not found"
+    printf "FAIL!\n"
+    printf "$CXX not found\n"
     exit;
 fi
-echo "found"
+printf "found\n"
 
-echo -n "Checking endianess... "
-echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
+printf "Checking endianess... "
+printf "int main() { int probe = 0x00000001; return *(char *)&probe; }\n" > build_check.c
 $CC $CFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "Endianess checking failed"
+    printf "FAIL!\n"
+    printf "Endianess checking failed\n"
     exit;
 else
     ./fake
@@ -135,39 +132,40 @@ else
         ARCH=le
         CXXFLAGS="$CXXFLAGS -DARCH_LE"
         CFLAGS="$CFLAGS -DARCH_LE"
-        echo "Little Endian"
+        printf "Little Endian\n"
     else
         ARCH=be
         CXXFLAGS="$CXXFLAGS -DARCH_BE"
         CFLAGS="$CFLAGS -DARCH_BE"
-        echo "Big Endian"
+        printf "Big Endian\n"
     fi
 fi
 rm -f fake
 rm -f build_check.c
 
-echo "OS=$OS" > $CONFFILE
-echo "STG_TIME=yes" >> $CONFFILE
-echo "DIR_BUILD=$BUILD_DIR" >> $CONFFILE
-echo "DIR_LIB=\$(DIR_BUILD)/../../lib" >> $CONFFILE
-echo "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs" >> $CONFFILE
-echo "DIR_INCLUDE=\$(DIR_BUILD)/../../include" >> $CONFFILE
-echo "ARCH=$ARCH" >> $CONFFILE
-echo "DEFS=$DEFS" >> $CONFFILE
-echo -n "STG_LIBS=" >> $CONFFILE
+printf "OS=$OS\n" > $CONFFILE
+printf "STG_TIME=yes\n" >> $CONFFILE
+printf "DEBUG=$DEBUG\n" >> $CONFFILE
+printf "DIR_BUILD=$BUILD_DIR\n" >> $CONFFILE
+printf "DIR_LIB=\$(DIR_BUILD)/../../lib\n" >> $CONFFILE
+printf "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs\n" >> $CONFFILE
+printf "DIR_INCLUDE=\$(DIR_BUILD)/../../include\n" >> $CONFFILE
+printf "ARCH=$ARCH\n" >> $CONFFILE
+printf "DEFS=$DEFS\n" >> $CONFFILE
+printf "STG_LIBS=" >> $CONFFILE
 for lib in $STG_LIBS
 do
-    echo -n "$lib " >> $CONFFILE
+    printf "$lib " >> $CONFFILE
 done
-echo "" >> $CONFFILE
-echo "LIB_THREAD=$LIB_THREAD" >> $CONFFILE
-echo "CXXFLAGS=$CXXFLAGS" >> $CONFFILE
-echo "CFLAGS=$CFLAGS" >> $CONFFILE
-echo "LDFLAGS=$LDFLAGS" >> $CONFFILE
-echo "PREFIX=$PREFIX" >> $CONFFILE
-echo "BIN_MODE=$BIN_MODE" >> $CONFFILE
-echo "DATA_MODE=$DATA_MODE" >> $CONFFILE
-echo "DIR_MODE=$DIR_MODE" >> $CONFFILE
-echo "OWNER=$OWNER" >> $CONFFILE
+printf "\n" >> $CONFFILE
+printf "LIB_THREAD=$LIB_THREAD\n" >> $CONFFILE
+printf "CXXFLAGS=$CXXFLAGS\n" >> $CONFFILE
+printf "CFLAGS=$CFLAGS\n" >> $CONFFILE
+printf "LDFLAGS=$LDFLAGS\n" >> $CONFFILE
+printf "PREFIX=$PREFIX\n" >> $CONFFILE
+printf "BIN_MODE=$BIN_MODE\n" >> $CONFFILE
+printf "DATA_MODE=$DATA_MODE\n" >> $CONFFILE
+printf "DIR_MODE=$DIR_MODE\n" >> $CONFFILE
+printf "OWNER=$OWNER\n" >> $CONFFILE
 $MAKE $MAKEOPTS
 
index 2af78b71f7667e7960d6db0ec4076e24574becd6..d0ab3c35b135b455f0fabf4b6598c0c8ed3bfa7d 100644 (file)
@@ -200,7 +200,7 @@ if (settings.GetDaemon())
         }
     }
 
-clnp = new IA_CLIENT_PROT(settings.GetServerName(), settings.GetServerPort(), settings.GetLocalPort());
+clnp = new IA_CLIENT_PROT(settings.GetServerName(), settings.GetServerPort(), settings.GetLocalName(), settings.GetLocalPort());
 
 if (!settings.GetNoWeb())
     {
index f85364201774bd1d10ce1fcf41df975887117046..1a7b8dcd71509c70a9fb4df1d6057fdec55201e9 100644 (file)
@@ -85,6 +85,8 @@ if (ParseIntInRange(temp, 1, 65535, &port))
     return -1;
     }
 
+cf.ReadString("LocalName", &localName, "");
+
 cf.ReadString("LocalPort", &temp, "0");
 if (ParseIntInRange(temp, 0, 65535, &localPort))
     {
index 9354e18decf236978f259ce8d5b9248a1ffeaf8a..253b69eabea7c3a00e485fe1862eb7f59988522b 100644 (file)
@@ -37,6 +37,7 @@ public:
 
     const std::string & GetServerName() const { return serverName; }
     uint16_t            GetServerPort() const { return port; }
+    const std::string & GetLocalName() const { return localName; }
     uint16_t            GetLocalPort() const { return localPort; }
 
     const std::string & GetLogin() const { return login; }
@@ -56,6 +57,7 @@ private:
     std::string password;
     std::string serverName;
     int         port;
+    std::string localName;
     int         localPort;
     uint32_t    listenWebIP;
     int         refreshPeriod;
index 0368ec02e585984f9c9ba21138f0392587c479e7..bb5fca32d4472d6e1a4f47d564274d522c8f5929 100644 (file)
@@ -1,37 +1,78 @@
-#Stargazer server ip
-ServerName=192.168.1.2
+################################################################################
+#                           Sgauth Configuration file                          #
+################################################################################
 
-#Stargazer server port
-#Default value 5555
-ServerPort=5555
+# Stargazer server
+# Parameter: required
+# Values: IP address or DNS name
+# Default:
+ServerName = 192.168.1.2
 
-#User's login
-Login=test
+# Port on which Stargazer interacts with sgauth
+# Parameter: optional
+# Value: 1 ... 65535
+# Default: 5555
+ServerPort = 5555
 
-#
-#
-LocalPort=12345
+# User's login in Stargazer
+# Parameter: required
+# Value: any
+# Default:
+Login = test
 
-#User's password
-Password=1234567
+# Local host to bind
+# Parameter: optional
+# Values: IP address or DNS name
+# Default: 0.0.0.0
+LocalName = localhost
 
-#
-#Default value yes
-#Reconnect=no
+# Port on which sgauth interacts with Stargazer
+# Parameter: optional
+# Value: 1 ... 65535
+# Default: 0
+LocalPort = 12345
 
-#
-#Default value yes
-#Daemon=yes
+# User's password in Stargazer
+# Parameter: required
+# Value: any
+# Default:
+Password = 123456
 
-#Refresh web page period
-#Default value 10
-#RefreshPeriod=10
+# Defines whether sgauth should try to reestablish connection to Stargazer
+# if it was lost
+# Parameter: optional
+# Value: yes, no
+# Default: yes
+Reconnect = yes
 
-#
-#Default value 127.0.0.1
-ListenWebIP=127.0.0.1
+# Defines whether sgauth should run as daemon
+# Parameter: optional
+# Value: yes, no
+# Default: yes
+Daemon = yes
 
-#Default value no
-DisableWeb=no
+# Web-page refresh period in built-in webserver
+# Parameter: optional
+# Value: any numeric (minutes)
+# Default: 10
+RefreshPeriod = 10
 
-#ShowPid=no
+# Defines whether sgauth should use built-in webserver
+# Parameter: optional
+# Value: yes, no
+# Default: no
+DisableWeb = no
+
+# Defines address on which sgauth's built-in webserver will listen
+# Parameter: optional
+# Value: IP address or DNS name
+# Default: 127.0.0.1
+ListenWebIP = 127.0.0.1
+
+# Defines whether sgauth should show its process ID
+# Parameter: optional
+# Value: yes, no
+# Default: no
+ShowPid = no
+
+################################################################################
index d2cdf77065dcc0e53f3bea30279a79458ad9e6b3..2b1456593dc88da9a43e861ce87358c9f8831e94 100755 (executable)
@@ -19,14 +19,17 @@ OWNER=root
 if [ -z $1 ]
 then
     MAKEOPTS="-j1"
+    DEBUG="no"
 else
     if [ "$1" = "debug" ]
     then
         DEFS="-DDEBUG"
         MAKEOPTS="-j1"
         CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall"
+        DEBUG="yes"
     else
         MAKEOPTS="-j1"
+        DEBUG="no"
     fi
 fi
 
@@ -56,15 +59,15 @@ fi
 
 if [ "$OS" = "unknown" ]
 then 
-    echo "################################################################################"
-    echo "# Sorry, but sgauthstress currently supported by Linux, FreeBSD 4.x-8.x        #"
-    echo "################################################################################"
+    printf "################################################################################\n"
+    printf "# Sorry, but sgauthstress currently supported by Linux, FreeBSD 4.x-8.x        #\n"
+    printf "################################################################################\n"
     exit 1
 fi
 
-echo "#############################################################################"
-echo "       Building sgauthstress for $sys $release"
-echo "#############################################################################"
+printf "#############################################################################\n"
+printf "       Building sgauthstress for $sys $release\n"
+printf "#############################################################################\n"
 
 STG_LIBS="logger.lib
           locker.lib
@@ -105,32 +108,32 @@ then
     CXX=g++
 fi
 
-echo -n "Checking CC... "
+printf "Checking CC... "
 $CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CC not found"
+    printf "FAIL!\n"
+    printf "$CC not found\n"
     exit;
 fi
-echo "found"
-echo -n "Checking CXX... "
+printf "found\n"
+printf "Checking CXX... "
 $CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CXX not found"
+    printf "FAIL!\n"
+    printf "$CXX not found\n"
     exit;
 fi
-echo "found"
+printf "found\n"
 
-echo -n "Checking endianess... "
-echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
+printf "Checking endianess... "
+printf "int main() { int probe = 0x00000001; return *(char *)&probe; }\n" > build_check.c
 $CC $CFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "Endianess checking failed"
+    printf "FAIL!\n"
+    printf "Endianess checking failed\n"
     exit;
 else
     ./fake
@@ -139,103 +142,103 @@ else
         ARCH=le
         CXXFLAGS="$CXXFLAGS -DARCH_LE"
         CFLAGS="$CFLAGS -DARCH_LE"
-        echo "Little Endian"
+        printf "Little Endian\n"
     else
         ARCH=be
         CXXFLAGS="$CXXFLAGS -DARCH_BE"
         CFLAGS="$CFLAGS -DARCH_BE"
-        echo "Big Endian"
+        printf "Big Endian\n"
     fi
 fi
 rm -f fake
 rm -f build_check.c
 
-echo -n "Checking for -lfbclient... "
+printf "Checking for -lfbclient... "
 $CC $CFLAGS $LDFLAGS build_check.c -lfbclient $LIB_THREAD -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_FBCLIENT=no
-    echo "no"
+    printf "no\n"
 else
     CHECK_FBCLIENT=yes
-    echo "yes"
+    printf "yes\n"
 fi
 rm -f fake
 
-echo -n "Checking for mysql_config... "
+printf "Checking for mysql_config... "
 MYSQL_VERSION=`mysql_config --version 2> /dev/null`
 if [ $? != 0 ]
 then
-    echo "no";
-    echo -n "Checking for -lmysqlclient... "
+    printf "no\n";
+    printf "Checking for -lmysqlclient... "
     $CC $CFLAGS $LDFLAGS build_check.c -lmysqlclient_r $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_MYSQLCLIENT=no
-        echo "no"
+        printf "no\n"
     else
         CHECK_MYSQLCLIENT=yes
-        echo "yes"
+        printf "yes\n"
     fi
     rm -f fake
 else
-    echo "yes"
-    echo -n "Checking for mysql_config --cflags... "
+    printf "yes\n"
+    printf "Checking for mysql_config --cflags... "
     MYSQL_CFLAGS=`mysql_config --cflags 2> /dev/null`
     if [ $? != 0 ]
     then
         CHECK_MYSQLCLIENT=no
-        echo "no"
+        printf "no\n"
     else
-        echo "[$MYSQL_CFLAGS]"
-        echo -n "Checking for mysql_config --libs_r... "
+        printf "[$MYSQL_CFLAGS]\n"
+        printf "Checking for mysql_config --libs_r... "
         MYSQL_LDFLAGS=`mysql_config --libs_r 2> /dev/null`
         if [ $? != 0 ]
         then
             CHECK_MYSQLCLIENT=no
-            echo "no"
+            printf "no\n"
         else
             CHECK_MYSQLCLIENT=yes
-            echo "[$MYSQL_LDFLAGS]"
+            printf "[$MYSQL_LDFLAGS]\n"
         fi
     fi
 fi
 
-echo -n "Checking for pg_config... "
+printf "Checking for pg_config... "
 PG_VERSION=`pg_config --version 2> /dev/null`
 if [ $? != 0 ]
 then
-    echo "no";
-    echo -n "Checking for -lpq... "
+    printf "no\n";
+    printf "Checking for -lpq... "
     $CC $CFLAGS $LDFLAGS build_check.c -lpq $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_PQ=no
-        echo "no"
+        printf "no\n"
     else
         CHECK_PQ=yes
-        echo "yes"
+        printf "yes\n"
     fi
     rm -f fake
 else
-    echo "yes";
-    echo -n "Checking for pg_config --includedir... "
+    printf "yes\n";
+    printf "Checking for pg_config --includedir... "
     PG_CFLAGS=`pg_config --includedir 2> /dev/null`
     if [ $? != 0 ]
     then
         CHECK_PQ=no
-        echo "no"
+        printf "no\n"
     else
-        echo "[$PG_CFLAGS]"
-        echo -n "Checking for pg_config --libdir... "
+        printf "[$PG_CFLAGS]\n"
+        printf "Checking for pg_config --libdir... "
         PG_LDFLAGS=`pg_config --libdir 2> /dev/null`
         if [ $? != 0 ]
         then
             CHECK_PQ=no
-            echo "no"
+            printf "no\n"
         else
             CHECK_PQ=yes
-            echo "[$PG_LDFLAGS]"
+            printf "[$PG_LDFLAGS]\n"
         fi
     fi
 fi
@@ -262,35 +265,36 @@ then
          store/mysql"
 fi
 
-echo "OS=$OS" > $CONFFILE
-echo "STG_TIME=yes" >> $CONFFILE
-echo "DIR_BUILD=$BUILD_DIR" >> $CONFFILE
-echo "DIR_LIB=\$(DIR_BUILD)/../../lib" >> $CONFFILE
-echo "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs" >> $CONFFILE
-echo "DIR_INCLUDE=\$(DIR_BUILD)/../../include" >> $CONFFILE
-echo "DIR_MOD=\$(DIR_BUILD)/../stargazer/modules" >> $CONFFILE
-echo "DIR_PLUGINS=\$(DIR_BUILD)/../stargazer/plugins" >> $CONFFILE
-echo "ARCH=$ARCH" >> $CONFFILE
-echo "DEFS=$DEFS" >> $CONFFILE
-echo -n "STG_LIBS=" >> $CONFFILE
+printf "OS=$OS\n" > $CONFFILE
+printf "STG_TIME=yes\n" >> $CONFFILE
+printf "DEBUG=$DEBUG\n" >> $CONFFILE
+printf "DIR_BUILD=$BUILD_DIR\n" >> $CONFFILE
+printf "DIR_LIB=\$(DIR_BUILD)/../../lib\n" >> $CONFFILE
+printf "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs\n" >> $CONFFILE
+printf "DIR_INCLUDE=\$(DIR_BUILD)/../../include\n" >> $CONFFILE
+printf "DIR_MOD=\$(DIR_BUILD)/../stargazer/modules\n" >> $CONFFILE
+printf "DIR_PLUGINS=\$(DIR_BUILD)/../stargazer/plugins\n" >> $CONFFILE
+printf "ARCH=$ARCH\n" >> $CONFFILE
+printf "DEFS=$DEFS\n" >> $CONFFILE
+printf "STG_LIBS=" >> $CONFFILE
 for lib in $STG_LIBS
 do
-    echo -n "$lib " >> $CONFFILE
+    printf "$lib " >> $CONFFILE
 done
-echo "" >> $CONFFILE
-echo -n "PLUGINS=" >> $CONFFILE
+printf "\n" >> $CONFFILE
+printf "PLUGINS=" >> $CONFFILE
 for plugin in $PLUGINS
 do
-    echo -n "$plugin " >> $CONFFILE
+    printf "$plugin " >> $CONFFILE
 done
-echo "" >> $CONFFILE
-echo "LIB_THREAD=$LIB_THREAD" >> $CONFFILE
-echo "CXXFLAGS=$CXXFLAGS" >> $CONFFILE
-echo "CFLAGS=$CFLAGS" >> $CONFFILE
-echo "LDFLAGS=$LDFLAGS" >> $CONFFILE
-echo "PREFIX=$PREFIX" >> $CONFFILE
-echo "BIN_MODE=$BIN_MODE" >> $CONFFILE
-echo "DATA_MODE=$DATA_MODE" >> $CONFFILE
-echo "DIR_MODE=$DIR_MODE" >> $CONFFILE
-echo "OWNER=$OWNER" >> $CONFFILE
+printf "\n" >> $CONFFILE
+printf "LIB_THREAD=$LIB_THREAD\n" >> $CONFFILE
+printf "CXXFLAGS=$CXXFLAGS\n" >> $CONFFILE
+printf "CFLAGS=$CFLAGS\n" >> $CONFFILE
+printf "LDFLAGS=$LDFLAGS\n" >> $CONFFILE
+printf "PREFIX=$PREFIX\n" >> $CONFFILE
+printf "BIN_MODE=$BIN_MODE\n" >> $CONFFILE
+printf "DATA_MODE=$DATA_MODE\n" >> $CONFFILE
+printf "DIR_MODE=$DIR_MODE\n" >> $CONFFILE
+printf "OWNER=$OWNER\n" >> $CONFFILE
 $MAKE $MAKEOPTS
index 4d62bb536c998b0d29752f88148cb6f4fa14753c..297d3e206983bb40c96ce9e9d5ab51e5b4051732 100644 (file)
@@ -66,7 +66,11 @@ distclean: clean
 install: install-bin
 
 install-bin:
-       install -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+ifeq ($(DEBUG), yes)
+       install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/bin/$(PROG)
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/bin/$(PROG)
+endif
        $(MAKE) -C $(DIR_LIBSRC) install
 
 uninstall: uninstall-bin
index 1f6c0a0c95e7b1ad807e48f167e89ce10c623e2d..47706a94f0b9d8cd35a52b96128313a532ed6c1b 100755 (executable)
@@ -16,18 +16,15 @@ DATA_MODE=0644
 DIR_MODE=0755
 OWNER=root
 
-if [ -z $1 ]
+if [ "$1" = "debug" ]
 then
-    MAKEOPTS="-j1"
+   DEFS="$DEFS -DDEBUG"
+   MAKEOPTS="$MAKEOPTS -j1"
+   CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall -Wextra"
+   DEBUG="yes"
 else
-    if [ "$1" = "debug" ]
-    then
-        DEFS="-DDEBUG"
-        MAKEOPTS="-j1"
-        CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall"
-    else
-        MAKEOPTS="-j1"
-    fi
+   DEFS="$DEFS -DNDEBUG"
+   DEBUG="no"
 fi
 
 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
@@ -56,15 +53,15 @@ fi
 
 if [ "$OS" = "unknown" ]
 then 
-    echo "#############################################################################"
-    echo "# Sorry, but sgconf currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #"
-    echo "#############################################################################"
+    printf "#############################################################################\n"
+    printf "# Sorry, but sgconf currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #\n"
+    printf "#############################################################################\n"
     exit 1
 fi
 
-echo "#############################################################################"
-echo "       Building sgconf for $sys $release"
-echo "#############################################################################"
+printf "#############################################################################\n"
+printf "       Building sgconf for $sys $release\n"
+printf "#############################################################################\n"
 
 STG_LIBS="conffiles.lib
          crypto.lib 
@@ -100,32 +97,32 @@ then
     CXX=g++
 fi
 
-echo -n "Checking CC... "
+printf "Checking CC... "
 $CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CC not found"
+    printf "FAIL!\n"
+    printf "$CC not found\n"
     exit;
 fi
-echo "found"
-echo -n "Checking CXX... "
+printf "found\n"
+printf "Checking CXX... "
 $CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CXX not found"
+    printf "FAIL!\n"
+    printf "$CXX not found\n"
     exit;
 fi
-echo "found"
+printf "found\n"
 
-echo -n "Checking endianess... "
-echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
+printf "Checking endianess... "
+printf "int main() { int probe = 0x00000001; return *(char *)&probe; }\n" > build_check.c
 $CC $CFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "Endianess checking failed"
+    printf "FAIL!\n"
+    printf "Endianess checking failed\n"
     exit;
 else
     ./fake
@@ -134,60 +131,61 @@ else
         ARCH=le
         CXXFLAGS="$CXXFLAGS -DARCH_LE"
         CFLAGS="$CFLAGS -DARCH_LE"
-        echo "Little Endian"
+        printf "Little Endian\n"
     else
         ARCH=be
         CXXFLAGS="$CXXFLAGS -DARCH_BE"
         CFLAGS="$CFLAGS -DARCH_BE"
-        echo "Big Endian"
+        printf "Big Endian\n"
     fi
 fi
 rm -f fake
 
-echo -n "Checking for -lexpat... "
-echo "int main() { return 0; }" > build_check.c
+printf "Checking for -lexpat... "
+printf "int main() { return 0; }\n" > build_check.c
 $CC $CFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_EXPAT=no
-    echo "no"
+    printf "no\n"
 else
     CHECK_EXPAT=yes
-    echo "yes"
+    printf "yes\n"
 fi
 rm -f fake
 rm -f build_check.c
 
 if [ "$CHECK_EXPAT" != "yes" ]
 then
-    echo "-lexpat not found!"
+    printf "-lexpat not found!\n"
     exit 1
 fi
 
-echo "OS=$OS" > $CONFFILE
-echo "STG_TIME=yes" >> $CONFFILE
-echo "DIR_BUILD=$BUILD_DIR" >> $CONFFILE
-echo "DIR_LIB=\$(DIR_BUILD)/../../lib" >> $CONFFILE
-echo "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs" >> $CONFFILE
-echo "DIR_INCLUDE=\$(DIR_BUILD)/../../include" >> $CONFFILE
-echo "ARCH=$ARCH" >> $CONFFILE
-echo "CHECK_EXPAT=$CHECK_EXPAT" >> $CONFFILE
-echo "DEFS=$DEFS" >> $CONFFILE
-echo -n "STG_LIBS=" >> $CONFFILE
+printf "OS=$OS\n" > $CONFFILE
+printf "STG_TIME=yes\n" >> $CONFFILE
+printf "DEBUG=$DEBUG\n" >> $CONFFILE
+printf "DIR_BUILD=$BUILD_DIR\n" >> $CONFFILE
+printf "DIR_LIB=\$(DIR_BUILD)/../../lib\n" >> $CONFFILE
+printf "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs\n" >> $CONFFILE
+printf "DIR_INCLUDE=\$(DIR_BUILD)/../../include\n" >> $CONFFILE
+printf "ARCH=$ARCH\n" >> $CONFFILE
+printf "CHECK_EXPAT=$CHECK_EXPAT\n" >> $CONFFILE
+printf "DEFS=$DEFS\n" >> $CONFFILE
+printf "STG_LIBS=" >> $CONFFILE
 for lib in $STG_LIBS
 do
-    echo -n "$lib " >> $CONFFILE
+    printf "$lib " >> $CONFFILE
 done
-echo "" >> $CONFFILE
-echo "LIB_THREAD=$LIB_THREAD" >> $CONFFILE
-echo "CXXFLAGS=$CXXFLAGS" >> $CONFFILE
-echo "CFLAGS=$CFLAGS" >> $CONFFILE
-echo "LDFLAGS=$LDFLAGS" >> $CONFFILE
-echo "PREFIX=$PREFIX" >> $CONFFILE
-echo "BIN_MODE=$BIN_MODE" >> $CONFFILE
-echo "DATA_MODE=$DATA_MODE" >> $CONFFILE
-echo "DIR_MODE=$DIR_MODE" >> $CONFFILE
-echo "OWNER=$OWNER" >> $CONFFILE
+printf "\n" >> $CONFFILE
+printf "LIB_THREAD=$LIB_THREAD\n" >> $CONFFILE
+printf "CXXFLAGS=$CXXFLAGS\n" >> $CONFFILE
+printf "CFLAGS=$CFLAGS\n" >> $CONFFILE
+printf "LDFLAGS=$LDFLAGS\n" >> $CONFFILE
+printf "PREFIX=$PREFIX\n" >> $CONFFILE
+printf "BIN_MODE=$BIN_MODE\n" >> $CONFFILE
+printf "DATA_MODE=$DATA_MODE\n" >> $CONFFILE
+printf "DIR_MODE=$DIR_MODE\n" >> $CONFFILE
+printf "OWNER=$OWNER\n" >> $CONFFILE
 
 $MAKE $MAKEOPTS
 
index 60ad3c8473dd9b7bdcbcf3c10cacd160261835b1..bf2ac6225afe53bc149f8f5f7771f4966cd2843f 100644 (file)
@@ -52,6 +52,12 @@ struct GetUserCbData
     void * data;
     bool * result;
 };
+//-----------------------------------------------------------------------------
+struct AuthByCbData
+{
+    void * data;
+    bool * result;
+};
 //---------------------------------------------------------------------------
 struct HelpParams
 {
@@ -122,6 +128,9 @@ printf("sgconf set -s <server> -p <port> -a <admin> -w <admin_pass> -u <user> --
 printf("To get userdata<0...9> use:\n");
 printf("sgconf get -s <server> -p <port> -a <admin> -w <admin_pass> -u <user> --ud0 [--ud1 ...]\n\n");
 
+printf("To get user's authorizers list use:\n");
+printf("sgconf get -s <server> -p <port> -a <admin> -w <admin_pass> -u <user> --authorized-by\n\n");
+
 printf("To send message use:\n");
 printf("sgconf set -s <server> -p <port> -a <admin> -w <admin_pass> -u <user> -m <message>\n\n");
 
@@ -149,6 +158,7 @@ for (int i = 0; i < (int)strlen(login); i++)
     if (!(( login[i] >= 'a' && login[i] <= 'z')
         || (login[i] >= 'A' && login[i] <= 'Z')
         || (login[i] >= '0' && login[i] <= '9')
+        ||  login[i] == '.'
         ||  login[i] == '_'
         ||  login[i] == '-'))
         {
@@ -405,6 +415,22 @@ for (unsigned i = 0; i < sizeof(strReqParams) / sizeof(StringReqParams); i++)
         cout << strReqParams[i].name << "=" << str << endl;
         }
     }
+*result = true;
+}
+//-----------------------------------------------------------------------------
+void RecvAuthByData(const std::vector<std::string> & list, void * d)
+{
+AuthByCbData * abcbd;
+abcbd = (AuthByCbData *)d;
+
+bool * result = abcbd->result;
+
+REQUEST * req = (REQUEST *)abcbd->data;
+
+for (std::vector<std::string>::const_iterator it = list.begin(); it != list.end(); ++it)
+    cout << *it << "\n";
+cout << endl;
+
 *result = true;
 }
 //-----------------------------------------------------------------------------
@@ -496,3 +522,42 @@ else
 return 0;
 }
 //-----------------------------------------------------------------------------
+int ProcessAuthBy(const std::string &server,
+                  int port,
+                  const std::string &admLogin,
+                  const std::string &admPasswd,
+                  const std::string &login,
+                  void * data)
+{
+SERVCONF sc;
+
+bool result = false;
+
+sc.SetServer(server.c_str());  // õÓÔÁÎÁ×ÌÉ×ÁÅÍ ÉÍÑ ÓÅÒ×ÅÒÁ Ó ËÏÔÏÒÇÏ ÚÁÂÉÒÁÔØ ÉÎÆÕ
+sc.SetPort(port);           // ÁÄÍÉÎÓËÉÊ ÐÏÒÔ ÓÅÒ×ÅÒÁÐÏÒÔ
+sc.SetAdmLogin(admLogin.c_str());    // ÷ÙÓÔÁ×ÌÑÅÍ ÌÏÇÉΠɠÐÁÒÏÌØ ÁÄÍÉÎÁ
+sc.SetAdmPassword(admPasswd.c_str());
+
+// TODO Good variable name :)
+AuthByCbData abcbd;
+
+abcbd.data = data;
+abcbd.result = &result;
+
+sc.SetGetUserAuthByRecvCb(RecvAuthByData, &abcbd);
+sc.GetUserAuthBy(login.c_str());
+
+if (result)
+    {
+    printf("Ok\n");
+    return 0;
+    }
+else
+    {
+    printf("Error\n");
+    return -1;
+    }
+
+return 0;
+}
+//-----------------------------------------------------------------------------
index a654748a68f744ea558ef309d5d2702d21447c4e..a5cbffad86289f16be34308ad61f6e1575346932 100644 (file)
@@ -52,6 +52,13 @@ int ProcessGetUser(const std::string &server,
                    const std::string &login,
                    void * data);
 
+int ProcessAuthBy(const std::string &server,
+                  int port,
+                  const std::string &admLogin,
+                  const std::string &admPasswd,
+                  const std::string &login,
+                  void * data);
+
 int ProcessSetUser(const std::string &server,
                    int port,
                    const std::string &admLogin,
index 2aaacbc01d2e5e4d723f32d1d42f37de7a376008..2c02be27488c8b7c53ac0819847684696616d66d 100644 (file)
@@ -108,7 +108,8 @@ struct option long_options_get[] = {
 {"email",       0, 0, 'L'},  //emaiL
 {"phone",       0, 0, 'P'},  //phone
 {"group",       0, 0, 'G'},  //Group
-{"ip",         0, 0, 'I'},  //IP-address of user
+{"ip",          0, 0, 'I'},  //IP-address of user
+{"authorized-by",0, 0, 800}, //always online
 
 {0, 0, 0, 0}};
 
@@ -846,6 +847,10 @@ while (1)
             req.ud[c - 700] = " ";
             break;
 
+        case 800:
+            req.authBy = true;
+            break;
+
         case '?':
         case ':':
             //printf ("Unknown option \n");
@@ -873,7 +878,10 @@ if (missedOptionArg || !CheckParametersGet(&req))
     exit(PARAMETER_PARSING_ERR_CODE);
     }
 
-return ProcessGetUser(req.server, req.port, req.admLogin, req.admPasswd, req.login, &req);
+if (req.authBy)
+    return ProcessAuthBy(req.server, req.port, req.admLogin, req.admPasswd, req.login, &req);
+else
+    return ProcessGetUser(req.server, req.port, req.admLogin, req.admPasswd, req.login, &req);
 }
 //-----------------------------------------------------------------------------
 int mainSet(int argc, char **argv)
index daddec1d3401f6d2eec33d1a2678a98823bd922a..6122212732aa5206359a6eb8342c717de401c61a 100644 (file)
@@ -49,7 +49,8 @@ struct REQUEST
 REQUEST()
     : chgTariff(false),
       createUser(false),
-      deleteUser(false)
+      deleteUser(false),
+      authBy(false)
 {
     for (int i = 0; i < DIR_NUM; i++)
         {
@@ -75,6 +76,7 @@ RESETABLE<double>   setCash;
 string              message;
 bool                createUser;
 bool                deleteUser;
+bool                authBy;
 
 RESETABLE<string>   usrMsg;
 RESETABLE<double>   credit;
index b7ebca0addfb67ba8950e00ba94087d9383ea135..b953bb526cd9b059958e19cb37dfda8c6e78a5cd 100644 (file)
@@ -66,7 +66,11 @@ distclean: clean
 install: install-bin install-data
 
 install-bin:
-       install -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+ifeq ($(DEBUG), yes)
+       install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/bin/$(PROG)
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/bin/$(PROG)
+endif
        $(MAKE) -C $(DIR_LIBSRC) install
 
 uninstall: uninstall-bin uninstall-data
index f78e6f70ccbf41c58dd25f26030ac699b31d3c25..e9cfb40b478eaba32419daefc104d171a0187e9d 100755 (executable)
@@ -16,18 +16,15 @@ DATA_MODE=0644
 DIR_MODE=0755
 OWNER=root
 
-if [ -z $1 ]
+if [ "$1" = "debug" ]
 then
-    MAKEOPTS="-j1"
+   DEFS="$DEFS -DDEBUG"
+   MAKEOPTS="$MAKEOPTS -j1"
+   CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall -Wextra"
+   DEBUG="yes"
 else
-    if [ "$1" = "debug" ]
-    then
-        DEFS="-DDEBUG"
-        MAKEOPTS="-j1"
-        CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall"
-    else
-        MAKEOPTS="-j1"
-    fi
+   DEFS="$DEFS -DNDEBUG"
+   DEBUG="no"
 fi
 
 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
@@ -56,15 +53,15 @@ fi
 
 if [ "$OS" = "unknown" ]
 then 
-    echo "#############################################################################"
-    echo "# Sorry, but sgconf currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #"
-    echo "#############################################################################"
+    printf "#############################################################################\n"
+    printf "# Sorry, but sgconf currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #\n"
+    printf "#############################################################################\n"
     exit 1
 fi
 
-echo "#############################################################################"
-echo "       Building sgconf for $sys $release"
-echo "#############################################################################"
+printf "#############################################################################\n"
+printf "       Building sgconf for $sys $release\n"
+printf "#############################################################################\n"
 
 STG_LIBS="conffiles.lib
          crypto.lib 
@@ -100,32 +97,32 @@ then
     CXX=g++
 fi
 
-echo -n "Checking CC... "
+printf "Checking CC... "
 $CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CC not found"
+    printf "FAIL!\n"
+    printf "$CC not found\n"
     exit;
 fi
-echo "found"
-echo -n "Checking CXX... "
+printf "found\n"
+printf "Checking CXX... "
 $CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CXX not found"
+    printf "FAIL!\n"
+    printf "$CXX not found\n"
     exit;
 fi
-echo "found"
+printf "found\n"
 
-echo -n "Checking endianess... "
-echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
+printf "Checking endianess... "
+printf "int main() { int probe = 0x00000001; return *(char *)&probe; }\n" > build_check.c
 $CC $CFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "Endianess checking failed"
+    printf "FAIL!\n"
+    printf "Endianess checking failed\n"
     exit;
 else
     ./fake
@@ -134,60 +131,61 @@ else
         ARCH=le
         CXXFLAGS="$CXXFLAGS -DARCH_LE"
         CFLAGS="$CFLAGS -DARCH_LE"
-        echo "Little Endian"
+        printf "Little Endian\n"
     else
         ARCH=be
         CXXFLAGS="$CXXFLAGS -DARCH_BE"
         CFLAGS="$CFLAGS -DARCH_BE"
-        echo "Big Endian"
+        printf "Big Endian\n"
     fi
 fi
 rm -f fake
 
-echo -n "Checking for -lexpat... "
-echo "int main() { return 0; }" > build_check.c
+printf "Checking for -lexpat... "
+printf "int main() { return 0; }\n" > build_check.c
 $CC $CXXFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_EXPAT=no
-    echo "no"
+    printf "no\n"
 else
     CHECK_EXPAT=yes
-    echo "yes"
+    printf "yes\n"
 fi
 rm -f fake
 rm -f build_check.c
 
 if [ "$CHECK_EXPAT" != "yes" ]
 then
-    echo "-lexpat not found!"
+    printf "-lexpat not found!\n"
     exit 1
 fi
 
-echo "OS=$OS" > $CONFFILE
-echo "STG_TIME=yes" >> $CONFFILE
-echo "DIR_BUILD=$BUILD_DIR" >> $CONFFILE
-echo "DIR_LIB=\$(DIR_BUILD)/../../lib" >> $CONFFILE
-echo "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs" >> $CONFFILE
-echo "DIR_INCLUDE=\$(DIR_BUILD)/../../include" >> $CONFFILE
-echo "ARCH=$ARCH" >> $CONFFILE
-echo "CHECK_EXPAT=$CHECK_EXPAT" >> $CONFFILE
-echo "DEFS=$DEFS" >> $CONFFILE
-echo -n "STG_LIBS=" >> $CONFFILE
+printf "OS=$OS\n" > $CONFFILE
+printf "STG_TIME=yes\n" >> $CONFFILE
+printf "DEBUG=$DEBUG\n" >> $CONFFILE
+printf "DIR_BUILD=$BUILD_DIR\n" >> $CONFFILE
+printf "DIR_LIB=\$(DIR_BUILD)/../../lib\n" >> $CONFFILE
+printf "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs\n" >> $CONFFILE
+printf "DIR_INCLUDE=\$(DIR_BUILD)/../../include\n" >> $CONFFILE
+printf "ARCH=$ARCH\n" >> $CONFFILE
+printf "CHECK_EXPAT=$CHECK_EXPAT\n" >> $CONFFILE
+printf "DEFS=$DEFS\n" >> $CONFFILE
+printf "STG_LIBS=" >> $CONFFILE
 for lib in $STG_LIBS
 do
-    echo -n "$lib " >> $CONFFILE
+    printf "$lib " >> $CONFFILE
 done
-echo "" >> $CONFFILE
-echo "LIB_THREAD=$LIB_THREAD" >> $CONFFILE
-echo "CXXFLAGS=$CXXFLAGS" >> $CONFFILE
-echo "CFLAGS=$CFLAGS" >> $CONFFILE
-echo "LDFLAGS=$LDFLAGS" >> $CONFFILE
-echo "PREFIX=$PREFIX" >> $CONFFILE
-echo "BIN_MODE=$BIN_MODE" >> $CONFFILE
-echo "DATA_MODE=$DATA_MODE" >> $CONFFILE
-echo "DIR_MODE=$DIR_MODE" >> $CONFFILE
-echo "OWNER=$OWNER" >> $CONFFILE
+printf "\n" >> $CONFFILE
+printf "LIB_THREAD=$LIB_THREAD\n" >> $CONFFILE
+printf "CXXFLAGS=$CXXFLAGS\n" >> $CONFFILE
+printf "CFLAGS=$CFLAGS\n" >> $CONFFILE
+printf "LDFLAGS=$LDFLAGS\n" >> $CONFFILE
+printf "PREFIX=$PREFIX\n" >> $CONFFILE
+printf "BIN_MODE=$BIN_MODE\n" >> $CONFFILE
+printf "DATA_MODE=$DATA_MODE\n" >> $CONFFILE
+printf "DIR_MODE=$DIR_MODE\n" >> $CONFFILE
+printf "OWNER=$OWNER\n" >> $CONFFILE
 
 $MAKE $MAKEOPTS
 
diff --git a/projects/sgconv/Makefile b/projects/sgconv/Makefile
new file mode 100644 (file)
index 0000000..794114c
--- /dev/null
@@ -0,0 +1,97 @@
+###############################################################################
+# $Id: Makefile,v 1.12 2009/03/03 15:49:34 faust Exp $
+###############################################################################
+
+include ../../Makefile.conf
+
+PROG = sgconv
+
+SRCS = ./main.cpp \
+       ./settings_impl.cpp
+
+STGLIBS = dotconfpp \
+         conffiles \
+         logger \
+         crypto \
+          common
+
+STGLIBS_INCS = $(addprefix -I ../../stglibs/,$(addsuffix .lib/include,$(STGLIBS)))
+STGLIBS_LIBS = $(addprefix -L ../../stglibs/,$(addsuffix .lib,$(STGLIBS)))
+
+LIBS += $(addprefix -lstg,$(STGLIBS)) $(LIB_THREAD)
+
+ifeq ($(OS),linux)
+LIBS += -ldl
+else
+LIBS += -lc -liconv
+endif
+
+SEARCH_DIRS = -I ../../include
+
+OBJS = $(notdir $(patsubst %.cpp, %.o, $(patsubst %.c, %.o, $(SRCS))))
+
+CXXFLAGS += $(DEFS) $(STGLIBS_INCS) $(SEARCH_DIRS)
+CFLAGS += $(DEFS) $(STGLIBS_INCS) $(SEARCH_DIRS)
+LDFLAGS += -Wl,-E $(STGLIBS_LIBS)
+
+.PHONY: all clean distclean libs plugins install uninstall
+all: libs plugins $(PROG) ../../Makefile.conf
+
+libs:
+       $(MAKE) -C $(DIR_LIBSRC)
+
+plugins: libs 
+       $(MAKE) -C $(DIR_PLUGINS)
+
+$(PROG): $(OBJS)
+       $(CXX) $^ $(LDFLAGS) $(LIBS) -o $(PROG)
+
+clean:
+       rm -f deps $(PROG) *.o tags *.*~ .OS
+       rm -f .OS
+       rm -f .store
+       rm -f .db.sql
+       rm -f core*
+       $(MAKE) -C $(DIR_LIBSRC) clean
+       $(MAKE) -C $(DIR_PLUGINS) clean
+
+distclean: clean
+       rm -f ../../Makefile.conf
+
+install: install-bin
+
+install-bin:
+ifeq ($(DEBUG), yes)
+       install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/bin/$(PROG)
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/bin/$(PROG)
+endif
+       $(MAKE) -C $(DIR_PLUGINS) install
+
+uninstall: uninstall-bin
+
+uninstall-bin:
+       rm -f $(PREFIX)/usr/bin/$(PROG)
+
+ifneq ($(MAKECMDGOALS),distclean)
+ifneq ($(MAKECMDGOALS),clean)
+ifneq ($(MAKECMDGOALS),uninstall)
+-include deps
+endif
+endif
+endif
+
+deps:  $(SRCS) ../../Makefile.conf
+       $(MAKE) -C $(DIR_LIBSRC)
+       @>deps ;\
+       for file in $(SRCS); do\
+         echo "$$file" | grep ".c$$" > /dev/null;\
+         if [ $$? -eq 0 ];\
+         then\
+           echo "`$(CC) $(CFLAGS) -MM $$file` Makefile" >> deps ;\
+           printf '%b\n' '\t$$(CC) $(CFLAGS) -c $$<' >> deps ;\
+         else\
+           echo "`$(CXX) $(CXXFLAGS) -MM $$file` Makefile" >> deps ;\
+           printf '%b\n' '\t$$(CXX) $(CXXFLAGS) -c $$<' >> deps ;\
+         fi;\
+       done
diff --git a/projects/sgconv/build b/projects/sgconv/build
new file mode 100755 (executable)
index 0000000..7e430be
--- /dev/null
@@ -0,0 +1,300 @@
+#!/bin/sh
+
+#   $Revision: 1.20 $
+#   $Author: faust $
+#   $Date: 2010/04/14 08:58:43 $
+######################################################
+
+OS=unknown
+sys=`uname -s`
+release=`uname -r | cut -b1`
+BUILD_DIR=`pwd`
+CONFFILE="../../Makefile.conf"
+PREFIX="/"
+BIN_MODE=0755
+DATA_MODE=0644
+DIR_MODE=0755
+OWNER=root
+VAR_DIR="./inst/var/stargazer"
+
+if [ "$1" = "debug" ]
+then
+   DEFS="$DEFS -DDEBUG"
+   MAKEOPTS="$MAKEOPTS -j1"
+   CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall -Wextra"
+   DEBUG="yes"
+else
+   DEFS="$DEFS -DNDEBUG"
+   DEBUG="no"
+fi
+
+CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall -I/usr/local/include"
+LDFLAGS="$LDFLAGS -L/usr/local/lib"
+
+if [ "$sys" = "Linux" ]
+then
+    OS=linux
+    release=""
+    MAKE="make"
+fi
+
+if [ "$sys" = "FreeBSD" ]
+then
+    case $release in
+        4) OS=bsd;;
+        5) OS=bsd5;;
+        6) OS=bsd5;;
+        7) OS=bsd7;;
+        8) OS=bsd7;;
+        9) OS=bsd7;;
+        *) OS=unknown;;
+    esac
+    MAKE="gmake"
+fi
+
+if [ "$OS" = "unknown" ]
+then 
+    printf "#############################################################################\n"
+    printf "# Sorry, but sgconv currently supported by Linux, FreeBSD 4.x, 5.x, 6.x     #\n"
+    printf "#############################################################################\n"
+    exit 1
+fi
+
+printf "#############################################################################\n"
+printf "       Building sgconv for $sys $release\n"
+printf "#############################################################################\n"
+
+STG_LIBS="logger.lib 
+          locker.lib
+         crypto.lib 
+         common.lib 
+         conffiles.lib
+         dotconfpp.lib"
+
+PLUGINS="store/files"
+
+if [ "$OS" = "linux" ]
+then
+    DEFS="$DEFS -DLINUX"
+    LIB_THREAD=-lpthread
+else
+    if [ "$OS" = "bsd" ]
+    then
+        DEFS="$DEFS -DFREE_BSD"
+        LIB_THREAD=-lc_r
+    else
+        DEFS="$DEFS -DFREE_BSD5"
+        if [ "$OS" = "bsd7" ]
+        then
+            LIB_THREAD=-lpthread
+        else
+            LIB_THREAD=-lc_r
+        fi
+    fi
+fi
+
+if [ -z "$CC" ]
+then
+    CC=gcc
+fi
+
+if [ -z "$CXX" ]
+then
+    CXX=g++
+fi
+
+printf "Checking CC... "
+$CC --version > /dev/null 2> /dev/null
+if [ $? != 0 ]
+then
+    printf "FAIL!\n"
+    printf "$CC not found\n"
+    exit;
+fi
+printf "found\n"
+printf "Checking CXX... "
+$CXX --version > /dev/null 2> /dev/null
+if [ $? != 0 ]
+then
+    printf "FAIL!\n"
+    printf "$CXX not found\n"
+    exit;
+fi
+printf "found\n"
+
+printf "Checking endianess... "
+printf "int main() { int probe = 0x00000001; return *(char *)&probe; }\n" > build_check.c
+$CC $CFLAGS $LDFLAGS -L/usr/lib/mysql -L/usr/local/lib/mysql build_check.c -o fake > /dev/null 2> /dev/null
+if [ $? != 0 ]
+then
+    printf "FAIL!\n"
+    printf "Endianess checking failed\n"
+    exit;
+else
+    ./fake
+    if [ $? = 1 ]
+    then
+        ARCH=le
+        CXXFLAGS="$CXXFLAGS -DARCH_LE"
+        CFLAGS="$CFLAGS -DARCH_LE"
+        printf "Little Endian\n"
+    else
+        ARCH=be
+        CXXFLAGS="$CXXFLAGS -DARCH_BE"
+        CFLAGS="$CFLAGS -DARCH_BE"
+        printf "Big Endian\n"
+    fi
+fi
+rm -f fake
+
+printf "Checking for -lfbclient... "
+$CC $CFLAGS $LDFLAGS build_check.c -lfbclient $LIB_THREAD -o fake > /dev/null 2> /dev/null
+if [ $? != 0 ]
+then
+    CHECK_FBCLIENT=no
+    printf "no\n"
+else
+    CHECK_FBCLIENT=yes
+    printf "yes\n"
+fi
+rm -f fake
+
+printf "Checking for mysql_config... "
+MYSQL_VERSION=`mysql_config --version 2> /dev/null`
+if [ $? != 0 ]
+then
+    printf "no\n";
+    printf "Checking for -lmysqlclient... "
+    $CC $CFLAGS $LDFLAGS build_check.c -lmysqlclient_r $LIB_THREAD -o fake > /dev/null 2> /dev/null
+    if [ $? != 0 ]
+    then
+        CHECK_MYSQLCLIENT=no
+        printf "no\n"
+    else
+        CHECK_MYSQLCLIENT=yes
+        printf "yes\n"
+    fi
+    rm -f fake
+else
+    printf "yes\n"
+    printf "Checking for mysql_config --cflags... "
+    MYSQL_CFLAGS=`mysql_config --cflags 2> /dev/null`
+    if [ $? != 0 ]
+    then
+        CHECK_MYSQLCLIENT=no
+        printf "no\n"
+    else
+        printf "[$MYSQL_CFLAGS]\n"
+        printf "Checking for mysql_config --libs_r... "
+        MYSQL_LDFLAGS=`mysql_config --libs_r 2> /dev/null`
+        if [ $? != 0 ]
+        then
+            CHECK_MYSQLCLIENT=no
+            printf "no\n"
+        else
+            CHECK_MYSQLCLIENT=yes
+            printf "[$MYSQL_LDFLAGS]\n"
+        fi
+    fi
+fi
+
+printf "Checking for pg_config... "
+PG_VERSION=`pg_config --version 2> /dev/null`
+if [ $? != 0 ]
+then
+    printf "no\n";
+    printf "Checking for -lpq... "
+    $CC $CFLAGS $LDFLAGS build_check.c -lpq $LIB_THREAD -o fake > /dev/null 2> /dev/null
+    if [ $? != 0 ]
+    then
+        CHECK_PQ=no
+        printf "no\n"
+    else
+        CHECK_PQ=yes
+        printf "yes\n"
+    fi
+    rm -f fake
+else
+    printf "yes\n";
+    printf "Checking for pg_config --includedir... "
+    PG_CFLAGS=`pg_config --includedir 2> /dev/null`
+    if [ $? != 0 ]
+    then
+        CHECK_PQ=no
+        printf "no\n"
+    else
+        printf "[$PG_CFLAGS]\n"
+        printf "Checking for pg_config --libdir... "
+        PG_LDFLAGS=`pg_config --libdir 2> /dev/null`
+        if [ $? != 0 ]
+        then
+            CHECK_PQ=no
+            printf "no\n"
+        else
+            CHECK_PQ=yes
+            printf "[$PG_LDFLAGS]\n"
+        fi
+    fi
+fi
+
+rm -f build_check.c
+
+if [ "$CHECK_FBCLIENT" = "yes" ]
+then
+    STG_LIBS="$STG_LIBS
+          ibpp.lib"
+    PLUGINS="$PLUGINS
+         store/firebird"
+fi
+
+if [ "$CHECK_PQ" = "yes" ]
+then
+    PLUGINS="$PLUGINS
+             store/postgresql"
+fi
+
+if [ "$CHECK_MYSQLCLIENT" = "yes" ]
+then
+    PLUGINS="$PLUGINS
+         store/mysql"
+fi
+
+printf "OS=$OS\n" > $CONFFILE
+printf "STG_TIME=yes\n" >> $CONFFILE
+printf "DEBUG=$DEBUG\n" >> $CONFFILE
+printf "DIR_BUILD=$BUILD_DIR\n" >> $CONFFILE
+printf "DIR_LIB=\$(DIR_BUILD)/../../lib\n" >> $CONFFILE
+printf "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs\n" >> $CONFFILE
+printf "DIR_INCLUDE=\$(DIR_BUILD)/../../include\n" >> $CONFFILE
+printf "DIR_MOD=\$(DIR_BUILD)/../stargazer/modules\n" >> $CONFFILE
+printf "DIR_PLUGINS=\$(DIR_BUILD)/../stargazer/plugins\n" >> $CONFFILE
+printf "ARCH=$ARCH\n" >> $CONFFILE
+printf "CHECK_FBCLIENT=$CHECK_FBCLIENT\n" >> $CONFFILE
+printf "DEFS=$DEFS\n" >> $CONFFILE
+printf "STG_LIBS=" >> $CONFFILE
+for lib in $STG_LIBS
+do
+    printf "$lib " >> $CONFFILE
+done
+printf "\n" >> $CONFFILE
+printf "PLUGINS=" >> $CONFFILE
+for plugin in $PLUGINS
+do
+    printf "$plugin " >> $CONFFILE
+done
+printf "\n" >> $CONFFILE
+printf "CXXFLAGS=$CXXFLAGS\n" >> $CONFFILE
+printf "CFLAGS=$CFLAGS\n" >> $CONFFILE
+printf "LDFLAGS=$LDFLAGS\n" >> $CONFFILE
+printf "LIB_THREAD=$LIB_THREAD\n" >> $CONFFILE
+printf "PREFIX=$PREFIX\n" >> $CONFFILE
+printf "BIN_MODE=$BIN_MODE\n" >> $CONFFILE
+printf "DATA_MODE=$DATA_MODE\n" >> $CONFFILE
+printf "DIR_MODE=$DIR_MODE\n" >> $CONFFILE
+printf "OWNER=$OWNER\n" >> $CONFFILE
+printf "VAR_DIR=$VAR_DIR\n" >> $CONFFILE
+
+mkdir -p ../stargazer/modules
+
+$MAKE $MAKEOPTS
+
diff --git a/projects/sgconv/main.cpp b/projects/sgconv/main.cpp
new file mode 100644 (file)
index 0000000..e0679d0
--- /dev/null
@@ -0,0 +1,446 @@
+/*
+ *    This program is free software; you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation; either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with this program; if not, write to the Free Software
+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/*
+ *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
+ */
+
+ /*
+ $Revision: 1.11 $
+ $Date: 2010/03/25 12:32:30 $
+ $Author: faust $
+ */
+
+#include <dlfcn.h>
+
+#include <string>
+#include <vector>
+#include <iostream>
+#include <ctime>
+#include <algorithm>
+
+#include "stg/common.h"
+#include "stg/store.h"
+#include "stg/conffiles.h"
+
+#include "stg/user_stat.h"
+#include "stg/user_conf.h"
+#include "stg/corp_conf.h"
+#include "stg/service_conf.h"
+#include "stg/admin_conf.h"
+#include "stg/tariff_conf.h"
+#include "stg/settings.h"
+#include "stg/message.h"
+
+#include "settings_impl.h"
+
+using namespace std;
+
+volatile time_t stgTime = time(NULL);
+
+int main(int argc, char **argv)
+{
+printfd(__FILE__, "Start\n");
+
+STORE * fromStore = NULL;
+STORE * toStore = NULL;
+
+SETTINGS_IMPL * settings = NULL;
+
+string modulePath;
+
+MODULE_SETTINGS fromStoreSettings;
+MODULE_SETTINGS toStoreSettings;
+
+ADMIN_CONF ac;
+USER_CONF uc;
+USER_STAT us;
+STG_MSG msg;
+TARIFF_DATA td;
+CORP_CONF cc;
+SERVICE_CONF sc;
+vector<STG_MSG_HDR> hdrs;
+
+if (argc == 2)
+    settings = new SETTINGS_IMPL(argv[1]);
+else
+    settings = new SETTINGS_IMPL();
+
+if (settings->ReadSettings())
+    {
+    printfd(__FILE__, "Error reading settings\n");
+    delete settings;
+    return -1;
+    }
+
+fromStoreSettings = settings->GetSourceStoreModuleSettings();
+toStoreSettings = settings->GetDestStoreModuleSettings();
+modulePath = settings->GetModulesPath();
+
+string sourcePlugin(modulePath + "/mod_" + fromStoreSettings.moduleName + ".so");
+string destPlugin(modulePath + "/mod_" + toStoreSettings.moduleName + ".so");
+
+void * src_lh = dlopen(sourcePlugin.c_str(), RTLD_NOW);
+if (!src_lh)
+    {
+    printfd(__FILE__, "Source storage plugin loading failed: %s\n", dlerror());
+    delete settings;
+    return -1;
+    }
+
+void * dst_lh = dlopen(destPlugin.c_str(), RTLD_NOW);
+if (!dst_lh)
+    {
+    printfd(__FILE__, "Destination storage plugin loading failed: %s\n", dlerror());
+    delete settings;
+    return -1;
+    }
+
+STORE * (*GetSourceStore)();
+STORE * (*GetDestStore)();
+GetSourceStore = (STORE * (*)())dlsym(src_lh, "GetStore");
+if (!GetSourceStore)
+    {
+    printfd(__FILE__, "Source storage plugin loading failed. GetStore not found: %s\n", dlerror());
+    delete settings;
+    return -1;
+    }
+GetDestStore = (STORE * (*)())dlsym(dst_lh, "GetStore");
+if (!GetDestStore)
+    {
+    printfd(__FILE__, "Storage plugin (firebird) loading failed. GetStore not found: %s\n", dlerror());
+    delete settings;
+    return -1;
+    }
+
+fromStore = GetSourceStore();
+toStore = GetDestStore();
+
+vector<string> entities;
+vector<string> ready;
+fromStore->SetSettings(fromStoreSettings);
+fromStore->ParseSettings();
+toStore->SetSettings(toStoreSettings);
+toStore->ParseSettings();
+
+printfd(__FILE__, "Importing admins:\n");
+entities.erase(entities.begin(), entities.end());
+ready.erase(ready.begin(), ready.end());
+if (fromStore->GetAdminsList(&entities))
+    {
+    printfd(__FILE__, "Error getting admins list: %s\n", fromStore->GetStrError().c_str());
+    dlclose(src_lh);
+    dlclose(dst_lh);
+    delete settings;
+    return -1;
+    }
+if (toStore->GetAdminsList(&ready))
+    {
+    printfd(__FILE__, "Error getting admins list: %s\n", toStore->GetStrError().c_str());
+    dlclose(src_lh);
+    dlclose(dst_lh);
+    delete settings;
+    return -1;
+    }
+
+vector<string>::const_iterator it;
+for (it = entities.begin(); it != entities.end(); ++it)
+    {
+    printfd(__FILE__, "\t - %s\n", it->c_str());
+    if (find(ready.begin(), ready.end(), *it) == ready.end())
+        if (toStore->AddAdmin(*it))
+            {
+            printfd(__FILE__, "Error adding admin: %s\n", toStore->GetStrError().c_str());
+            dlclose(src_lh);
+            dlclose(dst_lh);
+            delete settings;
+            return -1;
+            }
+    if (fromStore->RestoreAdmin(&ac, *it))
+        {
+        printfd(__FILE__, "Error getting admin's confi: %s\n", fromStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    ac.login = *it;
+    if (toStore->SaveAdmin(ac))
+        {
+        printfd(__FILE__, "Error saving admin's conf: %s\n", toStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    }
+
+printfd(__FILE__, "Importing tariffs:\n");
+entities.erase(entities.begin(), entities.end());
+ready.erase(ready.begin(), ready.end());
+if (fromStore->GetTariffsList(&entities))
+    {
+    printfd(__FILE__, "Error getting tariffs list: %s\n", fromStore->GetStrError().c_str());
+    dlclose(src_lh);
+    dlclose(dst_lh);
+    delete settings;
+    return -1;
+    }
+if (toStore->GetTariffsList(&ready))
+    {
+    printfd(__FILE__, "Error getting tariffs list: %s\n", toStore->GetStrError().c_str());
+    dlclose(src_lh);
+    dlclose(dst_lh);
+    delete settings;
+    return -1;
+    }
+
+for (it = entities.begin(); it != entities.end(); ++it)
+    {
+    printfd(__FILE__, "\t - %s\n", it->c_str());
+    if (find(ready.begin(), ready.end(), *it) == ready.end())
+        if (toStore->AddTariff(*it))
+            {
+            printfd(__FILE__, "Error adding tariff: %s\n", toStore->GetStrError().c_str());
+            dlclose(src_lh);
+            dlclose(dst_lh);
+            delete settings;
+            return -1;
+            }
+    if (fromStore->RestoreTariff(&td, *it))
+        {
+        printfd(__FILE__, "Error getting tariff's data: %s\n", fromStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    if (toStore->SaveTariff(td, *it))
+        {
+        printfd(__FILE__, "Error saving tariff's data: %s\n", toStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    }
+
+printfd(__FILE__, "Importing services:\n");
+entities.erase(entities.begin(), entities.end());
+ready.erase(ready.begin(), ready.end());
+if (fromStore->GetServicesList(&entities))
+    {
+    printfd(__FILE__, "Error getting service list: %s\n", fromStore->GetStrError().c_str());
+    dlclose(src_lh);
+    dlclose(dst_lh);
+    delete settings;
+    return -1;
+    }
+if (toStore->GetServicesList(&ready))
+    {
+    printfd(__FILE__, "Error getting service list: %s\n", toStore->GetStrError().c_str());
+    dlclose(src_lh);
+    dlclose(dst_lh);
+    delete settings;
+    return -1;
+    }
+
+for (it = entities.begin(); it != entities.end(); ++it)
+    {
+    printfd(__FILE__, "\t - %s\n", it->c_str());
+    if (find(ready.begin(), ready.end(), *it) == ready.end())
+        if (toStore->AddService(*it))
+            {
+            printfd(__FILE__, "Error adding service: %s\n", toStore->GetStrError().c_str());
+            dlclose(src_lh);
+            dlclose(dst_lh);
+            delete settings;
+            return -1;
+            }
+    if (fromStore->RestoreService(&sc, *it))
+        {
+        printfd(__FILE__, "Error getting service's data: %s\n", fromStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    if (toStore->SaveService(sc))
+        {
+        printfd(__FILE__, "Error saving service's data: %s\n", toStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    }
+
+printfd(__FILE__, "Importing corporations:\n");
+entities.erase(entities.begin(), entities.end());
+ready.erase(ready.begin(), ready.end());
+if (fromStore->GetCorpsList(&entities))
+    {
+    printfd(__FILE__, "Error getting corporations list: %s\n", fromStore->GetStrError().c_str());
+    dlclose(src_lh);
+    dlclose(dst_lh);
+    delete settings;
+    return -1;
+    }
+if (toStore->GetCorpsList(&ready))
+    {
+    printfd(__FILE__, "Error getting corporations list: %s\n", toStore->GetStrError().c_str());
+    dlclose(src_lh);
+    dlclose(dst_lh);
+    delete settings;
+    return -1;
+    }
+
+for (it = entities.begin(); it != entities.end(); ++it)
+    {
+    printfd(__FILE__, "\t - %s\n", it->c_str());
+    if (find(ready.begin(), ready.end(), *it) == ready.end())
+        if (toStore->AddCorp(*it))
+            {
+            printfd(__FILE__, "Error adding corporation: %s\n", toStore->GetStrError().c_str());
+            dlclose(src_lh);
+            dlclose(dst_lh);
+            delete settings;
+            return -1;
+            }
+    if (fromStore->RestoreCorp(&cc, *it))
+        {
+        printfd(__FILE__, "Error getting corporation's data: %s\n", fromStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    if (toStore->SaveCorp(cc))
+        {
+        printfd(__FILE__, "Error saving corporation's data: %s\n", toStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    }
+
+printfd(__FILE__, "Importing users:\n");
+entities.erase(entities.begin(), entities.end());
+ready.erase(ready.begin(), ready.end());
+if (fromStore->GetUsersList(&entities))
+    {
+    printfd(__FILE__, "Error getting users list: %s\n", fromStore->GetStrError().c_str());
+    dlclose(src_lh);
+    dlclose(dst_lh);
+    delete settings;
+    return -1;
+    }
+if (toStore->GetUsersList(&ready))
+    {
+    printfd(__FILE__, "Error getting users list: %s\n", toStore->GetStrError().c_str());
+    dlclose(src_lh);
+    dlclose(dst_lh);
+    delete settings;
+    return -1;
+    }
+
+sort(ready.begin(), ready.end());
+for (it = entities.begin(); it != entities.end(); ++it)
+    {
+    printfd(__FILE__, "\t - %s\n", it->c_str());
+    if (!binary_search(ready.begin(), ready.end(), *it)) {
+        if (toStore->AddUser(*it))
+            {
+            printfd(__FILE__, "Error adding user: %s\n", toStore->GetStrError().c_str());
+            dlclose(src_lh);
+            dlclose(dst_lh);
+            delete settings;
+            return -1;
+            }
+    } else {
+        printfd(__FILE__, "\t\t(adding passed)\n");
+    }
+    if (fromStore->RestoreUserConf(&uc, *it))
+        {
+        printfd(__FILE__, "Error getting user's conf: %s\n", fromStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    if (fromStore->RestoreUserStat(&us, *it))
+        {
+        printfd(__FILE__, "Error getting user's stat: %s\n", fromStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    if (toStore->SaveUserConf(uc, *it))
+        {
+        printfd(__FILE__, "Error saving user's conf: %s\n", toStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    if (toStore->SaveUserStat(us, *it))
+        {
+        printfd(__FILE__, "Error saving user's stat: %s\n", toStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    hdrs.erase(hdrs.begin(), hdrs.end());
+    if (fromStore->GetMessageHdrs(&hdrs, *it))
+        {
+        printfd(__FILE__, "Error getting user's messages: %s\n", fromStore->GetStrError().c_str());
+        dlclose(src_lh);
+        dlclose(dst_lh);
+        delete settings;
+        return -1;
+        }
+    vector<STG_MSG_HDR>::iterator mit;
+    for (mit = hdrs.begin(); mit != hdrs.end(); ++mit)
+        {
+        if (fromStore->GetMessage(mit->id, &msg, *it))
+            {
+            printfd(__FILE__, "Error getting message for a user: %s\n", fromStore->GetStrError().c_str());
+            dlclose(src_lh);
+            dlclose(dst_lh);
+            delete settings;
+            return -1;
+            }
+        printfd(__FILE__, "\t\t * %s\n", msg.text.c_str());
+        if (toStore->AddMessage(&msg, *it))
+            {
+            printfd(__FILE__, "Error adding message to a user: %s\n", toStore->GetStrError().c_str());
+            dlclose(src_lh);
+            dlclose(dst_lh);
+            delete settings;
+            return -1;
+            }
+        }
+    }
+
+dlclose(src_lh);
+dlclose(dst_lh);
+printfd(__FILE__, "Done\n");
+delete settings;
+return 0;
+}
diff --git a/projects/sgconv/settings_impl.cpp b/projects/sgconv/settings_impl.cpp
new file mode 100644 (file)
index 0000000..645865c
--- /dev/null
@@ -0,0 +1,156 @@
+/*
+ *    This program is free software; you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation; either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with this program; if not, write to the Free Software
+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/*
+ *    Date: 27.10.2002
+ */
+
+/*
+ *    Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
+ */
+
+/*
+$Revision: 1.6 $
+$Date: 2009/06/22 16:26:54 $
+*/
+
+#include "stg/dotconfpp.h"
+#include "stg/module_settings.h"
+#include "stg/common.h"
+
+#include "settings_impl.h"
+
+int SETTINGS_IMPL::ParseModuleSettings(const DOTCONFDocumentNode * node, std::vector<PARAM_VALUE> * params)
+{
+if (!node)
+    return 0;
+
+PARAM_VALUE pv;
+
+pv.param = node->getName();
+
+if (node->getValue(1))
+    {
+    strError = "Unexpected value \'" + std::string(node->getValue(1)) + "\'.";
+    printfd(__FILE__, "SETTINGS_IMPL::ParseModuleSettings() - %s\n", strError.c_str());
+    return -1;
+    }
+
+const char * value = node->getValue(0);
+
+if (!value)
+    {
+    strError = "Module name expected.";
+    printfd(__FILE__, "SETTINGS_IMPL::ParseModuleSettings() - %s\n", strError.c_str());
+    return -1;
+    }
+
+const DOTCONFDocumentNode * childNode = node->getChildNode();
+while (childNode)
+    {
+    pv.param = childNode->getName();
+    int i = 0;
+    while ((value = childNode->getValue(i)) != NULL)
+        {
+        pv.value.push_back(value);
+        ++i;
+        }
+    params->push_back(pv);
+    pv.value.clear();
+    childNode = childNode->getNextNode();
+    }
+
+return 0;
+}
+//-----------------------------------------------------------------------------
+int SETTINGS_IMPL::ReadSettings()
+{
+const char * requiredOptions[] = {
+    "ModulesPath",
+    "SourceStoreModule",
+    "DestStoreModule",
+    NULL
+    };
+int sourceStoreModulesCount = 0;
+int destStoreModulesCount = 0;
+
+DOTCONFDocument conf(DOTCONFDocument::CASEINSENSITIVE);
+conf.setRequiredOptionNames(requiredOptions);
+
+if(conf.setContent(confFile.c_str()) != 0)
+    {
+    strError = "Cannot read file " + confFile + ".";
+    printfd(__FILE__, "SETTINGS_IMPL::ReadSettings() - %s\n", strError.c_str());
+    return -1;
+    }
+
+const DOTCONFDocumentNode * node = conf.getFirstNode();
+
+while (node)
+    {
+    if (strcasecmp(node->getName(), "ModulesPath") == 0)
+        {
+        modulesPath = node->getValue(0);
+        }
+
+    if (strcasecmp(node->getName(), "SourceStoreModule") == 0)
+        {
+        if (node->getValue(1))
+            {
+            strError = "Unexpected \'" + std::string(node->getValue(1)) + "\'.";
+            printfd(__FILE__, "SETTINGS_IMPL::ReadSettings() - %s\n", strError.c_str());
+            return -1;
+            }
+
+        if (sourceStoreModulesCount)
+            {
+            strError = "Should be only one source StoreModule.";
+            printfd(__FILE__, "SETTINGS_IMPL::ReadSettings() - %s\n", strError.c_str());
+            return -1;
+            }
+        ++sourceStoreModulesCount;
+
+        sourceStoreModuleSettings.moduleName = node->getValue(0);
+        ParseModuleSettings(node, &sourceStoreModuleSettings.moduleParams);
+        }
+
+    if (strcasecmp(node->getName(), "DestStoreModule") == 0)
+        {
+        if (node->getValue(1))
+            {
+            strError = "Unexpected \'" + std::string(node->getValue(1)) + "\'.";
+            printfd(__FILE__, "SETTINGS_IMPL::ReadSettings() - %s\n", strError.c_str());
+            return -1;
+            }
+
+        if (destStoreModulesCount)
+            {
+            strError = "Should be only one dest StoreModule.";
+            printfd(__FILE__, "SETTINGS_IMPL::ReadSettings() - %s\n", strError.c_str());
+            return -1;
+            }
+        ++destStoreModulesCount;
+
+        destStoreModuleSettings.moduleName = node->getValue(0);
+        ParseModuleSettings(node, &destStoreModuleSettings.moduleParams);
+        }
+
+    node = node->getNextNode();
+    }
+
+return 0;
+}
+//-----------------------------------------------------------------------------
diff --git a/projects/sgconv/settings_impl.h b/projects/sgconv/settings_impl.h
new file mode 100644 (file)
index 0000000..3dfb959
--- /dev/null
@@ -0,0 +1,65 @@
+ /*
+ $Revision: 1.6 $
+ $Date: 2009/06/22 16:26:54 $
+ */
+
+/*
+ *    This program is free software; you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation; either version 2 of the License, or
+ *    (at your option) any later version.
+ *
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with this program; if not, write to the Free Software
+ *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/*
+ *    Date: 27.10.2002
+ */
+
+/*
+ *    Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
+ */
+
+#ifndef SETTINGS_IMPL_H
+#define SETTINGS_IMPL_H
+
+#include <string>
+#include <vector>
+
+struct MODULE_SETTINGS;
+class DOTCONFDocumentNode;
+
+class SETTINGS_IMPL {
+public:
+    SETTINGS_IMPL() : confFile("./sgconv.conf") {}
+    SETTINGS_IMPL(const std::string & cf) : confFile(cf) {}
+    ~SETTINGS_IMPL() {}
+    int ReadSettings();
+
+    std::string GetStrError() const { return strError; }
+
+    const std::string & GetConfDir() const;
+
+    const std::string & GetModulesPath() const { return modulesPath; }
+    const MODULE_SETTINGS & GetSourceStoreModuleSettings() const { return sourceStoreModuleSettings; }
+    const MODULE_SETTINGS & GetDestStoreModuleSettings() const { return destStoreModuleSettings; }
+
+private:
+    int ParseModuleSettings(const DOTCONFDocumentNode * dirNameNode, std::vector<PARAM_VALUE> * params);
+
+    std::string strError;
+    std::string modulesPath;
+    std::string confFile;
+
+    MODULE_SETTINGS sourceStoreModuleSettings;
+    MODULE_SETTINGS destStoreModuleSettings;
+};
+
+#endif
diff --git a/projects/sgconv/sgconv.conf b/projects/sgconv/sgconv.conf
new file mode 100644 (file)
index 0000000..25298b0
--- /dev/null
@@ -0,0 +1,124 @@
+################################################################################
+#                   Stargazer Convertor Configuration file                     #
+################################################################################
+
+# The path to directory with server modules
+# Parameter: required
+# Value: directory path
+# Default: /usr/lib/stg
+ModulesPath = /usr/lib/stg
+
+#################################################################################
+Store module
+# Configure the module that works with the database server
+# Option - the name of the module without 'mod_' at the beginning and '.so'
+# in the end ie full name of the module mod_store_files.so
+<SourceStoreModule store_files>
+
+    # Working server directory, provides data on tariffs, users, administrators.
+    # Parameter: required
+    # Value: directory path
+    WorkDir = /var/stargazer
+
+    # Owner, group and permissions of the files of user statistics (stat)
+    # Parameter: required
+    # Values: any, supported by OS
+    ConfOwner = root
+    ConfGroup = root
+    ConfMode = 600
+
+    # Owner, group and permissions on user configuration files (conf)
+    # Parameter: required
+    # Values: any, supported by OS
+    StatOwner = root
+    StatGroup = root
+    StatMode = 640
+
+    # Owner, group and permissions for user log files (log)
+    # Parameter: required
+    # Values: any, supported by OS
+    UserLogOwner = root
+    UserLogGroup = root
+    UserLogMode = 640
+
+</SourceStoreModule>
+
+#<DestStoreModule store_firebird>
+    # Database server address
+    # Parameter: required
+    # Value: IP address or DNS name
+    # Default: localhost
+    # Server = localhost
+
+    # Path to the database on the server or its alias
+    # Parameter: required
+    # Value: file path
+    # Default: /var/stg/stargazer.fdb
+    # Database = /var/stg/stargazer.fdb
+
+    # Database username
+    # Parameter: required
+    # Value: any, supported by database
+    # Default: stg
+    # User = stg
+
+    # Database password
+    # Parameter: required
+    # Value: any, supported by database
+    # Default: 123456
+    # Password = 123456
+#</DestStoreModule>
+
+<DestStoreModule store_postgresql>
+    # Database server address
+    # Parameter: required
+    # Value: IP address or DNS name
+    # Default: localhost
+    Server = localhost
+
+    # Database name
+    # Parameter: required
+    # Value: any, supported by database
+    # Default: stargazer
+    Database = stargazer
+
+    # Database username
+    # Parameter: required
+    # Value: any, supported by database
+    # Default: stg
+    User = stg
+
+    # Database password
+    # Parameter: required
+    # Value: any, supported by database
+    # Default: 123456
+    Password = 123456
+
+</DestStoreModule>
+
+#<DestStoreModule store_mysql>
+    # Database server address
+    # Parameter: required
+    # Value: IP address or DNS name
+    # Default: localhost
+    # Server = localhost
+
+    # Database name
+    # Parameter: required
+    # Value: any, supported by database
+    # Default: stg
+    # Database = stg
+
+    # Database username
+    # Parameter: required
+    # Value: any, supported by database
+    # Default: stg
+    # User = stg
+
+    # Database password
+    # Parameter: required
+    # Value: any, supported by database
+    # Default: 123456
+    # Password = 123456
+
+#</DestStoreModule>
index 44ae35ec3007ebae87f6cef197526972043ae013..aa2b6f90d65f74fa309c3140035a3f52c95c1a82 100644 (file)
@@ -47,7 +47,12 @@ OBJS = $(notdir $(patsubst %.cpp, %.o, $(patsubst %.c, %.o, $(SRCS))))
 
 CXXFLAGS += $(DEFS) $(STGLIBS_INCS) $(SEARCH_DIRS)
 CFLAGS += $(DEFS) $(STGLIBS_INCS) $(SEARCH_DIRS)
+
+ifneq ($(OS),darwin)
 LDFLAGS += -Wl,-E $(STGLIBS_LIBS)
+endif
+
+LDFLAGS += $(STGLIBS_LIBS)
 
 .PHONY: all clean distclean libs plugins install uninstall install-bin install-data
 all: libs plugins $(PROG)
@@ -77,7 +82,11 @@ distclean: clean
 install: install-bin install-data
 
 install-bin: $(PROG)
-       install -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+ifeq ($(DEBUG), yes)
+       install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/sbin/$(PROG)
+endif
        $(MAKE) -C $(DIR_INCLUDE) install
        $(MAKE) -C $(DIR_LIBSRC) install
        $(MAKE) -C $(DIR_PLUGINS) install
index 6c1fc8a8c671ea9c7ed24781af0ff867990d09bb..66b8556d1144ab43344378865ecbbc18261fc043 100644 (file)
@@ -41,7 +41,7 @@ public:
     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);
index 6a608e11ef4d9ca8822779796d8882652c98f5f6..9a2b9781242a62eec4a06e8d82b776fec6a2732b 100644 (file)
@@ -43,9 +43,9 @@ public:
       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 &);
@@ -54,15 +54,15 @@ public:
       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:
index cb00368c18543d75c9a72e596d8f6d6b993f6587..48435b75d56f49c5a58c9b2aeb78fb82aa62382d 100644 (file)
@@ -73,8 +73,8 @@ 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();
 
index c58b96974e546ab74629f0a45ff125c9df774a08..2061d538b189e2f517b948fad8fda182025f680a 100755 (executable)
@@ -35,20 +35,15 @@ MIN_XMLRPCC_VERSION="1.06.27"
 XMLRPC_FEATURES="c++2 abyss-server"
 
 
-if [ -z "$1" ]
+if [ "$1" = "debug" ]
 then
-    DEFS="$DEFS -DNDEBUG"
-    MAKEOPTS="-j1"
+    DEFS="$DEFS -DDEBUG"
+    MAKEOPTS="$MAKEOPTS -j1"
+    CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall"
+    DEBUG="yes"
 else
-    if [ "$1" = "debug" ]
-    then
-        DEFS="$DEFS -DDEBUG"
-        MAKEOPTS="-j1"
-        CXXFLAGS="$CXXFLAGS -ggdb3 -W -Wall"
-    else
-        DEFS="$DEFS -DNDEBUG"
-        MAKEOPTS="-j1"
-    fi
+    DEFS="$DEFS -DNDEBUG"
+    DEBUG="no"
 fi
 
 CXXFLAGS="$CXXFLAGS -I/usr/local/include"
@@ -77,17 +72,24 @@ then
     MAKE="gmake"
 fi
 
+if [ "$sys" = "Darwin" ]
+then
+    OS=darwin
+    ETC_DIR="./inst/freebsd/etc/stargazer"
+    MAKE="gmake"
+fi
+
 if [ "$OS" = "unknown" ]
 then 
-    echo "#############################################################################"
-    echo "# Sorry, but stargazer currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #"
-    echo "#############################################################################"
+    printf "#############################################################################\n"
+    printf "# Sorry, but stargazer currently supported by Linux, FreeBSD 4.x, 5.x, 6.x  #\n"
+    printf "#############################################################################\n"
     exit 1
 fi
 
-echo "#############################################################################"
-echo "       Building STG 2.4 for $sys $release"
-echo "#############################################################################"
+printf "#############################################################################\n"
+printf "       Building STG 2.4 for $sys $release\n"
+printf "#############################################################################\n"
 
 STG_LIBS="logger.lib 
           locker.lib
@@ -121,12 +123,18 @@ else
         DEFS="$DEFS -DFREE_BSD"
         LIB_THREAD=-lc_r
     else
-        DEFS="$DEFS -DFREE_BSD5"
         if [ "$OS" = "bsd7" ]
         then
+            DEFS="$DEFS -DFREE_BSD5"
             LIB_THREAD=-lpthread
         else
-            LIB_THREAD=-lc_r
+            if [ "$OS" == "darwin" ]
+            then
+                DEFS="$DEFS -DDARWIN"
+                LIB_THREAD=-lpthread
+            else
+                LIB_THREAD=-lc_r
+            fi
         fi
     fi
     PLUGINS="$PLUGINS
@@ -144,32 +152,32 @@ then
     CXX=g++
 fi
 
-echo -n "Checking CC... "
+printf "Checking CC... "
 $CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CC not found"
+    printf "FAIL!\n"
+    printf "$CC not found\n"
     exit;
 fi
-echo "found"
-echo -n "Checking CXX... "
+printf "found\n"
+printf "Checking CXX... "
 $CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "$CXX not found"
+    printf "FAIL!\n"
+    printf "$CXX not found\n"
     exit;
 fi
-echo "found"
+printf "found\n"
 
-echo -n "Checking endianess... "
-echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
+printf "Checking endianess... "
+printf "int main() { int probe = 0x00000001; return *(char *)&probe; }\n" > build_check.c
 $CC $CFLAGS $LDFLAGS build_check.c -o fake
 if [ $? != 0 ]
 then
-    echo "FAIL!"
-    echo "Endianess checking failed"
+    printf "FAIL!\n"
+    printf "Endianess checking failed\n"
     exit;
 else
     ./fake
@@ -178,179 +186,179 @@ else
         ARCH=le
         CXXFLAGS="$CXXFLAGS -DARCH_LE"
         CFLAGS="$CFLAGS -DARCH_LE"
-        echo "Little Endian"
+        printf "Little Endian\n"
     else
         ARCH=be
         CXXFLAGS="$CXXFLAGS -DARCH_BE"
         CFLAGS="$CFLAGS -DARCH_BE"
-        echo "Big Endian"
+        printf "Big Endian\n"
     fi
 fi
 rm -f fake
 
-echo -n "Checking for -lexpat... "
-echo "int main() { return 0; }" > build_check.c
+printf "Checking for -lexpat... "
+printf "int main() { return 0; }\n" > build_check.c
 $CC $CFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_EXPAT=no
-    echo "no"
+    printf "no\n"
 else
     CHECK_EXPAT=yes
-    echo "yes"
+    printf "yes\n"
 fi
 rm -f fake
 
-echo -n "Checking for -lfbclient... "
+printf "Checking for -lfbclient... "
 $CC $CFLAGS $LDFLAGS build_check.c -lfbclient $LIB_THREAD -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_FBCLIENT=no
-    echo "no"
+    printf "no\n"
 else
     CHECK_FBCLIENT=yes
-    echo "yes"
+    printf "yes\n"
 fi
 rm -f fake
 
-echo -n "Checking for mysql_config... "
+printf "Checking for mysql_config... "
 MYSQL_VERSION=`mysql_config --version 2> /dev/null`
 if [ $? != 0 ]
 then
-    echo "no";
-    echo -n "Checking for -lmysqlclient... "
+    printf "no\n";
+    printf "Checking for -lmysqlclient... "
     $CC $CFLAGS $LDFLAGS build_check.c -lmysqlclient_r $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_MYSQLCLIENT=no
-        echo "no"
+        printf "no\n"
     else
         CHECK_MYSQLCLIENT=yes
-        echo "yes"
+        printf "yes\n"
     fi
     rm -f fake
 else
-    echo "yes"
-    echo -n "Checking for mysql_config --cflags... "
+    printf "yes\n"
+    printf "Checking for mysql_config --cflags... "
     MYSQL_CFLAGS=`mysql_config --cflags 2> /dev/null`
     if [ $? != 0 ]
     then
         CHECK_MYSQLCLIENT=no
-        echo "no"
+        printf "no\n"
     else
-        echo "[$MYSQL_CFLAGS]"
-        echo -n "Checking for mysql_config --libs_r... "
+        printf "[$MYSQL_CFLAGS]\n"
+        printf "Checking for mysql_config --libs_r... "
         MYSQL_LDFLAGS=`mysql_config --libs_r 2> /dev/null`
         if [ $? != 0 ]
         then
             CHECK_MYSQLCLIENT=no
-            echo "no"
+            printf "no\n"
         else
             CHECK_MYSQLCLIENT=yes
-            echo "[$MYSQL_LDFLAGS]"
+            printf "[$MYSQL_LDFLAGS]\n"
         fi
     fi
 fi
 
-echo -n "Checking for pg_config... "
+printf "Checking for pg_config... "
 PG_VERSION=`pg_config --version 2> /dev/null`
 if [ $? != 0 ]
 then
-    echo "no";
-    echo -n "Checking for -lpq... "
+    printf "no\n";
+    printf "Checking for -lpq... "
     $CC $CFLAGS $LDFLAGS build_check.c -lpq $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_PQ=no
-        echo "no"
+        printf "no\n"
     else
         CHECK_PQ=yes
-        echo "yes"
+        printf "yes\n"
     fi
     rm -f fake
 else
-    echo "yes";
-    echo -n "Checking for pg_config --includedir... "
+    printf "yes\n";
+    printf "Checking for pg_config --includedir... "
     PG_CFLAGS=`pg_config --includedir 2> /dev/null`
     if [ $? != 0 ]
     then
         CHECK_PQ=no
-        echo "no"
+        printf "no\n"
     else
-        echo "[$PG_CFLAGS]"
-        echo -n "Checking for pg_config --libdir... "
+        printf "[$PG_CFLAGS]\n"
+        printf "Checking for pg_config --libdir... "
         PG_LDFLAGS=`pg_config --libdir 2> /dev/null`
         if [ $? != 0 ]
         then
             CHECK_PQ=no
-            echo "no"
+            printf "no\n"
         else
             CHECK_PQ=yes
-            echo "[$PG_LDFLAGS]"
+            printf "[$PG_LDFLAGS]\n"
         fi
     fi
 fi
 
-echo -n "Checking for xmlrpc-c-config... "
+printf "Checking for xmlrpc-c-config... "
 XMLRPCC_VERSION=`xmlrpc-c-config $XMLRPC_FEATURES --version 2> /dev/null`
 if [ $? != 0 ]
 then
-    echo "no";
-    echo -n "Checking for -lxmlrpc... "
+    printf "no\n";
+    printf "Checking for -lxmlrpc... "
     $CC $CFLAGS $LDFLAGS build_check.c -lxmlrpc $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_XMLRPC=no
-        echo "no"
+        printf "no\n"
     else
         CHECK_XMLRPC=yes
-        echo "yes"
+        printf "yes\n"
     fi
     rm -f fake
 elif [ "$XMLRPCC_VERSION" \< "$MIN_XMLRPCC_VERSION" ]
 then
-    echo "no (need at least $MIN_XMLRPCC_VERSION, actual $XMLRPCC_VERSION)";
+    printf "no (need at least $MIN_XMLRPCC_VERSION, actual $XMLRPCC_VERSION)\n";
     CHECK_XMLRPC=no
 else
-    echo "yes (version $XMLRPCC_VERSION)";
-    echo -n "Checking for xmlrpc-c-config --cflags... "
+    printf "yes (version $XMLRPCC_VERSION)\n";
+    printf "Checking for xmlrpc-c-config --cflags... "
     XMLRPC_CFLAGS=`xmlrpc-c-config $XMLRPC_FEATURES --cflags 2> /dev/null`
     if [ $? != 0 ]
     then
         CHECK_XMLRPC=no
-        echo "no"
+        printf "no\n"
     else
-        echo "[$XMLRPC_CFLAGS]"
-        echo -n "Checking for xmlrpc-c-config --libs... "
+        printf "[$XMLRPC_CFLAGS]\n"
+        printf "Checking for xmlrpc-c-config --libs... "
         XMLRPC_LDFLAGS=`xmlrpc-c-config $XMLRPC_FEATURES --libs 2> /dev/null`
         if [ $? != 0 ]
         then
             CHECK_XMLRPC=no
-            echo "no"
+            printf "no\n"
         else
             CHECK_XMLRPC=yes
-            echo "[$XMLRPC_LDFLAGS]"
+            printf "[$XMLRPC_LDFLAGS]\n"
         fi
     fi
 fi
 
 if [ "$OS" = "linux" ]
 then
-    echo -n "Checking for linux/netfilter_ipv4/ip_queue.h... "
-    echo "#include <linux/types.h>" > build_check.c
-    echo "#include <linux/netfilter_ipv4/ip_queue.h>" >> build_check.c
-    echo "int main() { return 0; }" >> build_check.c
+    printf "Checking for linux/netfilter_ipv4/ip_queue.h... "
+    printf "#include <linux/types.h>\n" > build_check.c
+    printf "#include <linux/netfilter_ipv4/ip_queue.h>\n" >> build_check.c
+    printf "int main() { return 0; }\n" >> build_check.c
     $CC $CFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_IP_QUEUE_H=no
-        echo "no"
+        printf "no\n"
     else
         CHECK_IP_QUEUE_H=yes
         DEFS="$DEFS -DHAS_IP_QUEUE_H"
         PLUGINS="$PLUGINS
                  capture/ipq_linux"
-        echo "yes"
+        printf "yes\n"
     fi
     rm -f fake
 fi
@@ -359,7 +367,7 @@ rm -f build_check.c
 
 if [ "$CHECK_EXPAT" != "yes" ]
 then
-    echo "-lexpat not found!"
+    printf "-lexpat not found!\n"
     exit 1
 fi
 
@@ -389,44 +397,45 @@ then
              configuration/rpcconfig"
 fi
 
-echo "OS=$OS" > $CONFFILE
-echo "STG_TIME=yes" >> $CONFFILE
-echo "DIR_BUILD=$BUILD_DIR" >> $CONFFILE
-echo "DIR_LIB=\$(DIR_BUILD)/../../lib" >> $CONFFILE
-echo "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs" >> $CONFFILE
-echo "DIR_INCLUDE=\$(DIR_BUILD)/../../include" >> $CONFFILE
-echo "DIR_MOD=\$(DIR_BUILD)/modules" >> $CONFFILE
-echo "DIR_PLUGINS=\$(DIR_BUILD)/plugins" >> $CONFFILE
-echo "ARCH=$ARCH" >> $CONFFILE
-echo "CHECK_EXPAT=$CHECK_EXPAT" >> $CONFFILE
-echo "CHECK_FBCLIENT=$CHECK_FBCLIENT" >> $CONFFILE
-echo "CHECK_MYSQLCLIENT=$CHECK_MYSQLCLIENT" >> $CONFFILE
-echo "CHECK_PQ=$CHECK_PQ" >> $CONFFILE
-echo "CHECK_XMLRPC=$CHECK_XMLRPC" >> $CONFFILE
-echo "DEFS=$DEFS" >> $CONFFILE
-echo -n "STG_LIBS=" >> $CONFFILE
+printf "OS=$OS\n" > $CONFFILE
+printf "STG_TIME=yes\n" >> $CONFFILE
+printf "DEBUG=$DEBUG\n" >> $CONFFILE
+printf "DIR_BUILD=$BUILD_DIR\n" >> $CONFFILE
+printf "DIR_LIB=\$(DIR_BUILD)/../../lib\n" >> $CONFFILE
+printf "DIR_LIBSRC=\$(DIR_BUILD)/../../stglibs\n" >> $CONFFILE
+printf "DIR_INCLUDE=\$(DIR_BUILD)/../../include\n" >> $CONFFILE
+printf "DIR_MOD=\$(DIR_BUILD)/modules\n" >> $CONFFILE
+printf "DIR_PLUGINS=\$(DIR_BUILD)/plugins\n" >> $CONFFILE
+printf "ARCH=$ARCH\n" >> $CONFFILE
+printf "CHECK_EXPAT=$CHECK_EXPAT\n" >> $CONFFILE
+printf "CHECK_FBCLIENT=$CHECK_FBCLIENT\n" >> $CONFFILE
+printf "CHECK_MYSQLCLIENT=$CHECK_MYSQLCLIENT\n" >> $CONFFILE
+printf "CHECK_PQ=$CHECK_PQ\n" >> $CONFFILE
+printf "CHECK_XMLRPC=$CHECK_XMLRPC\n" >> $CONFFILE
+printf "DEFS=$DEFS\n" >> $CONFFILE
+printf "STG_LIBS=" >> $CONFFILE
 for lib in $STG_LIBS
 do
-    echo -n "$lib " >> $CONFFILE
+    printf "$lib " >> $CONFFILE
 done
-echo "" >> $CONFFILE
-echo -n "PLUGINS=" >> $CONFFILE
+printf "\n" >> $CONFFILE
+printf "PLUGINS=" >> $CONFFILE
 for plugin in $PLUGINS
 do
-    echo -n "$plugin " >> $CONFFILE
+    printf "$plugin " >> $CONFFILE
 done
-echo "" >> $CONFFILE
-echo "CXXFLAGS=$CXXFLAGS" >> $CONFFILE
-echo "CFLAGS=$CFLAGS" >> $CONFFILE
-echo "LDFLAGS=$LDFLAGS" >> $CONFFILE
-echo "LIB_THREAD=$LIB_THREAD" >> $CONFFILE
-echo "PREFIX=$PREFIX" >> $CONFFILE
-echo "BIN_MODE=$BIN_MODE" >> $CONFFILE
-echo "DATA_MODE=$DATA_MODE" >> $CONFFILE
-echo "DIR_MODE=$DIR_MODE" >> $CONFFILE
-echo "OWNER=$OWNER" >> $CONFFILE
-echo "VAR_DIR=$VAR_DIR" >> $CONFFILE
-echo "ETC_DIR=$ETC_DIR" >> $CONFFILE
+printf "\n" >> $CONFFILE
+printf "CXXFLAGS=$CXXFLAGS\n" >> $CONFFILE
+printf "CFLAGS=$CFLAGS\n" >> $CONFFILE
+printf "LDFLAGS=$LDFLAGS\n" >> $CONFFILE
+printf "LIB_THREAD=$LIB_THREAD\n" >> $CONFFILE
+printf "PREFIX=$PREFIX\n" >> $CONFFILE
+printf "BIN_MODE=$BIN_MODE\n" >> $CONFFILE
+printf "DATA_MODE=$DATA_MODE\n" >> $CONFFILE
+printf "DIR_MODE=$DIR_MODE\n" >> $CONFFILE
+printf "OWNER=$OWNER\n" >> $CONFFILE
+printf "VAR_DIR=$VAR_DIR\n" >> $CONFFILE
+printf "ETC_DIR=$ETC_DIR\n" >> $CONFFILE
 
 mkdir -p modules
 
@@ -434,5 +443,5 @@ if [ "$1" != "debug" ]
 then
     $MAKE $MAKEOPTS
 else
-    echo -e "\n\n\nDebug build. Type $MAKE explicitly"
+    printf "\n\n\nDebug build. Type $MAKE explicitly\n"
 fi
index f926d23a9276b2f9f8cb04104796f07f3b01b188..a366f46674635dc29cb332396f419ff567630902 100644 (file)
@@ -48,7 +48,7 @@ const PRIV * priv = admin->GetPriv();
 
 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;
@@ -79,14 +79,14 @@ WriteServLog("%s %s", admin->GetLogStr().c_str(), strError.c_str());
 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;
@@ -101,7 +101,7 @@ if (si == data.end())
     return -1;
     }
 
-map<int, const_crp_iter>::iterator csi;
+std::map<int, const_crp_iter>::iterator csi;
 csi = searchDescriptors.begin();
 while (csi != searchDescriptors.end())
     {
@@ -130,7 +130,7 @@ const PRIV * priv = admin->GetPriv();
 
 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;
@@ -162,7 +162,7 @@ return 0;
 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());
@@ -184,7 +184,7 @@ for (size_t i = 0; i < corpsList.size(); i++)
 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");
 
@@ -203,7 +203,7 @@ if (si != data.end())
 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())
index e4552424219c72e3aab74b25dacb69649456451f..7bde401b1a3655ba6ab77849ed7ac790e0abb643 100644 (file)
@@ -58,8 +58,8 @@ private:
     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();
 
index 71602795626fdc82b40e703781e955eb9f4fcb3d..35de3675b290b7a2c8a2fbb5f110fa00006b7a52 100644 (file)
@@ -12,7 +12,7 @@ class EVENT_LOOP : private NONCOPYABLE,
     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,
@@ -44,8 +44,8 @@ class EVENT_LOOP_SINGLETON : private NONCOPYABLE
         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>
index f3cbc40c644e95d4ad5f7b0a6918aa971e1dc994..948674cacafc68583f527bcd604d17cc2077f7e8 100644 (file)
@@ -3,14 +3,14 @@
     # Port for TCP connections
     # Note: Parameters TCPPort and UDPPort can be equal
     # Parameter: optional
-    # Value: 1 ... 65534
+    # Value: 1 ... 65535
     # Default: 9996
     #TCPPort = 9996
 
     # Port for UDP connections
     # Note: Parameters TCPPort and UDPPort can be equal
     # Parameter: optional
-    # Value: 1 ... 65536
+    # Value: 1 ... 65535
     # Default: 9996
     UDPPort = 9996
-</Module>
\ No newline at end of file
+</Module>
index aa18309a40bd9f0b8c2ae3386acd5280f2f62910..69b5eae323f9ab5060489cfe15e590daeb67d4fd 100644 (file)
@@ -2,7 +2,7 @@
 <Module auth_ia>
     # Port on which the server interacts with authorizator
     # Parameter: required
-    # Value: 1 ... 65534
+    # Value: 1 ... 65535
     # Default: 5555
     Port = 5555
 
@@ -35,4 +35,4 @@
     # Values: different, see above
     # Default: cash
     FreeMb = cash
-</Module>
\ No newline at end of file
+</Module>
index b3d0ab7619111b953837b5ac57de76fb9c00a5ef..a71350c868093994373161f6b1712b9418bd46c1 100644 (file)
@@ -14,7 +14,7 @@
     # 192.168.3.0/24 192.168.3.5
     # 192.168.4.0/24 192.168.4.5
     # Parametr: required
-    # Values: filename
+    # Values: file path
     # Default: subnets
     SubnetFile = subnets
 
@@ -39,4 +39,4 @@
     # Value: 1...65535
     # Default: 9999
     Port = 9999
-</Module>
\ No newline at end of file
+</Module>
index 06eeba4ed5a65f198bbfeaa84af661c3c33117b0..b05695a75e0b16b0b4542eafe329824b81ae88fc 100644 (file)
@@ -6,9 +6,9 @@
     # Default:
     Port = 8080
 
-    # Session timeout
+    # Session timeout in seconds
     # Parameter: required
-    # Value: any numeric
+    # Value: positive integer
     # Default: 1800
     CookieTimeout = 1800
-</Module>
\ No newline at end of file
+</Module>
index 924cc636ab63fc4714ef909ce9063761fbcf5de1..84ce24bb130467457c48f658382d5fcf2e732683 100644 (file)
@@ -1,3 +1,4 @@
+# Enables SMUX-peer for SNMPd.
 <Module smux>
     # IP-address of a server to connect to
     # Parameter: required
@@ -12,7 +13,7 @@
     Port = 199
 
     # Password for authentication on a server
-    # Parameter: optional
-    # 
-    # Password = 123456
+    # Parameter: required
+    # Value: any text
+    Password =
 </Module>
index 068d4abaeb8e98c597a48c90d2d0cf438cc80d12..f7e0f23da47773ae6c059338726ea44b41fd8970 100644 (file)
@@ -1,5 +1,4 @@
-# Option - the name of the module without 'mod_' at the beginning and '.so'
-# in the end ie full name of the module mod_store_files.so
+# Enables plain file backend.
 <StoreModule store_files>
 
     # Working server directory, provides data on tariffs, users, administrators.
index 738d75ccf4c02553d01a307547a23e27a7af210d..39e4ad3d9333f0fda49beed07fad397b1c1e6203 100644 (file)
@@ -1,37 +1,38 @@
+# Enables Firebird backend.
 <StoreModule store_firebird>
     # Database server address
-    # Parameter: required
+    # Parameter: optional
     # Value: IP address or DNS name
     # Default: localhost
-    Server = localhost
+    Server = localhost
 
     # Path to the database on the server or its alias
-    # Parameter: required
+    # Parameter: optional
     # Value: file path
     # Default: /var/stg/stargazer.fdb
-    Database = /var/stg/stargazer.fdb
+    Database = /var/stg/stargazer.fdb
 
     # Database username
-    # Parameter: required
+    # Parameter: optional
     # Value: any, supported by database
     # Default: stg
-    User = stg
+    User = stg
 
     # Database password
-    # Parameter: required
+    # Parameter: optional
     # Value: any, supported by database
     # Default: 123456
-    Password = 123456
+    Password = 123456
 
     # The transaction isolation level
     # Parameter: optional
     # Values: concurrency, dirtyread, readcommitted, consistency
     # Defalt: concurrency
-    IsolationLevel = concurrency
+    IsolationLevel = concurrency
 
     # Responding to lock (optional, defaults to wait):
     # Parameter: optional
     # Values: wait, nowait
     # Defalt: wait
-    LockResolution = wait
+    LockResolution = wait
 </StoreModule>
index a5cc418046d9d56cb7543f2451eab761548ae407..a5b2126d5b3ca3d4669ec3a361ff457265dac154 100644 (file)
@@ -1,3 +1,4 @@
+# Enables MySQL backend.
 <StoreModule store_mysql>
     # Database server address
     # Parameter: required
index 153265845091dfe2d52b4296ba4c0b95c7fa4720..8a52c75b994eeca8a5800e8b42a2c6e8137eacb2 100644 (file)
@@ -1,27 +1,28 @@
+# Enables PostgreSQL backend.
 <StoreModule store_postgresql>
     # Database server address
-    # Parameter: required
+    # Parameter: optional
     # Value: IP address or DNS name
     # Default: localhost
-    Server = localhost
+    Server = localhost
 
     # Database name
-    # Parameter: required
+    # Parameter: optional
     # Value: any, supported by database
     # Default: stargazer
-    Database = stargazer
+    Database = stargazer
 
     # Database username
-    # Parameter: mandatory
+    # Parameter: optional
     # Value: any, supported by database
     # Default: stg
-    User = stg
+    User = stg
 
     # Database password
-    # Parameter: required
+    # Parameter: optional
     # Value: any, supported by database
     # Default: 123456
-    Password = 123456
+    Password = 123456
 
     # Number of tries to reconnect
     # Parameter: optional
index 699e331030aa5a8222fd2e97dba68279df95e502..daa0fd679ca74720beb10d58de6ef5a22edfcc11 100755 (executable)
@@ -1,6 +1,6 @@
 #!/sbin/runscript
 
-opts="reload"
+extra_commands="reload"
 
 DAEMON=/usr/sbin/stargazer
 STARGAZER_OPTS=""
index 8cb10961764441a9735f1a9b7db40400c5bd76cb..c1ad6a64641445f2a1b11f82274b0f715a6d46af 100755 (executable)
@@ -1,8 +1,20 @@
 #! /bin/sh
 
-login=$1
-param=$2
-oldValue=$3
-newValue=$4
+# About: This script is called when user account is changed.
+# Common Task: Notify about various events.
+# Priority: optional
 
-#echo "User: '$login'. Parameter $param changed from '$oldValue' to '$newValue'" >> /var/stargazer/users.chg.log
\ No newline at end of file
+# User login
+LOGIN=$1
+
+# User parameter
+PARAMETER=$2
+
+# User parameter old value
+OLDVALUE=$3
+
+# User parameter new value
+NEWVALUE=$4
+
+# Usage examples:
+#echo "User: '$LOGIN'. Parameter $PARAMETER changed from '$OLDVALUE' to '$NEWVALUE'" >> /var/stargazer/user.change.log
\ No newline at end of file
index 912ed7d983a83312e0a8012dfd202d34ebc5dcfb..cb1f64f4179237c683be777702d463d462eccf46 100755 (executable)
@@ -1,24 +1,23 @@
 #! /bin/sh
 
-#Этот скрипт вызывается в момент, когда пользователь
-#успешно прошел авторизацию на сервере. Задача скрипта - перестроить 
-#файрвол так, что бы пользователь получил доступ в интернет
+# About: This script is called when the user successfully authenticated on the server.
+# Common Task: Rebuild firewall to allow user to access the Internet.
+# Priority: required
 
-# Login
+# User login
 LOGIN=$1
 
-#user IP
+# User IP
 IP=$2
 
-#cash
+# User cash
 CASH=$3
 
-#user ID
+# User ID
 ID=$4
 
-#Selected dirs to connect
+# Selected DIRs (from rules file) to connect
 DIRS=$5
 
-
-#echo "C `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log
-
+# Usage examples:
+#echo "Connected `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log
\ No newline at end of file
index 6169ddc83cdfcb25b83b52cf291f7e9024a116a1..64a6c519daa79255d73e77561d19e15fa4c203dd 100755 (executable)
@@ -1,24 +1,23 @@
 #! /bin/sh
 
-# Этот скрипт вызывается в момент, когда пользователь
-# желает отключится от интернета или вышел таймаут у пользователя
-# и сервер сам отключает пользователя
-# Задача скрипта подобна задаче скрипта OnConnect - перестроить 
-# файрвол так, что бы пользователю закрыть доступ в интернет
+# About: This script is called when the user wants to disconnect or authorization timeout has passed.
+# Common task: Rebuild firewall to disallow user to access the Internet.
+# Priority: required
 
-# Login
+# User login
 LOGIN=$1
 
-#user IP
+# User IP
 IP=$2
 
-#cash
+# User cash
 CASH=$3
 
-#user ID
+# User ID
 ID=$4
 
-#Selected dirs to disconnect
+# Selected DIRs (from rules file) to disconnect
 DIRS=$5
 
-#echo "D `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log
+# Usage examples:
+#echo "Disconnected `date +%Y.%m.%d-%H.%M.%S` $IP $CASH" >> /var/stargazer/users/$LOGIN/connect.log
index 22d321cc02300c89c7a566e897efa07fbd4a56bc..2dcc0562fca25a067daf5e14b961b9ab73d24fc4 100755 (executable)
@@ -1,14 +1,12 @@
 #! /bin/sh
 
-# Использование (неиспользование) этого скрипта дело вкуса.
-# Он не выполняет критических функций. Его задача автматизировать
-# действия характерные при добавлении пользователя сети, например добавлекние 
-# пользователю почты
-
-# Login
-login=$1
-
-#echo "added user $login" >> /var/stargazer/add_del.log
-
+# About: This script is called when the user is added to the Stargazer.
+# Common task: Automate typical actions on adding user to the network,
+#              such as creating email or IM account.
+# Priority: optional
 
+# User login
+LOGIN=$1
 
+# Usage examples:
+#echo "Added user $login" >> /var/stargazer/add_del.log
\ No newline at end of file
index 248e5b36b86425dedf5623f311a358f3b106621f..a72da15be2b23ba6c61a722615b76221987599b1 100755 (executable)
@@ -1,7 +1,13 @@
 #! /bin/sh
 
-# Login
-login=$1
+# About: This script is called when the user is removed from the Stargazer.
+# Common task: Automate typical actions on removing user from the network,
+#              such as removing email or IM account.
+# Priority: optional
 
-#echo "deleted user $login" >> /var/stargazer/add_del.log
+# User login
+LOGIN=$1
+
+# Usage examples:
+#echo "Deleted user $LOGIN" >> /var/stargazer/add_del.log
 
index f3cbc40c644e95d4ad5f7b0a6918aa971e1dc994..948674cacafc68583f527bcd604d17cc2077f7e8 100644 (file)
@@ -3,14 +3,14 @@
     # Port for TCP connections
     # Note: Parameters TCPPort and UDPPort can be equal
     # Parameter: optional
-    # Value: 1 ... 65534
+    # Value: 1 ... 65535
     # Default: 9996
     #TCPPort = 9996
 
     # Port for UDP connections
     # Note: Parameters TCPPort and UDPPort can be equal
     # Parameter: optional
-    # Value: 1 ... 65536
+    # Value: 1 ... 65535
     # Default: 9996
     UDPPort = 9996
-</Module>
\ No newline at end of file
+</Module>
index aa18309a40bd9f0b8c2ae3386acd5280f2f62910..69b5eae323f9ab5060489cfe15e590daeb67d4fd 100644 (file)
@@ -2,7 +2,7 @@
 <Module auth_ia>
     # Port on which the server interacts with authorizator
     # Parameter: required
-    # Value: 1 ... 65534
+    # Value: 1 ... 65535
     # Default: 5555
     Port = 5555
 
@@ -35,4 +35,4 @@
     # Values: different, see above
     # Default: cash
     FreeMb = cash
-</Module>
\ No newline at end of file
+</Module>
index b3d0ab7619111b953837b5ac57de76fb9c00a5ef..a71350c868093994373161f6b1712b9418bd46c1 100644 (file)
@@ -14,7 +14,7 @@
     # 192.168.3.0/24 192.168.3.5
     # 192.168.4.0/24 192.168.4.5
     # Parametr: required
-    # Values: filename
+    # Values: file path
     # Default: subnets
     SubnetFile = subnets
 
@@ -39,4 +39,4 @@
     # Value: 1...65535
     # Default: 9999
     Port = 9999
-</Module>
\ No newline at end of file
+</Module>
index 06eeba4ed5a65f198bbfeaa84af661c3c33117b0..b05695a75e0b16b0b4542eafe329824b81ae88fc 100644 (file)
@@ -6,9 +6,9 @@
     # Default:
     Port = 8080
 
-    # Session timeout
+    # Session timeout in seconds
     # Parameter: required
-    # Value: any numeric
+    # Value: positive integer
     # Default: 1800
     CookieTimeout = 1800
-</Module>
\ No newline at end of file
+</Module>
index 924cc636ab63fc4714ef909ce9063761fbcf5de1..84ce24bb130467457c48f658382d5fcf2e732683 100644 (file)
@@ -1,3 +1,4 @@
+# Enables SMUX-peer for SNMPd.
 <Module smux>
     # IP-address of a server to connect to
     # Parameter: required
@@ -12,7 +13,7 @@
     Port = 199
 
     # Password for authentication on a server
-    # Parameter: optional
-    # 
-    # Password = 123456
+    # Parameter: required
+    # Value: any text
+    Password =
 </Module>
index 068d4abaeb8e98c597a48c90d2d0cf438cc80d12..f7e0f23da47773ae6c059338726ea44b41fd8970 100644 (file)
@@ -1,5 +1,4 @@
-# Option - the name of the module without 'mod_' at the beginning and '.so'
-# in the end ie full name of the module mod_store_files.so
+# Enables plain file backend.
 <StoreModule store_files>
 
     # Working server directory, provides data on tariffs, users, administrators.
index 738d75ccf4c02553d01a307547a23e27a7af210d..39e4ad3d9333f0fda49beed07fad397b1c1e6203 100644 (file)
@@ -1,37 +1,38 @@
+# Enables Firebird backend.
 <StoreModule store_firebird>
     # Database server address
-    # Parameter: required
+    # Parameter: optional
     # Value: IP address or DNS name
     # Default: localhost
-    Server = localhost
+    Server = localhost
 
     # Path to the database on the server or its alias
-    # Parameter: required
+    # Parameter: optional
     # Value: file path
     # Default: /var/stg/stargazer.fdb
-    Database = /var/stg/stargazer.fdb
+    Database = /var/stg/stargazer.fdb
 
     # Database username
-    # Parameter: required
+    # Parameter: optional
     # Value: any, supported by database
     # Default: stg
-    User = stg
+    User = stg
 
     # Database password
-    # Parameter: required
+    # Parameter: optional
     # Value: any, supported by database
     # Default: 123456
-    Password = 123456
+    Password = 123456
 
     # The transaction isolation level
     # Parameter: optional
     # Values: concurrency, dirtyread, readcommitted, consistency
     # Defalt: concurrency
-    IsolationLevel = concurrency
+    IsolationLevel = concurrency
 
     # Responding to lock (optional, defaults to wait):
     # Parameter: optional
     # Values: wait, nowait
     # Defalt: wait
-    LockResolution = wait
+    LockResolution = wait
 </StoreModule>
index a5cc418046d9d56cb7543f2451eab761548ae407..a5b2126d5b3ca3d4669ec3a361ff457265dac154 100644 (file)
@@ -1,3 +1,4 @@
+# Enables MySQL backend.
 <StoreModule store_mysql>
     # Database server address
     # Parameter: required
index 153265845091dfe2d52b4296ba4c0b95c7fa4720..8a52c75b994eeca8a5800e8b42a2c6e8137eacb2 100644 (file)
@@ -1,27 +1,28 @@
+# Enables PostgreSQL backend.
 <StoreModule store_postgresql>
     # Database server address
-    # Parameter: required
+    # Parameter: optional
     # Value: IP address or DNS name
     # Default: localhost
-    Server = localhost
+    Server = localhost
 
     # Database name
-    # Parameter: required
+    # Parameter: optional
     # Value: any, supported by database
     # Default: stargazer
-    Database = stargazer
+    Database = stargazer
 
     # Database username
-    # Parameter: mandatory
+    # Parameter: optional
     # Value: any, supported by database
     # Default: stg
-    User = stg
+    User = stg
 
     # Database password
-    # Parameter: required
+    # Parameter: optional
     # Value: any, supported by database
     # Default: 123456
-    Password = 123456
+    Password = 123456
 
     # Number of tries to reconnect
     # Parameter: optional
index cabd991be6361e3f08695173b9387f4d903acaaa..11fad552504730f7aa5b86b837fd4ca070c2b468 100644 (file)
@@ -60,8 +60,6 @@
 #include "pidfile.h"
 #include "eventloop.h"
 
-using namespace std;
-
 #ifdef DEBUG
     #define MAIN_DEBUG (1)
     #define NO_DAEMON  (1)
@@ -69,7 +67,16 @@ using namespace std;
 
 #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)
@@ -82,7 +89,7 @@ bool StopModCmp(const PLUGIN_RUNNER & lhs, const PLUGIN_RUNNER & rhs)
 return lhs.GetStopPosition() > rhs.GetStopPosition();
 }
 //-----------------------------------------------------------------------------
-static void StartTimer()
+void StartTimer()
 {
 STG_LOGGER & WriteServLog = GetStgLogger();
 
@@ -99,7 +106,7 @@ else
     }
 }
 //-----------------------------------------------------------------------------
-#ifdef LINUX
+#if defined(LINUX) || defined(DARWIN)
 int StartScriptExecuter(char * procName, int msgKey, int * msgID, SETTINGS_IMPL * settings)
 #else
 int StartScriptExecuter(char *, int msgKey, int * msgID, SETTINGS_IMPL * settings)
@@ -144,7 +151,7 @@ switch (executerPid)
 
     case 0:
         delete settings;
-#ifdef LINUX
+#if defined(LINUX) || defined(DARWIN)
         Executer(*msgID, executerPid, procName);
 #else
         Executer(*msgID, executerPid);
@@ -153,7 +160,7 @@ switch (executerPid)
 
     default:
         if (executersPid.empty()) {
-#ifdef LINUX
+#if defined(LINUX) || defined(DARWIN)
             Executer(*msgID, executerPid, NULL);
 #else
             Executer(*msgID, executerPid);
@@ -165,14 +172,14 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 #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)
@@ -209,7 +216,7 @@ return 0;
 //-----------------------------------------------------------------------------
 void KillExecuters()
 {
-set<pid_t>::iterator pid;
+std::set<pid_t>::iterator pid;
 pid = executersPid.begin();
 while (pid != executersPid.end())
     {
@@ -219,6 +226,8 @@ while (pid != executersPid.end())
     }
 }
 //-----------------------------------------------------------------------------
+} // namespace anonymous
+//-----------------------------------------------------------------------------
 int main(int argc, char * argv[])
 {
 SETTINGS_IMPL * settings = NULL;
@@ -236,10 +245,10 @@ int msgID = -11;
     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())
     {
@@ -264,7 +273,7 @@ if (settings->ReadSettings())
     }
 
 #ifndef NO_DAEMON
-string startFile(settings->GetConfDir() + START_FILE);
+std::string startFile(settings->GetConfDir() + START_FILE);
 #endif
 
 if (ForkAndWait(settings->GetConfDir()) < 0)
@@ -338,7 +347,7 @@ modSettings = settings->GetModulesSettings();
 
 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";
@@ -400,7 +409,7 @@ while (modIter != modules.end())
     ++modIter;
     }
 
-srandom(stgTime);
+srandom(static_cast<unsigned int>(stgTime));
 
 WriteServLog("Stg started successfully.");
 WriteServLog("+++++++++++++++++++++++++++++++++++++++++++++");
@@ -417,7 +426,7 @@ while (true)
     bool stop = false;
     int status;
     pid_t childPid;
-    set<pid_t>::iterator it;
+    std::set<pid_t>::iterator it;
     switch (sig)
         {
         case SIGHUP:
index 17e10ace9d0845932ecc6f22860c52c1e514d7f7..dd1e124a32a1e01407d872605a4d490476ed7785 100644 (file)
@@ -9,18 +9,23 @@ OBJS = $(notdir $(patsubst %.cpp, %.o, $(patsubst %.c, %.o, $(SRCS))))
 LN = ln
 
 STGLIBS_INCS = $(addprefix -I ../../../../../stglibs/,$(addsuffix .lib/include,$(STGLIBS)))
-STGLIBS_LIBS = $(addprefix -L ../../../../../stglibs/,$(addsuffix .lib,$(STGLIBS)))
+STGLIBS_PATHS = $(addprefix -L ../../../../../stglibs/,$(addsuffix .lib,$(STGLIBS)))
 
-LIBS += $(addprefix -lstg,$(STGLIBS))
+STGLIBS_LIBS = $(addprefix -lstg,$(STGLIBS))
 
 CXXFLAGS += -fPIC $(STGLIBS_INCS)
 CFLAGS += -fPIC $(STGLIBS_INCS)
-LDFLAGS += -shared -Wl,-rpath,$(PREFIX)/usr/lib/stg $(STGLIBS_LIBS)
+
+ifneq ($(OS),darwin)
+LDFLAGS += -shared -Wl,-rpath,$(PREFIX)/usr/lib/stg
+else
+LDFLAGS += -dynamiclib -undefined suppress -flat_namespace -Wl,-rpath,$(PREFIX)/usr/lib/stg
+endif
 
 all: $(PROG)
 
 $(PROG): $(OBJS)
-       $(CXX) $^ $(LDFLAGS) $(LIBS) -o $(PROG)
+       $(CXX) $^ $(STGLIBS_PATHS) $(STGLIBS_LIBS) $(LIBS) $(LDFLAGS) -o $(PROG)
        $(LN) -fs "`pwd`/$(PROG)" $(DIR_MOD)/$(PROG)
 
 clean:
@@ -28,7 +33,11 @@ clean:
 
 install: $(PROG)
        mkdir -m $(DIR_MODE) -p $(PREFIX)/usr/lib/stg
-       install -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/lib/stg/$(PROG)
+ifeq ($(DEBUG), yes)
+       install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/lib/stg/$(PROG)
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/lib/stg/$(PROG)
+endif
 
 uninstall:
        rm -f $(PREFIX)/usr/lib/stg/$(PROG)
index 1a7697e36972a0f6b6169306d2b6c990b71c0cc5..0e356aa1831a4fc659a4ed471483a20cf16c2397 100644 (file)
@@ -8,10 +8,10 @@ PROG = mod_auth_ao.so
 
 SRCS = ./ao.cpp
 
-STGLIBS = common \
+STGLIBS = scriptexecuter \
          logger \
          locker \
-         scriptexecuter
+         common
 
 include ../../Makefile.in
 
index e3bc192a7d90975b4a12b56e55729f11c38e9064..100e0557603f16faed29d1da098e9d48450868f8 100644 (file)
@@ -41,7 +41,7 @@ $Author: faust $
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-PLUGIN_CREATOR<AUTH_AO> aoc;
+static PLUGIN_CREATOR<AUTH_AO> aoc;
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -53,18 +53,18 @@ return aoc.GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 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";
 }
@@ -109,7 +109,7 @@ if (!isRunning)
 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())
     {
@@ -153,8 +153,8 @@ void AUTH_AO::UnSetUserNotifiers(USER_PTR u)
 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(),
@@ -181,12 +181,12 @@ if (aoAIter != AfterChgAONotifierList.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())
     {
@@ -242,7 +242,8 @@ UpdateUserAuthorization(u);
 //-----------------------------------------------------------------------------
 void AUTH_AO::DelUser(USER_PTR u)
 {
-users->Unauthorize(u->GetLogin(), this);
+if (u->IsAuthorizedBy(this))
+    users->Unauthorize(u->GetLogin(), this);
 UnSetUserNotifiers(u);
 usersList.remove(u);
 }
index 879c937ca9c3e51f98a9a09aa9353ce0db425733..d8b6dc88bf48719a7504a9f08328bdfb08c25973 100644 (file)
@@ -83,7 +83,7 @@ private:
 class AUTH_AO : public AUTH {
 public:
     AUTH_AO();
-    virtual ~AUTH_AO(){};
+    virtual ~AUTH_AO(){}
 
     void                SetUsers(USERS * u) { users = u; }
 
@@ -94,7 +94,7 @@ public:
     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; }
 
@@ -118,11 +118,11 @@ private:
     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:
index d3c1b9605c7e4a419d015582e92e275998fb3779..dd0102b2f0b5bb8ad6311dd46cd9f7da8b477b90 100644 (file)
@@ -36,6 +36,7 @@
 #include <cstdlib>
 #include <cstdio> // snprintf
 #include <cerrno>
+#include <cmath>
 #include <algorithm>
 
 #include "stg/common.h"
 #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();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -79,7 +85,7 @@ int AUTH_IA_SETTINGS::ParseSettings(const MODULE_SETTINGS & s)
 {
 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);
@@ -95,7 +101,7 @@ if (ParseIntInRange(pvi->value[0], 2, 65535, &p))
     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);
@@ -129,7 +135,7 @@ if (ParseIntInRange(pvi->value[0], 15, 1200, &userTimeout))
     return -1;
     }
 /////////////////////////////////////////////////////////////
-string freeMbType;
+std::string freeMbType;
 int n = 0;
 pv.param = "FreeMb";
 pvi = find(s.moduleParams.begin(), s.moduleParams.end(), pv);
@@ -476,7 +482,7 @@ while (ia->nonstop)
     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());
         }
     }
@@ -496,7 +502,7 @@ AUTH_IA * ia = static_cast<AUTH_IA *>(d);
 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};
@@ -535,7 +541,7 @@ if (listenSocket < 0)
     }
 
 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)
@@ -563,7 +569,7 @@ if (!WaitPackets(listenSocket)) // Timeout
 
 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
     {
@@ -671,7 +677,7 @@ int AUTH_IA::Timeouter()
 {
 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;
 
@@ -746,13 +752,13 @@ while (it != ip2user.end())
 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())
     {
@@ -806,14 +812,13 @@ if (iaUser->password != user->GetProperty().password.Get())
     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, "îÅÐÒÁ×ÉÌØÎÙÊ ÌÏÇÉΠÉÌÉ ÐÁÒÏÌØ!");
@@ -845,15 +850,15 @@ switch (pi->second)
         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);
             }
@@ -863,15 +868,15 @@ switch (pi->second)
         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);
             }
@@ -881,11 +886,11 @@ switch (pi->second)
         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;
 
@@ -893,15 +898,15 @@ switch (pi->second)
         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);
             }
@@ -911,15 +916,15 @@ switch (pi->second)
         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);
             }
@@ -937,7 +942,7 @@ uint32_t ip = u->GetCurrIP();
 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);
@@ -956,12 +961,12 @@ if (it->second.user == u)
     }
 }
 //-----------------------------------------------------------------------------
-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;
@@ -1007,7 +1012,7 @@ switch (protoVer)
 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;
 
@@ -1015,9 +1020,7 @@ sendAddr.sin_family = AF_INET;
 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;
@@ -1027,7 +1030,7 @@ int AUTH_IA::SendMessage(const STG_MSG & msg, uint32_t ip) const
 {
 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);
@@ -1073,8 +1076,8 @@ memset(&info, 0, sizeof(INFO_7));
 
 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;
@@ -1102,8 +1105,8 @@ memset(&info, 0, sizeof(INFO_8));
 
 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);
@@ -1295,7 +1298,7 @@ return 0;
 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);
@@ -1311,12 +1314,12 @@ if (!((iaUser->phase.GetPhase() == 4) && (disconnAck->rnd == iaUser->rnd + 1)))
 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);
@@ -1348,7 +1351,7 @@ for (int j = 0; j < DIR_NUM; j++)
     }
 //--- Fill static data in connSynAck ---
 
-iaUser->rnd = random();
+iaUser->rnd = static_cast<uint32_t>(random());
 connSynAck6.rnd = iaUser->rnd;
 
 connSynAck6.userTimeOut = iaSettings.GetUserTimeout();
@@ -1390,7 +1393,7 @@ for (int j = 0; j < DIR_NUM; j++)
     }
 //--- Fill static data in connSynAck ---
 
-iaUser->rnd = random();
+iaUser->rnd = static_cast<uint32_t>(random());
 connSynAck8.rnd = iaUser->rnd;
 
 connSynAck8.userTimeOut = iaSettings.GetUserTimeout();
@@ -1410,7 +1413,7 @@ return Send(sip, iaUser->port, (char*)&connSynAck8, Min8(sizeof(CONN_SYN_ACK_8))
 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");
 
@@ -1433,8 +1436,8 @@ if (dn < DIR_NUM)
                                          aliveSyn6.md[dn],
                                          dn,
                                          stgTime);
-    p *= (1024 * 1024);
-    if (p == 0)
+    p *= 1024 * 1024;
+    if (std::fabs(p) < 1.0e-3)
         {
         snprintf((char*)aliveSyn6.freeMb, IA_FREEMB_LEN, "---");
         }
@@ -1500,7 +1503,7 @@ aliveSyn8.hdr.protoVer[0] = 0;
 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");
 
@@ -1523,8 +1526,8 @@ if (dn < DIR_NUM)
                                          aliveSyn8.md[dn],
                                          dn,
                                          stgTime);
-    p *= (1024 * 1024);
-    if (p == 0)
+    p *= 1024 * 1024;
+    if (std::fabs(p) < 1.0e-3)
         {
         snprintf((char*)aliveSyn8.freeMb, IA_FREEMB_LEN, "---");
         }
@@ -1585,7 +1588,7 @@ int AUTH_IA::Send_DISCONN_SYN_ACK_6(IA_USER * iaUser, uint32_t sip)
 {
 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);
@@ -1609,7 +1612,7 @@ disconnSynAck8.hdr.protoVer[1] = 8;
 
 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);
@@ -1620,7 +1623,7 @@ Encrypt(&iaUser->ctx, (char*)&disconnSynAck8, (char*)&disconnSynAck8, Min8(sizeo
 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");
@@ -1641,12 +1644,12 @@ ip2user.erase(it);
 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;
@@ -1670,9 +1673,11 @@ ip2user.erase(it);
 
 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);
@@ -1681,15 +1686,17 @@ Blowfish_Init(ctx, keyL, 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);
+}
+//-----------------------------------------------------------------------------
 }
index 08fd65128d835839cffbae170144d99014a06529..a13a11db2a0374b05d5e80ca6211e2de73c529e8 100644 (file)
@@ -51,8 +51,6 @@
 #include "stg/utime.h"
 #include "stg/logger.h"
 
-extern "C" PLUGIN * GetPlugin();
-
 #define IA_PROTO_VER    (6)
 
 //#define IA_DEBUG (1)
@@ -123,7 +121,7 @@ struct IA_USER {
           user(NULL),
           phase(),
           lastSendAlive(0),
-          rnd(random()),
+          rnd(static_cast<uint32_t>(random())),
           port(0),
           ctx(),
           messagesToSend(),
@@ -138,7 +136,7 @@ struct IA_USER {
     #ifdef IA_DEBUG
     aliveSent = false;
     #endif
-    };
+    }
 
     IA_USER(const IA_USER & u)
         : login(u.login),
@@ -156,7 +154,7 @@ struct IA_USER {
     aliveSent  = u.aliveSent;
     #endif
     memcpy(&ctx, &u.ctx, sizeof(BLOWFISH_CTX));
-    };
+    }
 
     IA_USER(const std::string & l,
             CONST_USER_PTR u,
@@ -166,7 +164,7 @@ struct IA_USER {
           user(u),
           phase(),
           lastSendAlive(0),
-          rnd(random()),
+          rnd(static_cast<uint32_t>(random())),
           port(p),
           ctx(),
           messagesToSend(),
@@ -204,13 +202,13 @@ private:
 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;
@@ -252,7 +250,7 @@ public:
     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; }
 
@@ -269,7 +267,7 @@ private:
     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);
@@ -290,15 +288,15 @@ private:
     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);
@@ -312,14 +310,14 @@ private:
     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);
index 85fd602bd18412e165f2ab3dce3143296a75f820..6ec8c3420e1dc3dd91d9f25bc848f2403c7e60f6 100644 (file)
@@ -56,7 +56,12 @@ fclose(f);
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
+namespace
+{
 PLUGIN_CREATOR<DEBUG_CAP> cdc;
+}
+
+extern "C" BASE_PLUGIN * GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -74,7 +79,7 @@ RAW_PACKET MakeTCPPacket(const char * src,
                          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";
 }
@@ -90,7 +95,7 @@ void DEBUG_CAP::SetTraffcounter(TRAFFCOUNTER * tc)
 traffCnt = tc;
 }
 //-----------------------------------------------------------------------------
-const string & DEBUG_CAP::GetStrError() const
+const std::string & DEBUG_CAP::GetStrError() const
 {
 return errorStr;
 }
index d0aad7646f5177fb72128685dbcc0af828424c74..6bea457fbe79d4d4a41944aba10b5e933bda02ff 100644 (file)
@@ -36,9 +36,6 @@ $Author: faust $
 #include "stg/plugin.h"
 #include "stg/module_settings.h"
 
-using namespace std;
-extern "C" PLUGIN * GetPlugin();
-
 //-----------------------------------------------------------------------------
 struct iphdr_eth {
     uint8_t     ihl:4,
@@ -58,8 +55,8 @@ struct iphdr_eth {
 //-----------------------------------------------------------------------------
 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
@@ -75,15 +72,15 @@ public:
     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;
index 37af97206a4275b7b5d90b20ba7ff985f93ec26a..41ad9faed1ab4d769ba4359e11c3fac673cb642f 100644 (file)
@@ -45,7 +45,12 @@ $Author: faust $
 #include "stg/plugin_creator.h"
 #include "cap_nf.h"
 
+namespace
+{
 PLUGIN_CREATOR<NF_CAP> cnc;
+}
+
+extern "C" PLUGIN * GetPlugin();
 
 PLUGIN * GetPlugin()
 {
@@ -261,10 +266,6 @@ sigfillset(&signalSet);
 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)
     {
@@ -274,8 +275,10 @@ 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;
 
@@ -313,11 +316,6 @@ sigfillset(&signalSet);
 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)
     {
@@ -327,8 +325,9 @@ 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;
 
@@ -345,7 +344,8 @@ while (cap->runningTCP)
         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));
@@ -373,7 +373,7 @@ cap->stoppedTCP = true;
 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);
index bf45cfea8b6dd64e56a0682621d8c9a5c8984184..23f7d7db2e18fc4f4f176581dce105c507b65949 100644 (file)
@@ -61,7 +61,7 @@ struct NF_HEADER {
     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
@@ -84,7 +84,7 @@ struct NF_DATA {
     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))
 
@@ -102,7 +102,7 @@ public:
     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; }
 
@@ -127,7 +127,7 @@ private:
 
     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();
@@ -135,6 +135,4 @@ private:
     void CloseUDP() { close(sockUDP); }
 };
 
-extern "C" PLUGIN * GetPlugin();
-
 #endif
index 6bbfd7e8a079be25f104d5043221dd7bea1eaf59..96476d4e204027ee8f1d556f7dc54544a52489d8 100644 (file)
@@ -62,7 +62,12 @@ DIVERT_DATA cddiv;  //capture data
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
+namespace
+{
 PLUGIN_CREATOR<DIVERT_CAP> dcc;
+}
+
+extern "C" PLUGIN * GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -73,7 +78,7 @@ return dcc.GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-const std::string DIVERT_CAP::GetVersion() const
+std::string DIVERT_CAP::GetVersion() const
 {
 return "Divert_cap v.1.0";
 }
index 25fd29c24cba2079ed4d413b6e0930cafc74aad7..b34f832e5ea5b7706a762edb7ba92b38aeb3b84c 100644 (file)
@@ -41,8 +41,6 @@ class ADMINS;
 class TRAFFCOUNTER;
 class SETTINGS;
 
-extern "C" PLUGIN * GetPlugin();
-
 //-----------------------------------------------------------------------------
 class DIVERT_CAP : public PLUGIN {
 public:
@@ -59,7 +57,7 @@ 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; }
 
index c217e22f3e502b5bc53f3d49324954a89cc1fb0e..12d35aa696e4fe9b9ea6abcafbb70fe14397dcb4 100644 (file)
@@ -60,7 +60,12 @@ $Author: faust $
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
+namespace
+{
 PLUGIN_CREATOR<BPF_CAP> bcc;
+}
+
+extern "C" PLUGIN * GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -110,7 +115,7 @@ return iface[num];
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-const std::string BPF_CAP::GetVersion() const
+std::string BPF_CAP::GetVersion() const
 {
 return "bpf_cap v.1.0";
 }
@@ -274,7 +279,7 @@ do
 if (bd->fd < 0)
     {
     errorStr = "Can't capture packets. Open bpf device for " + bd->iface + " error.";
-    logger("Cannot open device for interface '%s': %s", bd->iface, strerror(errno));
+    logger("Cannot open device for interface '%s': %s", bd->iface.c_str(), strerror(errno));
     printfd(__FILE__, "Cannot open BPF device\n");
     return -1;
     }
@@ -284,7 +289,7 @@ strncpy(ifr.ifr_name, bd->iface.c_str(), sizeof(ifr.ifr_name));
 if (ioctl(bd->fd, BIOCSBLEN, (caddr_t)&l) < 0)
     {
     errorStr = bd->iface + " BIOCSBLEN " + std::string(strerror(errno));
-    logger("ioctl (BIOCSBLEN) error for interface '%s': %s", db->iface, strerror(errno));
+    logger("ioctl (BIOCSBLEN) error for interface '%s': %s", bd->iface, strerror(errno));
     printfd(__FILE__, "ioctl failed: '%s'\n", errorStr.c_str());
     return -1;
     }
@@ -292,7 +297,7 @@ if (ioctl(bd->fd, BIOCSBLEN, (caddr_t)&l) < 0)
 if (ioctl(bd->fd, BIOCSETIF, (caddr_t)&ifr) < 0)
     {
     errorStr = bd->iface + " BIOCSETIF " + std::string(strerror(errno));
-    logger("ioctl (BIOCSETIF) error for interface '%s': %s", db->iface, strerror(errno));
+    logger("ioctl (BIOCSETIF) error for interface '%s': %s", bd->iface, strerror(errno));
     printfd(__FILE__, "ioctl failed: '%s'\n", errorStr.c_str());
     return -1;
     }
@@ -300,7 +305,7 @@ if (ioctl(bd->fd, BIOCSETIF, (caddr_t)&ifr) < 0)
 if (ioctl(bd->fd, BIOCIMMEDIATE, &im) < 0)
     {
     errorStr = bd->iface + " BIOCIMMEDIATE " + std::string(strerror(errno));
-    logger("ioctl (BIOCIMMEDIATE) error for interface '%s': %s", db->iface, strerror(errno));
+    logger("ioctl (BIOCIMMEDIATE) error for interface '%s': %s", bd->iface, strerror(errno));
     printfd(__FILE__, "ioctl failed: '%s'\n", errorStr.c_str());
     return -1;
     }
index 0a00cb045babf5bb7ca1324ffbe9ffada6dfde6d..76785ed293ebb55f2116cf2549920371cc21ed39 100644 (file)
@@ -37,8 +37,6 @@
 #include "stg/module_settings.h"
 #include "stg/logger.h"
 
-extern "C" PLUGIN * GetPlugin();
-
 #define BUFF_LEN (128)
 
 class TRAFFCOUNTER;
@@ -107,7 +105,7 @@ public:
     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; }
 
index 6ed2e0680627c18ef6e5e3a426b393832f2a648f..a97fa8e7d07e5490569f7f9c73e14d6107776717 100644 (file)
@@ -56,7 +56,12 @@ $Date: 2009/12/13 13:45:13 $
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
+namespace
+{
 PLUGIN_CREATOR<ETHER_CAP> ecc;
+}
+
+extern "C" PLUGIN * GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -67,7 +72,7 @@ return ecc.GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------        
-const std::string ETHER_CAP::GetVersion() const
+std::string ETHER_CAP::GetVersion() const
 {
 return "Ether_cap v.1.2";
 }
@@ -169,13 +174,11 @@ char        padding[4];
 char        padding1[8];
 };
 
-ETH_IP * ethIP;
-
 char ethip[sizeof(ETH_IP)];
 
 memset(&ethip, 0, sizeof(ETH_IP));
 
-ethIP = (ETH_IP *)&ethip;
+ETH_IP * ethIP = static_cast<ETH_IP *>(static_cast<void *>(&ethip));
 ethIP->rp.dataLen = -1;
 
 char * iface = NULL;
@@ -214,7 +217,7 @@ return 0;
 int ETHER_CAP::EthCapRead(void * buffer, int blen, char **)
 {
 struct sockaddr_ll  addr;
-int addrLen, res;
+int addrLen;
 
 if (!WaitPackets(capSock))
     {
@@ -223,9 +226,7 @@ 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;
index c8de55226811a92f9ae71e3b3b52268bd47b6e4c..8dfb6c043e741dd7dbbb80ee2ff661becbfdce1c 100644 (file)
@@ -40,8 +40,6 @@ class ADMINS;
 class TRAFFCOUNTER;
 class SETTINGS;
 
-extern "C" PLUGIN * GetPlugin();
-
 class TRAFFCOUNTER;
 
 //-----------------------------------------------------------------------------
@@ -59,7 +57,7 @@ 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; }
 
index 9818378af382020faf221d4ef4eaaee32b6d3ffe..055993063d44b96d617f2b164ce89a11f9663aca 100644 (file)
@@ -40,7 +40,12 @@ extern "C"
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
+namespace
+{
 PLUGIN_CREATOR<IPQ_CAP> icc;
+}
+
+extern "C" PLUGIN * GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -51,7 +56,7 @@ return icc.GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-const std::string IPQ_CAP::GetVersion() const
+std::string IPQ_CAP::GetVersion() const
 {
 return "ipq_cap v.1.2";
 }
index 8b524d93ba564e878846570ce95a1753f9e21275..39ed5766401bac4228c48dea191f096f4082100a 100644 (file)
@@ -37,8 +37,6 @@ class ADMINS;
 class TRAFFCOUNTER;
 class SETTINGS;
 
-extern "C" PLUGIN * GetPlugin();
-
 //-----------------------------------------------------------------------------
 class IPQ_CAP :public PLUGIN {
 public:
@@ -54,7 +52,7 @@ 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; }
 
index c55a4e52f1446de598802fedb7de884aecf7ffdc..58a715876b2964ca73975243b67d004cf7f986f3 100644 (file)
 #include <asm/types.h>
 #include <linux/netlink.h>
 
+#include <linux/netfilter_ipv4/ip_queue.h>
 #ifdef KERNEL_64_USERSPACE_32
-#include "ip_queue_64.h"
 typedef u_int64_t ipq_id_t;
 #else
-#include <linux/netfilter_ipv4/ip_queue.h>
-#endif
 typedef unsigned long ipq_id_t;
 #endif
 
index 0016babe440f209812fd06499bfb32028a5e1ab8..ad9c032491adacc5fa30a2b4934f83982d5edb89 100644 (file)
@@ -223,14 +223,14 @@ void METHOD_ADMINS_GET::execute(xmlrpc_c::paramList const & paramList,
 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;
     }
 
index c4684c1bdea4f535ef6543822376eff7f6df497d..895088dc3482dcbc9c3a21c26697bebb3eb70bbe 100644 (file)
@@ -28,12 +28,12 @@ un += " ";
 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;
 
index e4d05636f67a0015c7641b46546eca9c37c46940..917961484cfe5014356e11fe5af8b272605dd052 100644 (file)
@@ -2,11 +2,10 @@
 
 #include "stg/message.h"
 #include "stg/common.h"
-#include "utils.h"
 #include "messages_methods.h"
 #include "rpcconfig.h"
 
-extern const volatile time_t stgTime;
+extern volatile time_t stgTime;
 
 //------------------------------------------------------------------------------
 
@@ -76,7 +75,7 @@ if ((it = msgInfo.find("text")) == msgInfo.end())
     }
 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;
index 86072bcf625e88d566d0cf0996c77394d9993694..dca87fbee34ce8a65eb0bc85997c6e57b54ec6cc 100644 (file)
 #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(),
@@ -36,11 +41,9 @@ RPC_CONFIG_SETTINGS::RPC_CONFIG_SETTINGS()
 
 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())
     {
@@ -48,13 +51,14 @@ 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);
@@ -117,12 +121,12 @@ if (ret)
 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));
     }
 }
 
@@ -469,5 +473,11 @@ xmlrpc_c::methodPtr const methodGetOnlinIPsPtr(new METHOD_GET_ONLINE_IPS(
             users
             ));
 rpcRegistry.addMethod("stargazer.get_online_ips", methodGetOnlinIPsPtr);
+
+xmlrpc_c::methodPtr const methodGetUserAuthByPtr(new METHOD_GET_USER_AUTH_BY(
+            this,
+            users
+            ));
+rpcRegistry.addMethod("stargazer.get_user_auth_by", methodGetUserAuthByPtr);
 }
 
index a58773a14022af6086f1dba4d90e99f08bd7b291..72a14f21e028238c558657b2e70c8932aa81e4fc 100644 (file)
@@ -20,8 +20,6 @@
 
 #define RPC_CONFIG_VERSION "Stargazer RPC v. 0.2"
 
-extern "C" PLUGIN * GetPlugin();
-
 class ADMINS;
 class TARIFFS;
 class USERS;
@@ -39,7 +37,7 @@ public:
 
 private:
     std::string  errorStr;
-    int          port;
+    uint16_t     port;
     double       cookieTimeout;
 };
 
@@ -76,7 +74,7 @@ public:
     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; }
 
index ce339573032cadedda24f2438b3726fb4eee43d4..89c41587f8527862de5932bbc4cbe52e63ab0c37 100644 (file)
@@ -1,3 +1,5 @@
+#include <cmath>
+
 #include "stg/tariffs.h"
 #include "stg/admin.h"
 #include "stg/store.h"
@@ -5,7 +7,6 @@
 #include "stg/common.h"
 #include "stg/user_property.h"
 #include "user_helper.h"
-#include "utils.h"
 
 //------------------------------------------------------------------------------
 
@@ -73,7 +74,7 @@ structVal["group"] = xmlrpc_c::value_string(IconvString(ptr->GetProperty().group
 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;
@@ -115,9 +116,9 @@ structVal["down"] = xmlrpc_c::value_boolean(ptr->GetProperty().disabled.Get());
 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);
 }
@@ -160,6 +161,18 @@ if ((it = structVal.find("ips")) != structVal.end())
     {
     USER_IPS ips;
     ips = StrToIPS(xmlrpc_c::value_string(it->second));
+
+    for (size_t i = 0; i < ips.Count(); ++i)
+        {
+        CONST_USER_PTR user;
+        uint32_t ip = ips[i].ip;
+        if (users.IsIPInUse(ip, login, &user))
+            {
+            printfd(__FILE__, "Trying to assign an IP %s to '%s' that is already in use by '%s'\n", inet_ntostring(ip).c_str(), login.c_str(), user->GetLogin().c_str());
+            return true;
+            }
+        }
+
     if (!ptr->GetProperty().ips.Set(ips,
                                 admin,
                                 login,
@@ -225,7 +238,7 @@ if ((it = structVal.find("email")) != structVal.end())
 if ((it = structVal.find("cash")) != structVal.end())
     {
     double value(xmlrpc_c::value_double(it->second));
-    if (ptr->GetProperty().cash.Get() != value)
+    if (std::fabs(ptr->GetProperty().cash.Get() - value) > 1.0e-3)
         if (!ptr->GetProperty().cash.Set(value,
                                      admin,
                                      login,
@@ -247,7 +260,7 @@ if ((it = structVal.find("creditexpire")) != structVal.end())
 if ((it = structVal.find("credit")) != structVal.end())
     {
     double value(xmlrpc_c::value_double(it->second));
-    if (ptr->GetProperty().credit.Get() != value)
+    if (std::fabs(ptr->GetProperty().credit.Get() - value) > 1.0e-3)
         if (!ptr->GetProperty().credit.Set(value,
                                        admin,
                                        login,
@@ -258,7 +271,7 @@ if ((it = structVal.find("credit")) != structVal.end())
 if ((it = structVal.find("freemb")) != structVal.end())
     {
     double value(xmlrpc_c::value_double(it->second));
-    if (ptr->GetProperty().freeMb.Get() != value)
+    if (std::fabs(ptr->GetProperty().freeMb.Get() - value) > 1.0e-3)
         if (!ptr->GetProperty().freeMb.Set(value,
                                        admin,
                                        login,
@@ -334,7 +347,7 @@ if ((it = structVal.find("note")) != structVal.end())
 
 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());
index 83f70b5c4df2428cfabb48a296688c1ff2618604..4e1dd7966f0a584be40ffc972779d2cdc9bfd525 100644 (file)
@@ -14,8 +14,9 @@ class TARIFFS;
 class USER_HELPER
 {
 public:
-    USER_HELPER(USER_PTR & p)
-        : ptr(p)
+    USER_HELPER(USER_PTR & p, USERS & us)
+        : ptr(p),
+          users(us)
     {
     }
 
@@ -28,6 +29,7 @@ public:
                      TARIFFS * tariffs);
 private:
     USER_PTR & ptr;
+    USERS & users;
 };
 
 #endif
index 48ef3103123515633614d073fa2b0f9b445cefc7..5adbf44131905750cfa52fefbf1398b0842b2dd0 100644 (file)
@@ -10,7 +10,6 @@
 #include "users_methods.h"
 #include "rpcconfig.h"
 #include "user_helper.h"
-#include "utils.h"
 
 //------------------------------------------------------------------------------
 
@@ -40,7 +39,7 @@ if (users->FindByName(login, &u))
     return;
     }
 
-USER_HELPER uhelper(u);
+USER_HELPER uhelper(u, *users);
 
 if (!adminInfo.priviledges.userConf || !adminInfo.priviledges.userPasswd)
     {
@@ -173,7 +172,7 @@ while (1)
 
     xmlrpc_c::value info;
 
-    USER_HELPER uhelper(u);
+    USER_HELPER uhelper(u, *users);
 
     uhelper.GetUserInfo(&info, hidePassword);
 
@@ -217,7 +216,7 @@ if (users->FindByName(login, &u))
     return;
     }
 
-USER_HELPER uhelper(u);
+USER_HELPER uhelper(u, *users);
 
 if (!adminInfo.priviledges.userConf || !adminInfo.priviledges.userPasswd)
     {
@@ -405,14 +404,13 @@ void METHOD_GET_ONLINE_IPS::execute(xmlrpc_c::paramList const & paramList,
                                     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))
@@ -435,7 +433,7 @@ if (config->GetAdminInfo(cookie, &adminInfo))
     return;
     }
 
-std::vector<xmlrpc_c::value> ips;
+ValueVector ips;
 
 USER_PTR u;
 
@@ -458,8 +456,7 @@ while (1)
         {
         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))
                 {
@@ -512,3 +509,36 @@ ipm.mask = htonl(0xffFFffFF << (32 - ipm.mask));
 
 return false;
 }
+
+void METHOD_GET_USER_AUTH_BY::execute(xmlrpc_c::paramList const & paramList,
+                                      xmlrpc_c::value *   const   retvalPtr)
+{
+std::string cookie = paramList.getString(0);
+std::string login = paramList.getString(1);
+paramList.verifyEnd(2);
+
+std::map<std::string, xmlrpc_c::value> structVal;
+ADMIN_INFO adminInfo;
+
+if (config->GetAdminInfo(cookie, &adminInfo))
+    {
+    structVal["result"] = xmlrpc_c::value_boolean(false);
+    *retvalPtr = xmlrpc_c::value_struct(structVal);
+    return;
+    }
+
+USER_PTR u;
+
+if (users->FindByName(login, &u))
+    {
+    structVal["result"] = xmlrpc_c::value_boolean(false);
+    *retvalPtr = xmlrpc_c::value_struct(structVal);
+    return;
+    }
+
+std::vector<std::string> list(u->GetAuthorizers());
+std::vector<xmlrpc_c::value> authList;
+for (std::vector<std::string>::const_iterator it = list.begin(); it != list.end(); ++it)
+    authList.push_back(xmlrpc_c::value_string(*it));
+*retvalPtr = xmlrpc_c::value_array(authList);
+}
index 413e9aaf8b418578f374a056383207489dcdc4a1..d1ec33a4ade340f07e1612e1b9641de38417db8d 100644 (file)
@@ -229,4 +229,24 @@ private:
     bool ParseNet(const std::string & net, IP_MASK & ipm) const;
 };
 
+class METHOD_GET_USER_AUTH_BY : public xmlrpc_c::method {
+public:
+    METHOD_GET_USER_AUTH_BY(RPC_CONFIG * c,
+                            USERS * u)
+        : config(c),
+          users(u)
+    {
+    }
+
+    void execute(xmlrpc_c::paramList const & paramList,
+                 xmlrpc_c::value *   const   retvalP);
+
+private:
+    METHOD_GET_USER_AUTH_BY(const METHOD_GET_ONLINE_IPS & rvalue);
+    METHOD_GET_USER_AUTH_BY & operator=(const METHOD_GET_ONLINE_IPS & rvalue);
+
+    RPC_CONFIG * config;
+    USERS * users;
+};
+
 #endif
diff --git a/projects/stargazer/plugins/configuration/rpcconfig/utils.cpp b/projects/stargazer/plugins/configuration/rpcconfig/utils.cpp
deleted file mode 100644 (file)
index 18999aa..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#include <string>
-#include <cerrno>
-#include <cstring>
-#include <iconv.h>
-
-#include "utils.h"
-#include "common.h"
-
-//-----------------------------------------------------------------------------
-std::string IconvString(const std::string & src,
-                        const std::string & from,
-                        const std::string & to)
-{
-if (src.empty())
-    return std::string();
-
-size_t inBytesLeft = src.length() + 1;
-size_t outBytesLeft = src.length() * 2 + 1;
-
-char * inBuf = new char[inBytesLeft];
-char * outBuf = new char[outBytesLeft];
-
-strncpy(inBuf, src.c_str(), src.length());
-
-inBuf[src.length()] = 0;
-
-#if defined(FREE_BSD) || defined(FREE_BSD5)
-const char * srcPos = inBuf;
-#else
-char * srcPos = inBuf;
-#endif
-char * dstPos = outBuf;
-
-iconv_t handle = iconv_open(to.c_str(),
-                            from.c_str());
-
-if (handle == iconv_t(-1))
-    {
-    if (errno == EINVAL)
-        {
-        printfd(__FILE__, "IconvString(): iconv from %s to %s failed\n", from.c_str(), to.c_str());
-        delete[] outBuf;
-        delete[] inBuf;
-        return src;
-        }
-    else
-        printfd(__FILE__, "IconvString(): iconv_open error\n");
-
-    delete[] outBuf;
-    delete[] inBuf;
-    return src;
-    }
-
-size_t res = iconv(handle,
-                   &srcPos, &inBytesLeft,
-                   &dstPos, &outBytesLeft);
-
-if (res == size_t(-1))
-    {
-    printfd(__FILE__, "IconvString(): '%s'\n", strerror(errno));
-
-    iconv_close(handle);
-    delete[] outBuf;
-    delete[] inBuf;
-    return src;
-    }
-
-dstPos = 0;
-
-std::string dst(outBuf);
-
-iconv_close(handle);
-
-delete[] outBuf;
-delete[] inBuf;
-
-return dst;
-}
diff --git a/projects/stargazer/plugins/configuration/rpcconfig/utils.h b/projects/stargazer/plugins/configuration/rpcconfig/utils.h
deleted file mode 100644 (file)
index d273e3d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#ifndef __UTILS_H__
-#define __UTILS_H__
-
-#include <string>
-
-std::string IconvString(const std::string & src,
-                        const std::string & from = "UTF-8",
-                        const std::string & to = "KOI8-R");
-
-#endif
index b6f4938a632095cfcdf505f4fb950e39d65845e6..83e267d15992fdc5ef690d7f3750b42e7d39e65e 100644 (file)
@@ -11,7 +11,8 @@ SRCS = ./stgconfig.cpp \
        ./configproto.cpp \
        ./parser.cpp \
        ./parser_tariff.cpp \
-       ./parser_admin.cpp
+       ./parser_admin.cpp \
+       ./parser_auth_by.cpp
 
 LIBS += -lexpat \
        $(LIB_THREAD)
index 7ca37b49fb95a9c75302465d5658cdb31c26cf84..015c24602fb5391345a8826ad926cd64293af434 100644 (file)
@@ -107,6 +107,7 @@ CONFIGPROTO::CONFIGPROTO(PLUGIN_LOGGER & l)
       parserDelUser(),
       parserCheckUser(),
       parserSendMessage(),
+      parserAuthBy(),
       parserGetAdmins(),
       parserAddAdmin(),
       parserDelAdmin(),
@@ -130,6 +131,7 @@ dataParser.push_back(&parserAddUser);
 dataParser.push_back(&parserDelUser);
 dataParser.push_back(&parserCheckUser);
 dataParser.push_back(&parserSendMessage);
+dataParser.push_back(&parserAuthBy);
 
 dataParser.push_back(&parserGetTariffs);
 dataParser.push_back(&parserAddTariff);
@@ -158,10 +160,9 @@ XML_ParserFree(xmlParser);
 //-----------------------------------------------------------------------------
 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;
@@ -179,14 +180,14 @@ while(nonstop)
     {
     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",
index 0de2b847438fe352e186bf574f30b31ddbd9c4ef..ccb8a4d723353c08bc6ad09b4e18117bea7ae3e6 100644 (file)
@@ -41,6 +41,8 @@
 #include "stg/logger.h"
 #include "parser.h"
 
+#include "parser_auth_by.h"
+
 #define  STG_HEADER     "SG04"
 #define  OK_HEADER      "OKHD"
 #define  ERR_HEADER     "ERHD"
@@ -107,6 +109,7 @@ private:
     PARSER_DEL_USER             parserDelUser;
     PARSER_CHECK_USER           parserCheckUser;
     PARSER_SEND_MESSAGE         parserSendMessage;
+    PARSER_AUTH_BY              parserAuthBy;
 
     PARSER_GET_ADMINS           parserGetAdmins;
     PARSER_ADD_ADMIN            parserAddAdmin;
@@ -121,7 +124,7 @@ private:
     ADMINS *                    admins;
 
     BASE_PARSER *               currParser;
-    vector<BASE_PARSER *>       dataParser;
+    std::vector<BASE_PARSER *>  dataParser;
 
     XML_Parser                  xmlParser;
 
index bfe2f7bca7facab3d28b41f60cc4ca7778978084..b6c491721f78c53a3c01d5edad0b163cc5ef57f3 100644 (file)
@@ -64,13 +64,13 @@ answerList->push_back("<ServerInfo>");
 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);
@@ -84,7 +84,7 @@ answerList->push_back(s);
 
 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);
@@ -124,8 +124,8 @@ return -1;
 //-----------------------------------------------------------------------------
 void PARSER_GET_USER::CreateAnswer()
 {
-string s;
-string enc;
+std::string s;
+std::string enc;
 
 USER_PTR u;
 
@@ -190,7 +190,7 @@ s = "<email value=\"" + enc + "\" />";
 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());
@@ -202,7 +202,7 @@ userdata.push_back(u->GetProperty().userdata7.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());
@@ -230,7 +230,7 @@ answerList->push_back(s);
 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);
@@ -246,7 +246,7 @@ upload = u->GetProperty().up.Get();
 
 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);
@@ -286,6 +286,13 @@ answerList->push_back(s);
 strprintf(&s, "<CreditExpire value=\"%ld\" />", u->GetProperty().creditExpire.Get());
 answerList->push_back(s);
 
+s = "<AuthorizedBy>";
+std::vector<std::string> list(u->GetAuthorizers());
+for (std::vector<std::string>::const_iterator it = list.begin(); it != list.end(); ++it)
+    s += "<Auth name=\"" + *it + "\">";
+s += "</AuthorizedBy>";
+answerList->push_back(s);
+
 strprintf(&s, "</user>");
 answerList->push_back(s);
 }
@@ -342,16 +349,16 @@ void PARSER_GET_USERS::CreateAnswer()
 {
 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;
 
@@ -362,7 +369,7 @@ if (!h)
     users->CloseSearch(h);
     return;
     }
-string updateTime;
+std::string updateTime;
 x2str(time(NULL), updateTime);
 
 if (lastUpdateFound)
@@ -458,7 +465,7 @@ while (1)
         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());
@@ -470,7 +477,7 @@ while (1)
     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)
@@ -522,7 +529,7 @@ while (1)
 
     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;
@@ -540,7 +547,7 @@ while (1)
         {
         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;
@@ -742,11 +749,11 @@ ucr = new USER_CONF_RES;
 
 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;
 }
@@ -917,7 +924,7 @@ else
         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';
@@ -1025,9 +1032,23 @@ if (check && alwaysOnline && !onlyOneIP)
     {
     printfd(__FILE__, "Requested change leads to a forbidden state: AlwaysOnline with multiple IP's\n");
     GetStgLogger()("%s Requested change leads to a forbidden state: AlwaysOnline with multiple IP's", currAdmin->GetLogStr().c_str());
+    res = -1;
     return -1;
     }
 
+for (size_t i = 0; i < ucr->ips.const_data().Count(); ++i)
+    {
+    CONST_USER_PTR user;
+    uint32_t ip = ucr->ips.const_data().operator[](i).ip;
+    if (users->IsIPInUse(ip, login, &user))
+        {
+        printfd(__FILE__, "Trying to assign an IP %s to '%s' that is already in use by '%s'\n", inet_ntostring(ip).c_str(), login.c_str(), user->GetLogin().c_str());
+        GetStgLogger()("%s trying to assign an IP %s to '%s' that is currently in use by '%s'", currAdmin->GetLogStr().c_str(), inet_ntostring(ip).c_str(), login.c_str(), user->GetLogin().c_str());
+        res = -1;
+        return -1;
+        }
+    }
+
 if (!ucr->ips.res_empty())
     if (!u->GetProperty().ips.Set(ucr->ips.const_data(), currAdmin, login, store))
         res = -1;
@@ -1074,7 +1095,7 @@ if (!ucr->note.res_empty())
     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());
@@ -1288,7 +1309,7 @@ if (strcasecmp(el, "Message") == 0)
             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;
         }
index 5bc68d2adf36ace7769e4e167de59a708239589a..9d87f30047bc434e8d6688451cb713fd2ef990b4 100644 (file)
@@ -37,7 +37,7 @@ if (!priv->adminChg)
     return;
     }
 
-string s;
+std::string s;
 //answerList->clear();
 answerList->erase(answerList->begin(), answerList->end());
 
@@ -99,7 +99,7 @@ if (admins->Del(adminToDel, currAdmin) == 0)
     }
 else
     {
-    string s;
+    std::string s;
     strprintf(&s, "<DelAdmin Result=\"Error. %s\"/>", admins->GetStrError().c_str());
     answerList->push_back(s);
     }
@@ -155,7 +155,7 @@ if (admins->Add(adminToAdd, currAdmin) == 0)
     }
 else
     {
-    string s;
+    std::string s;
     strprintf(&s, "<AddAdmin Result=\"Error. %s\"/>", admins->GetStrError().c_str());
     answerList->push_back(s);
     }
@@ -242,7 +242,7 @@ if (!login.res_empty())
 
     if (admins->Change(conf, currAdmin) != 0)
         {
-        string s;
+        std::string s;
         strprintf(&s, "<ChgAdmin Result = \"%s\"/>", admins->GetStrError().c_str());
         answerList->push_back(s);
         }
index 9bac0294bbc171d731ea169813cea5c14e58b966..7be1af9645a0107ff39a0ec839e45780f1817b08 100644 (file)
@@ -29,7 +29,7 @@ return -1;
 //-----------------------------------------------------------------------------
 void PARSER_GET_TARIFFS::CreateAnswer()
 {
-string s;
+std::string s;
 char vs[100];
 int hd, hn, md, mn;
 
@@ -186,7 +186,7 @@ if (tariffs->Add(tariffToAdd, currAdmin) == 0)
     }
 else
     {
-    string s;
+    std::string s;
     strprintf(&s, "<AddTariff Result=\"Error. %s\"/>", tariffs->GetStrError().c_str());
     answerList->push_back(s);
     }
@@ -222,7 +222,7 @@ answerList->erase(answerList->begin(), answerList->end());
 
 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;
@@ -234,7 +234,7 @@ if (tariffs->Del(tariffToDel, currAdmin) == 0)
     }
 else
     {
-    string s;
+    std::string s;
     strprintf(&s, "<DelTariff Result=\"Error. %s\"/>", tariffs->GetStrError().c_str());
     answerList->push_back(s);
     }
@@ -244,7 +244,7 @@ else
 //  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;
@@ -272,7 +272,7 @@ delete[] str;
 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;
@@ -317,7 +317,7 @@ if (depth == 1)
     }
 else
     {
-    string s;
+    std::string s;
 
     if (strcasecmp(el, "PriceDayA") == 0)
         {
@@ -485,7 +485,7 @@ if (!td.tariffConf.name.data().empty())
         }
     else
         {
-        string s;
+        std::string s;
         strprintf(&s, "<SetTariff Result=\"Change tariff error! %s\"/>", tariffs->GetStrError().c_str());
         answerList->push_back(s);
         return;
index a4915e397cc950c4a1e8f095f64f998a7db06d46..9b448f6cede881e7c7df4fc6275a9f6b3fb0d798 100644 (file)
@@ -57,7 +57,7 @@ enum
 //-----------------------------------------------------------------------------
 int CONFIGPROTO::Prepare()
 {
-list<string> ansList; //óÀÄÁ ÂÕÄÅÔ ÐÏÍÅÝÅΠÏÔ×ÅÔ ÄÌÑ ÍÅÎÅÄÖÅÒÁ ËÌÉÅÎÔÏ×
+std::list<std::string> ansList; //óÀÄÁ ÂÕÄÅÔ ÐÏÍÅÝÅΠÏÔ×ÅÔ ÄÌÑ ÍÅÎÅÄÖÅÒÁ ËÌÉÅÎÔÏ×
 int res;
 struct sockaddr_in listenAddr;
 
@@ -86,7 +86,7 @@ int lng = 1;
 
 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;
     }
@@ -253,7 +253,7 @@ while (pos < stgHdrLen)
         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)
@@ -314,7 +314,7 @@ while (pos < ADM_LOGIN_LEN) {
         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)
         {
@@ -364,7 +364,7 @@ while (pos < ADM_LOGIN_LEN)
         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)
         {
@@ -452,7 +452,7 @@ while (1)
             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
@@ -486,12 +486,12 @@ while (1)
         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;
@@ -514,7 +514,7 @@ while (li != answerList.end())
         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;
@@ -534,7 +534,7 @@ EncodeString(buffS, buff, &ctx);
 
 answerList.clear();
 
-return send(sock, buffS, 8, 0);
+return static_cast<int>(send(sock, buffS, 8, 0));
 }
 //-----------------------------------------------------------------------------
 void CONFIGPROTO::SendError(const char * text)
index e3199047186e944d750571343c028b6031e25609..06381144944a8d04abbcb53d2fab44a8cdadcb99 100644 (file)
@@ -12,7 +12,7 @@
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-PLUGIN_CREATOR<STG_CONFIG> stgc;
+static PLUGIN_CREATOR<STG_CONFIG> stgc;
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -20,7 +20,7 @@ int STG_CONFIG_SETTINGS::ParseSettings(const MODULE_SETTINGS & s)
 {
 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);
@@ -36,7 +36,7 @@ if (ParseIntInRange(pvi->value[0], 2, 65535, &p))
     printfd(__FILE__, "%s\n", errorStr.c_str());
     return -1;
     }
-port = p;
+port = static_cast<uint16_t>(p);
 
 return 0;
 }
@@ -50,7 +50,7 @@ return stgc.GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-const std::string STG_CONFIG::GetVersion() const
+std::string STG_CONFIG::GetVersion() const
 {
 return "Stg configurator v.0.08";
 }
index 7e3ae69b9ab55b5b5d5feb5af421be8852a377d2..8fa4dc7691abd3584242c306f403c451b9e3f131 100644 (file)
@@ -23,13 +23,13 @@ public:
     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; }
@@ -45,7 +45,7 @@ public:
     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; }
 
index 7f47b7cf8464906ee754cc9c3977ca054ca100a8..7c4050abb035d9f55108ed306b02d5b51e869a3d 100644 (file)
 #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);
@@ -138,7 +144,7 @@ for (int i = 0; i < 25; i++)
 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())
     {
@@ -170,7 +176,7 @@ long delay = (10000000 * ping->pingSettings.GetPingDelay()) / 3 + 50000000;
  
 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())
@@ -233,8 +239,8 @@ void PING::UnSetUserNotifiers(USER_PTR u)
 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(),
@@ -303,7 +309,7 @@ STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
 UnSetUserNotifiers(u);
 
-list<USER_PTR>::iterator users_iter;
+std::list<USER_PTR>::iterator users_iter;
 users_iter = usersList.begin();
 
 while (users_iter != usersList.end())
index 421b83da5ae3232115be566fdb834dfda3546008..29e4974ef4be2779c286ff36dfd82dcc2661e328 100644 (file)
@@ -116,7 +116,7 @@ public:
     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; }
 
index 1c060b7f529be26743fafcee0cf20abb59e29742..90ec1891ea7c0602f9dfa24b9f568a259cc3afe3 100644 (file)
 #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();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -89,7 +93,7 @@ if (ParseIntInRange(pvi->value[0], 2, 65535, &p))
     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);
@@ -292,7 +296,7 @@ int RADIUS::RecvData(RAD_PACKET * packet, struct sockaddr_in * outerAddr)
 {
     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));
@@ -312,13 +316,13 @@ int RADIUS::RecvData(RAD_PACKET * packet, struct sockaddr_in * outerAddr)
     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;
@@ -351,7 +355,6 @@ switch (packet->packetType)
         printfd(__FILE__, "RADIUS::ProcessData Unsupported packet type: %d\n", packet->packetType);
         return -1;
     };
-return 0;
 }
 //-----------------------------------------------------------------------------
 int RADIUS::ProcessAutzPacket(RAD_PACKET * packet)
@@ -568,6 +571,9 @@ bool RADIUS::IsAllowedService(const std::string & svc) const
 return CanAuthService(svc) || CanAcctService(svc);
 }
 //-----------------------------------------------------------------------------
+namespace
+{
+
 inline
 void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password)
 {
@@ -578,23 +584,25 @@ Blowfish_Init(ctx, keyL, RAD_PASSWORD_LEN);
 }
 //-----------------------------------------------------------------------------
 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
index 8281b1ae2f9e80e33b495749942665c5c38ab6c6..c424c007dcefe0958bc3cebef0cc2c2b9f64dcd4 100644 (file)
@@ -62,12 +62,12 @@ public:
           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);
@@ -102,7 +102,7 @@ public:
     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; }
 
@@ -116,7 +116,7 @@ private:
     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);
 
@@ -135,19 +135,19 @@ private:
 
     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;
index e7cb44c2988640710d756c6a7ee0a7622a2cdfe1..240ce349b6d12a0d74e66e876b99122db3e90f21 100644 (file)
@@ -60,8 +60,8 @@ public:
     ~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);
index f7f892e5157de37a2e4814af15b2d691e59d40e5..d5fab22243ef3b88f832d287ff7bf1d40e3b9fb1 100644 (file)
@@ -38,9 +38,7 @@
 #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;
 
@@ -55,12 +53,14 @@ struct USER_IS
     USER_PTR user;
 };
 
+PLUGIN_CREATOR<REMOTE_SCRIPT> rsc;
+
 } // namespace anonymous
 
+extern "C" PLUGIN * GetPlugin();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
-PLUGIN_CREATOR<REMOTE_SCRIPT> rsc;
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -86,7 +86,7 @@ int RS::SETTINGS::ParseSettings(const MODULE_SETTINGS & s)
 {
 int p;
 PARAM_VALUE pv;
-vector<PARAM_VALUE>::const_iterator pvi;
+std::vector<PARAM_VALUE>::const_iterator pvi;
 netRouters.clear();
 ///////////////////////////
 pv.param = "Port";
@@ -103,7 +103,7 @@ if (ParseIntInRange(pvi->value[0], 2, 65535, &p))
     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);
@@ -352,7 +352,7 @@ void REMOTE_SCRIPT::PeriodicSend()
 {
 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)
@@ -420,7 +420,7 @@ RS::PACKET_TAIL packetTail;
 
 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();
@@ -456,7 +456,7 @@ if (PreparePacket(buffer, sizeof(buffer), rsu, forceDisconnect))
 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;
@@ -475,10 +475,10 @@ if (PreparePacket(buffer, sizeof(buffer), rsu, forceDisconnect))
 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));
@@ -515,9 +515,9 @@ for (size_t i = 0; i < netRouters.size(); ++i)
 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
@@ -626,7 +626,7 @@ authorizedUsers.insert(std::make_pair(user->GetCurrIP(), rsu));
 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())
@@ -652,7 +652,7 @@ else
     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);
@@ -660,11 +660,11 @@ strncpy((char *)keyL, password.c_str(), 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);
 }
 //-----------------------------------------------------------------------------
index cbb9f97f814c5aeab870872613e96dd5bef5c390..8d22b458c870d72fba63ea61f3f7651134389ca7 100644 (file)
@@ -157,7 +157,7 @@ public:
     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; }
@@ -166,11 +166,11 @@ public:
 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 {
@@ -188,7 +188,7 @@ public:
     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; }
 
@@ -218,8 +218,8 @@ private:
     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;
 
index b9b789eaf1556ed034ae350b29b6479d96714b63..a14fe20b3e95cdf18ec602fc656d087974ab0654 100644 (file)
 
 #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;
 
@@ -54,7 +54,7 @@ class PacketSender : public std::unary_function<uint32_t, int> {
     private:
         int sock;
         char * buffer;
-        int length;
+        size_t length;
         uint16_t port;
 };
 
index 5d02d9dc897bf76ada08d5ebcde250915f0b9910..95382400f6403e945b3e05768ac40d718b3aece1 100644 (file)
@@ -37,7 +37,7 @@ class UpdateRouter : public std::unary_function<std::pair<const uint32_t, RS::US
 {
 public:
     UpdateRouter(REMOTE_SCRIPT & t)
-        : obj(t) {};
+        : obj(t) {}
 
     void operator() (std::pair<const uint32_t, USER> & val)
         {
index 81b9ccb50a8d3e43a9db3235e3b1b50277af111d..31b91bb390ee431b7caf1e732832012586d5bb89 100644 (file)
 #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)
@@ -33,6 +33,15 @@ bool SPrefixLess(const Sensors::value_type & a,
 return a.first.PrefixLess(b.first);
 }
 
+}
+
+extern "C" PLUGIN * GetPlugin();
+
+PLUGIN * GetPlugin()
+{
+return smc.GetPlugin();
+}
+
 SMUX_SETTINGS::SMUX_SETTINGS()
     : errorStr(),
       ip(0),
@@ -60,7 +69,7 @@ if (ParseIntInRange(pvi->value[0], 2, 65535, &p))
     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);
index ef7b191c1843589e38a6acee7ce2398695b6febd..e379ea7f7f06261e4cfe64bc2612b83796c2c94b 100644 (file)
@@ -21,8 +21,6 @@
 #include "tables.h"
 #include "types.h"
 
-extern "C" PLUGIN * GetPlugin();
-
 class USER;
 class SETTINGS;
 class SMUX;
@@ -122,7 +120,7 @@ public:
     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; }
 
@@ -216,6 +214,4 @@ smux.UnsetNotifier(userPtr);
 smux.UpdateTables();
 }
 
-extern "C" PLUGIN * GetPlugin();
-
 #endif
index 25b2dd85d8372b880bfa1be5e85f3b45ccafbede..c3e3ef54c48d870fee774d16ac11e3420b8b67e2 100644 (file)
@@ -51,8 +51,8 @@ OID prefixOid(prefix);
 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;
     }
index eb09a73ce5c91d1acc074b26cb1f00ac8b6474af..4e54749287110f740fa264db4590a63fd23028b9 100644 (file)
@@ -5,6 +5,13 @@
 
 #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)
@@ -16,7 +23,7 @@ size_t arcPos = 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;
@@ -52,6 +59,8 @@ std::copy(&a[0], &a[pos], std::back_inserter(arcs));
 return true;
 }
 
+}
+
 OID::OID(const std::string & str)
     : arcs()
 {
@@ -182,7 +191,7 @@ return stream.str();
 
 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)
index 18e2bf3157fec9168c7fd92d9d114f7a6eb1d265..3160bc5fcf6c33b5bc1d6729c80fb74e2a8f3f21 100644 (file)
@@ -44,7 +44,7 @@ if (left < str.length())
         }
     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;
 }
 
index d17cb3574ba80579bd2d27351eaf5eb241c5f917..c069affdd328b9585103cbc4996f14b385e29ea8 100644 (file)
@@ -57,7 +57,7 @@ bool ValueToOS<std::string>(const std::string & value, ObjectSyntax * objectSynt
 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;
 }
 
index 334824d979d7ecd57c34df52a12947118294f529..4e4489adcaa86614d32aaa0b390e24b5e513506b 100644 (file)
 
 #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();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -96,11 +99,11 @@ FILES_STORE_SETTINGS::FILES_STORE_SETTINGS()
 {
 }
 //-----------------------------------------------------------------------------
-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())
     {
@@ -117,11 +120,11 @@ if (User2UID(pvi->value[0].c_str(), uid) < 0)
 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())
     {
@@ -138,7 +141,7 @@ if (Group2GID(pvi->value[0].c_str(), gid) < 0)
 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"))
     {
@@ -155,11 +158,11 @@ errorStr = "Incorrect value \'" + value + "\'.";
 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())
     {
@@ -199,7 +202,7 @@ if (ParseGroup(s.moduleParams, "UserLogGroup", &userLogGID) < 0)
 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);
@@ -252,7 +255,7 @@ adminsDir = workDir + "/admins/";
 return 0;
 }
 //-----------------------------------------------------------------------------
-const string & FILES_STORE_SETTINGS::GetStrError() const
+const std::string & FILES_STORE_SETTINGS::GetStrError() const
 {
 return errorStr;
 }
@@ -263,7 +266,7 @@ struct passwd * pw;
 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;
     }
@@ -278,7 +281,7 @@ struct group * grp;
 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;
     }
@@ -294,7 +297,7 @@ char b;
 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;
     }
@@ -302,7 +305,7 @@ if (strlen(str) > 3)
 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;
         }
@@ -348,7 +351,7 @@ pthread_mutexattr_t attr;
 pthread_mutexattr_init(&attr);
 pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
 pthread_mutex_init(&mutex, &attr);
-};
+}
 //-----------------------------------------------------------------------------
 int FILES_STORE::ParseSettings()
 {
@@ -361,14 +364,14 @@ if (ret)
 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;
     }
 
@@ -379,14 +382,14 @@ userList->swap(files);
 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;
     }
 
@@ -397,14 +400,14 @@ adminList->swap(files);
 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;
     }
 
@@ -434,8 +437,8 @@ while ((entry = readdir(d)))
     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))
@@ -481,16 +484,16 @@ if (rmdir(path))
 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;
     }
@@ -515,12 +518,12 @@ if (Touch(fileName))
 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)
@@ -534,7 +537,7 @@ if (access(dirName.c_str(), F_OK) != 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()))
         {
@@ -555,9 +558,9 @@ else
 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))
     {
@@ -570,11 +573,11 @@ 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)
     {
@@ -614,21 +617,21 @@ if (conf->tariffName.empty())
     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)
     {
@@ -682,9 +685,9 @@ if (cf.ReadDouble("Credit", &conf->credit, 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))
@@ -698,7 +701,7 @@ 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);
 
@@ -721,7 +724,7 @@ for (int i = 0; i < DIR_NUM; i++)
     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;
         }
@@ -731,7 +734,7 @@ for (int i = 0; i < DIR_NUM; i++)
     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;
         }
@@ -789,9 +792,9 @@ if (cf.ReadTime("LastActivityTime", &stat->lastActivityTime, 0) != 0)
 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);
@@ -801,7 +804,7 @@ int e = cfstat.Error();
 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;
     }
@@ -838,17 +841,17 @@ for (int i = 0; i < USERDATA_NUM; i++)
     }
 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";
 
     {
@@ -858,7 +861,7 @@ 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;
         }
@@ -891,11 +894,11 @@ if (e)
 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");
 
@@ -927,11 +930,11 @@ if (e)
 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");
 
@@ -963,30 +966,30 @@ if (e)
 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,
@@ -995,7 +998,7 @@ int FILES_STORE::WriteUserDisconnect(const string & login,
                                      double freeMb,
                                      const std::string & reason) const
 {
-stringstream logStr;
+std::ostringstream logStr;
 logStr << "Disconnect, "
        << " session upload: \'"
        << sessionUp
@@ -1022,10 +1025,10 @@ logStr << " freeMb: \'"
 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);
 
@@ -1040,7 +1043,7 @@ if (s.Error())
     }
 
 // 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);
 
@@ -1079,9 +1082,9 @@ s2.WriteInt("LastActivityTime", stat.lastActivityTime);
 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))
@@ -1095,9 +1098,9 @@ 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()))
     {
@@ -1116,7 +1119,7 @@ char passwordE[2 * ADM_PASSWD_LEN + 2];
 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());
 
@@ -1165,9 +1168,9 @@ strprintf(&fileName, "%s/%s.adm", storeSettings.GetAdminsDir().c_str(), ac.login
 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];
@@ -1175,7 +1178,7 @@ char password[ADM_PASSWD_LEN + 1];
 char passwordE[2 * ADM_PASSWD_LEN + 2];
 BLOWFISH_CTX ctx;
 
-string p;
+std::string p;
 
 if (cf.Error())
     {
@@ -1185,8 +1188,6 @@ if (cf.Error())
     return -1;
     }
 
-int a;
-
 if (cf.ReadString("password", &p, "*"))
     {
     STG_LOCKER lock(&mutex, __FILE__, __LINE__);
@@ -1217,7 +1218,9 @@ else
 
 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
     {
@@ -1227,7 +1230,7 @@ else
     return -1;
     }
 
-if (cf.ReadInt("ChgPassword", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgPassword", &a, 0) == 0)
     ac->priv.userPasswd = a;
 else
     {
@@ -1237,7 +1240,7 @@ else
     return -1;
     }
 
-if (cf.ReadInt("ChgStat", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgStat", &a, 0) == 0)
     ac->priv.userStat = a;
 else
     {
@@ -1247,7 +1250,7 @@ else
     return -1;
     }
 
-if (cf.ReadInt("ChgCash", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgCash", &a, 0) == 0)
     ac->priv.userCash = a;
 else
     {
@@ -1257,7 +1260,7 @@ else
     return -1;
     }
 
-if (cf.ReadInt("UsrAddDel", &a, 0) == 0)
+if (cf.ReadUShortInt("UsrAddDel", &a, 0) == 0)
     ac->priv.userAddDel = a;
 else
     {
@@ -1267,7 +1270,7 @@ else
     return -1;
     }
 
-if (cf.ReadInt("ChgAdmin", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgAdmin", &a, 0) == 0)
     ac->priv.adminChg = a;
 else
     {
@@ -1277,7 +1280,7 @@ else
     return -1;
     }
 
-if (cf.ReadInt("ChgTariff", &a, 0) == 0)
+if (cf.ReadUShortInt("ChgTariff", &a, 0) == 0)
     ac->priv.tariffChg = a;
 else
     {
@@ -1287,12 +1290,12 @@ 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;
@@ -1300,9 +1303,9 @@ else
 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))
     {
@@ -1314,9 +1317,9 @@ 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()))
     {
@@ -1329,11 +1332,11 @@ 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)
@@ -1344,7 +1347,7 @@ if (conf.Error() != 0)
     return -1;
     }
 
-string param;
+std::string param;
 for (int i = 0; i<DIR_NUM; i++)
     {
     strprintf(&param, "Time%d", i);
@@ -1483,9 +1486,9 @@ else
 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);
@@ -1500,7 +1503,7 @@ string fileName = storeSettings.GetTariffsDir() + "/" + tariffName + ".tf";
         return e;
         }
 
-    string param;
+    std::string param;
     for (int i = 0; i < DIR_NUM; i++)
         {
         strprintf(&param, "PriceDayA%d", i);
@@ -1518,7 +1521,7 @@ string fileName = storeSettings.GetTariffsDir() + "/" + tariffName + ".tf";
         strprintf(&param, "Threshold%d", i);
         cf.WriteInt(param, td.dirPrice[i].threshold);
 
-        string s;
+        std::string s;
         strprintf(&param, "Time%d", i);
 
         strprintf(&s, "%0d:%0d-%0d:%0d",
@@ -1560,9 +1563,9 @@ string fileName = storeSettings.GetTariffsDir() + "/" + tariffName + ".tf";
 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];
@@ -1578,7 +1581,7 @@ if (access(dn, F_OK) != 0)
     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;
         }
@@ -1611,7 +1614,7 @@ if (access(dn, F_OK) != 0)
     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;
         }
@@ -1637,7 +1640,7 @@ if (access(dn, F_OK) != 0)
     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;
         }
@@ -1659,7 +1662,7 @@ statFile = fopen (fn, "at");
 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;
     }
@@ -1686,18 +1689,18 @@ if (fprintf(statFile, "-> %02d.%02d.%02d - %02d.%02d.%02d\n",
             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
@@ -1726,7 +1729,7 @@ while (stIter != statTree.end())
                 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));
@@ -1752,10 +1755,10 @@ if (e)
 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());
@@ -1792,16 +1795,16 @@ if (Touch(fn))
 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 \'";
@@ -1834,7 +1837,7 @@ res &= (fprintf(msgFile, "%s", msg.text.c_str()) >= 0);
 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;
@@ -1855,32 +1858,32 @@ if (rename((fileName + ".new").c_str(), fileName.c_str()) < 0)
 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++)
@@ -1892,7 +1895,7 @@ 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;
             }
@@ -1910,7 +1913,7 @@ 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;
             }
@@ -1923,9 +1926,9 @@ for (unsigned i = 0; i < messages.size(); i++)
 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");
@@ -2024,7 +2027,7 @@ if (f)
 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());
 
@@ -2040,7 +2043,7 @@ while ((entry = readdir(d)))
     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))
index 2316398f683f4efb7cfee9827f80e3a2d4d8b164..1d72f287d01dac7e1108b4e69bf97a62db3ccd3a 100644 (file)
@@ -39,8 +39,6 @@
 #include "stg/user_traff.h"
 #include "stg/logger.h"
 
-//-----------------------------------------------------------------------------
-extern "C" STORE * GetStore();
 //-----------------------------------------------------------------------------
 class FILES_STORE_SETTINGS {
 public:
@@ -199,7 +197,7 @@ private:
     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;
index e5c7b0b16343ee2655b39f2a670bda0063f88a8a..9cc7c3048b3462d088cd91ee21c94c6f307f4603 100644 (file)
 #include "stg/plugin_creator.h"
 #include "firebird_store.h"
 
-using namespace std;
-
+namespace
+{
 PLUGIN_CREATOR<FIREBIRD_STORE> frsc;
+}
+
+extern "C" STORE * GetStore();
 //-----------------------------------------------------------------------------
 STORE * GetStore()
 {
@@ -69,13 +72,13 @@ db->Disconnect();
 //-----------------------------------------------------------------------------
 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());
index 38ff457d46a1df746829553bcd1b4f2d9f87c011..638067f2011516f1228af789cb3769f0757d4278 100644 (file)
@@ -32,7 +32,6 @@
 #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();
@@ -93,7 +90,7 @@ public:
 
     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;
 
@@ -103,12 +100,12 @@ public:
     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;
index 026fef924b4e3e1d3b8ebd8903e3b8e067115861..6b457de02603b90690a728998bb36196585dc1e8 100644 (file)
 #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
     {
@@ -90,7 +90,7 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -128,7 +128,7 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -155,7 +155,7 @@ catch (IBPP::Exception & ex)
 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__);
 
index c6180c2608ff4f024b9c1e7a9c069bf6dc905ea0..e14ad356e9f6c46938dcb3db57d94827a48c031c 100644 (file)
  *
  */
 
-#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__);
 
@@ -70,7 +68,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int FIREBIRD_STORE::EditMessage(const STG_MSG & msg,
-                                const string & login) const
+                                const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -108,7 +106,7 @@ return 0;
 //-----------------------------------------------------------------------------
 int FIREBIRD_STORE::GetMessage(uint64_t id,
                                STG_MSG * msg,
-                               const string &) const
+                               const std::string &) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -154,7 +152,7 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -181,8 +179,8 @@ catch (IBPP::Exception & ex)
 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__);
 
index 84eab5fa885b66a8ad593d5a0cbd791f61824f1e..6f6bee30a01d51b1779afdcc1fe7cb98321e0144 100644 (file)
 #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
     {
@@ -98,7 +98,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int FIREBIRD_STORE::RestoreService(SERVICE_CONF * sc,
-                                   const string & name) const
+                                   const std::string & name) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -117,7 +117,7 @@ try
         st->Get(4, sc->cost);
         int16_t pd;
         st->Get(5, pd);
-        sc->payDay = pd;
+        sc->payDay = static_cast<uint8_t>(pd);
         }
     else
         {
@@ -140,7 +140,7 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -168,7 +168,7 @@ catch (IBPP::Exception & ex)
 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__);
 
index 8967d6eaa55d4fcc57956e8a011bac2c7508a9b4..1d74cf07e29d3f5978f0db3e3c2d415bfad66889 100644 (file)
  *
  */
 
+#include <cmath>
+
 #include "firebird_store.h"
 #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
     {
@@ -62,7 +64,7 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -90,7 +92,7 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -118,7 +120,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int FIREBIRD_STORE::SaveTariff(const TARIFF_DATA & td,
-                               const string & tariffName) const
+                               const std::string & tariffName) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -226,7 +228,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int FIREBIRD_STORE::RestoreTariff(TARIFF_DATA * td,
-                                  const string & tariffName) const
+                                  const std::string & tariffName) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -284,8 +286,8 @@ try
     st->Get(7, td->dirPrice[dir].priceNightB);
     td->dirPrice[dir].priceNightB /= 1024*1024;
     st->Get(8, td->dirPrice[dir].threshold);
-    if (td->dirPrice[dir].priceDayA == td->dirPrice[dir].priceNightA &&
-        td->dirPrice[dir].priceDayB == td->dirPrice[dir].priceNightB)
+    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)
         {
         td->dirPrice[dir].singlePrice = true;
         }
index a31ca3f80c5c9921c77d1fadc5ed5bb667f2c63b..e48fd0d89dacb6effa5d245996b4480d9ad7265e 100644 (file)
 #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
     {
@@ -63,7 +63,7 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -91,7 +91,7 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -119,7 +119,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int FIREBIRD_STORE::SaveUserStat(const USER_STAT & stat,
-                                 const string & login) const
+                                 const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -127,7 +127,7 @@ return SaveStat(stat, login);
 }
 //-----------------------------------------------------------------------------
 int FIREBIRD_STORE::SaveStat(const USER_STAT & stat,
-                                 const string & login,
+                                 const std::string & login,
                                  int year,
                                  int month) const
 {
@@ -227,7 +227,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int FIREBIRD_STORE::SaveUserConf(const USER_CONF & conf,
-                                 const string & login) const
+                                 const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -237,7 +237,7 @@ IBPP::Statement st = IBPP::StatementFactory(db, tr);
 int i;
 int32_t uid;
 IBPP::Timestamp creditExpire;
-vector<string>::const_iterator it;
+std::vector<std::string>::const_iterator it;
 
 try
     {
@@ -337,7 +337,7 @@ try
     st->Execute();
 
     st->Prepare("insert into tb_allowed_ip (fk_user, ip, mask) values (?, ?, ?)");
-    for(i = 0; i < conf.ips.Count(); i++)
+    for(size_t i = 0; i < conf.ips.Count(); i++)
         {
         st->Set(1, uid);
         st->Set(2, (int32_t)conf.ips[i].ip);
@@ -359,7 +359,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int FIREBIRD_STORE::RestoreUserStat(USER_STAT * stat,
-                                    const string & login) const
+                                    const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -444,7 +444,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int FIREBIRD_STORE::RestoreUserConf(USER_CONF * conf,
-                                    const string & login) const
+                                    const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -455,7 +455,7 @@ int32_t uid;
 int i;
 IBPP::Timestamp timestamp;
 IP_MASK im;
-string name;
+std::string name;
 bool test;
 
 try
@@ -566,13 +566,13 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -581,7 +581,7 @@ IBPP::Statement st = IBPP::StatementFactory(db, tr);
 IBPP::Timestamp now;
 now.Now();
 
-string temp = ""; // Composed message for log
+std::string temp = ""; // Composed message for log
 
 try
     {
@@ -632,7 +632,7 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -662,14 +662,14 @@ catch (IBPP::Exception & ex)
 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,
                     const DIR_TRAFF & sessionDown,
-                    double cash,
-                    double freeMb,
-                    const std::string & reason) const
+                    double /*cash*/,
+                    double /*freeMb*/,
+                    const std::string & /*reason*/) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -717,9 +717,9 @@ catch (IBPP::Exception & ex)
 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__);
 
@@ -734,7 +734,7 @@ time_t2ts(lastStat, &statTime);
 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, \
@@ -769,7 +769,7 @@ catch (IBPP::Exception & ex)
 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__);
 
index 8e04f5a5b847c128726a691a7650f3367efd1ed7..b4ac87155a762d5510d4700f624decf959956fd2 100644 (file)
@@ -2,7 +2,6 @@
 #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) 
     {
@@ -40,7 +41,7 @@ int GetInt(const string & str, int * val, int defaultVal)
     return 0;
 }
 
-int GetDouble(const string & str, double * val, double defaultVal)
+int GetDouble(const std::string & str, double * val, double defaultVal)
 {
     char *res;
     
@@ -55,7 +56,7 @@ int GetDouble(const string & str, double * val, double defaultVal)
     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;
     
@@ -71,17 +72,17 @@ int GetTime(const string & str, time_t * val, time_t defaultVal)
 }
 
 //-----------------------------------------------------------------------------
-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;
     
@@ -97,6 +98,9 @@ int GetULongLongInt(const string & str, uint64_t * val, uint64_t defaultVal)
 } 
 
 PLUGIN_CREATOR<MYSQL_STORE> msc;
+}
+
+extern "C" STORE * GetStore();
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
@@ -115,12 +119,12 @@ MYSQL_STORE_SETTINGS::MYSQL_STORE_SETTINGS()
 {
 }
 //-----------------------------------------------------------------------------
-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())
     {
@@ -160,7 +164,7 @@ MYSQL_STORE::MYSQL_STORE()
       settings(),
       logger(GetPluginLogger(GetStgLogger(), "store_mysql"))
 {
-};
+}
 //-----------------------------------------------------------------------------
 int    MYSQL_STORE::MysqlQuery(const char* sQuery,MYSQL * sock) const
 {
@@ -211,7 +215,7 @@ else
     {
          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))
             {
@@ -241,7 +245,7 @@ else
 return ret;
 }
 //-----------------------------------------------------------------------------
-bool MYSQL_STORE::IsTablePresent(const string & str,MYSQL * sock)
+bool MYSQL_STORE::IsTablePresent(const std::string & str,MYSQL * sock)
 {
 MYSQL_RES* result;
 
@@ -253,12 +257,12 @@ if (!(result=mysql_list_tables(sock,str.c_str() )))
     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)
@@ -294,7 +298,7 @@ if(!IsTablePresent("admins",sock))
 }
 
 //tariffs-----------------------------------------------------------------------
-string param, res;
+std::string param, res;
 if(!IsTablePresent("tariffs",sock))
 {
     res = "CREATE TABLE tariffs (name VARCHAR(40) DEFAULT '' PRIMARY KEY,";
@@ -523,13 +527,13 @@ return 0;
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 
-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();
     
@@ -554,7 +558,7 @@ if (!(res=mysql_store_result(sock)))
 
 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]);
@@ -567,7 +571,7 @@ return 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;
@@ -575,7 +579,7 @@ if(GetAllParams(usersList, "users", "login"))
 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;
@@ -583,7 +587,7 @@ if(GetAllParams(adminsList, "admins", "login"))
 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;
@@ -591,7 +595,7 @@ if(GetAllParams(tariffsList, "tariffs", "name"))
 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());
     
@@ -605,7 +609,7 @@ if(MysqlSetQuery(qbuf))
 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());
     
@@ -619,12 +623,12 @@ if(MysqlSetQuery(qbuf))
 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, \
@@ -666,7 +670,7 @@ if (mysql_num_rows(res) != 1)
 
 row = mysql_fetch_row(res);
 
-string param;
+std::string param;
 
 conf->password = row[1];
 
@@ -678,7 +682,7 @@ if (conf->password.empty())
     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.";
@@ -686,7 +690,7 @@ if (GetInt(row[2],&conf->passive, 0) != 0)
     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.";
@@ -694,7 +698,7 @@ if (GetInt(row[3], &conf->disabled, 0) != 0)
     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.";
@@ -702,7 +706,7 @@ if (GetInt(row[4], &conf->disabledDetailStat, 0) != 0)
     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.";
@@ -744,13 +748,13 @@ for (int i = 0; i < USERDATA_NUM; i++)
 
 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;
@@ -765,13 +769,13 @@ mysql_close(sock);
 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 ";
 
@@ -816,7 +820,7 @@ for (int i = 0; i < DIR_NUM; i++)
     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;
         }
@@ -826,7 +830,7 @@ for (int i = 0; i < DIR_NUM; i++)
     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;
         }
@@ -888,10 +892,10 @@ mysql_close(sock);
 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', "\
@@ -922,7 +926,7 @@ for (int i = 0; i < USERDATA_NUM; i++)
 strprintf(&param, " CreditExpire=%d,", conf.creditExpire);
 res += param;
 
-stringstream ipStr;
+std::ostringstream ipStr;
 ipStr << conf.ips;
 
 strprintf(&param, " IP='%s'", ipStr.str().c_str());
@@ -941,10 +945,10 @@ if(MysqlSetQuery(res.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";
 
@@ -981,9 +985,9 @@ if(MysqlSetQuery(res.c_str()))
 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;
 
@@ -1005,7 +1009,7 @@ if (!(result=mysql_list_tables(sock,tempStr.c_str() )))
     return -1;
 }
 
-unsigned int num_rows =  mysql_num_rows(result);
+my_ulonglong num_rows =  mysql_num_rows(result);
 
 mysql_free_result(result);
 
@@ -1025,7 +1029,7 @@ if (num_rows < 1)
 
 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,
@@ -1043,42 +1047,42 @@ return 0;
 
 }
 //-----------------------------------------------------------------------------
-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,
                                      const DIR_TRAFF & sessionDown,
                                      double cash,
-                                     double freeMb,
-                                     const std::string & reason) const
+                                     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;
@@ -1104,9 +1108,9 @@ return WriteLogString(logStr, login);
 }
 //-----------------------------------------------------------------------------
 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);
@@ -1133,7 +1137,7 @@ if(MysqlSetQuery(res.c_str()))
 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());
     
@@ -1147,7 +1151,7 @@ if(MysqlSetQuery(qbuf))
 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());
     
@@ -1208,7 +1212,7 @@ if(MysqlSetQuery(qbuf))
 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];
@@ -1219,7 +1223,7 @@ memset(pass, 0, sizeof(pass));
 memset(password, 0, sizeof(password));
 memset(passwordE, 0, sizeof(passwordE));
 
-string p;
+std::string p;
 MYSQL_RES *res;
 MYSQL_ROW row;
 MYSQL * sock;
@@ -1252,7 +1256,6 @@ if ( mysql_num_rows(res) == 0)
 row = mysql_fetch_row(res);
 
 p = row[1];
-int a;
 
 if(p.length() == 0)
 {
@@ -1284,7 +1287,9 @@ else
 
 ac->password = password;
 
-if (GetInt(row[2], &a, 0) == 0) 
+uint16_t a;
+
+if (GetInt(row[2], &a) == 0) 
     ac->priv.userConf = a;
 else
     {
@@ -1294,7 +1299,7 @@ else
     return -1;
     }
 
-if (GetInt(row[3], &a, 0) == 0) 
+if (GetInt(row[3], &a) == 0) 
     ac->priv.userPasswd = a;
 else
     {
@@ -1304,7 +1309,7 @@ else
     return -1;
     }
 
-if (GetInt(row[4], &a, 0) == 0) 
+if (GetInt(row[4], &a) == 0) 
     ac->priv.userStat = a;
 else
     {
@@ -1314,7 +1319,7 @@ else
     return -1;
     }
 
-if (GetInt(row[5], &a, 0) == 0) 
+if (GetInt(row[5], &a) == 0) 
     ac->priv.userCash = a;
 else
     {
@@ -1324,7 +1329,7 @@ else
     return -1;
     }
 
-if (GetInt(row[6], &a, 0) == 0) 
+if (GetInt(row[6], &a) == 0) 
     ac->priv.userAddDel = a;
 else
     {
@@ -1334,7 +1339,7 @@ else
     return -1;
     }
 
-if (GetInt(row[7], &a, 0) == 0) 
+if (GetInt(row[7], &a) == 0) 
     ac->priv.tariffChg = a;
 else
     {
@@ -1344,7 +1349,7 @@ else
     return -1;
     }
 
-if (GetInt(row[8], &a, 0) == 0) 
+if (GetInt(row[8], &a) == 0) 
     ac->priv.adminChg = a;
 else
     {
@@ -1359,7 +1364,7 @@ mysql_close(sock);
 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());
     
@@ -1373,7 +1378,7 @@ if(MysqlSetQuery(qbuf))
 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());
     
@@ -1387,7 +1392,7 @@ if(MysqlSetQuery(qbuf))
 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;
@@ -1410,12 +1415,12 @@ if (!(res=mysql_store_result(sock)))
     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(&param, "Time%d", i);
@@ -1475,7 +1480,7 @@ for (int i = 0; i<DIR_NUM; i++)
     td->dirPrice[i].priceNightB /= (1024*1024);
 
     strprintf(&param, "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;
@@ -1484,7 +1489,7 @@ for (int i = 0; i<DIR_NUM; i++)
         }
 
     strprintf(&param, "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;
@@ -1493,7 +1498,7 @@ for (int i = 0; i<DIR_NUM; i++)
         }
 
     strprintf(&param, "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;
@@ -1561,11 +1566,11 @@ mysql_close(sock);
 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++)
     {
@@ -1589,7 +1594,7 @@ for (int i = 0; i < DIR_NUM; i++)
         td.dirPrice[i].threshold);
     res += param;
 
-    string s;
+    std::string s;
     strprintf(&param, " Time%d", i);
 
     strprintf(&s, "%0d:%0d-%0d:%0d", 
@@ -1646,11 +1651,11 @@ if(MysqlSetQuery(res.c_str()))
 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;
 
@@ -1680,7 +1685,7 @@ if (!(result=mysql_list_tables(sock,tempStr.c_str() )))
     return -1;
 }
 
-unsigned int num_rows =  mysql_num_rows(result);
+my_ulonglong num_rows =  mysql_num_rows(result);
 
 mysql_free_result(result);
 
@@ -1731,7 +1736,7 @@ strprintf(&res,"INSERT INTO detailstat_%02d_%4d SET login='%s',"\
     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())
@@ -1762,17 +1767,17 @@ mysql_close(sock);
 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))
@@ -1785,9 +1790,9 @@ 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' "\
@@ -1800,7 +1805,7 @@ strprintf(&res,"UPDATE messages SET type=%d, lastSendTime=%u, creationTime=%u, "
     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()))
@@ -1813,7 +1818,7 @@ 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;
@@ -1896,10 +1901,10 @@ mysql_close(sock);
 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))
 {
@@ -1911,7 +1916,7 @@ 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;
@@ -1934,10 +1939,11 @@ if (!(res=mysql_store_result(sock)))
     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))
index 25cf5a3de62949acc85bbb43a3fa907a0130a4c5..af747c14518662884bbbf27359b22e7b8bff6758 100644 (file)
 #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
 {
@@ -26,12 +25,12 @@ public:
     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);
@@ -39,15 +38,15 @@ private:
 
     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
@@ -55,25 +54,25 @@ 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,
@@ -82,64 +81,64 @@ public:
                                     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;
 
index 7c79baff6b6df487391136caf3356d9f94db4b11..dd2fbbab7a168ed159feff737cf04e63be0f4898 100644 (file)
 #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();
 }
 
 //-----------------------------------------------------------------------------
@@ -88,7 +93,7 @@ pthread_mutex_destroy(&mutex);
 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)
     {
index 654de1467674cb79c352e0b2901d094a33d3b31e..4585bbdf30146adba3247cc778f6c7a375d44501 100644 (file)
@@ -33,7 +33,6 @@
 
 #include <string>
 #include <vector>
-#include <map>
 
 #include "stg/store.h"
 #include "stg/logger.h"
@@ -42,8 +41,6 @@
 // Recommended DB version is 7 (support full month stats)
 #define DB_MIN_VERSION 7
 
-extern "C" STORE * GetStore();
-
 class POSTGRESQL_STORE : public STORE {
 public:
     POSTGRESQL_STORE();
@@ -97,7 +94,7 @@ public:
     // 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;
 
@@ -116,11 +113,11 @@ public:
     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);
@@ -131,8 +128,8 @@ private:
 
     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;
 
@@ -163,6 +160,4 @@ private:
     PLUGIN_LOGGER logger;
 };
 
-extern const volatile time_t stgTime;
-
 #endif //POSTGRESQL_STORE_H
index 5b27cb8034cb7996b5c2cecfc3d76e0fbe85064c..1e9db12dbd3731f05b5f2acfb71f14a6421f06cc 100644 (file)
@@ -134,10 +134,10 @@ for (int i = 0; i < ADM_PASSWD_LEN / 8; i++)
 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())
@@ -159,7 +159,7 @@ if (EscapeString(login))
 
 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 << ", "
@@ -195,7 +195,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-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__);
 
@@ -234,7 +234,7 @@ if (EscapeString(elogin))
     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, \
@@ -316,7 +316,7 @@ ac->password = adminPass;
 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__);
 
@@ -351,7 +351,7 @@ if (EscapeString(elogin))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "INSERT INTO tb_admins \
               (login, passwd, \
               chg_conf, chg_password, chg_stat, \
@@ -386,7 +386,7 @@ if (CommitTransaction())
 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__);
 
@@ -421,7 +421,7 @@ if (EscapeString(elogin))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "DELETE FROM tb_admins WHERE login = '" << elogin << "'";
 
 result = PQexec(connection, query.str().c_str());
index c358a4c5fb7364e0c4f1b9ff9d97e21a96bdef0e..1d33d5b0f85a3ed6fc72430aa2ca412b31ada313 100644 (file)
@@ -36,7 +36,7 @@
 #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__);
 
@@ -127,7 +127,7 @@ if (EscapeString(ename))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "UPDATE tb_corporations SET "
           << "cash = " << cc.cash
       << "WHERE name = '" << ename << "'";
@@ -158,7 +158,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-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__);
 
@@ -193,7 +193,7 @@ if (EscapeString(ename))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "SELECT cash FROM tb_corporations WHERE name = '" << ename << "'";
 
 result = PQexec(connection, query.str().c_str());
@@ -241,7 +241,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::AddCorp(const string & name) const
+int POSTGRESQL_STORE::AddCorp(const std::string & name) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -276,7 +276,7 @@ if (EscapeString(ename))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "INSERT INTO tb_corporations \
               (name, cash) \
           VALUES \
@@ -308,7 +308,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::DelCorp(const string & name) const
+int POSTGRESQL_STORE::DelCorp(const std::string & name) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -343,7 +343,7 @@ if (EscapeString(ename))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "DELETE FROM tb_corporations WHERE name = '" << ename << "'";
 
 result = PQexec(connection, query.str().c_str());
index 4260c3b4493551da4c0aef7e674b7c5e11a7839a..bccef5aa4a805ae40e9dc0831cacbead6fa4087c 100644 (file)
@@ -38,7 +38,7 @@
 #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__);
 
@@ -84,7 +84,7 @@ if (EscapeString(etext))
     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
@@ -141,7 +141,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int POSTGRESQL_STORE::EditMessage(const STG_MSG & msg,
-                                  const string & login) const
+                                  const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -187,7 +187,7 @@ if (EscapeString(etext))
     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 << ", "
@@ -227,7 +227,7 @@ return 0;
 //-----------------------------------------------------------------------------
 int POSTGRESQL_STORE::GetMessage(uint64_t id,
                                STG_MSG * msg,
-                               const string &) const
+                               const std::string &) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -242,7 +242,7 @@ if (PQstatus(connection) != CONNECTION_OK)
         }
     }
 
-string login;
+std::string login;
 PGresult * result;
 
 if (StartTransaction())
@@ -251,7 +251,7 @@ 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 \
@@ -286,17 +286,10 @@ if (tuples != 1)
     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);
@@ -304,15 +297,6 @@ msg->text = PQgetvalue(result, 0, 7);
 
 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");
@@ -322,7 +306,7 @@ if (CommitTransaction())
 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__);
 
@@ -345,7 +329,7 @@ if (StartTransaction())
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "DELETE FROM tb_messages WHERE pk_message = " << id;
 
 result = PQexec(connection, query.str().c_str());
@@ -373,8 +357,8 @@ if (CommitTransaction())
 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__);
 
@@ -409,7 +393,7 @@ if (EscapeString(elogin))
     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 \
@@ -441,8 +425,8 @@ for (int i = 0; i < tuples; ++i)
     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) << " ";
index b509c0f0202b7fdb88621dc931f744f2385f7f09..825f798261410fec3da02be913c53cdc630adaf0 100644 (file)
@@ -37,7 +37,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__);
 
@@ -139,7 +139,7 @@ if (EscapeString(ecomment))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "UPDATE tb_services SET "
           << "comment = '" << ecomment << "', "
           << "cost = " << sc.cost << ", "
@@ -173,7 +173,7 @@ return 0;
 
 //-----------------------------------------------------------------------------
 int POSTGRESQL_STORE::RestoreService(SERVICE_CONF * sc,
-                                   const string & name) const
+                                   const std::string & name) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -208,7 +208,7 @@ if (EscapeString(ename))
     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());
@@ -260,7 +260,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::AddService(const string & name) const
+int POSTGRESQL_STORE::AddService(const std::string & name) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -295,7 +295,7 @@ if (EscapeString(ename))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "INSERT INTO tb_services \
               (name, comment, cost, pay_day) \
           VALUES \
@@ -327,7 +327,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::DelService(const string & name) const
+int POSTGRESQL_STORE::DelService(const std::string & name) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -362,7 +362,7 @@ if (EscapeString(ename))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "DELETE FROM tb_services WHERE name = '" << ename << "'";
 
 result = PQexec(connection, query.str().c_str());
index bb64756369d712a801347f06d913d0eb35fc1f7c..fb8caf9dee0b97b9d9a8a76724bd3f4595ae0301 100644 (file)
@@ -29,6 +29,7 @@
 #include <string>
 #include <vector>
 #include <sstream>
+#include <cmath>
 
 #include <libpq-fe.h>
 
@@ -36,7 +37,7 @@
 #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__);
 
@@ -92,7 +93,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::AddTariff(const string & name) const
+int POSTGRESQL_STORE::AddTariff(const std::string & name) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -127,7 +128,7 @@ if (EscapeString(ename))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "SELECT sp_add_tariff('" << ename << "', " << DIR_NUM << ")";
 
 result = PQexec(connection, query.str().c_str());
@@ -155,7 +156,7 @@ if (CommitTransaction())
 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__);
 
@@ -190,7 +191,7 @@ if (EscapeString(ename))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "DELETE FROM tb_tariffs WHERE name = '" << ename << "'";
 
 result = PQexec(connection, query.str().c_str());
@@ -219,7 +220,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int POSTGRESQL_STORE::SaveTariff(const TARIFF_DATA & td,
-                                 const string & tariffName) const
+                                 const std::string & tariffName) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -258,10 +259,12 @@ int32_t id, i;
 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)
     {
@@ -289,22 +292,26 @@ if (tuples != 1)
     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)
     {
@@ -346,22 +353,24 @@ for(i = 0; i < DIR_NUM; i++)
         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)
         {
@@ -388,7 +397,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int POSTGRESQL_STORE::RestoreTariff(TARIFF_DATA * td,
-                                  const string & tariffName) const
+                                  const std::string & tariffName) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -425,7 +434,7 @@ if (EscapeString(ename))
 
 td->tariffConf.name = tariffName;
 
-std::stringstream query;
+std::ostringstream query;
 query << "SELECT pk_tariff, \
                  fee, \
                 free, \
@@ -461,19 +470,22 @@ if (tuples != 1)
     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);
 
@@ -514,37 +526,39 @@ if (tuples != DIR_NUM)
 
 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;
-
-    if (td->dirPrice[dir].priceDayA == td->dirPrice[dir].priceNightA &&
-        td->dirPrice[dir].priceDayB == td->dirPrice[dir].priceNightB)
+        {
+        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)
         {
         td->dirPrice[dir].singlePrice = true;
         }
index df802eea9f00bae0657daab3d93c61e7485923c5..f8eba5c12a8d957e002ef17ca1b0ac8c2f205b77 100644 (file)
@@ -39,7 +39,7 @@
 #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__);
 
@@ -95,7 +95,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::AddUser(const string & name) const
+int POSTGRESQL_STORE::AddUser(const std::string & name) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -130,7 +130,7 @@ if (EscapeString(elogin))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "SELECT sp_add_user('" << elogin << "')";
 
 result = PQexec(connection, query.str().c_str());
@@ -159,7 +159,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-int POSTGRESQL_STORE::DelUser(const string & login) const
+int POSTGRESQL_STORE::DelUser(const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -194,7 +194,7 @@ if (EscapeString(elogin))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "DELETE FROM tb_users WHERE name = '" << elogin << "'";
 
 result = PQexec(connection, query.str().c_str());
@@ -223,7 +223,7 @@ return 0;
 }
 //-----------------------------------------------------------------------------
 int POSTGRESQL_STORE::SaveUserStat(const USER_STAT & stat,
-                                   const string & login) const
+                                   const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -256,7 +256,7 @@ if (EscapeString(elogin))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "UPDATE tb_users SET "
             "cash = " << stat.cash << ", "
             "free_mb = " << stat.freeMb << ", "
@@ -319,7 +319,7 @@ return 0;
 
 //-----------------------------------------------------------------------------
 int POSTGRESQL_STORE::SaveUserConf(const USER_CONF & conf,
-                                 const string & login) const
+                                 const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -354,7 +354,7 @@ if (EscapeString(elogin))
     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());
@@ -385,14 +385,16 @@ if (tuples != 1)
     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;
@@ -588,7 +590,7 @@ return 0;
 
 //-----------------------------------------------------------------------------
 int POSTGRESQL_STORE::RestoreUserStat(USER_STAT * stat,
-                                    const string & login) const
+                                    const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -623,14 +625,16 @@ if (EscapeString(elogin))
     return -1;
     }
 
-std::stringstream query;
-query << "SELECT pk_user, 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 pk_user, 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)
     {
@@ -658,32 +662,35 @@ if (tuples != 1)
     return -1;
     }
 
-std::stringstream tuple;
-tuple << PQgetvalue(result, 0, 0) << " ";
-tuple << PQgetvalue(result, 0, 1) << " ";
-tuple << PQgetvalue(result, 0, 2) << " ";
-stat->lastActivityTime = TS2Int(PQgetvalue(result, 0, 3));
-tuple << PQgetvalue(result, 0, 4) << " ";
-stat->lastCashAddTime = TS2Int(PQgetvalue(result, 0, 5));
-tuple << PQgetvalue(result, 0, 6);
-
-PQclear(result);
-
 uint32_t uid;
 
-tuple >> uid
-      >> stat->cash
-      >> stat->freeMb
-      >> stat->lastCashAdd
-      >> stat->passiveTime;
+    {
+    std::stringstream tuple;
+    tuple << PQgetvalue(result, 0, 0) << " ";
+    tuple << PQgetvalue(result, 0, 1) << " ";
+    tuple << PQgetvalue(result, 0, 2) << " ";
+    stat->lastActivityTime = TS2Int(PQgetvalue(result, 0, 3));
+    tuple << PQgetvalue(result, 0, 4) << " ";
+    stat->lastCashAddTime = TS2Int(PQgetvalue(result, 0, 5));
+    tuple << PQgetvalue(result, 0, 6) << " ";
 
-query.str("");
+    PQclear(result);
 
-query << "SELECT dir_num, upload, download "
-         "FROM tb_stats_traffic "
-         "WHERE fk_user = " << uid;
+    tuple >> uid
+          >> stat->cash
+          >> stat->freeMb
+          >> stat->lastCashAdd
+          >> stat->passiveTime;
+    }
 
-result = PQexec(connection, query.str().c_str());
+    {
+    std::ostringstream query;
+    query << "SELECT dir_num, upload, download "
+             "FROM tb_stats_traffic "
+             "WHERE fk_user = " << uid;
+
+    result = PQexec(connection, query.str().c_str());
+    }
 
 if (PQresultStatus(result) != PGRES_TUPLES_OK)
     {
@@ -726,7 +733,7 @@ return 0;
 
 //-----------------------------------------------------------------------------
 int POSTGRESQL_STORE::RestoreUserConf(USER_CONF * conf,
-                                    const string & login) const
+                                    const std::string & login) const
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
@@ -761,21 +768,23 @@ if (EscapeString(elogin))
     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)
     {
@@ -805,43 +814,46 @@ if (tuples != 1)
 
 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)
     {
@@ -864,12 +876,14 @@ for (int i = 0; i < tuples; ++i)
 
 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)
     {
@@ -904,12 +918,14 @@ for (int i = 0; i < tuples; ++i)
 
 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)
     {
@@ -958,13 +974,13 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-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__);
 
@@ -1044,7 +1060,7 @@ if (EscapeString(enew))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 query << "SELECT sp_add_param_log_entry("
             "'" << elogin << "', "
             "'" << eadminLogin << "', CAST('"
@@ -1081,7 +1097,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-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__);
 
@@ -1116,7 +1132,7 @@ if (EscapeString(elogin))
     return -1;
     }
 
-std::stringstream query;
+std::ostringstream query;
 if (version < 6)
     {
     query << "SELECT sp_add_session_log_entry("
@@ -1160,7 +1176,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-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,
@@ -1214,26 +1230,28 @@ if (EscapeString(ereason))
     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)
     {
@@ -1279,7 +1297,7 @@ PQclear(result);
 
 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, "
@@ -1322,9 +1340,9 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-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__);
 
@@ -1359,12 +1377,12 @@ if (EscapeString(elogin))
     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) "
@@ -1405,7 +1423,7 @@ return 0;
 }
 
 //-----------------------------------------------------------------------------
-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__);
 
@@ -1538,21 +1556,23 @@ int POSTGRESQL_STORE::SaveUserServices(uint32_t uid,
 {
 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)
@@ -1565,7 +1585,7 @@ 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 "
@@ -1596,10 +1616,12 @@ int POSTGRESQL_STORE::SaveUserIPs(uint32_t uid,
 {
 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)
     {
@@ -1611,9 +1633,9 @@ if (PQresultStatus(result) != PGRES_COMMAND_OK)
 
 PQclear(result);
 
-for (int i = 0; i < ips.Count(); ++i)
+for (size_t i = 0; i < ips.Count(); ++i)
     {
-    std::stringstream query;
+    std::ostringstream query;
     query << "INSERT INTO tb_allowed_ip "
                 "(fk_user, ip) "
              "VALUES "
@@ -1653,7 +1675,7 @@ for (unsigned i = 0; i < data.size(); ++i)
 
     PGresult * result;
 
-    std::stringstream query;
+    std::ostringstream query;
     query << "SELECT sp_set_user_data("
                 << uid << ", "
                 << "CAST(" << i << " AS SMALLINT), "
index c36df0cd02efa1600ee39f032315f6c970585abe..f5dec89ff5ec223159423d3cabe3d2846157ed6e 100644 (file)
@@ -34,6 +34,8 @@
 #include "stg/common.h"
 #include "postgresql_store.h"
 
+extern volatile time_t stgTime;
+
 int POSTGRESQL_STORE::StartTransaction() const
 {
 PGresult * result = PQexec(connection, "BEGIN");
@@ -110,24 +112,23 @@ delete[] buf;
 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;
 
index e09cccd24ece285531ba2222b2cf64889aecf65b..4ffa6ecfa708b046bc1b00a8b5fd27563d15de62 100644 (file)
@@ -5,7 +5,7 @@
 
 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
index 85b0f4e51105f0cf01bea9dddcb7da40aa560626..832bf7e9ed54356313beb197670282481f3e67e6 100644 (file)
@@ -48,7 +48,7 @@ const PRIV * priv = admin->GetPriv();
 
 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;
@@ -79,14 +79,14 @@ WriteServLog("%s %s", admin->GetLogStr().c_str(), strError.c_str());
 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;
@@ -101,7 +101,7 @@ if (si == data.end())
     return -1;
     }
 
-map<int, const_srv_iter>::iterator csi;
+std::map<int, const_srv_iter>::iterator csi;
 csi = searchDescriptors.begin();
 while (csi != searchDescriptors.end())
     {
@@ -130,7 +130,7 @@ const PRIV * priv = admin->GetPriv();
 
 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;
@@ -162,7 +162,7 @@ return 0;
 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());
@@ -184,7 +184,7 @@ for (size_t i = 0; i < servicesList.size(); i++)
 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");
 
@@ -203,7 +203,7 @@ if (si != data.end())
 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())
index 2bb9c8797c44a8d00f5c5b536f37436053e84913..31aa72b2ed612e43e1bb8aeb383233d5bc873811 100644 (file)
@@ -58,8 +58,8 @@ private:
     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();
 
index 739bbcc946cc273c9d85c9f54fcb0a4f7d77e0a6..4a048333a4a5049ead5a6a19b19e10b77f797dd0 100644 (file)
@@ -85,7 +85,7 @@ public:
     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; }
index 235c669e0df09dcea32c31d94e9b5347932b88ff..81128c7a776a867dcf5f8f0f7d2c7c8d1b0c0d8c 100644 (file)
@@ -6,6 +6,10 @@
 
 #include "stg/common.h"
 
+#include "stg_timer.h"
+
+void * StgTimer(void *);
+
 static int nonstop;
 static pthread_t thrStgTimer;
 static bool isTimerRunning = false;
@@ -88,7 +92,7 @@ static int a = 0;
 isTimerRunning = false;
 
 if (a == 0)
-    if (pthread_create(&thrStgTimer, NULL, StgTimer, NULL))
+    if (pthread_create(&thrStgTimer, NULL, &StgTimer, NULL))
         {
         isTimerRunning = false;
         return -1;
@@ -113,10 +117,10 @@ return isTimerRunning;
 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
 }
index c57008e559cf816b669b24216e28700521a29925..75553b3eb95afda9f10ebe9f58f352102ca40ee0 100644 (file)
@@ -9,7 +9,7 @@
 
 #include <ctime>
 
-extern volatile const time_t stgTime;
+extern volatile time_t stgTime;
 int RunStgTimer();
 void StopStgTimer();
 void WaitTimer();
index c54bdb361cc2e0b0dfb9884ce1f080dcfa873fc3..d27c09023603f8745a02df66554d84cff694c862 100644 (file)
@@ -79,7 +79,7 @@ if (!handle)
 isLoaded = true;
 
 STORE * (*GetStore)();
-GetStore = (STORE * (*)())dlsym(handle, "GetStore");
+GetStore = reinterpret_cast<STORE * (*)()>(dlsym(handle, "GetStore"));
 if (!GetStore)
     {
     errorStr = std::string("GetStore() not found! ") + dlerror();
index bf272f3128a34f9939ba136fa29e68a95044964e..c6785cead85c26f71ea5e273014f0d71428a8d5f 100644 (file)
@@ -119,7 +119,7 @@ else
     }
 }
 //-----------------------------------------------------------------------------
-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);
 
@@ -143,45 +143,5 @@ else if (!sp && th)
     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;
-        }
-    }*/
 }
 //-----------------------------------------------------------------------------
index f33c08af0aa1340b3ba1bf0db72e60e964d0709c..122dabd044de29178d083c0849c4b4ba857a9fef 100644 (file)
@@ -48,20 +48,20 @@ public:
     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,
@@ -90,7 +90,7 @@ public:
 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;
 };
 
index ab3d970fa38f650edd5aa4e9ff5d320c745fa0cb..dbd3d2e397934e442e8dd980716c588b8159ef76 100644 (file)
@@ -72,9 +72,9 @@ if (store->GetTariffsList(&tariffsList))
     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]))
@@ -258,7 +258,7 @@ void TARIFFS_IMPL::GetTariffsData(std::list<TARIFF_DATA> * tdl)
 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());
index caeb811d954bdafe9d277f44a0077987e1d6a005..37c76fc4070ff812e12886c70cffeec2a51f9195 100644 (file)
@@ -45,15 +45,17 @@ class ADMIN;
 
 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);
@@ -61,7 +63,7 @@ public:
     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; }
 
@@ -69,7 +71,7 @@ private:
     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;
index c2088e0f2009cc210b6b0c1e514b163921c5ca6a..17a786ff0a9697f7c9ccc0aa99eb247695950df3 100644 (file)
@@ -41,6 +41,7 @@
 
 #include "stg/common.h"
 #include "stg/locker.h"
+#include "stg/const.h" // MONITOR_TIME_DELAY_SEC
 #include "traffcounter_impl.h"
 #include "stg_timer.h"
 #include "users_impl.h"
@@ -67,6 +68,7 @@ TRAFFCOUNTER_IMPL::TRAFFCOUNTER_IMPL(USERS_IMPL * u, const std::string & fn)
       rulesFileName(fn),
       monitorDir(),
       monitoring(false),
+      touchTimeP(stgTime - MONITOR_TIME_DELAY_SEC),
       users(u),
       running(false),
       stopped(true),
@@ -202,13 +204,11 @@ void TRAFFCOUNTER_IMPL::Process(const RAW_PACKET & rawPacket)
 if (!running)
     return;
 
-static time_t touchTime = stgTime - MONITOR_TIME_DELAY_SEC;
-
-if (monitoring && (touchTime + MONITOR_TIME_DELAY_SEC <= stgTime))
+if (monitoring && (touchTimeP + 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;
+    touchTimeP = stgTime;
     TouchFile(monFile.c_str());
     }
 
@@ -292,12 +292,12 @@ void TRAFFCOUNTER_IMPL::FlushAndRemove()
 {
 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())
     {
@@ -673,13 +673,13 @@ while (fgets(str, 1023, f))
     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;
@@ -747,9 +747,9 @@ bool TRAFFCOUNTER_IMPL::ParseAddress(const char * ta, RULE * rule) const
 {
 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++)
     {
@@ -829,15 +829,15 @@ uint16_t prt1, prt2, msk;
 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;
 
@@ -902,9 +902,9 @@ switch (rule.proto)
 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();
 }
 //-----------------------------------------------------------------------------
index 2a9fca5a61590dddb0bd4bb716a028e20f989fd8..7e552f82c186e2eab2c179c72ecb2d0d972a43ca 100644 (file)
@@ -221,15 +221,18 @@ private:
     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];
 
@@ -238,6 +241,7 @@ private:
 
     std::string              monitorDir;
     bool                     monitoring;
+    time_t                   touchTimeP;
 
     USERS_IMPL *             users;
 
index 41f3f567953a21bb8fd90f823df51962ba54b591..5bb0069fb6f04b79a476001e135d09ddd7a3176d 100644 (file)
@@ -37,6 +37,9 @@
 
 #include <cassert>
 #include <cstdlib>
+#include <cmath>
+#include <algorithm>
+#include <functional>
 
 #include "stg/users.h"
 #include "stg/common.h"
@@ -335,7 +338,7 @@ property.cash.DelBeforeNotifier(&cashNotifier);
 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");
@@ -565,6 +568,13 @@ STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 return authorizedBy.find(auth) != authorizedBy.end();
 }
 //-----------------------------------------------------------------------------
+std::vector<std::string> USER_IMPL::GetAuthorizers() const
+{
+    std::vector<std::string> list;
+    std::transform(authorizedBy.begin(), authorizedBy.end(), std::back_inserter(list), std::mem_fun(&AUTH::GetVersion));
+    return list;
+}
+//-----------------------------------------------------------------------------
 void USER_IMPL::Connect(bool fakeConnect)
 {
 /*
@@ -575,7 +585,7 @@ STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
 if (!fakeConnect)
     {
-    string scriptOnConnect = settings->GetScriptsDir() + "/OnConnect";
+    std::string scriptOnConnect = settings->GetScriptsDir() + "/OnConnect";
 
     if (access(scriptOnConnect.c_str(), X_OK) == 0)
         {
@@ -586,13 +596,13 @@ if (!fakeConnect)
             dirsStr[i] = enabledDirs[i] ? '1' : '0';
             }
 
-        string scriptOnConnectParams;
+        std::string scriptOnConnectParams;
         strprintf(&scriptOnConnectParams,
                 "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"",
                 scriptOnConnect.c_str(),
                 login.c_str(),
                 inet_ntostring(currIP).c_str(),
-                (double)cash,
+                cash.ConstData(),
                 id,
                 dirsStr);
 
@@ -632,7 +642,7 @@ if (!lastIPForDisconnect)
 
 if (!fakeDisconnect)
     {
-    string scriptOnDisonnect = settings->GetScriptsDir() + "/OnDisconnect";
+    std::string scriptOnDisonnect = settings->GetScriptsDir() + "/OnDisconnect";
 
     if (access(scriptOnDisonnect.c_str(), X_OK) == 0)
         {
@@ -643,13 +653,13 @@ if (!fakeDisconnect)
             dirsStr[i] = enabledDirs[i] ? '1' : '0';
             }
 
-        string scriptOnDisonnectParams;
+        std::string scriptOnDisonnectParams;
         strprintf(&scriptOnDisonnectParams,
                 "%s \"%s\" \"%s\" \"%f\" \"%d\" \"%s\"",
                 scriptOnDisonnect.c_str(),
                 login.c_str(),
                 inet_ntostring(lastIPForDisconnect).c_str(),
-                (double)cash,
+                cash.ConstData(),
                 id,
                 dirsStr);
 
@@ -682,37 +692,37 @@ void USER_IMPL::PrintUser() const
 {
 //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()
@@ -807,11 +817,11 @@ if (settings->GetShowFeeInCash() || tariff == NULL)
 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;
@@ -894,13 +904,13 @@ IP_DIR_PAIR idp(ip, dir, port);
 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
     {
@@ -985,13 +995,13 @@ IP_DIR_PAIR idp(ip, dir, port);
 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
     {
@@ -1052,11 +1062,11 @@ void USER_IMPL::OnAdd()
 {
 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(),
@@ -1074,11 +1084,11 @@ void USER_IMPL::OnDelete()
 {
 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(),
@@ -1159,12 +1169,12 @@ if (tms.tm_year % 4 == 0 && tms.tm_mon == 1)
     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()
@@ -1175,9 +1185,10 @@ time_t t = stgTime;
 struct tm tm;
 localtime_r(&t, &tm);
 int daysCurrMon = DaysInCurrentMonth();
-double pt = (tm.tm_mday - 1) / (double)daysCurrMon;
+double pt = tm.tm_mday - 1;
+pt /= daysCurrMon;
 
-passiveTime = (time_t)(pt * 24 * 3600 * daysCurrMon);
+passiveTime = static_cast<time_t>(pt * 24 * 3600 * daysCurrMon);
 }
 //-----------------------------------------------------------------------------
 void USER_IMPL::MidnightResetSessionStat()
@@ -1240,7 +1251,7 @@ if (passive.ConstData() || tariff == NULL)
 
 double fee = tariff->GetFee() / DaysInCurrentMonth();
 
-if (fee == 0.0)
+if (std::fabs(fee) < 1.0e-3)
     return;
 
 double c = cash;
@@ -1289,7 +1300,7 @@ double fee = tariff->GetFee() * passiveTimePart;
 
 ResetPassiveTime();
 
-if (fee == 0.0)
+if (std::fabs(fee) < 1.0e-3)
     {
     SetPrepaidTraff();
     return;
@@ -1361,9 +1372,9 @@ else
         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))
             {
@@ -1382,7 +1393,7 @@ int USER_IMPL::SendMessage(STG_MSG & msg) const
 {
 // 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))
@@ -1392,9 +1403,9 @@ if (!ret)
     {
 #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--;
     }
@@ -1480,7 +1491,7 @@ else if (!oldValue && newValue && user->IsInetable())
 
 }
 //-----------------------------------------------------------------------------
-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");
index 2fc563dff61647387faf929db6689cfd5dd27afc..a581f2e55c48f586d98017e69c016e36ba7b8b2c 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <ctime>
 #include <list>
+#include <vector>
 #include <string>
 #include <set>
 
@@ -182,10 +183,11 @@ public:
 
     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;
+    std::vector<std::string> GetAuthorizers() const;
 
     int             AddMessage(STG_MSG * msg);
 
@@ -197,8 +199,8 @@ public:
 
     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; }
index fc2b8d2fcdc4f5889793658d0373718c5bb7fc21..dfdc86342e4e35c2dfa92527d64fc9ec380f795e 100644 (file)
@@ -46,9 +46,7 @@
 #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
 
@@ -88,9 +86,9 @@ USERS_IMPL::~USERS_IMPL()
 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())
     {
@@ -101,7 +99,7 @@ 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;
@@ -112,10 +110,10 @@ if (res)
 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())
     {
@@ -126,7 +124,7 @@ 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();
@@ -184,7 +182,7 @@ AddUserIntoIndexes(users.begin());
 
     {
     // 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());
@@ -194,7 +192,7 @@ AddUserIntoIndexes(users.begin());
 
     {
     // 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());
@@ -205,7 +203,7 @@ AddUserIntoIndexes(users.begin());
 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;
@@ -233,7 +231,7 @@ if (!priv->userAddDel)
     }
 
     {
-    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));
@@ -242,7 +240,7 @@ if (!priv->userAddDel)
     }
 
     {
-    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));
@@ -322,7 +320,7 @@ return true;
 //-----------------------------------------------------------------------------
 int USERS_IMPL::ReadUsers()
 {
-vector<string> usersList;
+std::vector<std::string> usersList;
 usersList.clear();
 if (store->GetUsersList(&usersList) < 0)
     {
@@ -371,7 +369,7 @@ int day = t.tm_mday;
 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;
@@ -380,7 +378,7 @@ while (us->nonstop)
     //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);
@@ -419,7 +417,7 @@ while (ui != us->users.end())
     ++ui;
     }
 
-list<USER_TO_DEL>::iterator iter;
+std::list<USER_TO_DEL>::iterator iter;
 iter = us->usersToDelete.begin();
 while (iter != us->usersToDelete.end())
     {
@@ -439,7 +437,7 @@ void USERS_IMPL::NewMinute(const struct tm & t)
 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))
@@ -448,14 +446,14 @@ 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));
         }
     }
 
@@ -486,14 +484,14 @@ if (!settings->GetDayFeeIsLastDay())
 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));
         }
     }
 
@@ -512,7 +510,7 @@ if (dayResetTraff == 0)
 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));
     }
 }
@@ -571,15 +569,15 @@ if (isRunning)
     }
 
 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");
@@ -592,7 +590,7 @@ STG_LOCKER lock(&mutex, __FILE__, __LINE__);
 
 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())
     {
@@ -625,7 +623,7 @@ if (!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.lower_bound(ip)
 );
 
@@ -641,7 +639,7 @@ assert(ip && "User has non-null 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)
 );
 
@@ -653,7 +651,7 @@ ipIndex.erase(it);
 //-----------------------------------------------------------------------------
 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;
@@ -692,11 +690,29 @@ bool USERS_IMPL::IsIPInIndex(uint32_t ip) const
 {
 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();
 }
 //-----------------------------------------------------------------------------
+bool USERS_IMPL::IsIPInUse(uint32_t ip, const std::string & login, CONST_USER_PTR * user) const
+{
+STG_LOCKER lock(&mutex, __FILE__, __LINE__);
+std::list<USER_IMPL>::const_iterator iter;
+iter = users.begin();
+while (iter != users.end())
+    {
+    if (iter->GetLogin() != login && iter->GetProperty().ips.Get().IsIPInIPS(ip))
+        {
+        if (user != NULL)
+            *user = &(*iter);
+        return true;
+        }
+    ++iter;
+    }
+return false;
+}
+//-----------------------------------------------------------------------------
 void USERS_IMPL::AddNotifierUserAdd(NOTIFIER_BASE<USER_PTR> * n)
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
index 69f3fbae8d9aca286e1aa9d1ae9f3ac0c9cc04c6..0c2af78d5f84fea5bbab66e25e0deed6787964e2 100644 (file)
@@ -103,6 +103,7 @@ public:
     int             FindByIPIdx(uint32_t ip, USER_PTR * user) const;
     int             FindByIPIdx(uint32_t ip, USER_IMPL ** user) const;
     bool            IsIPInIndex(uint32_t ip) const;
+    bool            IsIPInUse(uint32_t ip, const std::string & login, CONST_USER_PTR * user) const;
 
     int             OpenSearch();
     int             SearchNext(int handler, USER_PTR * user);
index a3184974bae4326ee007f527486f63904ec6ec4f..b5d1195c422ee9918c5a24eaa57244d5ca936d83 100644 (file)
@@ -35,8 +35,11 @@ clean:
        rm -f deps $(PROG) *.o *.a *.so tags *.*~ 
 
 install: $(PROG)
-       mkdir -m $(DIR_MODE) -p $(PREFIX)/usr/lib/stg
-       install -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/lib/stg/$(PROG)
+ifeq ($(DEBUG), yes)
+       install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/lib/stg/$(PROG)
+else
+       install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/lib/stg/$(PROG)
+endif
        mkdir -m $(DIR_MODE) -p $(PREFIX)/usr/include/stg
        install -m $(DATA_MODE) -o $(OWNER) $(addprefix include/stg/,$(INCS)) $(PREFIX)/usr/include/stg/
 
index 2ea32c2b7060f0017c5298931e829ff7674af154..787b813d3728bf975571f4401756ad3863526a8a 100644 (file)
 #   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
 //-----------------------------------------------------------------------------
@@ -136,7 +207,7 @@ printf("%s", buff);
 return 0;
 }
 //-----------------------------------------------------------------------------
-int strprintf(string * str, const char * fmt, ...)
+int strprintf(std::string * str, const char * fmt, ...)
 {
 char buff[1024];
 
@@ -150,11 +221,13 @@ buff[1023] = 0;
 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)
     {
@@ -166,108 +239,39 @@ 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;
@@ -294,7 +298,7 @@ for (int j = 0; j < l; j++)
     }
 }
 //---------------------------------------------------------------------------
-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;
@@ -306,7 +310,7 @@ for (int j = 0; j < (int)s1.length(); j++)
     }
 }
 //---------------------------------------------------------------------------
-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;
@@ -318,7 +322,7 @@ for (int j = 0; j < (int)s1.length(); j++)
     }
 }
 //---------------------------------------------------------------------------
-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++)
@@ -339,7 +343,7 @@ for (size_t i = 0; i < src.length() / 2; i++)
     c1 -= 'a';
     c2 -= 'a';
 
-    dst.push_back(c1 + (c2 << 4));
+    dst.push_back(static_cast<char>(c1 + (c2 << 4)));
     }
 }
 //---------------------------------------------------------------------------
@@ -372,7 +376,7 @@ for (size_t i = 0; ; i++)
     c1 -= 'a';
     c2 -= 'a';
 
-    dst[i] = c1 + (c2 << 4);
+    dst[i] = static_cast<char>(c1 + (c2 << 4));
     }
 dst[strlen(src) / 2] = 0;
 }
@@ -610,7 +614,7 @@ if (msk == 0) return 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)
@@ -689,28 +693,28 @@ strcpy(str, strdc);
 #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)
@@ -734,9 +738,9 @@ void SwapBytes(int64_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;
@@ -744,29 +748,9 @@ if (errno == ERANGE)
 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;
@@ -775,7 +759,7 @@ return 0;
 }
 #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);
 
@@ -785,7 +769,7 @@ if (errno == ERANGE)
 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);
 
@@ -796,17 +780,12 @@ return 0;
 }
 #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);
 }
@@ -982,14 +961,14 @@ if (str2x<int>(str, *val))
 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;
@@ -1000,7 +979,7 @@ if (*val < min || *val > max)
 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)
index df93815215e4f32a8fd85e5882967f218116c555..80d32aba45a45116b523e81a4340e30b16e8c3fa 100644 (file)
@@ -52,7 +52,7 @@
 #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);
@@ -236,18 +236,15 @@ const std::string & unsigned2str(varT x, std::string & s)
     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 *);
index 0e1fde27e177c118f9716bc53c3b5071cde235e6..38b86b47fd9398d68f8554eb529bbc764b3b8524 100644 (file)
@@ -10,6 +10,8 @@
 #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);
index 263c9933daa156add001ef7b611927fe7a5b9938..302c365194ddd0cd6d08de0f4521a786c762c5ed 100644 (file)
 
 #include "stg/conffiles.h"
 
-using namespace std;
+namespace
+{
+//---------------------------------------------------------------------------
+std::string TrimL(std::string val)
+{
+size_t pos = val.find_first_not_of(" \t");
+if (pos == std::string::npos)
+    {
+    val.erase(val.begin(), val.end());
+    }
+else
+    {
+    val.erase(0, pos);
+    }
+return val;
+}
+//---------------------------------------------------------------------------
+std::string TrimR(std::string val)
+{
+size_t pos = val.find_last_not_of(" \t");
+if (pos != std::string::npos)
+    {
+    val.erase(pos + 1);
+    }
+return val;
+}
+//---------------------------------------------------------------------------
+std::string Trim(std::string val)
+{
+return TrimR(TrimL(val));
+}
+//---------------------------------------------------------------------------
+} // namespace anonymous
 
 //---------------------------------------------------------------------------
-bool StringCaseCmp(const string & str1, const string & str2)
+bool StringCaseCmp(const std::string & str1, const std::string & str2)
 {
 return (strcasecmp(str1.c_str(), str2.c_str()) < 0);
 }
 //---------------------------------------------------------------------------
-CONFIGFILE::CONFIGFILE(const string & fn, bool nook)
+CONFIGFILE::CONFIGFILE(const std::string & fn, bool nook)
     : param_val(StringCaseCmp),
       fileName(fn),
       error(0),
       changed(false)
 {
-ifstream f(fileName.c_str());
+std::ifstream f(fileName.c_str());
 
 if (!f)
     {
@@ -65,25 +97,25 @@ if (!f)
     return;
     }
 
-string line;
+std::string line;
 while (getline(f, line))
     {
     size_t pos = line.find('#');
-    if (pos != string::npos)
+    if (pos != std::string::npos)
         line.resize(pos);
 
-    if (line.find_first_not_of(" \t\r") == string::npos)
+    if (line.find_first_not_of(" \t\r") == std::string::npos)
         continue;
 
     pos = line.find_first_of('=');
-    if (pos == string::npos)
+    if (pos == std::string::npos)
         {
         error = -1;
         return;
         }
 
-    string parameter = line.substr(0, pos);
-    string value = line.substr(pos + 1);
+    std::string parameter = Trim(line.substr(0, pos));
+    std::string value = Trim(line.substr(pos + 1));
     param_val[parameter] = value;
     }
 }
@@ -93,7 +125,7 @@ CONFIGFILE::~CONFIGFILE()
 Flush();
 }
 //---------------------------------------------------------------------------
-const string & CONFIGFILE::GetFileName() const
+const std::string & CONFIGFILE::GetFileName() const
 {
 return fileName;
 }
@@ -105,9 +137,9 @@ error = 0;
 return e;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadString(const string & param, string * val, const string & defaultVal) const
+int CONFIGFILE::ReadString(const std::string & param, std::string * val, const std::string & defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 if (it != param_val.end())
     {
@@ -119,15 +151,15 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-void CONFIGFILE::WriteString(const string & param, const string &val)
+void CONFIGFILE::WriteString(const std::string & param, const std::string &val)
 {
 param_val[param] = val;
 changed = true;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadTime(const string & param, time_t * val, time_t defaultVal) const
+int CONFIGFILE::ReadTime(const std::string & param, time_t * val, time_t defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 if (it != param_val.end())
     {
@@ -145,14 +177,14 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadInt(const string & param, int * val, int defaultVal) const
+int CONFIGFILE::ReadInt(const std::string & param, int * val, int defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 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!
@@ -165,14 +197,14 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadUInt(const string & param, unsigned int * val, unsigned int defaultVal) const
+int CONFIGFILE::ReadUInt(const std::string & param, unsigned int * val, unsigned int defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 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!
@@ -185,9 +217,9 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadLongInt(const string & param, long int * val, long int defaultVal) const
+int CONFIGFILE::ReadLongInt(const std::string & param, long int * val, long int defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 if (it != param_val.end())
     {
@@ -205,9 +237,9 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadULongInt(const string & param, unsigned long int * val, unsigned long int defaultVal) const
+int CONFIGFILE::ReadULongInt(const std::string & param, unsigned long int * val, unsigned long int defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 if (it != param_val.end())
     {
@@ -225,9 +257,9 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadLongLongInt(const string & param, int64_t * val, int64_t defaultVal) const
+int CONFIGFILE::ReadLongLongInt(const std::string & param, int64_t * val, int64_t defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 if (it != param_val.end())
     {
@@ -245,9 +277,9 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadULongLongInt(const string & param, uint64_t * val, uint64_t defaultVal) const
+int CONFIGFILE::ReadULongLongInt(const std::string & param, uint64_t * val, uint64_t defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 if (it != param_val.end())
     {
@@ -265,9 +297,9 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadShortInt(const string & param, short int * val, short int defaultVal) const
+int CONFIGFILE::ReadShortInt(const std::string & param, short int * val, short int defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 if (it != param_val.end())
     {
@@ -285,9 +317,9 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadUShortInt(const string & param, unsigned short int * val, unsigned short int defaultVal) const
+int CONFIGFILE::ReadUShortInt(const std::string & param, unsigned short int * val, unsigned short int defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 if (it != param_val.end())
     {
@@ -305,7 +337,7 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-void CONFIGFILE::WriteInt(const string & param, int64_t val)
+void CONFIGFILE::WriteInt(const std::string & param, int64_t val)
 {
 char buf[32];
 snprintf(buf, sizeof(buf), "%lld", static_cast<long long int>(val));
@@ -313,9 +345,9 @@ param_val[param] = buf;
 changed = true;
 }
 //---------------------------------------------------------------------------
-int CONFIGFILE::ReadDouble(const string & param, double * val, double defaultVal) const
+int CONFIGFILE::ReadDouble(const std::string & param, double * val, double defaultVal) const
 {
-const map<string, string>::const_iterator it(param_val.find(param));
+const std::map<std::string, std::string>::const_iterator it(param_val.find(param));
 
 if (it != param_val.end())
     {
@@ -333,7 +365,7 @@ if (it != param_val.end())
 return -1;
 }
 //---------------------------------------------------------------------------
-void CONFIGFILE::WriteDouble(const string & param, double val)
+void CONFIGFILE::WriteDouble(const std::string & param, double val)
 {
 char s[30];
 snprintf(s, 30, "%f", val);
@@ -343,14 +375,14 @@ changed = true;
 //---------------------------------------------------------------------------
 int CONFIGFILE::Flush(const std::string & path) const
 {
-ofstream f(path.c_str());
+std::ofstream f(path.c_str());
 if (!f.is_open())
     {
     error = EIO;
     return EIO;
     }
 
-map<string, string>::const_iterator it = param_val.begin();
+std::map<std::string, std::string>::const_iterator it = param_val.begin();
 while (it != param_val.end())
     {
     f << it->first << "=" << it->second << "\n";
index 6909c6c91290c5d9e1eeff79d5f5814d161ecdc9..48e07b6282bd2be594b35deee7d5f69a206d4779 100644 (file)
 
 #include "stg/os_int.h"
 
-using namespace std;
 //---------------------------------------------------------------------------
 
-typedef bool (*StringCaseCmp_t)(const string & str1, const string & str2);
+typedef bool (*StringCaseCmp_t)(const std::string & str1, const std::string & str2);
 
 class CONFIGFILE
 {
 public:
-    CONFIGFILE(const string & fn, bool nook = false);
+    CONFIGFILE(const std::string & fn, bool nook = false);
     ~CONFIGFILE();
-    const string & GetFileName() const;
+    const std::string & GetFileName() const;
 
     // æÕÎËÃÉÉ Read* ×ÏÚ×ÒÁÝÁÀÔ 0 ÐÒÉ ÕÓÐÅÛÎÏÍ ÓÞÉÔÙ×ÁÎÉÉ
     // É EINVAL ÐÒÉ ÏÔÓÕÔÓ×ÉÉ ÐÁÒÁÍÅÔÒÁ É ×ÙÓÔÁ×ÌÑÀÔ defaulValue
-    //int ReadString(const string & param, char * val, int * maxLen, const char * defaultVal) const;
-    int ReadString(const string & param, string * val, const string & defaultVal) const;
-    int ReadTime(const string & param, time_t *, time_t) const;
-    int ReadShortInt(const string & param, short int *, short int) const;
-    int ReadInt(const string & param, int *, int) const;
-    int ReadLongInt(const string & param, long int *, long int) const;
-    int ReadLongLongInt(const string & param, int64_t *, int64_t) const;
-    int ReadUShortInt(const string & param, unsigned short int *, unsigned short int) const;
-    int ReadUInt(const string & param, unsigned int *, unsigned int) const;
-    int ReadULongInt(const string & param, unsigned long int *, unsigned long int) const;
-    int ReadULongLongInt(const string & param, uint64_t *, uint64_t) const;
-    int ReadDouble(const string & param, double * val, double defaultVal) const;
+    //int ReadString(const std::string & param, char * val, int * maxLen, const char * defaultVal) const;
+    int ReadString(const std::string & param, std::string * val, const std::string & defaultVal) const;
+    int ReadTime(const std::string & param, time_t *, time_t) const;
+    int ReadShortInt(const std::string & param, short int *, short int) const;
+    int ReadInt(const std::string & param, int *, int) const;
+    int ReadLongInt(const std::string & param, long int *, long int) const;
+    int ReadLongLongInt(const std::string & param, int64_t *, int64_t) const;
+    int ReadUShortInt(const std::string & param, unsigned short int *, unsigned short int) const;
+    int ReadUInt(const std::string & param, unsigned int *, unsigned int) const;
+    int ReadULongInt(const std::string & param, unsigned long int *, unsigned long int) const;
+    int ReadULongLongInt(const std::string & param, uint64_t *, uint64_t) const;
+    int ReadDouble(const std::string & param, double * val, double defaultVal) const;
 
-    void WriteString(const string & param, const char * val) { return WriteString(param, std::string(val)); }
-    void WriteString(const string & param, const string & val);
-    void WriteInt(const string & param, int64_t val);
-    void WriteDouble(const string & param, double val);
+    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);
 
     int Error() const;
     int Flush() const;
 
 private:
-    map<string, string, StringCaseCmp_t> param_val;
-    string fileName;
+    std::map<std::string, std::string, StringCaseCmp_t> param_val;
+    std::string fileName;
     mutable int error;
     mutable bool changed;
 
index 8c2a82ade7fe9c55cc76d51daf89d9896a594046..930750135ac6bb9fbb84a0421335fd6dd05a64b7 100644 (file)
@@ -110,7 +110,7 @@ public:
     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);
 
index d6cb09ef22e4bbd1d49b78836f6e12c4961278d1..aa12a012424426f2c6e48d6c8e40ccf2259bedcd 100644 (file)
@@ -108,10 +108,36 @@ return 0;
 }
 //---------------------------------------------------------------------------
 #endif
+
+namespace
+{
+
+bool HostNameToIP(const std::string & hostName, uint32_t & ip)
+{
+ip = inet_addr(hostName.c_str());
+if (ip == INADDR_NONE)
+    {
+    hostent * phe = gethostbyname(hostName.c_str());
+    if (phe)
+        {
+        ip = *((uint32_t *)phe->h_addr_list[0]);
+        }
+    else
+        {
+        return false;
+        }
+    }
+
+return true;
+}
+
+}
+
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
 //---------------------------------------------------------------------------
-IA_CLIENT_PROT::IA_CLIENT_PROT(const string & sn, unsigned short p, uint16_t localPort)
+IA_CLIENT_PROT::IA_CLIENT_PROT(const std::string & sn, unsigned short p,
+                               const std::string & ln, uint16_t lp)
     : action(IA_NONE),
       phase(1),
       phaseTime(0),
@@ -122,7 +148,8 @@ IA_CLIENT_PROT::IA_CLIENT_PROT(const string & sn, unsigned short p, uint16_t loc
       serverName(sn),
       port(p),
       ip(0),
-      localPort(localPort),
+      localName(ln),
+      localPort(lp),
       firstConnect(true),
       reconnect(0),
       sockr(0),
@@ -190,7 +217,7 @@ servAddr.sin_addr.s_addr = ip;
 //---------------------------------------------------------------------------
 void IA_CLIENT_PROT::PrepareNet()
 {
-struct hostent * phe;
+/*struct hostent * phe;
 unsigned long ip;
 
 ip = inet_addr(serverName.c_str());
@@ -208,6 +235,16 @@ if (ip == INADDR_NONE)
         if (pErrorCb != NULL)
             pErrorCb(strError, IA_GETHOSTBYNAME_ERROR, errorCbData);
         }
+    }*/
+
+if (!HostNameToIP(serverName, ip))
+    {
+    ip = 0;
+    strError = std::string("Unknown host ") + "\'" + serverName + "\'";
+    codeError = IA_GETHOSTBYNAME_ERROR;
+    if (pErrorCb != NULL)
+        pErrorCb(strError, IA_GETHOSTBYNAME_ERROR, errorCbData);
+    return;
     }
 
 #ifndef WIN32
@@ -225,7 +262,24 @@ if (localPort)
     localAddrR.sin_port = htons(localPort);
 else
     localAddrR.sin_port = htons(port);
-localAddrR.sin_addr.s_addr = inet_addr("0.0.0.0");
+
+if (!localName.empty())
+    {
+    if (!HostNameToIP(localName, localIP))
+        {
+        strError = std::string("Unknown host ") + "\'" + serverName + "\'";
+        codeError = IA_GETHOSTBYNAME_ERROR;
+        if (pErrorCb != NULL)
+            pErrorCb(strError, IA_GETHOSTBYNAME_ERROR, errorCbData);
+        localIP = INADDR_ANY;
+        }
+    }
+else
+    {
+    localIP = INADDR_ANY;
+    }
+
+localAddrR.sin_addr.s_addr = localIP;
 
 servAddr.sin_family = AF_INET;
 servAddr.sin_port = htons(port);
@@ -268,7 +322,7 @@ WSACleanup();
 //---------------------------------------------------------------------------
 int IA_CLIENT_PROT::DeterminatePacketType(const char * buffer)
 {
-map<string, int>::iterator pi;
+std::map<std::string, int>::iterator pi;
 pi = packetTypes.find(buffer);
 if (pi == packetTypes.end())
     {
@@ -543,19 +597,19 @@ void IA_CLIENT_PROT::GetStat(LOADSTAT * ls)
 memcpy(ls, &stat, sizeof(stat));
 }
 //---------------------------------------------------------------------------
-void IA_CLIENT_PROT::SetServer(const string & sn, unsigned short p)
+void IA_CLIENT_PROT::SetServer(const std::string & sn, unsigned short p)
 {
 serverName = sn;
 port = p;
 PrepareNet();
 }
 //---------------------------------------------------------------------------
-void IA_CLIENT_PROT::SetLogin(const string & l)
+void IA_CLIENT_PROT::SetLogin(const std::string & l)
 {
 login = l;
 }
 //---------------------------------------------------------------------------
-void IA_CLIENT_PROT::SetPassword(const string & p)
+void IA_CLIENT_PROT::SetPassword(const std::string & p)
 {
 password = p;
 
@@ -583,7 +637,7 @@ action = IA_DISCONNECT;
 return 0;
 }
 //---------------------------------------------------------------------------
-int IA_CLIENT_PROT::GetStrError(string * error) const
+int IA_CLIENT_PROT::GetStrError(std::string * error) const
 {
 int ret = codeError;
 *error = strError;
@@ -594,7 +648,7 @@ return ret;
 //---------------------------------------------------------------------------
 int IA_CLIENT_PROT::Process_CONN_SYN_ACK_8(const char * buffer)
 {
-vector<string> dirNames;
+std::vector<std::string> dirNames;
 connSynAck8 = (CONN_SYN_ACK_8*)buffer;
 
 #ifdef ARCH_BE
index 9c8ea37f560293d9f16b0e5645b436938bb114e1..c37f4394a6aa67190990fb5c762b6eabc7ef68b3 100644 (file)
 #define IA_PROTO_VER            (8)
 #define IA_PROTO_PROXY_VER      (101)
 
-using namespace std;
-
 typedef void (*tpStatusChangedCb)(int status, void * data);
 typedef void (*tpStatChangedCb)(const LOADSTAT & stat, void * data);
-typedef void (*tpCallBackInfoFn)(const string & message, int infoType, int showTime, int sendTime, void * data);
-typedef void (*tpCallBackErrorFn)(const string & message, int netError, void * data);
-typedef void (*tpCallBackDirNameFn)(const vector<string> & dirName, void * data);
+typedef void (*tpCallBackInfoFn)(const std::string & message, int infoType, int showTime, int sendTime, void * data);
+typedef void (*tpCallBackErrorFn)(const std::string & message, int netError, void * data);
+typedef void (*tpCallBackDirNameFn)(const std::vector<std::string> & dirName, void * data);
 
 //---------------------------------------------------------------------------
 class IA_CLIENT_PROT
@@ -69,16 +67,16 @@ friend void * RunL(void * data);
 #endif
 
 public:
-    IA_CLIENT_PROT(const string & sn, uint16_t p, uint16_t localPort = 0);
+    IA_CLIENT_PROT(const std::string & sn, uint16_t p, const std::string & localName = "", uint16_t localPort = 0);
     ~IA_CLIENT_PROT();
 
     void        Start();
     void        Stop();
     void        GetStat(LOADSTAT * ls);
 
-    void        SetServer(const string & sn, unsigned short port);
-    void        SetLogin(const string & login);
-    void        SetPassword(const string & password);
+    void        SetServer(const std::string & sn, unsigned short port);
+    void        SetLogin(const std::string & login);
+    void        SetPassword(const std::string & password);
     void        SetEnabledDirs(const bool * selectedDirs);
 
     void        SetStatusChangedCb(tpStatusChangedCb p, void * data);
@@ -95,9 +93,9 @@ public:
     int         GetReconnect() const { return reconnect; };
     void        SetReconnect(int r) { reconnect = r; };
     char        GetProtoVer() const { return proxyMode ? IA_PROTO_PROXY_VER : IA_PROTO_VER; };
-    void        GetMessageText(string * text) const { *text = messageText; };
-    void        GetInfoText(string * text) const { *text = infoText; };
-    int         GetStrError(string * error) const;
+    void        GetMessageText(std::string * text) const { *text = messageText; };
+    void        GetInfoText(std::string * text) const { *text = infoText; };
+    int         GetStrError(std::string * error) const;
 
     void        SetProxyMode(bool on) { proxyMode = on; };
     bool        GetProxyMode() const { return proxyMode; };
@@ -134,9 +132,9 @@ private:
     int             action;
     int             phase;
     int             phaseTime;
-    string          messageText;
-    string          infoText;
-    mutable string  strError;
+    std::string     messageText;
+    std::string     infoText;
+    mutable std::string strError;
     mutable int     codeError;
     bool            nonstop;
     bool            isNetPrepared;
@@ -147,8 +145,8 @@ private:
 
     bool            selectedDirs[DIR_NUM];
 
-    string          password;
-    string          login;
+    std::string     password;
+    std::string     login;
 
     #ifdef WIN32
     WSADATA wsaData;
@@ -156,9 +154,11 @@ private:
     pthread_t thread;
     #endif
 
-    string          serverName;
+    std::string     serverName;
     uint16_t        port;
     uint32_t        ip;
+    std::string     localName;
+    uint32_t        localIP;
     uint32_t        localPort;
 
     struct sockaddr_in  servAddr;
@@ -183,7 +183,7 @@ private:
     void              * errorCbData;
     void              * dirNameCbData;
 
-    map<string, int>    packetTypes;
+    std::map<std::string, int> packetTypes;
 
     CONN_SYN_8        * connSyn8;
     CONN_SYN_ACK_8    * connSynAck8;
index 8284fe9b141cdf5d96fbf952dc6fdf63c4408f1e..27d368af977fddf9fa6bd8d439de854d4e6b6199 100644 (file)
@@ -465,7 +465,7 @@ struct GDS
 #ifdef IBPP_WINDOWS\r
                mHandle = 0;\r
 #endif\r
-       };\r
+       }\r
 };\r
 \r
 extern GDS gds;\r
index cfdd61fe339c9c7806dfa185da75302cee81a311..298fe70613218655dc47317464cab19f881dcaee 100644 (file)
@@ -118,7 +118,7 @@ int BlobImpl::Read(void* buffer, int size)
 \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
@@ -230,7 +230,7 @@ void BlobImpl::Load(std::string& data)
        {\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
index c108aaceb021b51f2220f03b021b6bf201cfa518..9c43ba2020abce852cba3e8f1598020aa5c3d447 100644 (file)
@@ -104,8 +104,10 @@ typedef unsigned __int64   ISC_UINT64;
 #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
index 37a19add995f52bf2c52e635b63d9ce6bfc89994..0029094eef1167f070c883b683e08cc2ce9a9c22 100644 (file)
@@ -223,7 +223,7 @@ namespace IBPP
                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
@@ -236,7 +236,7 @@ namespace IBPP
                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
@@ -248,7 +248,7 @@ namespace IBPP
                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
@@ -283,7 +283,7 @@ namespace IBPP
                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
@@ -386,7 +386,7 @@ namespace IBPP
                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
@@ -480,7 +480,7 @@ namespace IBPP
                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
@@ -506,7 +506,7 @@ namespace IBPP
                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
@@ -551,7 +551,7 @@ namespace IBPP
                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
@@ -591,7 +591,7 @@ namespace IBPP
                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
@@ -621,7 +621,7 @@ namespace IBPP
                virtual ITransaction* AddRef() = 0;\r
                virtual void Release() = 0;\r
 \r
-           virtual ~ITransaction() { };\r
+           virtual ~ITransaction() { }\r
        };\r
 \r
        /*\r
@@ -700,7 +700,7 @@ namespace IBPP
                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
@@ -799,7 +799,7 @@ namespace IBPP
                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
@@ -832,7 +832,7 @@ namespace IBPP
                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
@@ -844,7 +844,7 @@ namespace IBPP
        {\r
        public:\r
                virtual void ibppEventHandler(Events, const std::string&, int) = 0;\r
-               virtual ~EventInterface() { };\r
+               virtual ~EventInterface() { }\r
        };\r
 \r
        //      --- Factories ---\r
index 1a3031fe80943e7f88a34f2544bab57d1b38a429..e2271cf4b544011cc471d67af06e21bac4207568 100644 (file)
@@ -422,7 +422,7 @@ bool StatementImpl::Fetch()
                        _("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
@@ -452,7 +452,7 @@ bool StatementImpl::Fetch(IBPP::Row& row)
        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
index c9a38774a25507de990d2af4f8ebaa73f885b07d..47eb61c7b94ecc5c47af89a2324e2d6e46d7b203 100644 (file)
@@ -103,9 +103,9 @@ void TransactionImpl::AddReservation(IBPP::Database db,
                                        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
@@ -306,7 +306,7 @@ void TransactionImpl::AttachDatabaseImpl(DatabaseImpl* dbi,
                                                                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
index 7a8d0b8d30113a80431a1ab1ccd2f1519fcdddbd..51ceb738e53253cfec1a2e9dd54605a20cf997a9 100644 (file)
@@ -67,7 +67,7 @@ public:
         pthread_mutex_unlock(&lockerMutex);
         #endif
         pthread_mutex_lock(mutex);
-        };
+        }
 
     ~STG_LOCKER()
         {
@@ -77,7 +77,7 @@ public:
         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);
index 8cc25cad0d9f3954febd629b7cd007d6edee80c3..c55801ac2a32570fb41348b2f74a2d604332122b 100644 (file)
@@ -5,16 +5,14 @@
 
 #include <string>
 
-const char * LogDate(time_t t);
-//-----------------------------------------------------------------------------
 class STG_LOGGER;
 STG_LOGGER & GetStgLogger();
 //-----------------------------------------------------------------------------
 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);
index b1b777813fc617f0710ae51799a76b3c80a2f804..91608dbbc2b38c8341943635f6e8dc8878967bcf 100644 (file)
@@ -18,7 +18,7 @@
 #include <netinet/ip_icmp.h>
 #endif
 
-#if defined (FREE_BSD) || defined (FREE_BSD5)
+#if defined (FREE_BSD) || defined (FREE_BSD5) || defined(DARWIN)
 #include <netinet/in.h>
 #include <netinet/in_systm.h>
 #include <netinet/ip.h>
@@ -84,6 +84,9 @@ struct PING_MESSAGE
 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();
 
@@ -91,7 +94,7 @@ public:
     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; }
@@ -108,7 +111,7 @@ private:
     static void * RunSendPing(void * d);
     static void * RunRecvPing(void * d);
 
-    int         delay;
+    time_t      delay;
     bool        nonstop;
     bool        isRunningRecver;
     bool        isRunningSender;
index 664367e897e6c0d7fc084d9efabd59f32ef14171..edc8c174c7fb06a831707aba2d9e5876e7b23955 100644 (file)
@@ -165,11 +165,6 @@ while (iter != ipToDel.end())
 ipToDel.erase(ipToDel.begin(), ipToDel.end());
 }
 //-----------------------------------------------------------------------------
-int STG_PINGER::GetPingIPNum() const
-{
-return pingIP.size();
-}
-//-----------------------------------------------------------------------------
 void STG_PINGER::PrintAllIP()
 {
 STG_LOCKER lock(&mutex, __FILE__, __LINE__);
@@ -202,20 +197,20 @@ return 0;
 //-----------------------------------------------------------------------------
 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)
@@ -228,7 +223,7 @@ addr.sin_addr.s_addr = 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));
@@ -250,19 +245,17 @@ uint32_t ipAddr = 0;
 
 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;
index 41b02a2fdf8927bd57e9a959253af4e56b20f21a..947669c785b433f0bd9874e4010ba98b3e1efecc 100644 (file)
@@ -6,7 +6,7 @@ extern "C" {
 #endif
 
 int ScriptExec(const char * str);
-#ifdef LINUX
+#if defined(LINUX) || defined(DARWIN)
 void Executer(int msgID, pid_t pid, char * procName);
 #else
 void Executer(int msgID, pid_t pid);
index bf45105a8332652d31df6b850d9eefc05afe1afd..728082ae350ba079e5404f4b6a3168eb0e805002 100644 (file)
@@ -40,7 +40,7 @@ if (msgsnd(msgid, (void *)&sd, MAX_SCRIPT_LEN, 0) < 0)
 return 0;
 }
 //-----------------------------------------------------------------------------
-#ifdef LINUX
+#if defined(LINUX) || defined(DARWIN)
 void Executer(int msgID, pid_t pid, char * procName)
 #else
 void Executer(int msgID, pid_t pid)
@@ -56,7 +56,7 @@ if (pid)
     return;
 nonstop = 1;
 
-#ifdef LINUX
+#if defined(LINUX) || defined(DARWIN)
 memset(procName, 0, strlen(procName));
 strcpy(procName, "stg-exec");
 #else
index 67c2f248dbae85c49b08fb1cf7f4eaa0189170e2..dbbe20013daa4087224221ea5c94e4c8c500d0d8 100644 (file)
@@ -30,6 +30,7 @@
 #include <expat.h>
 
 #include <list>
+#include <vector>
 #include <string>
 
 #include "stg/os_int.h"
@@ -101,6 +102,7 @@ typedef void(*RecvServerInfoDataCb_t)(SERVERINFO * si, void * data);
 typedef int(*RecvChgUserCb_t)(const char * asnwer, void * data);
 typedef int(*RecvCheckUserCb_t)(const char * answer, void * data);
 typedef int(*RecvSendMessageCb_t)(const char * answer, void * data);
+typedef void(*RecvAuthByDataCb_t)(const std::vector<std::string> & list, void * data);
 //-----------------------------------------------------------------------------
 struct ADMINDATA
 {
@@ -224,6 +226,23 @@ private:
     bool error;
 };
 //-----------------------------------------------------------------------------
+class PARSER_AUTH_BY: public PARSER
+{
+public:
+    PARSER_AUTH_BY();
+    int  ParseStart(const char *el, const char **attr);
+    void ParseEnd(const char *el);
+    void ParseServerInfo(const char *el, const char **attr);
+    bool GetError();
+    void SetRecvCb(RecvAuthByDataCb_t, void * data);
+private:
+    RecvAuthByDataCb_t RecvAuthByDataCb;
+    void * authByDataCb;
+    int depth;
+    bool error;
+    std::vector<std::string> list;
+};
+//-----------------------------------------------------------------------------
 class SERVCONF
 {
 public:
@@ -235,6 +254,7 @@ public:
     void SetAdmPassword(const char * password);
 
     void SetUserDataRecvCb(RecvUserDataCb_t, void * data);
+    void SetGetUserAuthByRecvCb(RecvAuthByDataCb_t, void * data);
     void SetServerInfoRecvCb(RecvServerInfoDataCb_t, void * data);
     void SetChgUserCb(RecvChgUserCb_t, void * data);
     void SetCheckUserCb(RecvCheckUserCb_t, void * data);
@@ -244,6 +264,7 @@ public:
     int GetUsers();
     int GetUser(const char * login);
     int ChgUser(const char * request);
+    int GetUserAuthBy(const char * login);
     // TODO: Remove this shit!
     int MsgUser(const char * request);
     int SendMessage(const char * login, const char * message, int prio);
@@ -260,6 +281,7 @@ private:
 
     PARSER_GET_USERS parserGetUsers;
     PARSER_GET_USER parserGetUser;
+    PARSER_AUTH_BY parserAuthBy;
     PARSER_GET_SERVER_INFO  parserServerInfo;
     PARSER_CHG_USER parserChgUser;
     PARSER_CHECK_USER parserCheckUser;
@@ -274,12 +296,14 @@ private:
 
     RecvUserDataCb_t RecvUserDataCb;
     RecvUserDataCb_t RecvGetUserDataCb;
+    RecvAuthByDataCb_t RecvAuthByCb;
     RecvServerInfoDataCb_t RecvServerInfoDataCb;
     RecvChgUserCb_t RecvChgUserCb;
     RecvCheckUserCb_t RecvCheckUserCb;
     RecvSendMessageCb_t RecvSendMessageCb;
 
     void * getUserDataDataCb;
+    void * getUserAuthByDataCb;
     void * getUsersDataDataCb;
     void * getServerInfoDataCb;
     void * chgUserDataCb;
index a87266eb5cb57d37fd6cb81f002134cbdde1e547..284e1127e5f83da67bb6f04de36f92bd6a6f34f3 100644 (file)
@@ -822,6 +822,58 @@ if (strcmp(attr[0], "value") == 0)
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
 //-----------------------------------------------------------------------------
+PARSER_AUTH_BY::PARSER_AUTH_BY()
+    : RecvAuthByDataCb(NULL),
+      authByDataCb(NULL),
+      depth(0),
+      error(false),
+      list()
+{
+}
+//-----------------------------------------------------------------------------
+int PARSER_AUTH_BY::ParseStart(const char *el, const char **attr)
+{
+depth++;
+if (depth == 1)
+    {
+    if (strcasecmp(el, "AuthorizedBy") != 0)
+        {
+        list.erase(list.begin(), list.end());
+        //printf("%s\n", el);
+        }
+    }
+else
+    {
+    if (depth == 2)
+        {
+        if (strcasecmp(el, "Auth") == 0)
+            {
+            if (attr && attr[0] && attr[1])
+                list.push_back(attr[1]);
+            return 0;
+            }
+        }
+    }
+return 0;
+}
+//-----------------------------------------------------------------------------
+void PARSER_AUTH_BY::ParseEnd(const char *)
+{
+depth--;
+if (depth == 0)
+    {
+    RecvAuthByDataCb(list, authByDataCb);
+    }
+}
+//-----------------------------------------------------------------------------
+void PARSER_AUTH_BY::SetRecvCb(RecvAuthByDataCb_t f, void * data)
+{
+RecvAuthByDataCb = f;
+authByDataCb = data;
+}
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
 PARSER_CHG_USER::PARSER_CHG_USER()
     : RecvChgUserCb(NULL),
       chgUserCbData(NULL),
index ab386cf753dfab06b631806d5faea58d63776050..0ca3028c9e881209cf4d881696c6aedc0ae9a41e 100644 (file)
@@ -101,6 +101,7 @@ SERVCONF::SERVCONF()
       RecvCheckUserCb(NULL),
       RecvSendMessageCb(NULL),
       getUserDataDataCb(NULL),
+      getUserAuthByDataCb(NULL),
       getUsersDataDataCb(NULL),
       getServerInfoDataCb(NULL),
       chgUserDataCb(NULL),
@@ -142,6 +143,37 @@ currParser = &parserGetUser;
 nt.Reset();
 nt.SetRxCallback(this, AnsRecv);
 
+if ((ret = nt.Connect()) != st_ok)
+    {
+    errorMsg = nt.GetError();
+    return ret;
+    }
+if ((ret = nt.Transact(request)) != st_ok)
+    {
+    errorMsg = nt.GetError();
+    return ret;
+    }
+if ((ret = nt.Disconnect()) != st_ok)
+    {
+    errorMsg = nt.GetError();
+    return ret;
+    }
+
+return st_ok;
+}
+//-----------------------------------------------------------------------------
+int SERVCONF::GetUserAuthBy(const char * l)
+{
+char request[255];
+snprintf(request, 255, "<GetUserAuthBy login=\"%s\"/>", l);
+int ret;
+
+currParser = &parserAuthBy;
+((PARSER_AUTH_BY*)currParser)->SetRecvCb(RecvAuthByCb, getUserAuthByDataCb);
+
+nt.Reset();
+nt.SetRxCallback(this, AnsRecv);
+
 if ((ret = nt.Connect()) != st_ok)
     {
     errorMsg = nt.GetError();
@@ -368,6 +400,12 @@ RecvGetUserDataCb = f;            //GET_USER
 getUserDataDataCb = data;
 }
 //-----------------------------------------------------------------------------
+void SERVCONF::SetGetUserAuthByRecvCb(RecvAuthByDataCb_t f, void * data)
+{
+RecvAuthByCb = f;
+getUserAuthByDataCb = data;
+}
+//-----------------------------------------------------------------------------
 void SERVCONF::SetServerInfoRecvCb(RecvServerInfoDataCb_t f, void * data)
 {
 RecvServerInfoDataCb = f;