]> git.stg.codes - stg.git/commitdiff
Merge branch 'master' into full-month-stats
authorMaxim Mamontov <faust.madf@gmail.com>
Mon, 20 Jun 2011 08:20:57 +0000 (11:20 +0300)
committerMaxim Mamontov <faust.madf@gmail.com>
Mon, 20 Jun 2011 08:20:57 +0000 (11:20 +0300)
30 files changed:
doc/help/ch1.xml
doc/help/ch2.xml
doc/help/ch3.xml
doc/help/ch4.xml
doc/help/help.xml
projects/convertor/build
projects/rlm_stg/build
projects/rscriptd/build
projects/sgauth/build
projects/sgauthstress/build
projects/sgconf/build
projects/sgconf_xml/build
projects/stargazer/admin_impl.cpp
projects/stargazer/admins_impl.cpp
projects/stargazer/build
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/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/configuration/rpcconfig/rpcconfig.cpp
projects/stargazer/plugins/other/rscript/rscript.cpp
projects/stargazer/settings_impl.cpp
projects/stargazer/tariff_impl.h
projects/stargazer/tariffs_impl.cpp
projects/stargazer/traffcounter_impl.cpp
projects/stargazer/user_impl.cpp
projects/stargazer/users_impl.cpp

index dbb80484e5c26f13ac3f7ce16900f53eaef6cf5e..94305d76371da7cd15ffe09b572041eda27a1a41 100644 (file)
@@ -1,4 +1,20 @@
 <chapter xml:id="ch1">
     <title>Назначение и возможности системы</title>
     <para>Система Stargazer (далее просто «система») предназначена для авторизации и учета трафика в локальных сетях. При написании данной системы была поставлена задача создать продукт, который отвечал бы требованиям большинства локальных сетей для учета в них трафика и средств клиентов, а также безопасной авторизации клиентов.</para>
+    <para>Система построена по клиент-серверной технологии, что обеспечивает необходимую гибкость и быстродействие. В качестве сервера выступает машина с ОС Linux или FreeBSD и архитектурой x86/x86_64/SPARC. В качестве клиентов могут выступать машины как семейства Windows, так и клиенты с ОС GNU/Linux или FreeBSD. Так же клиентом может выступать любая ОС, в которой есть поддержка сетевых протоколов TCP-IP и WEB-броузер.</para>
+    <para>Система имеет модульную структуру, что позволяет гибко изменять ее конфигурацию и функциональность.</para>
+    <para>Основные возможности системы:</para>
+    <itemizedlist mark="opencircle">
+        <listitem><para>контроль над клиентами сети, их добавление, удаление, текущие корректировки;</para></listitem>
+        <listitem><para>авторизация клиента, с последующим разрешением или запретом доступа в Internet;</para></listitem>
+        <listitem><para>подсчет трафика по предварительно заданным направлениям и правилам;</para></listitem>
+        <listitem><para>подсчет израсходованных клиентом средств и автоматическое отключение в случае их полного расходования;</para></listitem>
+        <listitem><para>хранение дополнительной информации о клиенте, такой как домашний адрес, телефон и т.д.;</para></listitem>
+        <listitem><para>автоматический пинг всех клиентов сети и вывод результатов на экран;</para></listitem>
+        <listitem><para>ведение истории для всех клиентов;</para></listitem>
+        <listitem><para>журналирование действий администраторов системы;</para></listitem>
+        <listitem><para>оперативное предоставление клиенту информации о его трафике и наличии средств;</para></listitem>
+        <listitem><para>формирование подробных отчетов о состоянии клиентов;</para></listitem>
+        <listitem><para>подключаемые модули.</para></listitem>
+    </itemizedlist>
 </chapter>
index 778b93cd619e9fe881ce5b5a5edf3c1b7da3c836..0657cb68a86145454bc5682a46a4f20a2bdd1667 100644 (file)
@@ -1,9 +1,12 @@
 <chapter xml:id="ch2">
     <title>Описание компонентов системы</title>
     <para>Составными компонентами системы являются:</para>
-    <orderedlist>
-        <listitem>Сервер</listitem>
-        <listitem>Конфигуратор</listitem>
-        <listitem>Авторизатор</listitem>
+    <orderedlist numeration="arabic">
+        <listitem><para>сервер;</para></listitem>
+        <listitem><para>конфигуратор;</para></listitem>
+        <listitem><para>авторизатор.</para></listitem>
     </orderedlist>
+    <para>Сервер – служит для авторизации клиентов, манипуляции правилами сетевого фильтра (firewall), подсчета трафика, выполнения финансовых операций, хранения информации о статистике и выдаче её клиентам и администраторам.</para>
+    <para>Конфигуратор – используют администраторы сети. Служит для просмотра и редактирования свойств клиентов. Конфигуратор является основным инструментарием для администрирования системы. Доступ к различным функциям разграничен для различных категорий администраторов. С помощью конфигуратора выполняются все финансовые операции с клиентскими счетами, так же просматривается подробная статистика клиентов. Конфигуратором настраиваются некоторые параметры сервера, например тарифные планы и администраторы.</para>
+    <para>Авторизатор – используется на клиентских машинах. С его помощью происходит авторизация клиента на сервере, получение права на доступ в Интернет или к другим ресурсам, которые разрешены администратором. Так же авторизатор позволяет клиенту просмотреть свою статистику и состояние денежных средств на счету.</para>
 </chapter>
index a8f66e12949bdc0d4bbc1479a9e690752c962b95..034a05f252471286a87a516f5b547f52e1776e40 100644 (file)
@@ -2,4 +2,85 @@
     <title>Установка системы</title>
     <para>Система обычно поставляется в виде 3 файлов: исходных кодов сервера, бинарной сборки конфигуратора и авторизатора.</para>
     <para>Стабильная версия сервера маркируется так: stg-A.B.src.tgz. A и B – старшая и младшая версия сервера. Промежуточные версии сервера имеют маркировку: stg-A.B-YYYY.MM.DD-HH.MM.SS.tgz. A и B – старшая и младшая версия сервера. YYYY.MM.DD-HH.MM.SS – дата и время сборки.</para>
+    <para>Установочный файл конфигуратора имеет маркировку: sgconfig-A.B.C.win.exe. A.B – старшая и младшая версия конфигуратора. C – версия протокола конфигуратора. Исходные коды конфигуратора имеют маркировку: sgconfig-A.B.C.src.rar.</para>
+    <para>Установочный файл авторизатора имеет маркировку: inetaccess-A.B.C.win.exe. A.B – старшая и младшая версия авторизатора. C – версия протокола авторизатора.</para>
+    <simplesect>
+        <title>Установка сервера</title>
+        <programlisting linenumbering="numbered">
+        tar -zxvf stg-A.B.src.tgz
+        cd stg-A.B.src/projects/stargazer
+        ./build
+        make install
+        </programlisting>
+        <para>Заголовок скрипта build содержит набор параметров сборки и установки:</para>
+        <itemizedlist>
+            <listitem><para>LDFLAGS – дополнительные ключи компоновщика (ключи, предназначенные непосредственно ld указывать в виде -Wl,&lt;ключ&gt;);</para></listitem>
+            <listitem><para>CXXFLAGS – дополнительные ключи компилятора;</para></listitem>
+            <listitem><para>PREFIX – префикс путей установки;</para></listitem>
+            <listitem><para>BIN_MODE – права доступа к бинарным файлам системы (0755 по умолчанию);</para></listitem>
+            <listitem><para>DATA_MODE – права доступа к файлам данных системы (0644 по умолчанию);</para></listitem>
+            <listitem><para>DIR_MODE — права доступа к каталогам системы (0755 по умолчанию);</para></listitem>
+            <listitem><para>OWNER – владелец файлов системы (root по умолчанию);</para></listitem>
+            <listitem><para>FIREBIRD_GROUP – группа сервера СУБД Firebird (по умолчанию firebird);</para></listitem>
+            <listitem><para>DB_ADDRESS – адрес БД (Firebird) системы ( по умолчанию "localhost:/var/stargazer/stargazer.fdb");</para></listitem>
+            <listitem><para>DB_USER – пользователь БД (Firebird) системы (по умолчанию "stg");</para></listitem>
+            <listitem><para>DB_PASSWORD – пароль пользователя БД (Firebird) системы (по умолчанию "123456");</para></listitem>
+            <listitem><para>FIREBIRD_ISQL – путь к командному интерпретатору SQL СУБД Firebird (по умолчанию "/opt/firebird/bin/isql", пользователи Debian и, возможно, некоторых других дистрибутивов должны указать путь к утилите isql-fb);</para></listitem>
+        </itemizedlist>
+        <para>Параметры указываются в формате &lt;ИМЯ_ПАРАМЕТРА&gt; = &lt;ЗНАЧЕНИЕ_ПАРАМЕТРА&gt;</para>
+        <para>В случае успешной сборки бинарных файлов сервера и их инсталляции в каталогах /etc и /var появится каталог stargazer с набором конфигурационных файлов. Бинарный файл установиться в каталог /usr/sbin с именем stargazer, библиотеки и модули установятся в каталог /usr/lib/stg/ а заголовочные файлы в каталог /usr/include/stg.</para>
+        <para>Если сборка прошла без ошибок и необходимые файлы находятся в соответствующих каталогах, то установка считается успешно завершенной.</para>
+        <para>Для удобства разработчиков и для создания багрепортов возможна сборка в отладочном режиме. Для этого скрипт ./build запускается с параметром debug. В этом режиме сборка не производится, а выполняется только конфигурирование. Для сборки отладочной версии необходимо выполнить команду make (gmake для BSD-систем). Также возможна раздельная установка бинарных файлов и файлов данных. Для этого в Makefile предусмотренны цели install-bin и install-data. make install-bin устанавливает только бинарные файлы (сервер, модули и библиотеки) и заголовочные файлы. make install-data устанавливает конфигурационные файлы и БД. По аналогии с целью install работает и цель uninstall. make uninstall удаляет сервер из системы. uninstall-bin и uninstall-data удаляют бинарные файлы и файлы данных соответственно.</para>
+        <formalpara>
+            <title>Внимание!</title>
+            <para>Для успешной сборки сервера необходима правильно установленная библиотека LibExpat. (Поиск производится в /usr/lib и /usr/local/lib, но при желании с помощью переменных окружения CXXFLAGS и LDFLAGS можно указать и иное месторасположение библиотеки).</para>
+        </formalpara>
+        <para>Если в процессе сборки будет обнаружена правильно установленная библиотека fbclient (входит в стандартную поставку СУБД Firebird) в сборку будет включен модуль для работы с СУБД Firebird. Модуль поддерживает работу с СУБД Firebird версии 1.5 и выше.</para>
+        <para>Если в процессе сборки будет обнаружена правильно установленная библиотека mysqlclient (входит в стандартную поставку СУБД MySQL) в сборку будет включен модуль для работы с СУБД MySQL. Модуль поддерживает работу с СУБД MySQL версии 4.0 и выше.</para>
+        <para>Если в процессе сборки будет обнаружена библиотека pq в сборку будет включен модуль для работы с СУБД PostgreSQL. Модуль поддерживает работу с СУБД PostgreSQL версии 8.0 и выше.</para>
+        <formalpara>
+            <title>Примечание</title>
+            <para>Если сборка завершилась неудачей, то необходимо проверить доступность библиотеки LibExpat. Пользователи ОС Linux могут выполнить команду ldconfig -p | grep libexpat.so. Если она выведет нечто похожее на
+            <programlisting linenumbering="unnumbered">
+        # ldconfig -p | grep libexpat.so
+            libexpat.so.1 (libc6) => /usr/lib/libexpat.so.1
+            libexpat.so (libc6) => /usr/lib/libexpat.so
+            </programlisting>
+            значит библиотека доступна. Если вывод будет пустой – библиотека в системе не найдена. Для пользователей ОС FreeBSD можно выполнить команду ls /usr/lib | grep libexpat.so. Если она выведет нечто похожее на
+            <programlisting linenumbering="unnumbered">
+        # ls /usr/lib | grep libexpat.so
+            libexpat.so
+            libexpat.so.4
+            </programlisting>
+            значит библиотека доступна. Если вывод пустой – скорее всего библиотеки в системе нет или она установлена неправильно. Возможно, библиотека установлена в другое место. Если это так – достаточно при выполнении скрипта build в CXXFLAGS с помощью ключа -I указать путь к заголовочным файлам библиотеки, а в LDLFAGS с помощью ключа -L указать путь к самой библиотеке. Для поиска библиотеки можно использовать команды locate, slocate, whereis или find. Если библиотека в системе отсутствует – установите ее используя Ваш пакетный менеджер (apt (Debian, Ubuntu), rpm (RPM-based дистрибутивы), emerge (Gentoo) или др.). Так же библиотеку можно установить из исходных кодов, доступных на странице http://sourceforge.net/projects/expat/.</para>
+        </formalpara>
+        <para>Для использования СУБД Firebird в качестве хранилища необходимо наличие библиотеки fbclient. Проверка может быть выполнена аналогично библиотеке LibExpat: ldconfig -p | grep libfbclient.so для ОС Linux и ls /usr/lib | grep libfbclient.so для ОС FreeBSD. Некоторые дистрибутивы позволяют установить ее отдельно от СУБД (например, в Ubuntu соответствующий пакет называется libfbclient1), некоторые – только в составе сервера (например, Gentoo). Исходные коды СУБД Firebird доступны для скачивания со страницы http://www.firebirdsql.org/index.php?op=files. Необходимо заметить, что сами разработчики СУБД Firebird не разделяют свой продукт на клиентскую и серверную части. По этому архивы исходных кодов содержат и сервер СУБД, и консольный клиент (командный интерпретатор SQL) и клиентскую библиотеку.</para>
+        <para>Для использования СУБД MySQL в качестве хранилища необходимо наличие библиотеки mysqlclient. Проверка выполняется аналогично первым двум: ldconfig -p | grep libmysqlclient_r.so для ОС Linux и ls /usr/lib | grep libmysqlclient_r.so для ОС FreeBSD. Так же проверку можно выполнить с помощью утилиты mysql_config. Ее вызов с ключем --libs_r должен выдать что-то похожее на
+            <programlisting linenumbering="unnumbered">
+        $ mysql_config --libs
+            -Wl,-O1 -rdynamic -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto
+            </programlisting>
+            Необходима именно реентерабельная версия библиотеки, т.к. Сам плагин не имеет блокировок. Некоторые дистрибутивы позволяют установить ее отдельно от СУБД (например, в Ubuntu соответствующие пакеты называются libmysqlclient15-dev и libmysqlclient15off), некоторые – только в составе сервера (например, Gentoo). Исходные коды открытой/свободной версии СУБД MySQL доступны для скачивания со страницы http://dev.mysql.com/downloads/mysql/5.0.html. Необходимо заметить, что сами разработчики СУБД MySQL не разделяют свой продукт на клиентскую и серверную части. По этому архивы исходных кодов содержат и сервер СУБД MySQL, и консольный клиент (командный интерпретатор SQL) и клиентскую библиотеку.</para>
+        <para>Для использования СУБД PostgreSQL необходимо наличие библиотеки pq. Проверка выполняется аналогично предыдущим: ldconfig -p | grep libpq.so для ОС Linux и ls /usr/lib | grep libpq.so для ОС FreeBSD. Так-же проверку можно выполнить с использованием утилиты pg_config или pkg_config. Ее вызов с ключем --libdir выдать что-то похожее на
+            <programlisting numbered="unnumbered">
+        $ pg_config --libdir
+            /usr/lib
+            </programlisting>
+            Обычно библиотека устанавливается отдельно от самой СУБД. Например, в Debian соответствующий пакет называется libpq5 и libpq-dev. Исходные коды библиотеки можно загрузить со страницы http://www.postgresql.org/ftp/source/. Необходимо заметить, что сами разработчики СУБД PostgreSQL не разделяют свой продукт на клиентскую и серверную части. По этому архивы исходных кодов содержат и сервер СУБД PostgreSQL, и консольный клиент (командный интерпретатор SQL) и клиентскую библиотеку.</para>
+    </simplesect>
+    <simplesect>
+        <title>Установка авторизатора и конфигуратора</title>
+        <para>Для установки конфигуратора необходимо запустить установочный файл и следовать вопросам мастера установки.</para>
+        <para>Для установки авторизатора необходимо запустить установочный файл и следовать вопросам мастера установки.</para>
+    </simplesect>
+    <simplesect>
+        <title>Запуск сервера</title>
+        <para>При запуске в качестве первого параметра можно указать путь к директории, где расположен файл stargazer.conf. По умолчанию при запуске без параметров система ищет файл в каталоге /etc/stargazer. Например если файл stargazer.conf находится в каталоге /etc/stargazer2, то для запуска системы с чтением настройки из этого каталога следует запустить сервер таким образом: ./stargazer /etc/stargazer2. Для просмотра, работает ли сервер, необходимо выполнить команду: ps –x | grep stargazer. В случае если сервер успешно был запущен и работает то результат команды должен быть примерно таким:</para>
+        <programlisting linenumbering="unnumbered">
+    4818 ?    S&lt;   0:32 ./stargazer /etc/stargazer
+    4819 ?    S    0:00 stg-exec    /etc/stargazer
+        </programlisting>
+        <para>Следует отметить что в выводе предыдущей команды должно присутствовать не менее двух строк. То есть, первая строка в данном примере – это процесс сервера, вторая – процесс исполнителя скриптов. Если присутствует только строка с именем stg-exec или не имеется строк вовсе, то сервер не запущен или имеются проблемы в его работе. Для диагностики ошибок при запуске сервера необходимо просмотреть содержимое журнала сервера биллинга (/var/log/stargazer.log) или же системный журнал (обычно /var/log/messages).</para>
+        <para>Сервер ведет журнал своих действий, куда заносятся все сообщения системы. По умолчанию лог файл находится в каталоге /var/log и имеет название stargazer.log. Если при запуске сервера возникла какая-то ошибка, то необходимо просмотреть файл журнала и исправить ошибку. В случае если серверу не удается записать сообщения в указанный файл, он пытается писать сообщения в syslog, обычно записи syslog находяться в /var/log/messages.</para>
+    </simplesect>
 </chapter>
index 538dda2f979d86aeccb616e0156a4abc94fdd341..d3bb71f0fe160846d1b0b044104e73ebaf21bc92 100644 (file)
@@ -2,4 +2,80 @@
     <title>Настройка системы</title>
     <para>После инсталляции система должна быть подвергнута процедуре настройки. Обычно следует начинать с настройки сервера.</para>
     <para>Основные конфигурационные  файлы  сервера по умолчанию находятся в каталоге /etc/stargazer. Они включают в себя: основной конфигурационный файл stargazer.conf, файл описания направлений тарификации rules, набор скриптов On* и два каталога — conf-available.d и conf-enabled.d, содержащих конфигурационные файлы отдельных модулей. Для включения какого-либо модуля нужно сделать символическую ссылку на его конфигурационный файл в каталоге conf-enabled.d или прописать его конфигурационную секцию в разделе &lt;Modules&gt; файла stargazer.conf.</para>
+    <simplesect>
+        <title>Настройка конфигурационного файла /etc/stargazer/stargazer.conf</title>
+        <para>Файл имеет текстовый формат, содержащий пары ПАРАМЕТР = ЗНАЧЕНИЕ и секции &lt;ИМЯ_СЕКЦИИ ПАРАМЕТРЫ_СЕКЦИИ&gt;. Комментарии в файле начинаются с символа #. В файле описываются общие параметры, которые являются глобальными значениями для всего сервера биллинга, а также параметры соответствующих модулей. Параметры модулей должны быть заключены в секции:</para>
+        <programlisting linenumbering="unnumbered">
+        &lt;Module [имя модуля(имя файла модуля без mod_ и без .so)]&gt;
+
+        &lt;/Module&gt;
+        </programlisting>
+        <para>Описание глобальных параметров параметров:</para>
+        <itemizedlist mark="opencircle">
+            <listitem><para>Rules – параметр, указывающий серверу, где находится файл с правилами для подсчета трафика клиентов, по умолчанию Rules=/etc/stargazer/rules</para></listitem>
+            <listitem><para>LogFile – параметр, указывающий серверу расположение файла, в который будут заноситься все сообщения системы, по умолчанию LogFile=/var/log/stargazer.log</para></listitem>
+            <listitem><para>PidFile — параметр, указывающий серверу где находится файл хранящий PID (идентификатор процесса) дэмона, по умолчанию это /var/run/stargazer.pid. Используется скриптами запуска/останова.</para></listitem>
+            <listitem><para>ModulesPath – параметр, указывающий серверу путь, где находятся подключаемые модули (плагины). По умолчанию ModulesPath = /usr/lib/stg.</para></listitem>
+            <listitem><para>DetailStatWritePeriod – параметр, указывающий серверу через какое время должна записываться детальная статистика клиента, по умолчанию StatTime=1/6. Данный параметр может принимать следующие значения: 3 - раз в три часа, 2 - раз в два часа, 1 - раз в чаc, 1/2 - раз в пол часа, 1/4 - раз в 15 минут, 1/6 - раз в 10 минут.</para></listitem>
+            <listitem><para>StatWritePeriod – параметр, указывающий серверу периодичность записи в БД информации о статистике пользователя (в минутах). При большом количестве пользователей эту величину стоит увеличить, так как запись в БД может занимать длительное время. По умолчанию StatWritePeriod = 10.</para></listitem>
+            <listitem><para>DayFee – параметр, показывающий серверу, в какой день месяца снимать с клиентских счетов сумму абонплаты, в соответствии с тарифными планами клиентов. По умолчанию DayFee=21. Следует помнить, что в некоторых месяцах не более 28 дней. Данный параметр также может принять значение 0; если параметр равен 0, тогда система выполнит действия в последний день текущего месяца; определение последнего дня месяца проводится автоматически.</para></listitem>
+            <listitem><para>DayResetTraff – параметр указывает серверу в какой день месяца очищать статистику клиентов; так же в этот день сервер осуществляет переход на новый тариф, если он был изменен у клиента. По умолчанию DayResetTraff = 28. Следует помнить, что в некоторых месяцах не более 28 дней. Данный параметр также может принять значение 0; если параметр равен 0, тогда система выполнит действия в последний день текущего месяца; определение последнего дня месяца проводится автоматически.</para></listitem>
+            <listitem><para>SpreadFee – параметр, указывающий серверу, производить ли «размазанное» снятие абонплаты. Т. е. сумма абонплаты указанная в тарифе пользователя будет сниматься не раз в месяц, а каждый день ровными долями. По умолчанию SpreadFee = no.</para></listitem>
+            <listitem><para>FreeMbAllowInet – параметр, указывающий серверу выполнять ли для пользователя скрипт OnConnect, если у него на балансе отсутствуют средства, но остался предоплаченный трафик. По умолчанию FreeMbAllowInet = no.</para></listitem>
+            <listitem><para>WriteFreeMbTraffCost – параметр, определяющий, что будет писаться в стоимость трафика в детальной статистике. Если у клиента еще есть предоплаченный трафик и WriteFreeMbTraffCost = no, то в детальную статистику будет записываться стоимость со значением = 0. Если у пользователя уже нет предоплаченного трафика и WriteFreeMbTraffCost = no, то в детальную статистику будет записана стоимость трафика. При WriteFreeMbTraffCost = yes стоимость трафика будет записана в любом случае. По умолчанию WriteFreeMbTraffCost = no.</para></listitem>
+            <listitem><para>DayFeeIsLastDay – параметр, указывающий серверу, когда абонплата снимается в последний (yes) или первый (no) день учетного периода. Это влияет на то, как будет снята абонплата (АП) при переходе на новый тариф. Если у пользователя был тариф A с АП=100 и он хочет перейти на тариф B с АП=200, то при переходе на новый тариф со счета пользователя снимется 100, если DayFeeIsLastDay = yes, и 200, если DayFeeIsLastDay = no. По умолчанию DayFeeIsLastDay = yes.</para></listitem>
+            <listitem><para>ExecutersNum – параметр который показывает, сколько процессов исполнителя скриптов может быть запущено одновременно. Количество процессов означает сколько скриптов могут выполнятся одновременно. По умолчанию ExecutersNum = 1. Если выполнение ваших скриптов занимает много времени следует увеличить это значение. Каждый исполнитель скриптов блокируется на время, пока отработает скрипт. Если исполнителей несколько — они принимают скрипты на выполнение по принципу «кто успел».</para></listitem>
+            <listitem><para>StgMsgKey – параметр отвечающий за идентификатор очереди сообщений для исполнителя скриптов. По умолчанию данный параметр закомментирован и равен 5555. Рекомендуется не изменять значение параметра без нужды. Его изменение целесообразно лишь в том случае, если в системе требуется запустить более одной копии сервера биллинга.</para></listitem>
+            <listitem><para>ShowFeeInCash – показывать на счету и позволять использовать абонплату пользователю. Принимает значения yes и no. Параметр не является обязательным, по умолчанию установлен в yes.</para></listitem>
+            <listitem><para>FullFee – снимать полную абонплату, даже если пользователь был заморожен часть учетного периода. Принимает значения yes и no. Параметр не является обязательным, по умолчанию установлен в no.</para></listitem>
+            <listitem><para>MessagesTimeout — устанавливает время жизни не отправленных сообщений пользователям. Время указывается в сутках. При превышении этого времени сообщение будет удалено, в т.ч. из БД. Если указан 0 то значения не будут удаляться из базы. По умолчанию 0.</para></listitem>
+            <listitem><para>FeeChargeType — регулирует процесс снятия абонплаты. Может принимать значения 0, 1 и 2. При значении 0 абонплата снимается как обычно. При значении 1 абонплата снимается только если баланс пользователя положительный. При значении 2 абонплата снимается только если баланс пользователя больше абонплаты.</para></listitem>
+            <listitem><para>ReconnectOnTariffChange — позволяет выполнить переподключение пользователя при смене тарифа. Может принимать значения yes и no. При указании ReconnectOnTariffChange = yes при смене тарифа пользователя если он был подключен произойдет его отключение и подключение заново. Может быть полезно для управления шейпером.</para></listitem>
+            <listitem><para>Именования направлений в конфигурационном файле должны быть заключены в теги:
+                <programlisting linenumbering="unnumbered">
+                &lt;DirNames&gt;
+                    DirName0 = "ИМЯ НАПРАВЛЕНИЯ"
+                    ...
+                    DirName9 = ПОСЛЕДНЕЕ_НАПРАВЛЕНИЕ
+                &lt;/DirNames&gt;
+                </programlisting>
+                Всего предусмотрено 10 направлений с нумерацией от 0 до 9. Внутри данных тегов указывается названия направлений. Направления, наименование которых состоит из нескольких слов, должны быть заключены в кавычки. Если наименование направления не указано, то система считает что данное направление не используется и не будет производить по нему никаких действий. Пример: DirName0 = Локаль, DirName5 = "Локальные игры". Необходимо заметить, что текущая версия системы требует, чтобы имена направлений были указаны в кодировке KOI8-R. В противном случае пользователи не смогут их прочитать в статистике авторизатора, а администраторы — в конфигураторе.</para></listitem>
+        </itemizedlist>
+        <para>Все модули (кроме Store module), которые необходимо подключить к серверу в момент старта должны идти внутри секции:</para>
+        <programlisting linenumbering="unnumbered">
+        &lt;Modules&gt;
+            &lt;Module [имя модуля]&gt;
+                ПАРАМЕТРЫ_МОДУЛЯ
+            &lt;/Module&gt;
+        &lt;/Modules&gt;
+        </programlisting>
+        <para>Если модуль не имеет настраиваемых параметров, то он все равно должен задаваться в тегах Module … /Module чтобы быть успешно загруженным. Некоторые модули, такие как store module обязательно требуются при старте и без их подключения система не может быть запущена. По умолчанию для указания конфигурации модулей используются отдельные файлы из каталога conf-enabled.d. Для этого используется директива &lt;IncludeFile ПУТЬ_К_ФАЙЛУ&gt;&lt;/IncludeFile&gt;. Одна директива указана в секции &lt;Modules&gt;, а вторая в корне файла конфигурации (для store module).</para>
+        <formalpara>
+            <title>Описание параметров модуля InetAccess (auth_ia) для работы с клиентскими авторизаторами:</title>
+            <itemizedlist mark="opencircle">
+                <listitem><para>Port – параметр, определяющий на каком порту сервер будет принимать обращения авторизаторов клиентов, по умолчанию UserPort=5555.</para></listitem>
+                <listitem><para>UserTimeout – параметр, показывающий серверу, через какое время в секундах клиент будет отключен, если авторизатор не отвечает серверу на запросы. По умолчанию UserTimeout=60. Значение данного параметра должно лежать в диапазоне от 15 до 1200.</para></listitem>
+                <listitem><para>UserDelay – время в секундах, через которое сервер опрашивает клиента. Сервер шлет клиенту запрос подтверждения работы авторизатора, а клиент должен прислать ответ что авторизатор находится в рабочем состоянии. Так же это время, через которое у клиента обновляется статистика, по умолчанию UserDelay=5. Следует заметить что значение UserDelay должно быть в 3…10 раз меньше чем значение UserTimeout и данные значения не могут содержать одинаковые таймауты. Значение данного параметра должно лежать в диапазоне от 5 до 600.</para></listitem>
+                <listitem>
+                    <para>FreeMb – параметр, указывающий серверу что будет передаваться авторизатору клиента от сервера. Данный параметр может принимать следующие значения:</para>
+                    <itemizedlist mark="none">
+                        <listitem><para>0 - количество бесплатных мегабайт в пересчете на цену нулевого направления;</para></listitem>
+                        <listitem><para>1 - количество бесплатных мегабайт в пересчете на цену первого направления;</para></listitem>
+                        <listitem><para>2 - количество бесплатных мегабайт в пересчете на цену второго направления;</para></listitem>
+                        <listitem><para>...</para></listitem>
+                        <listitem><para>9 - количество бесплатных мегабайт в пересчете на цену девятого направления;</para></listitem>
+                        <listitem><para>cash - количество денег на которые клиент может бесплатно работать;</para></listitem>
+                        <listitem><para>none - ничего не передавать.</para></listitem>
+                    </itemizedlist>
+                </listitem>
+                <listitem><para></para></listitem>
+                <listitem><para></para></listitem>
+                <listitem><para></para></listitem>
+                <listitem><para></para></listitem>
+                <listitem><para></para></listitem>
+                <listitem><para></para></listitem>
+                <listitem><para></para></listitem>
+            </itemizedlist>
+        </formalpara>
+    </simplesect>
 </chapter>
index cfea6159f518b0513c9f13454f4c9efb1831e0c1..f09404181d0c29095dc9ff70d909b0a2c161d875 100644 (file)
@@ -5,7 +5,8 @@
 "xmlns:xi  CDATA  #FIXED 'http://www.w3.org/2001/XInclude'">
 ]>
 <book xmlns="http://docbook.org/ns/docbook"
-      xmlns:xi="http://www.w3.org/2001/XInclude" version="5.0">
+      xmlns:xi="http://www.w3.org/2001/XInclude" version="5.0"
+      lang="ru">
     <info>
         <title>Stargazer - руководство пользователя</title>
         <author>
index 954f14224b6aa5de8c8b6c06563ef96e668bba77..4108fbdd3327242836f2134a55f2c992a604817f 100755 (executable)
@@ -84,28 +84,28 @@ else
     SHELL="/usr/local/bin/bash"
 fi
 
-echo -n "Checking gcc... "
-gcc --version > /dev/null 2> /dev/null
+echo -n "Checking CC... "
+$CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "gcc not found"
+    echo "$CC not found"
     exit;
 fi
 echo "found"
-echo -n "Checking g++... "
-g++ --version > /dev/null 2> /dev/null
+echo -n "Checking CXX... "
+$CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "g++ not found"
+    echo "$CXX not found"
     exit;
 fi
 echo "found"
 
 echo -n "Checking endianess... "
 echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS -L/usr/lib/mysql -L/usr/local/lib/mysql build_check.c -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $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!"
@@ -127,7 +127,7 @@ fi
 rm -f fake
 
 echo -n "Checking for -lfbclient... "
-gcc $CXXFLAGS $LDFLAGS build_check.c -lfbclient $LIB_THREAD -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -lfbclient $LIB_THREAD -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_FBCLIENT=no
@@ -144,7 +144,7 @@ if [ $? != 0 ]
 then
     echo "no";
     echo -n "Checking for -lmysqlclient... "
-    gcc $CXXFLAGS $LDFLAGS build_check.c -lmysqlclient_r $LIB_THREAD -o fake > /dev/null 2> /dev/null
+    $CC $CXXFLAGS $LDFLAGS build_check.c -lmysqlclient_r $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_MYSQLCLIENT=no
@@ -185,7 +185,7 @@ if [ $? != 0 ]
 then
     echo "no";
     echo -n "Checking for -lpq... "
-    gcc $CXXFLAGS $LDFLAGS build_check.c -lpq $LIB_THREAD -o fake > /dev/null 2> /dev/null
+    $CC $CXXFLAGS $LDFLAGS build_check.c -lpq $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_PQ=no
index b01f41f5811811439b753834b215a8777862d978..815933340fc92e9c082abcb2a1ad295a49dcbd2b 100755 (executable)
@@ -89,28 +89,28 @@ else
     CXXFLAGS="$CXXFLAGS -DHAVE_CLOSEFROM"
 fi
 
-echo -n "Checking gcc... "
-gcc --version > /dev/null 2> /dev/null
+echo -n "Checking CC... "
+$CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "gcc not found"
+    echo "$CC not found"
     exit;
 fi
 echo "found"
-echo -n "Checking g++... "
-g++ --version > /dev/null 2> /dev/null
+echo -n "Checking CXX... "
+$CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "g++ not found"
+    echo "$CXX not found"
     exit;
 fi
 echo "found"
 
 echo -n "Checking endianess... "
 echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
index a91d70c805cbbf843f054daf158bee788817288d..88fcef0b90fd38901f5372ee91d77dc1063fe236 100755 (executable)
@@ -94,28 +94,28 @@ else
     SHELL="/usr/local/bin/bash"
 fi
 
-echo -n "Checking gcc... "
-gcc --version > /dev/null 2> /dev/null
+echo -n "Checking CC... "
+$CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "gcc not found"
+    echo "$CC not found"
     exit;
 fi
 echo "found"
-echo -n "Checking g++... "
-g++ --version > /dev/null 2> /dev/null
+echo -n "Checking CXX... "
+$CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "g++ not found"
+    echo "$CXX not found"
     exit;
 fi
 echo "found"
 
 echo -n "Checking endianess... "
 echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
index 7103cf305ca546d9b7150781ebdd527ad79b889c..81a897f967a8b99a2b290997f42fbe7bad95cfda 100755 (executable)
@@ -92,28 +92,28 @@ else
     SHELL="/usr/local/bin/bash"
 fi
 
-echo -n "Checking gcc... "
-gcc --version > /dev/null 2> /dev/null
+echo -n "Checking CC... "
+$CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "gcc not found"
+    echo "$CC not found"
     exit;
 fi
 echo "found"
-echo -n "Checking g++... "
-g++ --version > /dev/null 2> /dev/null
+echo -n "Checking CXX... "
+$CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "g++ not found"
+    echo "$CXX not found"
     exit;
 fi
 echo "found"
 
 echo -n "Checking endianess... "
 echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
index e96770280bc0fd48664f72dc098a53a13d27ed39..c4f254d2b948f2b02fa80c6c97694310e163c0a6 100755 (executable)
@@ -96,28 +96,28 @@ else
     SHELL="/usr/local/bin/bash"
 fi
 
-echo -n "Checking gcc... "
-gcc --version > /dev/null 2> /dev/null
+echo -n "Checking CC... "
+$CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "gcc not found"
+    echo "$CC not found"
     exit;
 fi
 echo "found"
-echo -n "Checking g++... "
-g++ --version > /dev/null 2> /dev/null
+echo -n "Checking CXX... "
+$CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "g++ not found"
+    echo "$CXX not found"
     exit;
 fi
 echo "found"
 
 echo -n "Checking endianess... "
 echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
@@ -140,7 +140,7 @@ rm -f fake
 rm -f build_check.c
 
 echo -n "Checking for -lfbclient... "
-gcc $CXXFLAGS $LDFLAGS build_check.c -lfbclient $LIB_THREAD -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -lfbclient $LIB_THREAD -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_FBCLIENT=no
@@ -157,7 +157,7 @@ if [ $? != 0 ]
 then
     echo "no";
     echo -n "Checking for -lmysqlclient... "
-    gcc $CXXFLAGS $LDFLAGS build_check.c -lmysqlclient_r $LIB_THREAD -o fake > /dev/null 2> /dev/null
+    $CC $CXXFLAGS $LDFLAGS build_check.c -lmysqlclient_r $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_MYSQLCLIENT=no
@@ -198,7 +198,7 @@ if [ $? != 0 ]
 then
     echo "no";
     echo -n "Checking for -lpq... "
-    gcc $CXXFLAGS $LDFLAGS build_check.c -lpq $LIB_THREAD -o fake > /dev/null 2> /dev/null
+    $CC $CXXFLAGS $LDFLAGS build_check.c -lpq $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_PQ=no
index 102b95acc620e179a5ae3d6e49b890a82c8d011d..c0cb49b62cf2a442cb1c71f24693441e3ab358d2 100755 (executable)
@@ -91,28 +91,28 @@ else
     SHELL="/usr/local/bin/bash"
 fi
 
-echo -n "Checking gcc... "
-gcc --version > /dev/null 2> /dev/null
+echo -n "Checking CC... "
+$CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "gcc not found"
+    echo "$CC not found"
     exit;
 fi
 echo "found"
-echo -n "Checking g++... "
-g++ --version > /dev/null 2> /dev/null
+echo -n "Checking CXX... "
+$CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "g++ not found"
+    echo "$CXX not found"
     exit;
 fi
 echo "found"
 
 echo -n "Checking endianess... "
 echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
@@ -135,7 +135,7 @@ rm -f fake
 
 echo -n "Checking for -lexpat... "
 echo "int main() { return 0; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_EXPAT=no
index 660899d753a1e48dfafd3882d179f971964622ac..77924a9c45b34e2dbd6662dfc306434047409c4d 100755 (executable)
@@ -91,28 +91,28 @@ else
     SHELL="/usr/local/bin/bash"
 fi
 
-echo -n "Checking gcc... "
-gcc --version > /dev/null 2> /dev/null
+echo -n "Checking CC... "
+$CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "gcc not found"
+    echo "$CC not found"
     exit;
 fi
 echo "found"
-echo -n "Checking g++... "
-g++ --version > /dev/null 2> /dev/null
+echo -n "Checking CXX... "
+$CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "g++ not found"
+    echo "$CXX not found"
     exit;
 fi
 echo "found"
 
 echo -n "Checking endianess... "
 echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
@@ -135,7 +135,7 @@ rm -f fake
 
 echo -n "Checking for -lexpat... "
 echo "int main() { return 0; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_EXPAT=no
index 3d5574c742cf9dbc59e0b1ade6f35a26adb9c55b..7f1b301fc3ee920d75c9b13677323db2bc77a3fb 100644 (file)
 
 //-----------------------------------------------------------------------------
 ADMIN_IMPL::ADMIN_IMPL()
-    : conf(),
+    : ADMIN(),
+      conf(),
       ip(0),
       WriteServLog(GetStgLogger())
 {
 }
 //-----------------------------------------------------------------------------
 ADMIN_IMPL::ADMIN_IMPL(const ADMIN_CONF & ac)
-    : conf(ac),
+    : ADMIN(),
+      conf(ac),
       ip(0),
       WriteServLog(GetStgLogger())
 {
@@ -49,7 +51,8 @@ ADMIN_IMPL::ADMIN_IMPL(const ADMIN_CONF & ac)
 ADMIN_IMPL::ADMIN_IMPL(const PRIV & priv,
                        const std::string & login,
                        const std::string & password)
-    : conf(priv, login, password),
+    : ADMIN(),
+      conf(priv, login, password),
       ip(0),
       WriteServLog(GetStgLogger())
 {
index 4980234acc302a5734fa5afa478ab16445478bcc..3fe2c10b6c6c423629ee25ea2bd416a921449fb9 100644 (file)
@@ -42,7 +42,8 @@ using namespace std;
 
 //-----------------------------------------------------------------------------
 ADMINS_IMPL::ADMINS_IMPL(STORE * st)
-    : stg(0xFFFF, "@stargazer", ""),
+    : ADMINS(),
+      stg(0xFFFF, "@stargazer", ""),
       noAdmin(0xFFFF, "NO-ADMIN", ""),
       data(),
       store(st),
index 1779160b5f504f9915c145e6b9e158e4de621f74..c2b171a498134d9d3bd9e7364a4626e9237e2586 100755 (executable)
@@ -158,28 +158,28 @@ else
     SHELL="/usr/local/bin/bash"
 fi
 
-echo -n "Checking gcc... "
-gcc --version > /dev/null 2> /dev/null
+echo -n "Checking CC... "
+$CC --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "gcc not found"
+    echo "$CC not found"
     exit;
 fi
 echo "found"
-echo -n "Checking g++... "
-g++ --version > /dev/null 2> /dev/null
+echo -n "Checking CXX... "
+$CXX --version > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     echo "FAIL!"
-    echo "g++ not found"
+    echo "$CXX not found"
     exit;
 fi
 echo "found"
 
 echo -n "Checking endianess... "
 echo "int main() { int probe = 0x00000001; return *(char *)&probe; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS build_check.c -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -o fake
 if [ $? != 0 ]
 then
     echo "FAIL!"
@@ -202,7 +202,7 @@ rm -f fake
 
 echo -n "Checking for -lexpat... "
 echo "int main() { return 0; }" > build_check.c
-gcc $CXXFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -lexpat -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_EXPAT=no
@@ -214,7 +214,7 @@ fi
 rm -f fake
 
 echo -n "Checking for -lfbclient... "
-gcc $CXXFLAGS $LDFLAGS build_check.c -lfbclient $LIB_THREAD -o fake > /dev/null 2> /dev/null
+$CC $CXXFLAGS $LDFLAGS build_check.c -lfbclient $LIB_THREAD -o fake > /dev/null 2> /dev/null
 if [ $? != 0 ]
 then
     CHECK_FBCLIENT=no
@@ -231,7 +231,7 @@ if [ $? != 0 ]
 then
     echo "no";
     echo -n "Checking for -lmysqlclient... "
-    gcc $CXXFLAGS $LDFLAGS build_check.c -lmysqlclient_r $LIB_THREAD -o fake > /dev/null 2> /dev/null
+    $CC $CXXFLAGS $LDFLAGS build_check.c -lmysqlclient_r $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_MYSQLCLIENT=no
@@ -272,7 +272,7 @@ if [ $? != 0 ]
 then
     echo "no";
     echo -n "Checking for -lpq... "
-    gcc $CXXFLAGS $LDFLAGS build_check.c -lpq $LIB_THREAD -o fake > /dev/null 2> /dev/null
+    $CC $CXXFLAGS $LDFLAGS build_check.c -lpq $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_PQ=no
@@ -311,7 +311,7 @@ if [ $? != 0 ]
 then
     echo "no";
     echo -n "Checking for -lxmlrpc... "
-    gcc $CXXFLAGS $LDFLAGS build_check.c -lxmlrpc $LIB_THREAD -o fake > /dev/null 2> /dev/null
+    $CC $CXXFLAGS $LDFLAGS build_check.c -lxmlrpc $LIB_THREAD -o fake > /dev/null 2> /dev/null
     if [ $? != 0 ]
     then
         CHECK_XMLRPC=no
index 99b629ae98e57edc2092d01ac115548bfdce7223..738d75ccf4c02553d01a307547a23e27a7af210d 100644 (file)
@@ -3,35 +3,35 @@
     # Parameter: required
     # Value: IP address or DNS name
     # Default: localhost
-    server = 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 = /var/stg/stargazer.fdb
 
     # Database username
     # Parameter: required
     # Value: any, supported by database
     # Default: stg
-    user = stg
+    User = stg
 
     # Database password
     # Parameter: required
     # 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
-</StoreModule>
\ No newline at end of file
+    LockResolution = wait
+</StoreModule>
index 4cd2c0dedb1cbad2aba0c192b40c92a0e4118261..a5cc418046d9d56cb7543f2451eab761548ae407 100644 (file)
@@ -3,23 +3,23 @@
     # Parameter: required
     # Value: IP address or DNS name
     # Default: localhost
-    server = localhost
+    Server = localhost
 
     # Database name
     # Parameter: required
     # Value: any, supported by database
     # Default: stg
-    database = stg
+    Database = stg
 
     # Database username
     # Parameter: required
     # Value: any, supported by database
     # Default: stg
-    user = stg
+    User = stg
 
     # Database password
     # Parameter: required
     # Value: any, supported by database
     # Default: 123456
-    password = 123456
+    Password = 123456
 </StoreModule>
index 5132c8fca0bd4c1c0d5341ec165c1c7218861d9f..153265845091dfe2d52b4296ba4c0b95c7fa4720 100644 (file)
@@ -3,29 +3,29 @@
     # Parameter: required
     # Value: IP address or DNS name
     # Default: localhost
-    server = localhost
+    Server = localhost
 
     # Database name
     # Parameter: required
     # Value: any, supported by database
     # Default: stargazer
-    database = stargazer
+    Database = stargazer
 
     # Database username
     # Parameter: mandatory
     # Value: any, supported by database
     # Default: stg
-    user = stg
+    User = stg
 
     # Database password
     # Parameter: required
     # Value: any, supported by database
     # Default: 123456
-    password = 123456
+    Password = 123456
 
     # Number of tries to reconnect
     # Parameter: optional
     # Value: positive integer
     # Default: 3
-    # retries = 3
+    # Retries = 3
 </StoreModule>
index 99b629ae98e57edc2092d01ac115548bfdce7223..738d75ccf4c02553d01a307547a23e27a7af210d 100644 (file)
@@ -3,35 +3,35 @@
     # Parameter: required
     # Value: IP address or DNS name
     # Default: localhost
-    server = 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 = /var/stg/stargazer.fdb
 
     # Database username
     # Parameter: required
     # Value: any, supported by database
     # Default: stg
-    user = stg
+    User = stg
 
     # Database password
     # Parameter: required
     # 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
-</StoreModule>
\ No newline at end of file
+    LockResolution = wait
+</StoreModule>
index 4cd2c0dedb1cbad2aba0c192b40c92a0e4118261..a5cc418046d9d56cb7543f2451eab761548ae407 100644 (file)
@@ -3,23 +3,23 @@
     # Parameter: required
     # Value: IP address or DNS name
     # Default: localhost
-    server = localhost
+    Server = localhost
 
     # Database name
     # Parameter: required
     # Value: any, supported by database
     # Default: stg
-    database = stg
+    Database = stg
 
     # Database username
     # Parameter: required
     # Value: any, supported by database
     # Default: stg
-    user = stg
+    User = stg
 
     # Database password
     # Parameter: required
     # Value: any, supported by database
     # Default: 123456
-    password = 123456
+    Password = 123456
 </StoreModule>
index 5132c8fca0bd4c1c0d5341ec165c1c7218861d9f..153265845091dfe2d52b4296ba4c0b95c7fa4720 100644 (file)
@@ -3,29 +3,29 @@
     # Parameter: required
     # Value: IP address or DNS name
     # Default: localhost
-    server = localhost
+    Server = localhost
 
     # Database name
     # Parameter: required
     # Value: any, supported by database
     # Default: stargazer
-    database = stargazer
+    Database = stargazer
 
     # Database username
     # Parameter: mandatory
     # Value: any, supported by database
     # Default: stg
-    user = stg
+    User = stg
 
     # Database password
     # Parameter: required
     # Value: any, supported by database
     # Default: 123456
-    password = 123456
+    Password = 123456
 
     # Number of tries to reconnect
     # Parameter: optional
     # Value: positive integer
     # Default: 3
-    # retries = 3
+    # Retries = 3
 </StoreModule>
index 64d1cda28289ed7a8e3ab74003332e6dff75fcb9..5014c5cf18da6057234fd8e9f211c4a534ba93d2 100644 (file)
@@ -35,6 +35,7 @@
 #include <csignal>
 #include <cerrno>
 #include <cstdio>
+#include <cstdlib> // srandom, exit
 #include <fstream>
 #include <vector>
 #include <set>
index a4890e2c36a00a6f905ecbf9e218ce4c7d6f6ec3..c2c544fdd69374e1f194b8d2666a404833bee6dd 100644 (file)
@@ -1,3 +1,5 @@
+#include <unistd.h> // TODO: usleep
+
 #include <cstdlib>
 #include <csignal>
 
index 12c00a402b5c9407253c85742bb50d7494d5fecf..410e7aa8177515242a134b31dae5ff20d234edf8 100644 (file)
@@ -29,6 +29,7 @@
 
 #include <csignal>
 #include <cassert>
+#include <cstdlib>
 #include <algorithm>
 
 #include "stg/common.h"
index f9135a1ae8f959b1a362ca85e22bc8b524406083..d197efc40c32877bf1852982b2f34a8df7a15d93 100644 (file)
@@ -40,7 +40,8 @@ using namespace std;
 
 //-----------------------------------------------------------------------------
 SETTINGS_IMPL::SETTINGS_IMPL()
-    : strError(),
+    : SETTINGS(),
+      strError(),
       modulesPath("/usr/lib/stg"),
       dirName(DIR_NUM),
       confDir("/etc/stargazer"),
@@ -72,7 +73,8 @@ SETTINGS_IMPL::SETTINGS_IMPL()
 }
 //-----------------------------------------------------------------------------
 SETTINGS_IMPL::SETTINGS_IMPL(const std::string & cd)
-    : strError(),
+    : SETTINGS(),
+      strError(),
       modulesPath("/usr/lib/stg"),
       dirName(DIR_NUM),
       confDir(cd),
@@ -104,7 +106,8 @@ SETTINGS_IMPL::SETTINGS_IMPL(const std::string & cd)
 }
 //-----------------------------------------------------------------------------
 SETTINGS_IMPL::SETTINGS_IMPL(const SETTINGS_IMPL & rval)
-    : strError(),
+    : SETTINGS(),
+      strError(),
       modulesPath(rval.modulesPath),
       dirName(rval.dirName),
       confDir(rval.confDir),
index b8d0a776d729407a206cebe5d5110b1ab99933a6..cdfd711243f8d8d5fbe34588384f71287384a8d7 100644 (file)
 class TARIFF_IMPL : public TARIFF {
 public:
     TARIFF_IMPL()
-        : tariffData()
+        : TARIFF(),
+          tariffData()
     {};
     TARIFF_IMPL(const std::string & name)
-        : tariffData(name)
+        : TARIFF(),
+          tariffData(name)
     {};
     TARIFF_IMPL(const TARIFF_DATA & td)
-        : tariffData(td)
+        : TARIFF(),
+          tariffData(td)
     {};
     TARIFF_IMPL(const TARIFF_IMPL & t)
-        : tariffData(t.tariffData)
+        : TARIFF(),
+          tariffData(t.tariffData)
     {};
     virtual ~TARIFF_IMPL() {};
 
index d6d6b36ae66a5ee97976194fd9cbb0894cee22f1..d2ea7c9a049ae9c2d606deed6b26c2aa9621db8c 100644 (file)
@@ -42,7 +42,8 @@ using namespace std;
 
 //-----------------------------------------------------------------------------
 TARIFFS_IMPL::TARIFFS_IMPL(STORE * st)
-    : tariffs(),
+    : TARIFFS(),
+      tariffs(),
       store(st),
       WriteServLog(GetStgLogger()),
       strError(),
index 424cc09468f949b5ed5c13b87a8a2c1b4eea2b1b..237799f5e22a56fc083419ff2aadb9726dd0508c 100644 (file)
@@ -37,6 +37,7 @@
 #include <csignal>
 #include <cassert>
 #include <cstdio> // fopen and similar
+#include <cstdlib> // strtol
 
 #include "stg/common.h"
 #include "stg/locker.h"
@@ -57,7 +58,8 @@ tcp = 0, udp, icmp, tcp_udp, all
 
 //-----------------------------------------------------------------------------
 TRAFFCOUNTER_IMPL::TRAFFCOUNTER_IMPL(USERS_IMPL * u, const std::string & fn)
-    : WriteServLog(GetStgLogger()),
+    : TRAFFCOUNTER(),
+      WriteServLog(GetStgLogger()),
       rulesFileName(fn),
       monitoring(false),
       users(u),
index e8d326d2c3d72586bc6293007ca584df1c8b09dc..ec271442bd428f7ebae398e195daad9d098ed99c 100644 (file)
@@ -54,7 +54,8 @@ USER_IMPL::USER_IMPL(const SETTINGS * s,
            const TARIFFS * t,
            const ADMIN * a,
            const USERS * u)
-    : users(u),
+    : USER(),
+      users(u),
       property(s->GetScriptsDir()),
       WriteServLog(GetStgLogger()),
       login(),
@@ -137,7 +138,8 @@ USER_IMPL::USER_IMPL(const SETTINGS_IMPL * s,
            const TARIFFS * t,
            const ADMIN * a,
            const USERS * u)
-    : users(u),
+    : USER(),
+      users(u),
       property(s->GetScriptsDir()),
       WriteServLog(GetStgLogger()),
       login(),
@@ -217,7 +219,8 @@ pthread_mutex_init(&mutex, &attr);
 #endif
 //-----------------------------------------------------------------------------
 USER_IMPL::USER_IMPL(const USER_IMPL & u)
-    : users(u.users),
+    : USER(),
+      users(u.users),
       property(u.settings->GetScriptsDir()),
       WriteServLog(GetStgLogger()),
       login(u.login),
index d0e5364463ea12d0a1aae688d5cf24209833eb01..febd90f5575d2ba2f4a9f829cea12d2a180e2604 100644 (file)
@@ -53,7 +53,8 @@ extern const volatile time_t stgTime;
 
 //-----------------------------------------------------------------------------
 USERS_IMPL::USERS_IMPL(SETTINGS_IMPL * s, STORE * st, TARIFFS * t, const ADMIN * sa)
-    : users(),
+    : USERS(),
+      users(),
       usersToDelete(),
       userIPNotifiersBefore(),
       userIPNotifiersAfter(),
@@ -274,7 +275,7 @@ usersList.clear();
 if (store->GetUsersList(&usersList) < 0)
     {
     WriteServLog(store->GetStrError().c_str());
-    exit(1);
+    return -1;
     }
 
 user_iter ui;