]> git.stg.codes - stg.git/commitdiff
Merge branch 'master' into full-month-stats
authorMaxim Mamontov <faust.madf@gmail.com>
Mon, 6 Feb 2012 08:48:45 +0000 (10:48 +0200)
committerMaxim Mamontov <faust.madf@gmail.com>
Mon, 6 Feb 2012 08:48:45 +0000 (10:48 +0200)
64 files changed:
doc/help/book/images/administrators.png [new file with mode: 0644]
doc/help/book/images/autoupdate.png [new file with mode: 0644]
doc/help/book/images/change-in-tariff-user.png [new file with mode: 0644]
doc/help/book/images/coloring.png [new file with mode: 0644]
doc/help/book/images/confirm-delete-user.png [new file with mode: 0644]
doc/help/book/images/create-new-user.png [new file with mode: 0644]
doc/help/book/images/data-editor.png [new file with mode: 0644]
doc/help/book/images/delete-user.png [new file with mode: 0644]
doc/help/book/images/display-statistics-floating.png [new file with mode: 0644]
doc/help/book/images/dowload.png [new file with mode: 0644]
doc/help/book/images/editor-rate-plans.png [new file with mode: 0644]
doc/help/book/images/error.png [new file with mode: 0644]
doc/help/book/images/filter.png [new file with mode: 0644]
doc/help/book/images/firebird-erd.png [new file with mode: 0644]
doc/help/book/images/inform-admin.png [new file with mode: 0644]
doc/help/book/images/information.png [new file with mode: 0644]
doc/help/book/images/informserver.png [new file with mode: 0644]
doc/help/book/images/interface.png [new file with mode: 0644]
doc/help/book/images/internet-access.png [new file with mode: 0644]
doc/help/book/images/ip-search.png [new file with mode: 0644]
doc/help/book/images/key-admin.png [new file with mode: 0644]
doc/help/book/images/key-settingsconfig.png [new file with mode: 0644]
doc/help/book/images/key.png [new file with mode: 0644]
doc/help/book/images/login.png [new file with mode: 0644]
doc/help/book/images/messages.png [new file with mode: 0644]
doc/help/book/images/network-settings.png [new file with mode: 0644]
doc/help/book/images/new-customer.png [new file with mode: 0644]
doc/help/book/images/notification-letters.png [new file with mode: 0644]
doc/help/book/images/of-authorities.png [new file with mode: 0644]
doc/help/book/images/other-settings.png [new file with mode: 0644]
doc/help/book/images/send-message.png [new file with mode: 0644]
doc/help/book/images/set-of-authorities.png [new file with mode: 0644]
doc/help/book/images/settings-key.png [new file with mode: 0644]
doc/help/book/images/sgconfig-main.png
doc/help/book/images/statistics.png [new file with mode: 0644]
doc/help/book/images/tariff-plans.png [new file with mode: 0644]
doc/help/book/images/tariff.png [new file with mode: 0644]
doc/help/book/images/up-down-option.png [new file with mode: 0644]
doc/help/book/images/up-down.png [new file with mode: 0644]
doc/help/book/images/update.png [new file with mode: 0644]
doc/help/book/images/upload-dowload.png [new file with mode: 0644]
doc/help/book/images/user-button.png [new file with mode: 0644]
doc/help/book/images/username.png [new file with mode: 0644]
doc/help/book/images/view-letter.png [new file with mode: 0644]
doc/help/book/images/window-of-authorities.png [new file with mode: 0644]
doc/help/ch10.xml
doc/help/ch11.xml
doc/help/ch12.xml
doc/help/ch13.xml [new file with mode: 0644]
doc/help/ch2.xml
doc/help/ch3.xml
doc/help/ch4.xml
doc/help/ch5.xml
doc/help/ch6.xml
doc/help/ch8.xml
doc/help/ch9.xml
doc/help/help.xml
projects/stargazer/plugins/configuration/sgconfig/rsconf.cpp
projects/stargazer/plugins/other/rscript/rscript.cpp
projects/stargazer/plugins/other/smux/handlers.cpp
projects/stargazer/plugins/other/smux/smux.cpp
projects/stargazer/plugins/other/smux/smux.h
projects/stargazer/plugins/other/smux/tables.cpp
stglibs/ia.lib/ia.cpp

diff --git a/doc/help/book/images/administrators.png b/doc/help/book/images/administrators.png
new file mode 100644 (file)
index 0000000..b6e6b39
Binary files /dev/null and b/doc/help/book/images/administrators.png differ
diff --git a/doc/help/book/images/autoupdate.png b/doc/help/book/images/autoupdate.png
new file mode 100644 (file)
index 0000000..ef4e976
Binary files /dev/null and b/doc/help/book/images/autoupdate.png differ
diff --git a/doc/help/book/images/change-in-tariff-user.png b/doc/help/book/images/change-in-tariff-user.png
new file mode 100644 (file)
index 0000000..1869902
Binary files /dev/null and b/doc/help/book/images/change-in-tariff-user.png differ
diff --git a/doc/help/book/images/coloring.png b/doc/help/book/images/coloring.png
new file mode 100644 (file)
index 0000000..8813f71
Binary files /dev/null and b/doc/help/book/images/coloring.png differ
diff --git a/doc/help/book/images/confirm-delete-user.png b/doc/help/book/images/confirm-delete-user.png
new file mode 100644 (file)
index 0000000..ccf108a
Binary files /dev/null and b/doc/help/book/images/confirm-delete-user.png differ
diff --git a/doc/help/book/images/create-new-user.png b/doc/help/book/images/create-new-user.png
new file mode 100644 (file)
index 0000000..65eba71
Binary files /dev/null and b/doc/help/book/images/create-new-user.png differ
diff --git a/doc/help/book/images/data-editor.png b/doc/help/book/images/data-editor.png
new file mode 100644 (file)
index 0000000..7e86600
Binary files /dev/null and b/doc/help/book/images/data-editor.png differ
diff --git a/doc/help/book/images/delete-user.png b/doc/help/book/images/delete-user.png
new file mode 100644 (file)
index 0000000..f526e78
Binary files /dev/null and b/doc/help/book/images/delete-user.png differ
diff --git a/doc/help/book/images/display-statistics-floating.png b/doc/help/book/images/display-statistics-floating.png
new file mode 100644 (file)
index 0000000..aaba6d9
Binary files /dev/null and b/doc/help/book/images/display-statistics-floating.png differ
diff --git a/doc/help/book/images/dowload.png b/doc/help/book/images/dowload.png
new file mode 100644 (file)
index 0000000..2e59cdb
Binary files /dev/null and b/doc/help/book/images/dowload.png differ
diff --git a/doc/help/book/images/editor-rate-plans.png b/doc/help/book/images/editor-rate-plans.png
new file mode 100644 (file)
index 0000000..a46bcd6
Binary files /dev/null and b/doc/help/book/images/editor-rate-plans.png differ
diff --git a/doc/help/book/images/error.png b/doc/help/book/images/error.png
new file mode 100644 (file)
index 0000000..548cebd
Binary files /dev/null and b/doc/help/book/images/error.png differ
diff --git a/doc/help/book/images/filter.png b/doc/help/book/images/filter.png
new file mode 100644 (file)
index 0000000..59cadd6
Binary files /dev/null and b/doc/help/book/images/filter.png differ
diff --git a/doc/help/book/images/firebird-erd.png b/doc/help/book/images/firebird-erd.png
new file mode 100644 (file)
index 0000000..b114ec5
Binary files /dev/null and b/doc/help/book/images/firebird-erd.png differ
diff --git a/doc/help/book/images/inform-admin.png b/doc/help/book/images/inform-admin.png
new file mode 100644 (file)
index 0000000..35d45f8
Binary files /dev/null and b/doc/help/book/images/inform-admin.png differ
diff --git a/doc/help/book/images/information.png b/doc/help/book/images/information.png
new file mode 100644 (file)
index 0000000..629b9ef
Binary files /dev/null and b/doc/help/book/images/information.png differ
diff --git a/doc/help/book/images/informserver.png b/doc/help/book/images/informserver.png
new file mode 100644 (file)
index 0000000..570f9ad
Binary files /dev/null and b/doc/help/book/images/informserver.png differ
diff --git a/doc/help/book/images/interface.png b/doc/help/book/images/interface.png
new file mode 100644 (file)
index 0000000..fb1d200
Binary files /dev/null and b/doc/help/book/images/interface.png differ
diff --git a/doc/help/book/images/internet-access.png b/doc/help/book/images/internet-access.png
new file mode 100644 (file)
index 0000000..86d02cd
Binary files /dev/null and b/doc/help/book/images/internet-access.png differ
diff --git a/doc/help/book/images/ip-search.png b/doc/help/book/images/ip-search.png
new file mode 100644 (file)
index 0000000..579d2c8
Binary files /dev/null and b/doc/help/book/images/ip-search.png differ
diff --git a/doc/help/book/images/key-admin.png b/doc/help/book/images/key-admin.png
new file mode 100644 (file)
index 0000000..7220623
Binary files /dev/null and b/doc/help/book/images/key-admin.png differ
diff --git a/doc/help/book/images/key-settingsconfig.png b/doc/help/book/images/key-settingsconfig.png
new file mode 100644 (file)
index 0000000..7ec9010
Binary files /dev/null and b/doc/help/book/images/key-settingsconfig.png differ
diff --git a/doc/help/book/images/key.png b/doc/help/book/images/key.png
new file mode 100644 (file)
index 0000000..5a5f3d8
Binary files /dev/null and b/doc/help/book/images/key.png differ
diff --git a/doc/help/book/images/login.png b/doc/help/book/images/login.png
new file mode 100644 (file)
index 0000000..8950f95
Binary files /dev/null and b/doc/help/book/images/login.png differ
diff --git a/doc/help/book/images/messages.png b/doc/help/book/images/messages.png
new file mode 100644 (file)
index 0000000..1b07d88
Binary files /dev/null and b/doc/help/book/images/messages.png differ
diff --git a/doc/help/book/images/network-settings.png b/doc/help/book/images/network-settings.png
new file mode 100644 (file)
index 0000000..66f182e
Binary files /dev/null and b/doc/help/book/images/network-settings.png differ
diff --git a/doc/help/book/images/new-customer.png b/doc/help/book/images/new-customer.png
new file mode 100644 (file)
index 0000000..79e2c6e
Binary files /dev/null and b/doc/help/book/images/new-customer.png differ
diff --git a/doc/help/book/images/notification-letters.png b/doc/help/book/images/notification-letters.png
new file mode 100644 (file)
index 0000000..51b9ccd
Binary files /dev/null and b/doc/help/book/images/notification-letters.png differ
diff --git a/doc/help/book/images/of-authorities.png b/doc/help/book/images/of-authorities.png
new file mode 100644 (file)
index 0000000..dcfe756
Binary files /dev/null and b/doc/help/book/images/of-authorities.png differ
diff --git a/doc/help/book/images/other-settings.png b/doc/help/book/images/other-settings.png
new file mode 100644 (file)
index 0000000..391cb8d
Binary files /dev/null and b/doc/help/book/images/other-settings.png differ
diff --git a/doc/help/book/images/send-message.png b/doc/help/book/images/send-message.png
new file mode 100644 (file)
index 0000000..575434a
Binary files /dev/null and b/doc/help/book/images/send-message.png differ
diff --git a/doc/help/book/images/set-of-authorities.png b/doc/help/book/images/set-of-authorities.png
new file mode 100644 (file)
index 0000000..e56029a
Binary files /dev/null and b/doc/help/book/images/set-of-authorities.png differ
diff --git a/doc/help/book/images/settings-key.png b/doc/help/book/images/settings-key.png
new file mode 100644 (file)
index 0000000..5638b9b
Binary files /dev/null and b/doc/help/book/images/settings-key.png differ
index fd0eb116432927ebc7b02abbb7b5ad5126221a18..c4dfbbfff14622fa42d99725c9825b189ee3dfbb 100644 (file)
Binary files a/doc/help/book/images/sgconfig-main.png and b/doc/help/book/images/sgconfig-main.png differ
diff --git a/doc/help/book/images/statistics.png b/doc/help/book/images/statistics.png
new file mode 100644 (file)
index 0000000..733cd06
Binary files /dev/null and b/doc/help/book/images/statistics.png differ
diff --git a/doc/help/book/images/tariff-plans.png b/doc/help/book/images/tariff-plans.png
new file mode 100644 (file)
index 0000000..5756817
Binary files /dev/null and b/doc/help/book/images/tariff-plans.png differ
diff --git a/doc/help/book/images/tariff.png b/doc/help/book/images/tariff.png
new file mode 100644 (file)
index 0000000..de049e5
Binary files /dev/null and b/doc/help/book/images/tariff.png differ
diff --git a/doc/help/book/images/up-down-option.png b/doc/help/book/images/up-down-option.png
new file mode 100644 (file)
index 0000000..ffa4b9e
Binary files /dev/null and b/doc/help/book/images/up-down-option.png differ
diff --git a/doc/help/book/images/up-down.png b/doc/help/book/images/up-down.png
new file mode 100644 (file)
index 0000000..fba0144
Binary files /dev/null and b/doc/help/book/images/up-down.png differ
diff --git a/doc/help/book/images/update.png b/doc/help/book/images/update.png
new file mode 100644 (file)
index 0000000..dda7bf4
Binary files /dev/null and b/doc/help/book/images/update.png differ
diff --git a/doc/help/book/images/upload-dowload.png b/doc/help/book/images/upload-dowload.png
new file mode 100644 (file)
index 0000000..826d37f
Binary files /dev/null and b/doc/help/book/images/upload-dowload.png differ
diff --git a/doc/help/book/images/user-button.png b/doc/help/book/images/user-button.png
new file mode 100644 (file)
index 0000000..ffbd164
Binary files /dev/null and b/doc/help/book/images/user-button.png differ
diff --git a/doc/help/book/images/username.png b/doc/help/book/images/username.png
new file mode 100644 (file)
index 0000000..02a4bf7
Binary files /dev/null and b/doc/help/book/images/username.png differ
diff --git a/doc/help/book/images/view-letter.png b/doc/help/book/images/view-letter.png
new file mode 100644 (file)
index 0000000..d37eeba
Binary files /dev/null and b/doc/help/book/images/view-letter.png differ
diff --git a/doc/help/book/images/window-of-authorities.png b/doc/help/book/images/window-of-authorities.png
new file mode 100644 (file)
index 0000000..cd2df63
Binary files /dev/null and b/doc/help/book/images/window-of-authorities.png differ
index ab5c70272d61a670927da4db52e8ebb181592e29..c62cc05c1317e47983e8c6953410460d9640d89e 100644 (file)
@@ -1,5 +1,62 @@
 <chapter xml:id="ch10">
-    <title>Приложение А: конвертация БД</title>
-    <para>Для преобразования базы между любыми двумя модулями хранилища используется утилита convertor (исходный код утилиты находится в каталоге projects/convertor стандартной поставки системы). Утилита работает из каталога сборки без установки в ОС. Для сборки утилиты необходимо запустить скрипт ./build.</para>
-    <para>При запуске утилиты в качестве параметра можно передать путь к конфигурационному файлу. По умолчанию будет использован файл convertor.conf из каталога сборки. Конфигурационный файл имеет такой-же формат, что и конфигурационный файл stargazer. Глобальный параметр ModulesPath указывает местонахождение модулей хранилища. Далее следуют две секции: &lt;SourceStoreModule&gt; и &lt;DestStoreModule&gt;. Они описывают, соответственно, источник данных и их приемник. Так, например, для переноса всей информации из БД на основе файлов в БД Firebird необходимо в первой секции прописать параметры файлового хранилища, а во второй — хранилища Firebird.</para>
-</chapter>
+       <title>Приложение А: конвертация БД</title>
+       <para>Для преобразования базы между любыми двумя модулями хранилища используется утилита convertor (исходный код утилиты находится в каталоге projects/convertor стандартной поставки системы). Утилита работает из каталога сборки без установки в ОС. Для сборки утилиты необходимо запустить скрипт ./build. </para>
+       <para>При запуске утилиты в качестве параметра можно передать путь к конфигурационному файлу. По умолчанию будет использован файл convertor.conf из каталога сборки. Конфигурационный файл имеет такой-же формат, что и конфигурационный файл stargazer. Глобальный параметр ModulesPath указывает местонахождение модулей хранилища. Далее следуют две секции: &lt;SourceStoreModule&gt; и &lt;DestStoreModule&gt;. Они описывают, соответственно, источник данных и их приемник. Так, например, для переноса всей информации из БД на основе файлов в БД Firebird необходимо в первой секции прописать параметры файлового хранилища, а во второй — хранилища Firebird.</para>
+       <para>Пример файла конфигурации:</para>
+<programlisting linenumbering="unnumbered">
+# Путь к директории, в которой находятся модули сервера
+ModulesPath = ../stargazer/modules
+
+###################################################################
+# Store module
+# Настройки плагина работающего с БД сервера
+
+# Второй параметр - это имя модуля без mod_ в начале и .so в конце
+# Т.е. полное имя модуля mod_store_files.so
+&lt;SourceStoreModule store_files&gt;
+
+    # Рабочая директория сервера, тут содержатся данные о тарифах, пользователях,
+    # администраторах и т.д.
+    WorkDir = /var/stg-test
+    
+    
+    # Владелец, группа и права доступа на файлы статистики (stat) пользователя
+    ConfOwner = root
+    ConfGroup = wheel
+    ConfMode = 600
+    
+    
+    # Владелец, группа и права доступа на файлы конфигурации (conf) пользователя
+    StatOwner = root
+    StatGroup = wheel
+    StatMode = 640
+    
+    # Владелец, группа и права доступа на лог-файлы (log) пользователя
+    UserLogOwner = root
+    UserLogGroup = wheel
+    UserLogMode = 640
+    
+&lt;/SourceStoreModule&gt;
+    
+&lt;DestStoreModule store_firebird&gt;
+    server = localhost
+    database = /var/stg/stargazer.fdb
+    user = stg
+    password = 123456
+&lt;/DestStoreModule&gt;
+
+#&lt;DestStoreModule store_mysql&gt;
+#    # Имя пользователя БД
+#    dbuser = stg
+#
+#    # Пароль пользователя БД
+#    rootdbpass = 123456
+#
+#    # Имя БД на сервере
+#    dbname = stg
+#
+#    # Адрес сервера БД
+#    dbhost = localhost
+#&lt;/DestStoreModule&gt;              
+</programlisting>
+</chapter>
\ No newline at end of file
index fa36c322fd443e855b720657f07d8abc9e1d310b..99f1d6acfd56c761d61f0549ad0e44b569fa054f 100644 (file)
@@ -1,4 +1,94 @@
 <chapter xml:id="ch11">
-    <title>Приложение В: описание процесса ручной установки БД для СУБД Firebird</title>
-    <para>Для работы модуля необходимо завести учетную запись пользователя СУБД Firebird. Для этого используется утилита управления учетными записями gsec. Пример создания пользователя (подробности: Server configuration and management):</para>
-</chapter>
+    <title>Приложение Б</title>
+    <simplesect>
+       <title>Oписание формата файлов /var/stargazer/admins/*.adm.</title>
+       <para>В каталоге /var/stargazer/admins (путь может быть изменен в настройках плагина store_files) находятся файлы содержащие параметры администраторов системы. Имя файла имеет вид: &lt;login&gt;.adm, где &lt;login&gt; — логин администратора. Файл имеет формат «ключ-значение». Каждая строка файла содержит название параметра и его значение, разделенные знаком «=», или коментарий начинающийся с символа «#». Допустимы следующие параметры:</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>Password — пароль администратора в зашифрованном виде;</para></listitem>
+               <listitem><para>ChgStat — право на изменение статистики абонента, может принимать значения 0 и 1;</para></listitem>
+               <listitem><para>ChgConf — право на изменение данных учетной записи абонента, может принимать значения 0 и 1;</para></listitem>
+               <listitem><para>ChgCash — право на изменение состояния счета абонента, может принимать значения 0 и 1;</para></listitem>
+               <listitem><para>ChgPassword — право на изменение пароля абонента, может принимать значения 0 и 1;</para></listitem>
+               <listitem><para>UsrAddDel — право на добавление и удаление абонентов, может принимать значения 0 и 1;</para></listitem>
+               <listitem><para>ChgAdmin — право на изменение параметров администраторов системы а также их добавление и удаление, может принимать значения 0 и 1;</para></listitem>
+               <listitem><para>ChgTariff — право на добавление, удаление и изменение тарифов, может принимать значения 0 и 1.</para></listitem>
+       </itemizedlist>
+       </simplesect>
+       <simplesect>
+       <title>Описание формата файлов /var/stargazer/users/*/*.</title>
+       <para>Данные абонентов хранятся в каталогах вида /var/stargazer/users/&lt;login&gt;, где &lt;login&gt; — логин абонента. В каталогах содержатся файлы conf, stat, stat.&lt;YYYY&gt;.&lt;MM&gt;, stat2.&lt;YYYY&gt;.&lt;MM&gt;, log, log2 и подкаталоги messages и detail_stat. Файл conf содержит данные учетной записи абонента, файл stat содержит статистику абонента за последний месяц, файлы stat.&lt;YYYY&gt;.&lt;MM&gt; и stat2.&lt;YYYY&gt;.&lt;MM&gt; содержат статистику абонента за предыдущие месяцы. Они различаются только полнотой представления — файл stat2.&lt;YYYY&gt;.&lt;MM&gt; содержит больше информации. Файлы log и log2 содержат журнал изменений (в том числе подключений и отключений). Файл log2 идентичен файлу log за исключением того что при отключении абонента в него пишется причина отключения. Подкаталог messages содержит файлы с сообщениями абоненту. Имена файлов представляют собой метку времени создания сообщения в формате UNIX Timestamp. Подкаталог detail_stat содержит в себе детальную статистику абонента, разбитую по годам, месяцам и дням: &lt;YYYY&gt;/&lt;MM&gt;/&lt;DD&gt;. Файлы учетной записи, статистики и детальной статистики представлены в формате «ключ-значение». Каждая строка файла состоит из названия параметра и его значения разделенных символом «=», пустые строки и строки начинающиеся с символа «#» (комментарии) игнорируются.</para>
+       <para>Описание параметров файла conf:</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>Password — пароль абонента (в открытом виде);</para></listitem>
+               <listitem><para>IP — список IP-адресов, разделенных запятой, с которых разрешена авторизация абонента (может содержать * — авторизация разрешена с любого адреса);</para></listitem>
+               <listitem><para>Tariff — название текущего тарифного плана абонента;</para></listitem>
+               <listitem><para>TariffChange — название тарифного плана, который будет установлен в начале следующего месяца (может быть пустым);</para></listitem>
+               <listitem><para>Credit — величина кредита абоненту;</para></listitem>
+               <listitem><para>CreditExpire — дата истечения срока кредитования абонента в формате UNIX Timestamp (может содержать 0 — «вечный» кредит);</para></listitem>
+               <listitem><para>DisabledDetailStat — параметр, отключающий ведение детальной статистики для абонента, может принимать значения 0 и 1;</para></listitem>
+               <listitem><para>Down — принудительное отключение абонента, может принимать значения 0 и 1;</para></listitem>
+               <listitem><para>Passive — «заморозка» абонента (для таких абонентов запрещена авторизация и не снимается абонентская плата), может принимать значения 0 и 1;</para></listitem>
+               <listitem><para>RealName — реальные ФИО абонента, текстовое поле;</para></listitem>
+               <listitem><para>Address — почтовый адрес абонента в произвольном формате, текстовое поле;</para></listitem>
+               <listitem><para>Phone — номера телефонов абонентов в произвольном формате, текстовое поле;</para></listitem>
+               <listitem><para>Note — примечание, текстовое поле;</para></listitem>
+               <listitem><para>Email — адрес электронной почты абонента, текстовое поле;</para></listitem>
+               <listitem><para>Group — группа в которую входит абонент, текстовое поле;</para></listitem>
+               <listitem><para>AlwaysOnline — включение доступа без авторизации, может принимать значение 0 или 1, для функционирования требует плагин auth_ao;</para></listitem>
+               <listitem><para>CreationTime — момент создания учетной записи абонента, UNIX Timestamp;</para></listitem>
+               <listitem><para>Userdata0 ... Userdata9 — дополнительные текстовые параметры которые могут содержать вспомогательную информацию.</para></listitem>
+       </itemizedlist>
+       <para>Описание параметров файла stat:</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>U0 … U9, D0 … D9 — текущие данные о трафике абонента в байтах по направлениям;</para></listitem>
+               <listitem><para>Cash — состояние счета абонента;</para></listitem>
+               <listitem><para>FreeMb — количество «бесплатных мегабайт» у абонента (в деньгах);</para></listitem>
+               <listitem><para>LastActivityTime — момент последней активности абонента, UNIX Timestamp;</para></listitem>
+               <listitem><para>LastCashAdd — последнее изменение счета абонента;</para></listitem>
+               <listitem><para>LastCashAddTime — момент последнего изменения счета абонента, UNIX Timestamp;</para></listitem>
+               <listitem><para>PassiveTime — количество секунд проведенное в состоянии «заморожен».</para></listitem>
+       </itemizedlist>
+       <para>Описание параметров файла stat.&lt;YYYY&gt;.&lt;MM&gt;</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>U0 … U9, D0 … D9 — данные о трафике абонента в байтах по направлениям на конец месяца;</para></listitem>
+               <listitem><para>Cash — состояние счета абонента на конец месяца;</para></listitem>
+       </itemizedlist>
+       <para>Описание параметров файла stat2.&lt;YYYY&gt;.&lt;MM&gt;</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>U0 … U9, D0 … D9 — данные о трафике абонента в байтах по направлениям на конец месяца;</para></listitem>
+               <listitem><para>Cash — состояние счета абонента на конец месяца;</para></listitem>
+               <listitem><para>FreeMb — количество «бесплатных мегабайт» у абонента (в деньгах) на конец месяца;</para></listitem>
+               <listitem><para>LastActivityTime — момент последней активности абонента, UNIX Timestamp;</para></listitem>
+               <listitem><para>LastCashAdd — последнее изменение счета абонента;</para></listitem>
+               <listitem><para>LastCashAddTime — момент последнего изменения счета абонента, UNIX Timestamp;</para></listitem>
+               <listitem><para>PassiveTime — количество секунд проведенное в состоянии «заморожен».</para></listitem>
+       </itemizedlist>
+       </simplesect>
+       <simplesect>
+       <title>Описание формата файлов /var/stargazer/tariff/*.tf.</title>
+       <para>Файлы /var/stargazer/tariffs/*.tf содержат информацию о тарифах. Имя файла имеет вид &lt;name&gt;.tf, где &lt;name&gt; — название тарифа. Файл имеет формат «ключ-значение». Каждая строка файла содержит название параметра и его значение разделенные символом «=», пустые строки и строки начинающиеся с символа «#» (коментарии) игнорируются.</para>
+       <para>Описание тарифа состоит из общих параметров и параметров специфичных для каждого направления. Параметры описывающие направления содержат в своем названии номер направления к которому они относятся.</para>
+       <para>Описание параметров файла тарифов:</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>Fee — величина абонентской платы;</para></listitem>
+               <listitem><para>Free — количество «бесплатных мегабайт» входящих в абонентскую плату (в деньгах);</para></listitem>
+               <listitem><para>PassiveCost — стоимость «заморозки» абонента;</para></listitem>
+               <listitem><para>TraffType — тип тарификации трафика:</para>
+                       <itemizedlist mark="square">
+                               <listitem><para>up+down — входящий и исходящий трафик тарифицируется суммарно;</para></listitem>
+                               <listitem><para>up — тарифицируется только исходящий трафик;</para></listitem>
+                               <listitem><para>down — тарифицируется только входящий трафик;</para></listitem>
+                               <listitem><para>max — тарифицируется большее количество трафика;</para></listitem>
+                       </itemizedlist>
+               </listitem>
+               <listitem><para>PriceDayA0 … PriceDayA9 — цена трафика по соответствующему направлению в дневной период до превышения порога;</para></listitem>
+               <listitem><para>PriceDayB0 … PriceDayB9 — цена трафика по соответствующему направлению в дневной период после превышения порога;</para></listitem>
+               <listitem><para>PriceNightA0 … PriceNightA9 — цена трафика по соответствующему направлению в ночной период до превышения порога;</para></listitem>
+               <listitem><para>PriceNightB0 … PriceNightB9 — цена трафика по соответствующему направлению в ночной период после превышения порога;</para></listitem>
+               <listitem><para>Threshold0 … Threshold9 — величина порога по каждому из направлений в байтах;</para></listitem>
+               <listitem><para>Time0 ... Time9 — интервал времени считающийся «дневным» (остальное время считается «ночным») в формате HH1:MM1-HH2:MM2;</para></listitem>
+               <listitem><para>SinglePrice0 ... SinglePrice9 — отключает «пороговую» тарификацию (трафик при этом считается по допороговой цене), может принимать значения 0 и 1;</para></listitem>
+               <listitem><para>NoDiscount0 … NoDiscount9 — отключает тарификацию по времени (трафик при этом считается по «дневной» цене), может принимать значения 0 и 1.</para></listitem>
+       </itemizedlist>
+       </simplesect>
+       </chapter>
\ No newline at end of file
index 31b30250704ebe7af360784baeb14b61a4a4aae4..536dd14fc3ad7d922e10764dae4d4a501f63d96c 100644 (file)
@@ -1,4 +1,201 @@
 <chapter xml:id="ch12">
-    <title>Приложение В: описание процесса установки БД для СУБД MySQL</title>
-    <para>Для работы модуля необходимо завести учетную запись пользователя СУБД MySQL. Для этого можно использовать командный интерпретатор mysql:</para>
+    <title>Приложение В</title>
+       <simplesect>
+       <title>Описание процесса ручной установки БД для СУБД Firebird</title>
+       <para>Для работы модуля необходимо завести учетную запись пользователя СУБД Firebird. Для этого используется утилита управления учетными записями gsec. Пример создания пользователя (подробности: Server configuration and management):</para>
+<programlisting linenumbering="unnumbered">
+# gsec -user sysdba -password masterkey
+GSEC&gt; add stg -pw 123456
+</programlisting>
+       <para>Для корректной работы модуля пользователь должен иметь право на запись и чтение данных в таблицы БД.</para>
+       <para>Модуль для работы с СУБД Firebird требует наличия правильно созданной базы данных. SQL-скрипт для создания находится в каталоге projects/stargazer/inst/var/00-base-00.sql. В обычных условиях выполнение make install или make install-data автоматически создает базу данных, используя этот скрипт. Для того чтобы создать ее вручную необходимо в файле SQL-скрипта раскомментировать строки:
+<programlisting linenumbering="unnumbered">
+connect 'localhost:/var/stg/stargazer.fdb' user 'stg' password '123456';
+drop database;
+create database 'localhost:/var/stg/stargazer.fdb' user 'stg' password '123456' default character set win1251;
+</programlisting>
+       и заменить в них адрес сервера, путь к базу, имя пользователя БД и пароль. После этого выполнить команду isql -i &lt;файл_скрипта&gt;.</para>
+       <formalpara>
+               <title>Внимание!</title>
+               <para>Для пользователей Debian и, возможно, некоторых других дистрибутивов командный интерпретатор SQL для СУБД Firebird называется isql-fb.</para>
+       </formalpara>
+       </simplesect>
+       <simplesect>
+       <title>Описание структуры БД для СУБД Firebird</title>
+       <para>Таблица tb_admins (учетные записи администраторов системы):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_admin – уникальный идентификатор учетной записи администратора;</para></listitem>
+               <listitem><para>login – название учетной записи администратора;</para></listitem>
+               <listitem><para>passwd – пароль для учетной записи администратора (в зашифрованном виде);</para></listitem>
+               <listitem><para>chg_conf – флаг, позволяющий менять конфигурационные параметры пользователя;</para></listitem>
+               <listitem><para>chg_password – флаг, позволяющий менять пароль пользователя;</para></listitem>
+               <listitem><para>chg_stat – флаг, позволяющий менять статистические данные пользователя;</para></listitem>
+               <listitem><para>chg_cash – флаг, позволяющий менять количество денег на счету у пользователя;</para></listitem>
+               <listitem><para>usr_add_del – флаг, позволяющий удалять и добавлять пользователей;</para></listitem>
+               <listitem><para>chg_tariff – флаг, позволяющий управлять тарифами;</para></listitem>
+               <listitem><para>chg_admin – флаг, позволяющий управлять учетными записями администраторов системы;</para></listitem>
+               <listitem><para>chg_service – зарезервировано;</para></listitem>
+               <listitem><para>chg_corporation – зарезервировано.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связан триггер tr_admin_bi, выполняющий автогенерацию идентификатора (первичного ключа) учетных записей администраторов системы.</para>
+       <para>Таблица tb_tariffs (описание тарифов):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_tariff – уникальный идентификатор тарифа;</para></listitem>
+               <listitem><para>name – название тарифа;</para></listitem>
+               <listitem><para>fee – абонплата;</para></listitem>
+               <listitem><para>free – количество бесплатных мегабайт трафика, входящих в абонплату;</para></listitem>
+               <listitem><para>passive_cost – стоимость «заморозки» пользователя;</para></listitem>
+               <listitem><para>traf_type – тип подсчета трафика (upload, download, upload+download, MAX(upload, download)).</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связана хранимая процедура sp_add_tariff, получающая в качестве параметров название тарифа и количество направлений. Возвращает сгенерированный идентификатор (первичный ключ) тарифа. При вызове создает запись в таблице tb_tariffs и указанное количество записей в таблице tb_tariffs_params, соответствующее количеству направлений. С таблицей так же связана хранимая процедура sp_delete_tariff, получающая на вход название тарифа и удаляющая его из таблицы tb_tariffs и связанные с ним данные из таблицы tb_tariffs_params.</para>
+       <para>Таблица tb_tariffs_params (параметры тарифов):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_tariff_param – уникальный идентификатор записи информации о направлении в тарифе;</para></listitem>
+               <listitem><para>fk_tariff – внешний ключ для связи с тарифом;</para></listitem>
+               <listitem><para>dir_num – номер направления;</para></listitem>
+               <listitem><para>price_day_a – стоимость 1 Мб трафика днем до превышения порога;</para></listitem>
+               <listitem><para>price_day_b – стоимость 1 Мб трафика днем после превышения порога;</para></listitem>
+               <listitem><para>price_night_a – стоимость 1 Мб трафика ночью до превышения порога;</para></listitem>
+               <listitem><para>price_night_b – стоимость 1 Мб трафика ночью после превышения порога;</para></listitem>
+               <listitem><para>threshold – порог по трафику;</para></listitem>
+               <listitem><para>time_day_begins – время начала дня;</para></listitem>
+               <listitem><para>time_day_ends – время конца дня.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связан триггер tr_tariffs_params_bi, выполняющий автогенерацию идентификаторов записей (первичных ключей) в таблице.</para>
+       <para>Таблица tb_corporations – зарезервирована.</para>
+       <para>С таблицей связан триггер tr_corporations_bi, выполняющий автогенерацию первичных ключей.</para>
+       <para>Таблица tb_users (учетные записи пользователей системы):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_user – уникальный идентификатор пользователя;</para></listitem>
+               <listitem><para>fk_tariff – внешний ключ для связи с тарифом;</para></listitem>
+               <listitem><para>fk_tariff_change – внешний ключ для связи с тарифом (может быть пустым);</para></listitem>
+               <listitem><para>fk_corporation – зарезервировано;</para></listitem>
+               <listitem><para>address – адрес пользователя;</para></listitem>
+               <listitem><para>always_online – флаг «всегда on-line»;</para></listitem>
+               <listitem><para>credit – величина кредита в деньгах;</para></listitem>
+               <listitem><para>credit_expire – дата окончания действия кредита;</para></listitem>
+               <listitem><para>disabled_detail_stat — отключение детальной статистики пользователя;</para></listitem>
+               <listitem><para>disabled – флаг «отключен»;</para></listitem>
+               <listitem><para>email – email пользователя;</para></listitem>
+               <listitem><para>grp – название группы пользователя;</para></listitem>
+               <listitem><para>note – примечание;</para></listitem>
+               <listitem><para>passive – флаг «заморозки»;</para></listitem>
+               <listitem><para>passwd – пароль пользователя (в открытом виде);</para></listitem>
+               <listitem><para>phone – номер телефона пользователя;</para></listitem>
+               <listitem><para>name – название учетной записи пользователя (логин);</para></listitem>
+               <listitem><para>real_name – реальное имя пользователя.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связана хранимая процедура sp_add_user, принимающая на вход 2 параметра: название учетной записи пользователя и количество направлений. Возвращает сгенерированное значение первичного ключа. При вызове создает запись в таблице tb_users, соответствующую ей запись в таблице tb_stats и указанное количество записей в таблице tb_stats_traffic. Так же с таблицей связана хранимая процедура sp_delete_user, получающая в качестве входного параметра название учетной записи (логин) пользователя и удаляющая учетную запись и всю сопутствующую информацию (данные пользователя, IP-адреса, сообщения, журналы параметров, статистику и детальную статистику, журналы сессий) о пользователе из базы.</para>
+       <para>Таблица tb_detail_stats (детальная статистика по пользователям системы):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_detail_stat – уникальный идентификатор записи детальной статистики;</para></listitem>
+               <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
+               <listitem><para>dir_num – номер направления;</para></listitem>
+               <listitem><para>ip – удаленный IP-адрес (в формате 32-битного беззнакового целого);</para></listitem>
+               <listitem><para>download – количество принятых байт;</para></listitem>
+               <listitem><para>upload – количество отправленных байт;</para></listitem>
+               <listitem><para>cost – стоимость объема данных;</para></listitem>
+               <listitem><para>from_time – время начала сессии;</para></listitem>
+               <listitem><para>till_time – время завершения сеанса.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связан триггер tr_detail_stats_bi, выполняющий автогенерацию уникальных идентификаторов записей детальной статистики (первичных ключей).</para>
+       <para>Таблица tb_services – зарезервирована. С ней связан триггер tr_services_bi, выполняющий автогенерацию первичных ключей. Так же с ней связана хранимая процедура sp_delete_service, удаляющая всю информацию связанную с записью в данной таблице.</para>
+       <para>Таблица tb_users_services – зарезервирована. С ней связан триггер tr_users_services_bi, выполняющий автогенерацию первичных ключей.</para>
+       <para>Таблица tb_messages (сообщения пользователям):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_message – уникальный идентификатор сообщения;</para></listitem>
+               <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
+               <listitem><para>ver – версия формата сообщения;</para></listitem>
+               <listitem><para>msg_type – тип сообщения;</para></listitem>
+               <listitem><para>last_send_time – время последней отсылки сообщения;</para></listitem>
+               <listitem><para>creation_time – время создания сообщения;</para></listitem>
+               <listitem><para>show_time – время показа сообщения;</para></listitem>
+               <listitem><para>repeat – количество повторений;</para></listitem>
+               <listitem><para>repeat_period – период повторения;</para></listitem>
+               <listitem><para>msg_text – текст сообщения.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связана хранимая процедура sp_add_message, которая получает на вход идентификатор, параметры и текст сообщения. В случае если идентификатор пустой – сообщение добавляется в таблицу. Если не пустой – параметры и текст сообщения обновляются. Процедура возвращает идентификатор сообщения.</para>
+       <para>Таблица tb_stats (статистика пользователя):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_stat – уникальный идентификатор записи статистики;</para></listitem>
+               <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
+               <listitem><para>cash – количество денег на счету;</para></listitem>
+               <listitem><para>free_mb – количество не истраченных бесплатных Мб;</para></listitem>
+               <listitem><para>last_activity_time – время последней активности пользователя;</para></listitem>
+               <listitem><para>last_cash_add – последнее пополнение счета;</para></listitem>
+               <listitem><para>last_cash_add_time – время последнего пополнения счета;</para></listitem>
+               <listitem><para>passive_time – время, проведенное пользователем в «замороженном» состоянии за месяц (используется для вычисления объема снимаемой абонплаты);</para></listitem>
+               <listitem><para>stats_date – дата записи статистики (месячной статистики).</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связана хранимая процедура sp_add_stat, получающая на вход набор данных статистики, добавляющая запись в таблицу и возвращающая сгенерированный первичный ключ записи.</para>
+       <para>Таблица tb_stats_traffic (статистика по направлениям):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_stat_traffic – уникальный идентификатор записи статистики;</para></listitem>
+               <listitem><para>fk_stat – внешний ключ для связи со статистикой пользователя (текущей или месячной);</para></listitem>
+               <listitem><para>dir_num – номер направления;</para></listitem>
+               <listitem><para>download – объем входящего трафика;</para></listitem>
+               <listitem><para>upload – объем исходящего трафика.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связан триггер tr_stat_traffic_bi, служащий для автогенерации первичного ключа.</para>
+       <para>Таблица tb_users_data (данные пользователя):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_user_data – уникальный идентификатор записи;</para></listitem>
+               <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
+               <listitem><para>num – номер поля данных;</para></listitem>
+               <listitem><para>data – текст поля данных.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связан триггер tr_user_data_bi, служащий для автогенерации первичного ключа.</para>
+       <para>Таблица tb_allowed_ip (IP-адреса пользователя):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_allowed_ip – уникальный идентификатор записи;</para></listitem>
+               <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
+               <listitem><para>ip – IP-адрес (в формате 32-битного беззнакового целого);</para></listitem>
+               <listitem><para>mask – маска (в формате 32-битного беззнакового целого).</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связан триггер tr_allowed_ip_bi, служащий для автогенерации первичного ключа.</para>
+       <para>Таблица tb_sessions_log (журнал сессии):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_session_log – уникальный идентификатор записи в журнале;</para></listitem>
+               <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
+               <listitem><para>event_time – время события;</para></listitem>
+               <listitem><para>event_type – тип события (connect/disconnect);</para></listitem>
+               <listitem><para>ip – IP-адрес пользователя.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связана хранимая процедура sp_append_session_log, получающая в качестве параметров данные для записи в журнал сессии. Добавляет запись в журнал и возвращает сгенерированный первичный ключ.</para>
+       <para>Таблица tb_sessions_data (данные сессии):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_session_data – уникальный идентификатор записи данных;</para></listitem>
+               <listitem><para>fk_session_log – внешний ключ для связи с записью в журнале сессии;</para></listitem>
+               <listitem><para>dir_num – номер направления;</para></listitem>
+               <listitem><para>session_upload – объем исходящего трафика за сессию;</para></listitem>
+               <listitem><para>session_download – объем входящего трафика за сессию;</para></listitem>
+               <listitem><para>month_upload – объем исходящего трафика за месяц;</para></listitem>
+               <listitem><para>month_download – объем входящего трафика за месяц.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связан триггер tr_session_data_bi, служащий для автогенерации первичного ключа.</para>
+       <para>Таблица tb_parameters (параметры пользователя):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_parameter – уникальный идентификатор параметра;</para></listitem>
+               <listitem><para>name – название параметра.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связан триггер tr_parameter_bi, служащий для автогенерации первичного ключа.</para>
+       <para>Таблица tb_params_log (журнал изменений параметров пользователя):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>pk_param_log – уникальный идентификатор записи в журнале изменений параметров пользователя;</para></listitem>
+               <listitem><para>fk_user – внешний ключ для связи с пользователем;</para></listitem>
+               <listitem><para>fk_parameter – внешний ключ для связи с таблицей параметров;</para></listitem>
+               <listitem><para>event_time – время изменения;</para></listitem>
+               <listitem><para>from_val – старое значение (в виде строки);</para></listitem>
+               <listitem><para>to_val – новое значение (в виде строки);</para></listitem>
+               <listitem><para>comment – коментарий.</para></listitem>
+       </itemizedlist>
+       <para>С таблицей связан триггер tr_param_log_bi, служащий для автогенерации первичного ключа.</para>
+        <para>
+        <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/firebird-erd.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+       </para> 
+       </simplesect>
 </chapter>
diff --git a/doc/help/ch13.xml b/doc/help/ch13.xml
new file mode 100644 (file)
index 0000000..9bb29e8
--- /dev/null
@@ -0,0 +1,137 @@
+<chapter xml:id="ch13">
+       <title>Приложение Г</title>
+       <simplesect>
+       <title>Описание процесса установки БД для СУБД MySQL</title>
+       <para>Для работы модуля необходимо завести учетную запись пользователя СУБД MySQL. Для этого можно использовать командный интерпретатор mysql:</para>
+<programlisting linenumbering="unnumbered">
+$ mysql -u root -p
+Enter password:
+Welcome to the MySQL monitor.  Commands end with ; or \g.
+Your MySQL connection id is 9 to server version: 5.0.26-log
+
+Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
+
+mysql&gt; create user stg_user identified by '123456';
+Query OK, 0 rows affected (0.04 sec)
+</programlisting>
+       <para>Модуль для работы с MySQL автоматически создает БД и необходимые для его работы таблицы. Для этого у пользователя, указанного в настройках должны быть установлены соответствующие права (см. документацию по настройке MySQL: MySQL User Account Management). Модуль может корректно работать и с пользователем с ограниченными правами (полный доступ только к своей БД). Для этого необходимо сперва вручную создать БД, а затем дать пользователю права на доступ к ней. Например так:</para>
+<programlisting linenumbering="unnumbered">
+$ mysql -u root -p
+Enter password:
+Welcome to the MySQL monitor.  Commands end with ; or \g.
+Your MySQL connection id is 9 to server version: 5.0.26-log
+
+Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
+
+mysql&gt; create user stg_user identified by '123456';
+Query OK, 0 rows affected (0.04 sec)
+
+mysql&gt; create database stg_database;
+Query OK, 1 row affected (0.02 sec)
+
+mysql&gt; grant all on stg_database.* to stg_user;
+Query OK, 0 rows affected (0.06 sec)
+</programlisting>
+       <para>После этого модуль при первом запуске сам создаст необходимые таблицы.</para>
+       </simplesect>
+       <simplesect>
+       <title>Описание структуры БД для СУБД MySQL</title>
+       <para>Таблица admins (учетные записи администраторов системы):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>login – название учетной записи администратора системы;</para></listitem>
+               <listitem><para>password – пароль для учетной записи администратора системы;</para></listitem>
+               <listitem><para>ChgConf – флаг, разрешающий менять конфигурационные параметры пользователы;</para></listitem>
+               <listitem><para>ChgPassword – флаг, позволяющий менять пароль пользователя;</para></listitem>
+               <listitem><para>ChgStat – флаг, позволяющий менять статистические данные пользователя;</para></listitem>
+               <listitem><para>ChgCash – флаг, позволяющий менять количество денег на счету у пользователя;</para></listitem>
+               <listitem><para>UsrAddDel – флаг, позволяющий управлять учетными записями пользователей;</para></listitem>
+               <listitem><para>ChgTariff – флаг, позволяющий управлять тарифами;</para></listitem>
+               <listitem><para>ChgAdmin – флаг, позволяющий управлять учетными записями администраторов системы.</para></listitem>
+       </itemizedlist>
+       <para>Таблица tariffs (описание тарифов системы):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>name – название тарифа;</para></listitem>
+               <listitem><para>PriceDayA&lt;n&gt; - стоимость 1 Мб трафика по направлению &lt;n&gt; днем до превышения порога;</para></listitem>
+               <listitem><para>PriceDayB&lt;n&gt; - стоимость 1 Мб трафика по направлению &lt;n&gt; днем после превышения порога;</para></listitem>
+               <listitem><para>PriceNightA&lt;n&gt; - стоимость 1 Мб трафика по направлению &lt;n&gt; ночью до превышения порога;</para></listitem>
+               <listitem><para>PriceNightB&lt;n&gt; - стоимость 1 Мб трафика по направлению &lt;n&gt; ночью после превышения порога;</para></listitem>
+               <listitem><para>Threshold&lt;n&gt; - порог по трафику;</para></listitem>
+               <listitem><para>Time&lt;n&gt; - время дня;</para></listitem>
+               <listitem><para>NoDiscount&lt;n&gt; - флаг, указывающий, что трафик по направлению &lt;n&gt; считается без учета порогового значения;</para></listitem>
+               <listitem><para>SinglePrice&lt;n&gt; - флаг, указывающий, что трафик по направлению &lt;n&gt; считается без учета времени суток;</para></listitem>
+               <listitem><para>PassiveCost – стоимость «заморозки» учетной записи пользователя;</para></listitem>
+               <listitem><para>Fee – абонплата;</para></listitem>
+               <listitem><para>Free – количество бесплатных Мб трафика, входящих в абонплату;</para></listitem>
+               <listitem><para>TraffType – тип подсчета трафика (up, down, up+down, max).</para></listitem>
+       </itemizedlist>
+       <para>Таблица users (учетные записи пользователей системы и их статистика):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>login – название учетной записи пользователя;</para></listitem>
+               <listitem><para>Password – пароль для учетной записи пользователя;</para></listitem>
+               <listitem><para>Passive – флаг режима «Заморожен»;</para></listitem>
+               <listitem><para>Down – флаг режима «Отключен»;</para></listitem>
+               <listitem><para>AlwaysOnline – флаг режима «Всегда on-line»;</para></listitem>
+               <listitem><para>Tariff – название тарифа;</para></listitem>
+               <listitem><para>Address – адрес пользователя;</para></listitem>
+               <listitem><para>Phone – номер телефона пользователя;</para></listitem>
+               <listitem><para>Email – адрес электронной почты пользователя;</para></listitem>
+               <listitem><para>Note – примечания;</para></listitem>
+               <listitem><para>RealName – реальное имя пользователя;</para></listitem>
+               <listitem><para>StgGroup – название группы пользователя;</para></listitem>
+               <listitem><para>Credit – величина кредита в деньгах;</para></listitem>
+               <listitem><para>TariffChange – название тарифа, на который будет переведен пользователь в начале месяца;</para></listitem>
+               <listitem><para>Userdata&lt;n&gt; - поля дополнительных данных пользователя;</para></listitem>
+               <listitem><para>CreditExpire – дата окончания действия кредита пользователя;</para></listitem>
+               <listitem><para>DisabledDetailStat — отключение детальной статистики пользователя;</para></listitem>
+               <listitem><para>IP – список IP-адресов пользователя;</para></listitem>
+               <listitem><para>D&lt;n&gt; - объем входящего трафика по направлению &lt;n&gt;;</para></listitem>
+               <listitem><para>U&lt;n&gt; - объем исходящего трафика по направлению &lt;n&gt;;</para></listitem>
+               <listitem><para>Cash – количество денег на счету;</para></listitem>
+               <listitem><para>FreeMb – количество бесплатных мегабайт;</para></listitem>
+               <listitem><para>LastCashAdd – последнее пополнение счета;</para></listitem>
+               <listitem><para>LastCashAddTime – время последнего пополнения счета;</para></listitem>
+               <listitem><para>PassiveTime - время, проведенное пользователем в «замороженном» состоянии за месяц (используется для вычисления объема снимаемой абонплаты);</para></listitem>
+               <listitem><para>LastActivityTime – время последней активности пользователя;</para></listitem>
+               <listitem><para>NAS – используется совместно с модулем захвата трафика для NetFlow.</para></listitem>
+       </itemizedlist>
+       <para>Таблица messages (сообщения пользователю):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>login – название учетной записи пользователя, для которой предназначено сообщение;</para></listitem>
+               <listitem><para>id – уникальный иденетификатор сообщения;</para></listitem>
+               <listitem><para>type – тип сообщения;</para></listitem>
+               <listitem><para>lastSendTime – время последней отсылки сообщения;</para></listitem>
+               <listitem><para>creationTime – время создания сообщения;</para></listitem>
+               <listitem><para>showTime – время показа сообщения;</para></listitem>
+               <listitem><para>stgRepeat – количество повторений сообщения;</para></listitem>
+               <listitem><para>repeatPeriod – период повторения сообщения;</para></listitem>
+               <listitem><para>text – текст сообщения.</para></listitem>
+       </itemizedlist>
+       <para>Таблица stat (месячная статистика пользователей):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>login – название учетной записи пользователя, которой принадлежит запись в статистике;</para></listitem>
+               <listitem><para>month – месяц записи статистики;</para></listitem>
+               <listitem><para>year – год записи статистики;</para></listitem>
+               <listitem><para>U&lt;n&gt; - объем исходящего трафика за месяц по направлениям;</para></listitem>
+               <listitem><para>D&lt;n&gt; - объем входящего трафика за месяц по направлениям;</para></listitem>
+               <listitem><para>cash – количество денег на счету.</para></listitem>
+       </itemizedlist>
+       <para>Таблица logs_&lt;m&gt;_&lt;y&gt; (помесячный журнал сессий пользователя и изменений его параметров):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>unid – уникальный идентификатор записи;</para></listitem>
+               <listitem><para>login – название учетной записи пользователя;</para></listitem>
+               <listitem><para>text – текст записи в журнале.</para></listitem>
+       </itemizedlist>
+       <para>Таблица detailstat_&lt;m&gt;_&lt;y&gt; (помесячная детальная статистика пользователей):</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>login – название учетной записи пользователя;</para></listitem>
+               <listitem><para>day – порядковый номер дня в месяце;</para></listitem>
+               <listitem><para>startTime – время начала сессии;</para></listitem>
+               <listitem><para>endTime – время завершения сессии;</para></listitem>
+               <listitem><para>IP – удаленный IP-адрес;</para></listitem>
+               <listitem><para>dir – направление;</para></listitem>
+               <listitem><para>up – объем исходящего трафика;</para></listitem>
+               <listitem><para>down – объем входящего трафика;</para></listitem>
+               <listitem><para>cash – стоимость трафика.</para></listitem>
+       </itemizedlist>
+       </simplesect>
+</chapter>
\ No newline at end of file
index 5235b097554a7fdf5297091c56b3147f7ceb9124..854eee75f05392b5666d958d873cf8d5fb41f09d 100644 (file)
@@ -9,4 +9,4 @@
     <para>Сервер – служит для авторизации клиентов, манипуляции правилами сетевого фильтра (firewall), подсчета трафика, выполнения финансовых операций, хранения информации о статистике и выдаче её клиентам и администраторам.</para>
     <para>Конфигуратор – используют администраторы сети. Служит для просмотра и редактирования свойств клиентов. Конфигуратор является основным инструментарием для администрирования системы. Доступ к различным функциям разграничен для различных категорий администраторов. С помощью конфигуратора выполняются все финансовые операции с клиентскими счетами, так же просматривается подробная статистика клиентов. Конфигуратором настраиваются некоторые параметры сервера, например тарифные планы и администраторы.</para>
     <para>Авторизатор – используется на клиентских машинах. С его помощью происходит авторизация клиента на сервере, получение права на доступ в Интернет или к другим ресурсам, которые разрешены администратором. Так же авторизатор позволяет клиенту просмотреть свою статистику и состояние денежных средств на счету.</para>
-</chapter>
\ No newline at end of file
+</chapter>
index 28aa749fd965b6aa91df8ce860c4b40aaf47cec7..d1c2da9600b1453c28e115ff6fab2fb46819d806 100644 (file)
@@ -22,7 +22,7 @@ make install
             <listitem><para>DIR_MODE — права доступа к каталогам системы (0755 по умолчанию);</para></listitem>
             <listitem><para>OWNER – владелец файлов системы (root по умолчанию);</para></listitem>
         </itemizedlist>
-        <para>Параметры указываются в формате &lt;ИМЯ_ПАРАМЕТРА&gt; = &lt;НАЧЕНИЕ_ПАРАМЕТРА&gt;. CFLAGS, CXXFLAGS и LDFLAGS можно передавать в скрипт build из окружения. Например так:</para>
+        <para>Ð\9fаÑ\80амеÑ\82Ñ\80Ñ\8b Ñ\83казÑ\8bваÑ\8eÑ\82Ñ\81Ñ\8f Ð² Ñ\84оÑ\80маÑ\82е &lt;Ð\98Ð\9cЯ_Ð\9fÐ\90РÐ\90Ð\9cÐ\95ТРÐ\90&gt; = &lt;Ð\97Ð\9dÐ\90ЧÐ\95Ð\9dÐ\98Ð\95\9fÐ\90РÐ\90Ð\9cÐ\95ТРÐ\90&gt;. CFLAGS, CXXFLAGS Ð¸ LDFLAGS Ð¼Ð¾Ð¶Ð½Ð¾ Ð¿ÐµÑ\80едаваÑ\82Ñ\8c Ð² Ñ\81кÑ\80ипÑ\82 build Ð¸Ð· Ð¾ÐºÑ\80Ñ\83жениÑ\8f. Ð\9dапÑ\80имеÑ\80 Ñ\82ак:</para>
 <programlisting linenumbering="unnumbered">
 CFLAGS=-O2 CXXFLAGS=-O2 LDFLAGS=-Wl,--as-needed ./build
 </programlisting>
index 68c5ebc61eb9758140faaeb10f8cf472137d2cb0..aba9c84bc0ef83587ffc8ef217b890595862967a 100644 (file)
@@ -7,17 +7,17 @@
                <para>Файл имеет текстовый формат, содержащий пары ПАРАМЕТР = ЗНАЧЕНИЕ и секции &lt;ИМЯ_СЕКЦИИ ПАРАМЕТРЫ_СЕКЦИИ&gt;. Комментарии в файле начинаются с символа #. В файле описываются общие параметры, которые являются глобальными значениями для всего сервера биллинга, а также параметры соответствующих модулей. Параметры модулей должны быть заключены в секции:</para>
 <programlisting linenumbering="unnumbered">
 &lt;Module имя_модуля&gt;
-список параметров модуля
+  список параметров модуля
 &lt;/Module&gt;
 </programlisting>
                <para>Имя модуля представляет собой имя файла этого модуля без префикса mod_ и суффикса .so. Например, секция конфигурации модуля remote_script (имя файла: mod_remote_script.so) может выглядеть так:</para>
 <programlisting linenumbering="unnumbered">
 &lt;Module remote_script&gt;                                                          
-SendPeriod = 15                                                             
-SubnetFile = subnets                                                        
-Password = 123456                                                           
-UserParams = Cash Tariff EnabledDirs                                        
-Port = 9999                                                                 
+  SendPeriod = 15                                                             
+  SubnetFile = subnets                                                        
+  Password = 123456                                                           
+  UserParams = Cash Tariff EnabledDirs                                        
+  Port = 9999                                                                 
 &lt;/Module&gt;
 </programlisting>
                <para>Описание глобальных параметров параметров:</para>
@@ -41,25 +41,26 @@ Port = 9999
                        <listitem><para>MessagesTimeout — не обязательный параметр, устанавливающий время жизни не отправленных сообщений абонентам. Время указывается в сутках. При превышении этого времени сообщение будет удалено, в т. ч. из БД. Если указано значение 0 то не отправленные сообщения никогда не будут удаляться из базы (в частности, это приведет к постепенному росту размера базы, увеличению нагрузки на сервер при авторизации абонентов и к тому что долго отсутствовавший абонент при авторизации получит все пропущенные сообщения). По умолчанию имеет значение 0.</para></listitem>
                        <listitem><para>FeeChargeType — не обязательный параметр, регулирующий процесс снятия абонплаты. Может принимать значения 0, 1 и 2, по умолчанию имеет значение 0. При значении 0 абонплата снимается как обычно, при значении 1 абонплата снимается только если баланс пользователя положительный или равен нулю, при значении 2 абонплата снимается только если баланс пользователя больше или равен абонплате. Значение 2 следует использовать с осторожностью, т. к. при этом на безлимитных тарифах абоненты получат услугу бесплатно.</para></listitem>
                        <listitem><para>ReconnectOnTariffChange — не обязательный параметр, указывающий серверу выполнить переподключение пользователя при смене тарифа. Может принимать значения yes и no, по умолчанию имеет значение no. При указании значения yes подключенные пользователи будут отключены непосредственно перед сменой тарифа и подключены сразу после нее. Может быть полезно для управления шейпером.</para></listitem>
-                       <listitem><para>Для именования направлений учета трафика в конфигурационном файле используется секция DirNames:</para></listitem>
+                       <listitem><para>Для именования направлений учета трафика в конфигурационном файле используется секция DirNames:</para>
 <programlisting linenumbering="unnumbered">
 &lt;DirNames&gt;
-DirName0 = «ИМЯ НАПРАВЛЕНИЯ»
-...
-DirName9 = ПОСЛЕДНЕЕ_НАПРАВЛЕНИЕ
+  DirName0 = «ИМЯ НАПРАВЛЕНИЯ»
+  ...
+  DirName9 = ПОСЛЕДНЕЕ_НАПРАВЛЕНИЕ
 &lt;/DirNames&gt;                      
 </programlisting>                      
-               <para>Всего предусмотрено 10 направлений с нумерацией от 0 до 9. Направления, наименование которых состоит из нескольких слов, должны быть заключены в кавычки. Если наименование направления не указано, то система считает что данное направление не используется и не будет производить по нему никаких действий. Пример: DirName0 = Мир, DirName5 = "Локальные игры". Необходимо заметить, что текущая версия системы требует, чтобы имена направлений были указаны в кодировке KOI8-R. В противном случае абоненты не смогут их прочитать в статистике авторизатора, а администраторы — в конфигураторе.</para> 
+      <para>Всего предусмотрено 10 направлений с нумерацией от 0 до 9. Направления, наименование которых состоит из нескольких слов, должны быть заключены в кавычки. Если наименование направления не указано, то система считает что данное направление не используется и не будет производить по нему никаких действий. Пример: DirName0 = Мир, DirName5 = "Локальные игры". Необходимо заметить, что текущая версия системы требует, чтобы имена направлений были указаны в кодировке KOI8-R. В противном случае абоненты не смогут их прочитать в статистике авторизатора, а администраторы — в конфигураторе.</para></listitem>
+    </itemizedlist>
                <para>Настройки всех модули (кроме store module), которые необходимо подключить к серверу в момент старта должны быть указанны внутри секции Modules:</para>
 <programlisting linenumbering="unnumbered">
 &lt;Modules&gt;
-&lt;Module имя_модуля&gt;
-список параметров модуля
-&lt;/Modules&gt;
+  &lt;Module имя_модуля&gt;
+  список параметров модуля
+  &lt;/Module&gt;
 
-&lt;Module имя_модуля&gt;
-список параметров модуля
-&lt;/Module&gt;
+  &lt;Module имя_модуля&gt;
+  список параметров модуля
+  &lt;/Module&gt;
 &lt;/Modules&gt;               
 </programlisting>      
                <para>Если модуль не имеет настраиваемых параметров, то он все равно должен быть указан. Некоторые модули, такие как store module, обязательно требуются при старте и без их подключения система не может быть запущена. По умолчанию для указания конфигурации модулей используются отдельные файлы из каталога conf-enabled.d. Для этого используется директива &lt;IncludeFile ПУТЬ_К_ФАЙЛУ&gt;&lt;/IncludeFile&gt;. Одна директива указана в секции Modules, а вторая в корне файла конфигурации (для store module).</para>
@@ -105,5 +106,301 @@ DirName9 = ПОСЛЕДНЕЕ_НАПРАВЛЕНИЕ
                </itemizedlist>
                        <para>При создании каталогов (например для записи детальной статистики) используются те-же права, но с добавлением x-бита для всех ненулевых полей. Например: для 640 будут права 750, а для 644 будут 755. Для записи детальной статистики используются параметры StatOwner, StatGroup и StatMode. Для записи сообщений используются параметры ConfOwner, ConfGroup и ConfMode.</para>
                </sect2>
-       </chapter>
-       <para></para>
\ No newline at end of file
+               <sect2>
+               <title>Описание параметров модуля для работы с СУБД Firebird:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Server – не обязательный параметр, описывающий адрес сервера, на котором расположена СУБД. Может быть доменным именем или IP-адресом. Значение по умолчанию: localhost.</para></listitem>
+                       <listitem><para>Database – не обязательный параметр, описывающий путь к БД на сервере или ее псевдоним (alias). Значение по умолчанию: /var/stg/stargazer.fdb.</para></listitem>
+                       <listitem><para>User – не обязательный параметр, описывающий имя пользователя БД. Значение по умолчанию: stg.</para></listitem>
+                       <listitem><para>Password – не обязательный параметр, описывающий пароль пользователя БД. Значение по умолчанию: 123456.</para></listitem>
+                       <listitem><para>IsolationLevel — Не обязательный параметр, описывающий уровень изоляции транзакций. Может принимать значения:</para>
+                               <itemizedlist mark="square">
+                                       <listitem><para>Concurrency (используется по умолчанию);</para></listitem>
+                                       <listitem><para>DirtyRead;</para></listitem>
+                                       <listitem><para>ReadCommitted;</para></listitem>
+                                       <listitem><para>Consistensy.</para></listitem>
+                               </itemizedlist>
+                               </listitem>
+                       <listitem><para>LockResolution — Не обязательный параметр, описывающий действие при блокировке. Может принимать значения значения:</para>
+                               <itemizedlist mark="square">
+                                       <listitem><para>Wait (используется по умолчанию);</para></listitem>
+                                       <listitem><para>NoWait.</para></listitem>
+                               </itemizedlist>
+                               </listitem>
+               </itemizedlist>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля для работы с СУБД PostgreSQL:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Server – не обязательный параметр, описывающий адрес сервера, на котором расположена СУБД. Может быть доменным именем или IP-адресом. Значение по умолчанию: localhost.</para></listitem>
+                       <listitem><para>Database – не обязательный параметр, описывающий имя БД. Значение по умолчанию: stargazer.</para></listitem>
+                       <listitem><para>User – не обязательный параметр, описывающий имя пользователя БД. Значение по умолчанию: stg.</para></listitem>
+                       <listitem><para>Password – не обязательный параметр, описывающий пароль пользователя БД. Значение по умолчанию: 123456.</para></listitem>
+                       <listitem><para>Retries — не обязательный параметр, описывающий количество попыток переподключения к СУБД в случае потери связи. Попытки производятся с интервалом в 1 секунду. Значение по умолчанию: 3.</para></listitem>
+               </itemizedlist> 
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля для работы с СУБД MySQL:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Server – обязательный параметр, описывающий адрес сервера, на котором расположена СУБД. Стандартное значение: localhost.</para></listitem>
+                       <listitem><para>Database – обязательный параметр, описывающий название БД. Стандартное значение: stg.</para></listitem>
+                       <listitem><para>User – обязательный параметр, описывающий имя пользователя БД. Стандартное значение: stg.</para></listitem>
+                       <listitem><para>Password – обязательный параметр, описывающий пароль пользователя БД. Стандартное значение: 123456.</para></listitem>
+               </itemizedlist>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля ping для пингования абонентов:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>PingDelay – обязательный параметр, определяющий, время в секундах между пингами одного и того же абонента. Стандартное значение: 15.</para></listitem>
+               </itemizedlist>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля Remote Script Executer (remote_script) для передачи команд на исполнение скриптов на NAS:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>SendPeriod – обязательный параметр, определяющий время в секундах между посылками подтверждений того, что клиент находится в состоянии Online. Стандартное значение: 15.</para></listitem>
+                       <listitem><para>Password – обязательный параметр, определяющий пароль для шифрования обмена между сервером биллинга и клиентом. Стандартное значение: 123456.</para></listitem>
+                       <listitem><para>UserParams – обязательный параметр, определяющий какие параметры и в каком порядке передаются на NAS. Названия параметров должны быть разделены пробелом. Доступными параметрами являются: Cash, FreeMb, Passive, Disabled, AlwaysOnline, TariffName, NextTariff, Address, Note, Group, Email, RealName, Credit, EnabledDirs, Userdata0...Userdata9. Стандартное значение: Cash Tariff EnabledDirs.</para></listitem>
+                       <listitem><para>Port – обязательный параметр, определяющий номер порта через который будет происходить обмен данными между сервером биллинга и клиентом. Может принимать значения от 1 до 65535, стандартное значение: 9999.</para></listitem>
+                       <listitem><para>SubnetFile — обязательный параметр, представляющий собой путь к файлу с описанием соответствия сетей и NAS'ов. Стандартное значение: subnets. При указании относительного пути поиск будет производиться в каталоге с настройками (обычно это /etc/stargazer, но может быть переопределено указанием пути в качестве параметра при старте дэмона). Файл имеет формат: &lt;сеть в CIDR-нотации&gt; &lt;адрес NAS'а&gt;. Количество сетей не ограничено. Файл перечитывается заново при посылке процессу сигнала SIGHUP. Если файл содержит ошибки при старте дэмона — система не будет запущена. Если файл содержит ошибки при перечитывании — будут использоваться старые значения.</para></listitem>
+               </itemizedlist>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля radius для поддержки авторизации и аккаунтинга пользователей через сервер FreeRADIUS:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Port — обязательный параметр, определяющий порт, на который будут приходить запросы от FreeRADIUS. Может принимать значение от 1 до 65535, стандартное значение: 6666.</para></listitem>
+                       <listitem><para>Password — обязательный параметр, задающий пароль для шифрования данных, передаваемых на FreeRADIUS. Должен совпадать с паролем в настройке плагина FreeRADIUS (rlm_stg.so). Стандартное значение: 123456.</para></listitem>
+                       <listitem><para>AuthServices — не обязательный параметр, задающий список сервисов которым будет позволена только авторизация с использованием БД Stargazer. При успешной авторизации абонент не переходит в состояние Online и для него не производится подсчет трафика. Названия сервисов в списке должны разделяться пробелами, по умолчанию этот параметр пуст.</para></listitem>
+                       <listitem><para>AcctServices — не обязательный параметр, задающий список сервисов, по которым будет производится аккаунтинг. При успешной авторизации в этих сервисах абонент переходит в состояние Online и для него производится подсчет трафика. Необходимо заметить, что в этом случае трафик захватывается как обычно, без использования возможностей протокола RADIUS (через пакет аккаунтинга InterimUpdate), т.к. это не позволяет классифицировать полученный трафик по направлениям. Названия сервисов в списке должны разделяться пробелами, по умолчанию этот параметр пуст.</para></listitem>
+               </itemizedlist>
+               <para>Обмен данными между плагином и FreeRADIUS происходит по протоколу UDP.</para>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля XML-RPC (conf_rpc) для поддержки протокола управления XML-RPC:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Port — обязательный параметр, определяющий порт на который будут приходить запросы XML-RPC. Может принимать значения от 1 до 65535, стандартное значение: 8080.</para></listitem>
+                       <listitem><para>CookieTimeout — не обязательный параметр, задающий время существования авторизационного Cookie в случае отсутствия активности в секундах. Значение по умолчанию: 1800 (30 минут).</para></listitem>
+               </itemizedlist>
+               </sect2>
+               <sect2>
+               <title>Модуль захвата трафика cap_ether (только для ОС Linux).</title>
+               <para>Модуль не имеет параметров. Для захвата трафика используются так называемые «raw sockets», которые позволяют получить доступ к Ethernet-фреймам. Перехватывается весь трафик попадающий в сетевую подсистему ядра. При использовании обычной маршрутизации трафик будет посчитан два раза: на входящем интерфейсе и на исходящем. При использовании NAT удвоения трафика не происходит, так как NAT заменяет адрес источника. При интенсивном сетевом обмене или при высокой нагрузке на сервер, на котором происходит захват трафика, модуль может терять отдельные пакеты. Процент потерь тем выше чем выше скорость прохождения пакетов и чем выше загрузка сервера. Модуль рекомендуется использовать для ознакомления или в небольших сетях до 100 абонентов с трафиком до 100 Мбит.</para>
+               </sect2>
+               <sect2>
+               <title>Модуль захвата трафика cap_ipq (только для ОС Linux).</title>
+               <para>Модуль не имеет параметров. Для захвата трафика используются передача пакетов из пространства ядра в пространство пользователя посредством очередей (ip queue). Для его работы требуется поддержка ip queueing в ядре (модуль ip_queue.ko) и специальная настройка файрвола (правило QUEUE для iptables). Следует обратить внимание на то что обычно требуется два правила в файрволе для полного перехвата: одно для входящих пакетов и одно для исходящих. Модуль гарантирует 100% перехват трафика, но так как пакет перед отправкой обязательно проходить через плагин — может приводить к снижению пропускной способности роутера. При этом следует обратить внимание на нагрузку на процессор, возможно имеет смысл заменить его на более производительный. В противном случае стоит рассмотреть использование модуля cap_nf для захвата трафика.</para>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля cap_bpf для захвата трафика (только для ОС FreeBSD):</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>iface — обязательный параметр, определяющий на каком интерфейсе будет происходить захват трафика. Параметр может быть задан более одного раза.</para></listitem>
+               </itemizedlist>
+               <para>Для захвата трафика используется инфраструктура Berkeley Packet Filter, представляющая собой «продвинутый» аналог «raw sockets». Так как интерфейсы для перехвата указываются явно, дублирования трафика при обычной маршрутизации не наблюдается. Фильтрование пакетов не используется, перехват происходит по мере возможности, по этому этот модуль, как и cap_ether, тоже может терять пакеты при высокой нагрузке на сервер или высокой скорости прохождения пакетов. Рекомендуется использовать для ознакомления или для небольших сетей до 100 абонентов с трафиком до 100 Мбит.</para>
+               </sect2>
+               <sect2>
+               <title>Модуль захвата трафика cap_divert (только для ОС FreeBSD).</title>
+               <para>Модуль не имеет параметров. Для захвата трафика используются divert-сокеты. Как и IPQ эта технология использует прохождение пакетов через пространство пользователя. Для работы модуля требуется поддержка divert-сокетов в ядре и специальная настройка файрвола. Для передачи пакета в пространство пользователя в файрволе используется правило divert или tee. Первое правило работает аналогично цели QUEUE для iptables — пропускает пакет через пространство пользователя перед отправкой. Соответственно, это может вызвать те-же проблемы с пропускной способностью роутера. Правило tee передает в пространство пользователя копию пакета, а оригинал отправляет дальше. Такой подход позволяет избежать снижения пропускной способности сервера при высокой нагрузке на него, так как исключается ожидание пакета в время его нахождения в пространстве пользователя.</para>
+               </sect2>
+               <sect2>
+               <title>Описание параметров модуля cap_nf для захвата трафика:</title>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>TCPPort — не обязательный параметр, указывающий порт который будет использоваться для приема данных при работе с NetFlow-proxy. Стандартное значение: 9996. Если параметр не указан — прием по протоколу TCP производиться не будет.</para></listitem>
+                       <listitem><para>UDPPort — не обязательный параметр, указывающий порт для приема NetFlow-дагарамм. Стандартное значение: 9996. Если параметр не указан — прием датаграмм по протоколу UDP производиться не будет.</para></listitem>
+               </itemizedlist>
+               <para>В явном виде захват трафика не происходит. Данные о нем поступают от NetFlow-сенсора посредством протокола NetFlow. Это позволяет физически разделить перехват трафика и его учет. NetFlow-сенсор перехватывает трафик, и собирает данные о сессиях (в контексте UDP это передача данных между двумя портами в одном направлении). Информация о сессии включает в себя IP-адреса источника и назначения потока пакетов, номера портов источника и назначения, суммарную длину пакетов и различные дополнительные данные. NetFlow-трафик существенно меньше трафика, который он описывает, так как передается мета-информация а не сами данные. С учетом этого факта и того что биллинговый сервер теперь может не заниматься маршрутизацией пакетов и NAT'ом это существенно снижает нагрузку на него. Этот плагин рекомендуется использоваться в крупных сетях с развитой топологией, включающей несколько NAS'ов. Возможно использование совместно с аппаратными маршрутизаторами Cisco (они единственные имеют лицензию на аппаратную реализацию NetFlow). В качестве NetFlow-сенсоров можно использовать такие утилиты как fprobe, softflowd или ipcad. Так же можно использовать модуль ядра ipt_netflow (Linux) или ng_netflow (FreeBSD).</para>
+               </sect2>
+               <sect2>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>Server — обязательный параметр, указывающий IP-адрес сервера на котором находится snmpd. Стандартное значение: 127.0.0.1.</para></listitem>
+                       <listitem><para>Port — обязательный параметр, указывающий порт на сервере через который будет происходить взаимодействие с snmpd. Стандартное значение: 199.</para></listitem>
+                       <listitem><para>Password — не обязательный параметр, задающий пароль для авторизации плагина в snmpd. По умолчанию пароль не используется.</para></listitem>
+               </itemizedlist>
+               <para>Модуль позволяет производить мониторинг биллинга средствами протокола SNMP. Он не реализует полноценный SNMP-сервер а лишь взаимодействует с существующим дэмоном snmpd, регистрируясь в нем для обслуживания определенного дерева параметров. В комплекте с биллингом идет MIB, описывающий доступные параметры для мониторинга. Параметры разделены на 6 секций, находящихся в узле stg24:</para>
+               <itemizedlist mark="opencircle">
+                       <listitem><para>users (1) — секция, содержащая параметры относящиеся к абонентам:</para>
+                               <itemizedlist mark="square">
+                                       <listitem><para>totalUsers (1) — параметр, описывающий общее количество абонентов в системе;</para></listitem>
+                                       <listitem><para>onlineUsers (2) — параметр, описывающий количество подключенных абонентов;</para></listitem>
+                                       <listitem><para>authorizedUsers (3) — параметр, описывающий количество авторизованных абонентов в системе;</para></listitem>
+                                       <listitem><para>alwaysOnlineUsers (4) — параметр, описывающий количество абонентов работающих в режиме always online;</para></listitem>
+                                       <listitem><para>noCashUsers (5) — параметр, описывающий количество абонентов с нулевым или отрицательным балансом;</para></listitem>
+                                       <listitem><para>disabledDetailStatsUsers (6) — параметр, описывающий количество абонентов с отключенным учетом детальной статистики;</para></listitem>
+                                       <listitem><para>disabledUsers (7) — параметр, описывающий количество принудительно отключенных абонентов;</para></listitem>
+                                       <listitem><para>passiveUsers (8) — параметр, описывающий количество «замороженных» абонентов;</para></listitem>
+                                       <listitem><para>creditUsers (9) — параметр, описывающий количество абонентов с положительным кредитом;</para></listitem>
+                                       <listitem><para>freeMbUsers (10) — параметр, описывающий количество абонентов с неизрасходованными «бесплатными мегабайтами»;</para></listitem>
+                                       <listitem><para>tariffChangeUsers (11) — параметр, описывающий количество абонентов у которых с началом месяца будет изменен тариф.</para></listitem>
+                               </itemizedlist>
+                       </listitem>
+                       <listitem><para>tariffs (2) — секция, содержащая параметры относящиеся к тарифам:</para>
+                               <itemizedlist mark="square">
+                                       <listitem><para>totalTariffs (1) — параметр, описывающий общее количество тарифов;</para></listitem>
+                                       <listitem><para>tariffUsageTable (2) — таблица использования тарифов, состоит из записей вида:</para>
+                                               <itemizedlist mark="square">
+                                                       <listitem><para>tariffIndex (1) — числовой индекс в таблице;</para></listitem>
+                                                       <listitem><para>tariffName (2) — название тарифа (строка);</para></listitem>
+                                                       <listitem><para>userCount (3) — количество абонентов использующих этот тариф.</para></listitem>
+                                               </itemizedlist>
+                                               </listitem>
+                               </itemizedlist>
+                       </listitem>     
+                       <listitem><para>admins (3) — секция, содержащая параметры относящиеся к администраторам системы:</para>
+                               <itemizedlist mark="square">
+                                       <listitem><para>totalAdmins (1) — параметр, описывающий общее количество администраторов, зарегистрированных в системе.</para></listitem>
+                               </itemizedlist>
+                       </listitem>
+                       <listitem><para>services (4) — секция, содержащая параметры относящиеся к услугам:</para>
+                       <itemizedlist mark="square">
+                                       <listitem><para>totalServices (1) — параметр, описывающий общее количество услуг по которым ведется учет в системе.</para></listitem>
+                               </itemizedlist>
+                       </listitem>
+                       <listitem><para>traffcounter (6) — секция, содержащая параметры относящиеся к учету трафика:</para>
+                       <itemizedlist mark="square">
+                                       <listitem><para>totalRules (1) — параметр, описывающий общее количество правил классификации трафика.</para></listitem>
+                               </itemizedlist>
+                       </listitem>
+               </itemizedlist>
+               <para>К параметрам можно обращаться по цифровым OID'ам или по именам. Для обращения к параметрам по именам нужно предоставить системе файл STG-MIB.mib содержащий информацию об именах, типах и OID'ах параметров с кратким описанием. Этот файл можно поместить в каталог ~/.snmp/mibs (в этом случае он будет доступен лишь одному пользователю) или в каталог /usr/share/snmp/mibs (в этом случае он будет доступен всем пользователям системы). Так же большинство утилит позволяют загружать mib-файлы из произвольного места явным указанием пути к ним. Для доступа к параметрам можно использовать утилиты из пакета NetSNMP (http://net-snmp.sourceforge.net/). Для того чтобы просмотреть иерархию параметров можно выполнить такую команду: snmptranslate -m +STG-MIB -Tp -IR stg24. Вывод команды должен быть приблизительно таким:</para>
+<programlisting linenumbering="unnumbered">
++--stg24(1)
+   |
+   +--users(1)
+   |  |
+   |  +-- -R-- Integer32 totalUsers(1)
+   |  +-- -R-- Integer32 onlineUsers(2)
+   |  +-- -R-- Integer32 authorizedUsers(3)
+   |  +-- -R-- Integer32 alwaysOnlineUsers(4)
+   |  +-- -R-- Integer32 noCashUsers(5)
+   |  +-- -R-- Integer32 disabledDetailStatsUsers(6)
+   |  +-- -R-- Integer32 disabledUsers(7)
+   |  +-- -R-- Integer32 passiveUsers(8)
+   |  +-- -R-- Integer32 creditUsers(9)
+   |  +-- -R-- Integer32 freeMbUsers(10)
+   |  +-- -R-- Integer32 tariffChangeUsers(11)
+   |
+   +--tariffs(2)
+   |  |
+   |  +-- -R-- Integer32 totalTariffs(1)
+   |  |
+   |  +--tariffUsageTable(2)
+   |     |
+   |     +--tariffUsageTableEntry(1)
+   |        |  Index: tariffIndex
+   |        |
+   |        +-- ---- Integer32 tariffIndex(1)
+   |        |        Range: 0..255
+   |        +-- -R-- String    tariffName(2)
+   |        |        Textual Convention: DisplayString
+   |        |        Size: 0..255
+   |        +-- -R-- Integer32 userCount(3)
+   |
+   +--admins(3)
+   |  |
+   |  +-- -R-- Integer32 totalAdmins(1)
+   |
+   +--services(4)
+   |  |
+   |  +-- -R-- Integer32 totalServices(1)
+   |
+   +--corporations(5)
+   |  |
+   |  +-- -R-- Integer32 totalCorporations(1)
+   |
+   +--traffcounter(6)
+      |
+      +-- -R-- Integer32 totalRules(1)
+
+</programlisting>
+               <para>Если в качестве ответа будет строчка «Unknown object identifier: stg24» то это означает что команда не смогла найти mib-файл. Для исправления этой ошибки следует либо скопировать файл STG-MIB.mib по одному из указанных выше путей или указать путь к каталогу где он находится с помощью ключа -M. Символ «+» перед STG-MIB обозначает что данные этого файла должны использоваться совместно с загружаемыми по умолчанию. Без этого символа данные будут использоваться автономно. Ключ -M работает схожим образом: символ «+» говорит о том что указанный путь нужно добавить к путям поиска mib-файлов, используемым по умолчанию. Без символа «+» будет использоваться единственный путь — указанный.</para>
+               <para>Для доступа к значениями параметров можно использовать следующую команду: snmpget -v2c -ccommunity_w -m +STG-MIB 10.0.0.1 stg24.users.totalUsers. Ключ -v указывает используемую версию протокола. На сегодняшний день существует 3 версии протокола: 1, 2 и 3. Версия 1 считается устаревшей и почти не используется. Версия 2 существует в двух модификациях: user-based (с суффиксом «u») и community-based (с суффиксом «c»). Версия 3 является самой новой и предоставляет широкие средства аутентификации, контроля целостности и шифрования. Ключ -c задает community для доступа к серверу. Ключ -m позволяет подключать дополнительные mib-файлы. При использовании доступа к параметрам по названию необходимо подключить mib-файл STG-MIB. Далее следуют два аргумента: адрес SNMP-сервера и название параметра. Утилита snmpget позволяет получить значение скалярных параметров — параметров имеющих только одно значение. Для доступа к таблицам и деревьям используется утилита snmpwalk имеющая такой-же синтаксис.</para>
+               <para>Можно обращаться к параметрам по цифровому OID: snmpwalk -v2c -ccommunity_w 10.0.0.1 .1.3.6.1.4.1.38313.1.2. В этом случае загружать дополнительные mib-файлы не требуется. «.1.3.6.1.4.1» - OID enterprise-ветки всего дерева SNMP. «38313» - официально полученный от IANA (http://www.iana.org) enterprise-номер, уникально идентифицирующий дерево параметров Stargazer. Следующая за ним цифра 1 говорит о том что мы работаем с узлом stg24. «.1.3.6.1.4.1.38313.1.2» - OID таблицы tariffUsageTable.</para>
+               <para>Для того чтобы установить взаимодействие между плагином smux и дэмоном snmpd нужно провести дополнительную настройку последнего. А именно: указать в конфигурационном файле (обычно это /stc/snmp/snmpd.conf) параметр smuxpeer (OID обслуживаемый плагином, в нашем случае это .1.3.6.1.4.1.38313) и smuxsocket (IP-адрес с которого будут приходить пакеты от smux-плагина).</para>
+               </sect2>
+       </simplesect>
+       <simplesect>
+               <title>Настройка конфигурационного файла /etc/stargazer/rules</title>
+               <para>Файл rules описывает парвила классификации трафика по направлениям тарификации. Это текстовый файл, каждая строка которого описывает одно правило классификации. Формат строки файла:</para>
+<programlisting linenumbering="unnumbered">    
+&lt;протокол&gt; &lt;CIDR&gt;[:&lt;порт&gt;[-&lt;порт&gt;]] &lt;направление&gt;
+</programlisting>
+       <para>Допустимы следующие варианты указания протокола:</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>TCP — под правило будет попадать только TCP-трафик;</para></listitem>
+               <listitem><para>UDP — под правило будет попадать только UDP-трафик;</para></listitem>
+               <listitem><para>ICMP — под правило будет попадать только ICMP-трафик;</para></listitem>
+               <listitem><para>TCP_UDP — под правило будет попадать только TCP- и UDP-трафик;</para></listitem>
+               <listitem><para>ALL — под правило будет попадать любой трафик.</para></listitem>
+       </itemizedlist>
+       <para>Варианты указания фильтра по IP-адресу и портам:</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>192.168.0.1 — под правило будет попадать только трафик хоста 192.168.0.1;</para></listitem>
+               <listitem><para>192.168.0.1/32 — правило действует аналогично предыдущему;</para></listitem>
+               <listitem><para>192.168.0.0/24 — под правило будет попадать только трафик сети 192.168.0.0/24;</para></listitem>
+               <listitem><para>192.168.0.1:80 — под правило будет попадать только web-трафик хоста 192.168.0.1;</para></listitem>
+               <listitem><para>192.168.0.0/24:80 — под правило будет попадать только web-трафик сети 192.168.0.0/24;</para></listitem>
+               <listitem><para>192.168.0.1:1024-65535 — под правило будет попадать только трафик с высоких номеров портов хоста 192.168.0.1;</para></listitem>
+               <listitem><para>192.168.0.1/24:1024-65535 — под правило будет попадать только трафик с высоких номеров портов сети 192.168.0.0/24.</para></listitem>
+       </itemizedlist>
+       <para>В качестве направления указывается один из идентификаторов DIR0-DIR9 или NULL. Трафик классифицируемый по направлению NULL системой никак не учитывается.</para>
+       <para>В файле допустимо наличие пустых строк и комментариев. Комментарием считается строка начинающаяся с символа #. Текст следующий за этим символом до конца строки не учитывается.</para>
+       <para>Классификация трафика происходит путем последовательного сравнения информации из заголовка пакета с правилами в файле сверху-вниз до первого совпадения. По этому более «узкие» правила должны описываться перед более «широкими». Например, чтобы выделить web-трафик определенного хоста в отдельное направление порядок указания правил должен быть следующим:</para>
+<programlisting linenumbering="unnumbered">    
+TCP 192.168.0.1:80 DIR1
+ALL 192.168.0.1 DIR2
+</programlisting>      
+       <para>Если поменять эти строки местами то весь трафик хоста 192.168.0.1 попадет под первое правило.</para>
+       </simplesect>   
+       <simplesect>
+               <title>Использование скриптов OnConnect, OnDisconnect, OnUserAdd, OnUserDel, OnChange</title>
+               <para>Для реакции на различные события в системе используются файлы OnConnect, OnDisconnect, OnUserAdd, OnUserDel, OnChange. Эти файлы расположены в каталоге с конфигурационными файлами системы и должны иметь бит выполнения. Обычно это скрипты на одном из скриптовых языков программирования (sh, perl, python, php), но могут быть и полноценными программами.</para>
+               <para>Наиболее часто используются файлы OnConnect и OnDisconnect. Система запускает их, соответственно, при включении и при выключении доступа для отдельных абонентов. Обычно эти файлы содержат в себе скрипты управления файрволом для разрешения и запрещения прохождения трафика от определенных абонентов. Файл OnConnect запускается при включении доступа абоненту, а файл OnDisconnect — при выключении.. При запуске файла OnConnect в него передаются следующие параметры (по порядку):</para>
+               <orderedlist numeration="arabic">
+                       <listitem><para>login — логин абонента;</para></listitem>
+                       <listitem><para>ip — ip-адрес абонента;</para></listitem>
+                       <listitem><para>cash — состояние счета абонента;</para></listitem>
+                       <listitem><para>id — уникальный целочисленный идентификатор абонента (уникальность сохраняется в пределах одного запуска системы);</para></listitem>
+                       <listitem><para>dirs — список открываемых направлений (представлен строкой вида «0101100101», где первая цифра соответствует направлению DIR0 а последняя — DIR9).</para></listitem>
+               </orderedlist>
+               <para>При запуске файла OnDisconnect в него передаются следующие параметры (по порядку):</para>
+               <orderedlist numeration="arabic">
+                       <listitem><para>login — логин абонента;</para></listitem>
+                       <listitem><para>ip — ip-адрес абонента;</para></listitem>
+                       <listitem><para>cash — состояние счета абонента;</para></listitem>
+                       <listitem><para>id — уникальный целочисленный идентификатор абонента (уникальность сохраняется в пределах одного запуска системы);</para></listitem>
+                       <listitem><para>dirs — список открытых направлений (представлен строкой вида «0101100101», где первая цифра соответствует направлению DIR0 а последняя — DIR9).</para></listitem>
+               </orderedlist>
+               <para>Файлы OnUserAdd и OnUserDel запускаются при добавлении и удалении абонента. В качестве параметра в них передается логин абонента.</para>
+               <para>Файл OnChange запускается при внесении изменений в учетную запись абонента. Его можно использовать для дополнительного журналирования изменений. В качестве параметров при запуске в него передаются (по порядку):</para>
+               <orderedlist numeration="arabic">
+                       <listitem><para>login — логин абонента;</para></listitem>
+                       <listitem><para>parameter — название изменяемого параметра;</para></listitem>
+                       <listitem><para>old value — старое значение параметра;</para></listitem>
+                       <listitem><para>new value — новое значение параметра.</para></listitem>
+               </orderedlist>
+       </simplesect>   
+       <simplesect>
+       <title>Описание конфигурационного файла stg.conf для плагина FreeRADIUS rlm_stg.so</title>
+       <itemizedlist mark="opencircle">
+               <listitem><para>local_port — необязательный параметр. Указывает, с какого локального порта будет происходить обмен данными с Stargazer.</para></listitem>
+               <listitem><para>server — IP-адрес сервера Stargazer.</para></listitem>
+               <listitem><para>port — порт для обмена данными со Stargazer.</para></listitem>
+               <listitem><para>password — пароль, который будет использован для шифрования обмена данными с Stargazer.</para></listitem>
+       </itemizedlist>
+       <para>Пример секции параметров rlm_stg.so для radiusd.conf:</para>
+<programlisting linenumbering="unnumbered">    
+stg {
+        local_port = 6667
+        server = localhost
+        port = 6666
+        password = 123456
+}
+</programlisting>      
+       <para>Модуль необходимо прописать в секцию instantiate, authorize. В секции authenticate модуль необходимо прописать в подсекциях AuthType до соответствующих модулей аутентификации. Например:</para>
+<programlisting linenumbering="unnumbered">    
+Auth-Type PAP {
+        stg
+        pap
+}
+</programlisting>      
+       <para>Также модуль должен быть прописан в секции accounting и post-auth.</para>
+       </simplesect>
+</chapter>
index 2c4afb8e5aba5a33c179099b4538435d081df4c3..9c3d6e5c9c016f17695c08ae77ba22f21272452f 100644 (file)
@@ -1,7 +1,7 @@
 <chapter xml:id="ch5">
-    <title>Описание работы с конфигуратором</title>
-    <para>Как и говорилось выше, конфигуратор предназначен для выполнения различных административных действий над клиентами и над некоторыми параметрами сервера.</para>
-    <para>
+       <title>Описание работы с конфигуратором</title>
+       <para>Как и говорилось выше, конфигуратор предназначен для выполнения различных административных действий над клиентами и над некоторыми параметрами сервера.</para>
+       <para>
         Общий вид окна конфигуратора при работе показан ниже:
         <mediaobject>
             <imageobject>
@@ -9,4 +9,252 @@
             </imageobject>
         </mediaobject>
     </para>
+       <para>В окне расположены: меню, кнопки быстрого доступа к элементам меню, таблица с информацией о клиентах, панель с дополнительной информацией о клиенте, панель состояния. Следует помнить что почти все команды, вызываемые из конфигуратора будут работоспособны в случае успешного входа на сервер. При этом в панели состояния изменится статус, и появиться имя пользователя, который вошел в систему:
+       <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/username.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+       </para>
+       <para>Обзор меню:</para>
+       <itemizedlist mark="opencircle">
+               <listitem><para>Файл — Сохранить — команда сохраняет таблицу с клиентами в указанный текстовый файл по указанному пути.</para></listitem>
+               <listitem><para>Файл — Login… — команда, предназначенная для доступа на сервер. При этом выведется следующее окно, в котором необходимо ввести учетные данные администратора, как они заданы при вводе администратора:
+               <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/login.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>В случае успешного входа конфигуратор отобразит список клиентов, и даст, в зависимости от ограничений администратора доступ к функциям. После первой установки и старта системы, по-умолчанию логин и пароль на вход равны admin и 123456 соответственно.</para>
+               </listitem>
+               <listitem><para>Файл — Logout… — команда, выполняющая выход из системы, при этом таблица клиентов очищается.</para></listitem>
+               <listitem><para>Файл — Печатать всех… — команда выводит предварительный просмотр списка клиентов с указанием трафика по направлениям.</para></listitem>
+               <listitem><para>Файл — Выход — выполняет выход из системы и закрытие окна конфигуратора.</para></listitem>
+               <listitem><para>Правка — Редактировать пользователя... — команда предназначена редактирования данных клиента (дублируется кнопкой
+               <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/user-key.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               ), при её вызове будет вызвано следующее окно:
+               <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/data-editor.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>В данном окне отображаются все настройки клиента, так как они будут записаны в конфигурационный файл. Опции и настройки данного окна описаны выше. Все числовые величины должны разделяться только знаком «.» (точка), IP адреса разделяются символом «,» (запятая), если клиенту необходимо иметь доступ с любого IP адреса, то в это поле необходимо занести символ * (звёздочка). В нижней части окна расположена индивидуальная статистика клиента, её можно изменять, для этого необходимо два раза щелкнуть на подлежащему изменению числе, после редактирование подтвердить изменение кнопкой «Enter». Кнопка «?» предназначена для автоматического поиска свободного IP адреса из указанного в настройках диапазона:
+               <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/ip-search.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Признак «Заморожен» предназначен для того, чтобы на определенное время прекратить любые денежные действия со счетом клиента, при установке этого признака со счета клиента снимается сумма, указанная в тарифе. Для того чтобы увидеть пароль клиента, сгенерированный кнопкой «Сгенерировать пароль», необходимо нажать на кнопку «Показать пароль», при этом в первом окне пароля отобразится текущий пароль (через 10 секунд он сам исчезнет снова). Следует помнить что при записи пароли и в первом поле ввода и во втором должны совпадать, иначе система выведет предупреждение и не даст записать данные на клиента. Если данные после изменения успешно записаны, то будет выведено сообщение:
+               <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/information.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>В случае изменения тарифа будет выведен вопрос о времени перевода клиента на новый вид тарифа:
+               <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/change-in-tariff-user.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Если был выбран вариант «Немедленно», то тариф применится к клиентскому аккаунту немедленно, иначе в случае выбора варианта «В следующем месяце» тариф применится с 1 числа следующего месяца автоматически, при этом строка с клиентом, у которого изменится тариф примет вид:
+               <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/tariff.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Т. е. в колонке «Тариф» появится запись двойного тарифа, где перед знаком «/» находится текущий, а после – тот тариф, который будет применен со следующего месяца. Следует учитывать что при переходе на другой тариф в течении месяца (выбрана опция «Немедленно») система пересчитает средства на счёте следующим образом: если в тарифе есть абонплата, то с переходом на новый тариф с клиента будет снята часть абонплаты от того тарифа с которого переходят и в конце месяца с него будет снята часть абонплаты от того тарифа на который перевели. Аналогично клиент получит только часть бесплатных Мб от того тарифа на который его перевели.</para>
+               </listitem>
+               <listitem><para>Правка - Добавить пользователя... – команда, позволяющая добавить нового клиента в систему (дублируется кнопкой
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/new-customer.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               ). При вызове этой команды будет выведено окно для заполнения свойств клиента:
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/create-new-user.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Обязательными к заполнению являются поля: логин, пароль и его подтверждение, IP-адрес(а), тарифный план. Остальные поля и опции  являются необязательными. В случае если какой то обязательный параметр не заполнен, система сообщит об ошибке и предложит ввести недостающие данные, если же все данные указаны верно, то система запишет нового клиента в систему. Также при добавлении нового клиента система выставит количество бесплатных Мб которое стоит в тарифе, установленном клиенту, пропорционально времени оставшемуся до обнуления статистики. Также с клиента будет снята абонаплата выставленная в тарифе пропорционально времени до конца месяца.</para>
+               </listitem>
+               <listitem><para>Правка - Удалить пользователя... – команда позволяющая удалить клиента из системы, при этом все клиентские настройки не удаляются физически на сервере, а переносятся в специальную папку /deleted_users.Команда дублируется кнопкой
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/delete-user.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>.
+               При вызове этой команды будет вызвано подтверждение на удаление:
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/confirm-delete-user.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>.
+               </para>
+               </listitem>
+               <listitem><para>Правка – Тарифные планы... – команда вызывающая редактор тарифных планов (дублируется кнопкой 
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/tariff-plans.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               ):
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/editor-rate-plans.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Цены вводятся через знак «/» - это разделение цены до/после перехода порога по направлению, если цена будет введена без знака «/», то она будет применена как к трафику до, так и после превышения одинаково. Порог устанавливается в поле «Порог (Мб)», если установлен признак «Без порога», то цена вводиться одна. В стоимость заморозки устанавливается сумма, которая будет снята с клиента при установке признака «Заморожен».</para>
+               <para>После изменения тарифного плана необходимо нажать кнопку «Сохранить» для записи данных. Измененный тарифный план начинает применяться сразу после записи.</para>
+               </listitem>
+               <listitem><para>Правка – Администраторы – команда, позволяющая изменять права администраторов и добавлять/удалять их. Дублируется кнопкой
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/key-admin.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               , при вызове команды будет выдано окно со списком текущих администраторов:
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/administrators.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Пароль и подтверждение пароля в целях безопасности не отображаются, при записи если оставить незаполненными поля пароля, то он изменен не будет. Для сохранения сделанных изменений необходимо нажать кнопку «Сохранить». В случае успешного сохранения данных администратора будет выведено сообщение:
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/inform-admin.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Если имела место какая-либо ошибка, сервер сообщит об ней.</para>
+               </listitem>
+               <listitem><para>Инструменты - Статистика – команда отображает общую статистику по направлениям, с визуальным обзором на диаграмме:
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/statistics.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>При выборе вариантов внизу соответственно будет перерисована диаграмма. Также можно указать по каким клиентам показывать суммарную статистику: по всем или только по отфильтрованным, и какую собственно на диаграмме прорисовывать статистику.</para>
+               </listitem>
+               <listitem><para>Инструменты – Фильтр – команда позволяет отфильтровать текущую таблицу с данными о клиентах по заданному фильтру:
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/filter.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               </listitem>
+               <listitem><para>Инструменты - Разослать письма... – команда позволяет разослать письма указанным клиентам с сервера:
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/notification-letters.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>В поля From, Subject заносятся электронный адрес отправителя и тема писем соответственно.</para>
+    <para>Кнопка «Все» позволяет выделить всех клиентов из списка, «Никто» - убирает выделение со всех в списке, «Должники» - выделяет клиентов, у которых баланс меньше нуля и превысил «Кредит», «Инверсия» - позволяет инвертировать выделение, т. е. все кто был помеченными станут непомеченными и наоборот. Кнопки «Загрузить шаблон» и «Сохранить шаблон» позволяют загружать исходный и сохранять текущий шаблоны соответственно. В «Подстановках» можно выбрать спец. Макросы, которые потом при отправке каждому клиенту заменяться на реальные для него цифры или информацию. Пример сохраненного шаблона:</para>
+<programlisting numbering="unnumbered">
+               admin@my.net
+Состояние счета
+Уважаемый пользователь %name!
+
+По состоянию на %date %time на вашем счету осталось %cash у.е.
+
+Перекачано по миру %udload0
+Перекачано по городу %udload1
+
+С уважением, администрация сети my.net
+</programlisting>
+               <para>Кнопка «Просмотр» позволяет просмотреть итоговое сообщение для выбранного клиента:
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/view-letter.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Следует помнить что для корректной рассылки писем в настройках необходимо указать SMTP сервер. Рассылка писем предусматривает сохранение и восстановление шаблонов.</para>
+               </listitem>
+               <listitem><para>Инструменты – Отправить сообщение – команда предназначена для отправки сообщений клиентам, в данный момент находящимся в OnLine или в OffLine (следует учитывать, что сообщение дойдет моментально только лишь в том случае, если клиент пользуется в данный момент авторизатором, если же клиент в данный момент находится в состоянии OffLine, то сообщение дойдет сразу же после первого подключения):
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/send-message.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>При отправке сообщения можно задать пользователей, которым уйдет сообщение, интервал повторения сообщения в минутах, количество повторений, а также время в секундах, в течении которого окно с сообщением будет держаться на экране у пользователя.</para>
+               </listitem>
+               <listitem><para>Инструменты – Очистить таблицу пользователей – команда позволяет очистить таблицу клиентов и их статистики, однако следует понимать что таблица очищается только в окне конфигуратора, никакие данные на сервере изменены не будут.</para></listitem>
+               <listitem><para>Настройки – Настройки... – команда вызывает окно с настройками конфигуратора (дублируется кнопкой
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/key-settingsconfig.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               ):</para>
+               <para>
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/network-settings.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>В данном окне задаются настройки конфигуратора: адрес сервера, порт, адрес почтового сервера и его порт, интервал авто обновления, длина генерируемого пароля и прочие параметры конфигуратора. На закладке «Интерфейс»
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/interface.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               задаются: видимость колонок в окне клиентов, а так же ширина. Признак «Загружать последний шаблон» определяет загружать ли конфигуратору последний шаблон, который был использован при последней отправке писем клиентам.</para>
+               <para>На закладке «Раскраска» можно задать цвета, шрифт и другие параметры отображения в основной таблице и в панели информации.
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/coloring.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>На закладке «Прочее» можно указать, сохранять ли логин и (или) пароль администратора. Пароль шифруется и привязывается к HDD компьютера, однако, НЕ РЕКОМЕНДУЕТСЯ сохранять пароль администратора !!! Также здесь можно задать имена полей типа UserDataN для отображения в конфигураторе и параметры, которые будут показываться в нижней панели информации. В разделе «Подсети и IP–адреса» можно задать имя и начальный адрес для автоматического поиска свободного IP адреса.
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/other-settings.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               </listitem>
+               <listitem><para>Настройки – Информация о сервере – команда позволяет узнать некоторую информацию о сервере, о его версии и некоторые другие данные:
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/informserver.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Кнопка
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/update.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               позволяет обновить данные о клиентах в таблице.</para>
+               <para>Кнопка
+               <mediaobject>
+            <imageobject>
+              <imagedata fileref="images/autoupdate.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               позволяет включать или отключать авто обновление данных. В настройках конфигуратора можно задать интервал авто обновления.</para>
+               </listitem>
+       </itemizedlist>
 </chapter>
index 208d7f77d561569a1107e3ce034ab4060078fb1d..118704cc8d0c01119e13e22583ea4f226819b354 100644 (file)
 <chapter xml:id="ch6">
-    <title>Описание работы с GUI-авторизатором</title>
-    <para>Клиентский авторизатор предназначен для выдачи клиентам сети. С помощью него возможно узнать состояние счета, а так же состояние перекачанного трафика по направлениям. Сервер системы может работать со старыми версиями авторизаторов, т. е. сохраняется обратная совместимость, однако по мере возможности необходимо обновлять клиентские авторизаторы до последних версий.</para>
-    <para>
-        Основное окно авторизатора показано ниже:
+       <title>Описание работы с GUI-авторизатором</title>
+       <para>Клиентский авторизатор предназначен для выдачи клиентам сети. С помощью него возможно узнать состояние счета, а так же состояние перекачанного трафика по направлениям. Сервер системы может работать со старыми версиями авторизаторов, т. е. сохраняется обратная совместимость, однако по мере возможности необходимо обновлять клиентские авторизаторы до последних версий.</para>
+       <para>Основное окно авторизатора показано ниже:
         <mediaobject>
             <imageobject>
                 <imagedata fileref="images/inetaccess-main.png" format="PNG"/>
             </imageobject>
         </mediaobject>
     </para>
+         <para>В поля Имя и Пароль вводятся, выданные администрацией сети, логин и пароль соответственно.</para>
+         <para>Кнопка «Сообщения» служит для просмотра истории сообщений, отправленных администрацией сети:
+         <mediaobject>
+        <imageobject>
+            <imagedata fileref="images/messages.png" format="PNG"/>
+        </imageobject>
+    </mediaobject>
+       </para>
+       <para>В отключенном состоянии авторизатор имеет следующий вид:
+        <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/of-authorities.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Для того чтобы авторизоваться, необходимо заполнить все поля, выбрать при необходимости те направления, к которым следует подключиться и нажать кнопку «Подключиться». Направления необходимо выбрать с помощью кнопки
+        <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/key.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+        до подключения:
+        <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/internet-access.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>После подключения направления, выбранные для подключения будут отмечены символом «V», а направления к которым подключаться не требуется, будете отмечены символом «Х» в колонке авторизатора «V/X».</para>
+               <para>При успешном подключении окно авторизатора примет следующий вид:
+        <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/window-of-authorities.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>Если же по каким-то причинам подключение не удастся, то авторизатор сообщит об этом:
+        <mediaobject>
+            <imageobject>
+                <imagedata fileref="images/error.png" format="PNG"/>
+            </imageobject>
+        </mediaobject>
+               </para>
+               <para>При этом будет сообщено именно о той ошибке, которая имеет место в вашей ситуации.</para>
+               <simplesect>
+        <title>Описание настроек авторизатора.</title>
+        <para>Для вызова диалога настроек авторизатора нажмите кнопку
+          <mediaobject>
+              <imageobject>
+                  <imagedata fileref="images/settings-key.png" format="PNG"/>
+              </imageobject>
+          </mediaobject>
+          в окне. Откроется следующий диалог:
+          <mediaobject>
+              <imageobject>
+                  <imagedata fileref="images/set-of-authorities.png" format="PNG"/>
+              </imageobject>
+          </mediaobject>
+        </para>
+        <para>В данном окне сосредоточены все настройки авторизатора:</para>
+        <itemizedlist mark="opencircle">
+            <listitem><para>IP – адрес сервера, к которому производится подключение. Выдается администрацией сети.</para></listitem>
+            <listitem><para>Порт – порт сервера, на который будет обращаться программа авторизации, чаще всего 5555. Выдается администрацией сети.</para></listitem>
+            <listitem><para>Признак «Автоподключение» позволяет автоматически выполнять подключение к серверу при старте авторизатора.</para></listitem>
+            <listitem><para>Признак «Сохранять пароль» позволяет сохранять пароль клиента в файле настройки авторизатора. Следует помнить, что если признак «Сохранять пароль» не установлен, то признак «Автоподключение» автоматически становится неактивным.</para></listitem>
+            <listitem><para>Признак «Переподключение» позволяет автоматически переподключаться в случае обрыва связи с сервером или в других непредвиденных случаях.</para></listitem>
+            <listitem><para>Признак «Привязывать пароль к HDD» позволяет зашифровать сохраненный в файле настройки пароль. При это если даже произойдет кража файла с паролем, то он не сможет быть декодирован на компьютере с другим HDD. Очень рекомендуется выставлять опцию включенной.</para></listitem>
+            <listitem><para>Признак «Минимизировать при нажатии на Х» позволяет при закрытии главного окна авторизатора, не выгружать программу из памяти, а сворачивать её в системный трей.</para></listitem>
+            <listitem><para>Отображение статистики:
+                <mediaobject>
+                    <imageobject>
+                        <imagedata fileref="images/display-statistics-floating.png" format="PNG"/>
+                    </imageobject>
+                </mediaobject>
+                - данное меню позволяет выбрать, в каком виде измерений будут выводиться данные о прошедшем трафике. Если выбрано «Плавающая», то данные будут отражаться в зависимости от объёма в тех или иных единицах.</para>
+                <para>
+                    <mediaobject>
+                        <imageobject>
+                            <imagedata fileref="images/up-down.png" format="PNG"/>
+                        </imageobject>
+                    </mediaobject>
+                    - данное меню позволяет выбирать каким образом будут отображаться данные о прошедшем трафике в разрезе «отправлено» и «принято». Если выбрана опция
+                    <mediaobject>
+                        <imageobject>
+                            <imagedata fileref="images/upload-dowload.png" format="PNG"/>
+                        </imageobject>
+                    </mediaobject>
+                    , то отображаться будет сумма обоих трафиков, как отправленного, так и принятого. Если выбрана опция 
+                    <mediaobject>
+                        <imageobject>
+                            <imagedata fileref="images/dowload.png" format="PNG"/>
+                        </imageobject>
+                    </mediaobject>
+                    то отражаться будет только принятая часть трафика. И если выбрана опция
+                    <mediaobject>
+                        <imageobject>
+                            <imagedata fileref="images/up-down-option.png" format="PNG"/>
+                        </imageobject>
+                    </mediaobject>
+                    , то отражаться трафик будет раздельно.
+                </para>
+            </listitem>
+            <listitem><para>Признаки «Выводить подсказку по остатку денег» и «Выводить подсказку по трафику» - позволяют выводить при наведении на значок в системном трее информацию об остатке денежных средств на счету и об переданном трафике соответственно. Для опции «Выводить подсказку по трафику» необходимо выбрать направление, по которому будет выводиться подсказка.</para></listitem>
+            <listitem><para>Признак «Мигать иконкой, если денег меньше» отвечает за включение сигнализации, если сумма денег на балансе клиента станет меньше установленной.</para></listitem>
+        </itemizedlist>
+        <para>В конфигурационном файле авторизатора (InetAccess.ini) можно указать параметры, которые не могут быть изменены с помощью окна «Настройка». Параметр IPEditable, если он принимает значение 1, то в окне настроек авторизатора становится недоступным поле IP адрес сервера. Параметр PortEditable, если он принимает значение 1, то в окне настроек авторизатора становится недоступным поле порт сервера. Рекомендуется при выдаче пользователям авторизатора, выдавать и файл настроек с прописанными значениями IP и порта сервера биллинга, а также прописывать IPEditable=1 и PortEditable=1. Параметр NeverSavePassword отвечает за возможность установки флага «Сохранять пароль». Если значение данного параметра равно 1, то авторизатор не позволит установить этот признак, и соответственно не будет сохранять и восстанавливать пароль. Параметр Currency позволяет задать название валюты для отображения в авторизаторе, в которой ведется учет в биллинговой системе.</para>
+        <para>Авторизатор имеет возможность смены иконок, которые будут отображаться в системном трее. Для того, чтобы авторизатор принял пользовательские иконки, следует в том каталоге, где расположен InetAccess.exe создать папку ico и положить туда файлы с иконками. Файлы должны иметь определенные имена: ia_green.bmp, ia_grey.bmp, ia_red.bmp, ia_yellow.bmp. Если пользовательские иконки не будут заданы или будет отсутствовать папка ico, то будут использованы стандартные иконки, встроенные в авторизатор.</para>
+               </simplesect>
 </chapter>
index bb608a0d858ac48bced96c4f140bd09e053326ac..be6a00c8273339dee53160de7cb2d2f9b77d845d 100644 (file)
@@ -1,4 +1,65 @@
 <chapter xml:id="ch8">
-    <title>Описание работы с консольным конфигуратором</title>
-    <para>Консольный конфигуратор позволяет добавлять, удалять пользователей,  получать и устанавливать некоторые параметры пользователя и отправлять ему текстовые сообщения. Общий формат вызова для получения значения параметра:</para>
-</chapter>
+       <title>Описание работы с консольным конфигуратором</title>
+       <para>Консольный конфигуратор позволяет добавлять, удалять пользователей,  получать и устанавливать некоторые параметры пользователя и отправлять ему текстовые сообщения. Общий формат вызова для получения значения параметра:</para>
+<programlisting linenumbering="unnumbered">
+sgconf get -s &lt;server&gt; -p &lt;port&gt; -a &lt;admin&gt; -w &lt;admin_password&gt; -u &lt;user&gt; &lt;options&gt;                        
+</programlisting>
+       <itemizedlist mark="none">
+               <listitem><para>server — адрес сервера;</para></listitem>
+               <listitem><para>port — порт конфигуратора на сервере;</para></listitem>
+               <listitem><para>admin — логин администратора на сервере;</para></listitem>
+               <listitem><para>admin_password — пароль администратора на сервере.</para></listitem>
+               <listitem><para>user — логин пользователя на сервере.</para></listitem>
+               </itemizedlist>
+       <para>Общий формат вызова для установки параметра, добавления или удаления пользователя:</para>
+<programlisting linenumbering="unnumbered">
+sgconf get -s &lt;server&gt; -p &lt;port&gt; -a &lt;admin&gt; -w &lt;admin_password&gt; -u &lt;user&gt; &lt;options&gt;                        
+</programlisting>
+       <para>Параметры вызова — такие-же, что и при получении значения параметра.</para>
+       <itemizedlist mark="none">
+               <listitem><para>-c &lt;add_cash[:log_message]&gt; — добавление денег на счет пользователя. add_cash — добавляемая сумма, log_message — опциональный коментарий для записи в лог.</para></listitem>
+               <listitem><para>-v &lt;set_cash[:log_message]&gt; — установка денег на счету пользователя. set_cash — устанавливаемая сумма, log_message — опциональный коментарий для записи в лог.</para></listitem>
+               <listitem><para>-c — при использовании без параметра возвращает состояние счета пользователя.</para></listitem>
+               <listitem><para>-t &lt;tariff:now|delayed&gt; — смена тарифа пользователя. tariff — название тарифа, now — изменить немедленно, delayed — изменить в конце месяца.</para></listitem>
+               <listitem><para>-t — при использовании без параметра возвращает текущий тариф пользователя.</para></listitem>
+               <listitem><para>-r &lt;credit&gt; — предоставление пользователю кредита в размере credit.</para></listitem>
+               <listitem><para>-r — при использовании без параметров возвращает текущий кредит.</para></listitem>
+               <listitem><para>-E &lt;YYYY-MM-DD&gt; — указание срока истечения кредита пользователю.</para></listitem>
+               <listitem><para>-E — при использовании без параметров возвращает текущий срок истечения кредита пользователю.</para></listitem>
+               <listitem><para>-o &lt;new_password&gt; — установка пользователю пароля new_password.</para></listitem>
+               <listitem><para>-o — при использовании без параметра возвращает текущий пароль пользователя.</para></listitem>
+               <listitem><para>-e &lt;prepaid&gt; — установка количества предоплаченного трафика.</para></listitem>
+               <listitem><para>-e — при использовании без параметра возвращает количество оставшегося предоплаченного трафика.</para></listitem>
+               <listitem><para>-I &lt;*ip_addr[,ip_addr]&gt; — установка IP-адреса пользователя (одного, нескольких или произвольного).</para></listitem>
+               <listitem><para>-I — при использовании без параметра возвращает текущий IP-адрес пользователя.</para></listitem>
+               <listitem><para>-A &lt;name&gt; — установка реального имени пользователя.</para></listitem>
+               <listitem><para>-A — при использовании без параметра возвращает реальное имя пользователя.</para></listitem>
+               <listitem><para>-N &lt;note&gt; — установка коментария к пользователю.</para></listitem>
+               <listitem><para>-N — при использовании без параметров возвращает коментарий к пользователю.</para></listitem>
+               <listitem><para>-D &lt;address&gt; — установка реального адреса пользователя.</para></listitem>
+               <listitem><para>-D — при использовании без параметра возвращает адрес пользователя.</para></listitem>
+               <listitem><para>-L &lt;email&gt; — установка email-адреса пользователя.</para></listitem>
+               <listitem><para>-L — при использовании без параметра возвращает адрес Email пользователя.</para></listitem>
+               <listitem><para>-P &lt;phone&gt; — установка телефона пользователя.</para></listitem>
+               <listitem><para>-P — при использовании без параметров возвращает телефон пользователя.</para></listitem>
+               <listitem><para>-G &lt;group&gt; — установка группы пользователя.</para></listitem>
+               <listitem><para>-G — при использовании без параметра возвращает текущую группу пользователя.</para></listitem>
+               <listitem><para>-d &lt;1|0&gt; — включение/выключение пользователя.</para></listitem>
+               <listitem><para>-d — при использовании без параметров возвращает текущее состояние пользователя (включен/выключен, а не online/offline).</para></listitem>
+               <listitem><para>-i &lt;1|0&gt; — «заморозка»/«разморозка» пользователя.</para></listitem>
+               <listitem><para>-i — при использовании без параметра возвращает текущее состояние пользователя («заморожен»/«разморожен»).</para></listitem>
+               <listitem><para>--disable-stat &lt;1|0&gt; — включение/выключение ведения детальной статистики для пользователя.</para></listitem>
+               <listitem><para>--disable-stat — при использовании без параметра возвращает состояние флага ведения детальной статистики для пользователя.</para></listitem>
+               <listitem><para>--always-online &lt;1|0&gt; — включение/выключение режима Always Online для пользователя.</para></listitem>
+               <listitem><para>--always-online — при использовании без параметра возвращает режим пользователя.</para></listitem>
+               <listitem><para>--u0 &lt;traff&gt; [--u1 &lt;traff&gt; ...] — установка количества исходящего трафика за месяц по направлениям (0 — 9).</para></listitem>
+               <listitem><para>--u0 [--u1 ...] — при использовании без параметров возвращает количество исходящего трафика по направлениям.</para></listitem>
+               <listitem><para>--d0 &lt;traff&gt; [--d1 &lt;traff&gt; ...] — установка количества входящего трафика за месяц по направлениям (0 — 9).</para></listitem>
+               <listitem><para>--d0 [--d1 ...] — при использовании без параметров возвращает количество входящего трафика по направлениям.</para></listitem>
+               <listitem><para>--ud0 &lt;userdata&gt; [--ud1 &lt;userdata&gt; ...] — установка полей UserData&lt;0-9&gt;.</para></listitem>
+               <listitem><para>--ud0 [--ud1 ...] — при использовании без параметра возвращает поля UserData&lt;0-9&gt;.</para></listitem>
+               <listitem><para>-m &lt;message&gt; — отправляет пользователю сообщение.</para></listitem>
+               <listitem><para>-n — добавляет нового «пустого» пользователя.</para></listitem>
+               <listitem><para>-l — удаляет пользователя.</para></listitem>
+       </itemizedlist>
+       </chapter>
\ No newline at end of file
index d4377f8f5c2f81d85c004c44cb67f941aa6b5b88..cdc2ef1a5b239c15dece38dfdabb6634ef3f26dd 100644 (file)
@@ -1,9 +1,9 @@
 <chapter xml:id="ch9">
-    <title>Лицензия, авторы, копирайты, благодарности</title>
-    <para>Система распространяется по лицензии GPL v2.</para>
-    <para>Авторами системы являются Борис Михайленко aka stg-34 stg34@stargazer.dp.ua, Максим Мороз, Максим Мамонтов aka madf faust@stargazer.dp.ua, Игорь Лысейко и другие.</para>
-    <para>Авторами файлов справки являются Георгий Филонов aka egor2fsys egor2fsys@gmail.com и Максим Мамонтов aka madf faust@stargazer.dp.ua.</para>
-    <para>В системе использована библиотека LibExpat (http://expat.sourceforge.net/).</para>
-    <para>Модуль БД на основе СУБД Firebird использует библиотеки fbclient (http://www.firebirdsql.org) и IBPP (http://www.ibpp.org). Модуль БД на основе СУБД MySQL использует библиотеку mysqlclient_r (http://dev.mysql.com). Модуль БД на основе СУБД PostgreSQL использует библиотеку pq (http://www.postgresql.org).</para>
-    <para>Авторы выражают благодарность всем администраторам и пользователям Stargazer за сообщения об ошибках и предложения новых возможностей системы. Также выражаем благодарность форумам «Локальные сети Украины» и «Домашние сети России».</para>
+       <title>Лицензия, авторы, копирайты, благодарности.</title>
+       <para>Система распространяется по лицензии GPL v2.</para>
+       <para>Авторами системы являются Борис Михайленко aka stg-34 stg34@stargazer.dp.ua, Максим Мороз, Максим Мамонтов aka madf faust@stargazer.dp.ua, Игорь Лысейко и другие.</para>
+       <para>Авторами файлов справки являются Георгий Филонов aka egor2fsys egor2fsys@gmail.com, Максим Мамонтов aka madf faust@stargazer.dp.ua и Елена Шевелева burmuar@gmail.com.</para>
+       <para>В системе использована библиотека LibExpat (http://expat.sourceforge.net/).</para>
+       <para>Модуль БД на основе СУБД Firebird использует библиотеки fbclient (http://www.firebirdsql.org) и IBPP (http://www.ibpp.org). Модуль БД на основе СУБД MySQL использует библиотеку mysqlclient_r (http://dev.mysql.com). Модуль БД на основе СУБД PostgreSQL использует библиотеку pq (http://www.postgresql.org).</para>
+       <para>Авторы выражают благодарность всем администраторам и пользователям Stargazer за сообщения об ошибках и предложения новых возможностей системы. Также выражаем благодарность форумам «Локальные сети Украины» и «Домашние сети России». </para>
 </chapter>
index f09404181d0c29095dc9ff70d909b0a2c161d875..c1eef8a8cd8c6f5cc5f25411a81c144816e60318 100644 (file)
@@ -26,4 +26,5 @@
     <xi:include href="ch10.xml"/>
     <xi:include href="ch11.xml"/>
     <xi:include href="ch12.xml"/>
+    <xi:include href="ch13.xml"/>
 </book>
index 421fc7bbeb7bb7e625895aacbb1ace302b5ba88c..c0b7b325ba8659123ea9f4d2224ef6bf9cc71029 100644 (file)
@@ -250,7 +250,7 @@ while (pos < stgHdrLen)
         return -1;
         }
     int ret = recv(sock, &buf[pos], stgHdrLen - pos, 0);
-    if (ret < 0)
+    if (ret <= 0)
         {
         state = confHdr;
         return -1;
@@ -310,7 +310,7 @@ while (pos < ADM_LOGIN_LEN) {
 
     int ret = recv(sock, &login[pos], ADM_LOGIN_LEN - pos, 0);
 
-    if (ret < 0)
+    if (ret <= 0)
         {
         // Error in network
         state = confHdr;
@@ -359,7 +359,7 @@ while (pos < ADM_LOGIN_LEN)
 
     int ret = recv(sock, &loginS[pos], ADM_LOGIN_LEN - pos, 0);
 
-    if (ret < 0)
+    if (ret <= 0)
         {
         // Network error
         printfd(__FILE__, "recv error: '%s'\n", strerror(errno));
index c9fcc549b84f31a83f688f63ce6ec4f84fd1f7e6..3a557a3088a1ec7c32b48260a5dfa1db1564b5bb 100644 (file)
@@ -157,13 +157,6 @@ if (nrMapParser.ReadFile(subnetFile))
 
 netRouters = nrMapParser.GetMap();
 
-if (netRouters.empty())
-    {
-    errorStr = "Parameter(s) \'Subnet*\' not found.";
-    printfd(__FILE__, "Parameter(s) 'Subnet*' not found\n");
-    return -1;
-    }
-
 return 0;
 }
 //-----------------------------------------------------------------------------
index 01878da620a052d877e5dc1669efccf3e31944ee..ac179da9cc28ba6b0ae040c3e4e2d4aa7fb8f8ee 100644 (file)
@@ -44,15 +44,14 @@ bool SMUX::PDUsRequestHandler(const SMUX_PDUs_t * pdus)
 printfd(__FILE__, "SMUX::PDUsRequestHandler()\n");
 asn_fprint(stderr, &asn_DEF_SMUX_PDUs, pdus);
 #endif
-PDUsHandlers::iterator it;
-it = pdusHandlers.find(pdus->choice.pdus.present);
+PDUsHandlers::iterator it(pdusHandlers.find(pdus->choice.pdus.present));
 if (it != pdusHandlers.end())
     {
     return (this->*(it->second))(&pdus->choice.pdus);
     }
+#ifdef SMUX_DEBUG
 else
     {
-#ifdef SMUX_DEBUG
     switch (pdus->present)
         {
         case PDUs_PR_NOTHING:
@@ -67,8 +66,8 @@ else
         default:
             printfd(__FILE__, "SMUX::PDUsRequestHandler() - undefined\n");
         }
-#endif
     }
+#endif
 return true;
 }
 
index 7372948ac8108a5115c078416d8e3f38a337c2bc..f1c94d11b2bc18023bc9b05c9ef264597dffc2ef 100644 (file)
@@ -337,15 +337,14 @@ return false;
 
 bool SMUX::DispatchPDUs(const SMUX_PDUs_t * pdus)
 {
-SMUXHandlers::iterator it;
-it = smuxHandlers.find(pdus->present);
+SMUXHandlers::iterator it(smuxHandlers.find(pdus->present));
 if (it != smuxHandlers.end())
     {
     return (this->*(it->second))(pdus);
     }
+#ifdef SMUX_DEBUG
 else
     {
-#ifdef SMUX_DEBUG
     switch (pdus->present)
         {
         case SMUX_PDUs_PR_NOTHING:
@@ -361,8 +360,8 @@ else
             printfd(__FILE__, "PDUs: undefined\n");
         }
     asn_fprint(stderr, &asn_DEF_SMUX_PDUs, pdus);
-#endif
     }
+#endif
 return false;
 }
 
@@ -468,15 +467,10 @@ tariffs->DelNotifierAdd(&addDelTariffNotifier);
 users->DelNotifierUserDel(&delUserNotifier);
 users->DelNotifierUserAdd(&addUserNotifier);
 
-std::list<CHG_AFTER_NOTIFIER>::iterator it = notifiers.begin();
+std::list<CHG_AFTER_NOTIFIER>::iterator it(notifiers.begin());
 while (it != notifiers.end())
     {
     it->GetUserPtr()->GetProperty().tariffName.DelAfterNotifier(&(*it));
     ++it;
     }
 }
-
-void CHG_AFTER_NOTIFIER::Notify(const std::string &, const std::string &)
-{
-smux.UpdateTables();
-}
index a92326085253a66fd90d4a01e15f52c306cba801..9d0e516d064989e957dcd69c4730be78de5a743e 100644 (file)
@@ -182,6 +182,12 @@ private:
 };
 //-----------------------------------------------------------------------------
 
+inline
+void CHG_AFTER_NOTIFIER::Notify(const std::string &, const std::string &)
+{
+smux.UpdateTables();
+}
+
 inline
 void ADD_DEL_TARIFF_NOTIFIER::Notify(const TARIFF_DATA &)
 {
index ad08c40f02acd03794aefa2b996d1ea6729ab2cd..25b2dd85d8372b880bfa1be5e85f3b45ccafbede 100644 (file)
@@ -31,8 +31,7 @@ while (!users.SearchNext(handle, &user))
     if (user->GetDeleted())
         continue;
     std::string tariffName(user->GetProperty().tariffName.ConstData());
-    std::map<std::string, size_t>::iterator it;
-    it = data.lower_bound(tariffName);
+    std::map<std::string, size_t>::iterator it(data.lower_bound(tariffName));
     if (it == data.end() ||
         it->first != tariffName)
         {
index dc8d553e4c3f5514716ba0f1d5d395f9b29b9a17..d6cb09ef22e4bbd1d49b78836f6e12c4961278d1 100644 (file)
@@ -299,14 +299,14 @@ if (!isNetPrepared)
 int db = sizeof(HDR_8);
 for (int i = 0; i < IA_LOGIN_LEN/8; i++)
     {
-    Blowfish_Encrypt(&ctxHdr, (uint32_t*)(buffer + db + i*8), (uint32_t*)(buffer + db + i*8 + 4));
+    EncodeString(buffer + db + i * 8, buffer + db + i * 8, &ctxHdr);
     }
 
 db += IA_LOGIN_LEN;
 int encLen = (len - sizeof(HDR_8) - IA_LOGIN_LEN)/8;
 for (int i = 0; i < encLen; i++)
     {
-    Blowfish_Encrypt(&ctxPass, (uint32_t*)(buffer + db), (uint32_t*)(buffer + db + 4));
+    EncodeString(buffer + db, buffer + db, &ctxPass);
     db += 8;
     }
 
@@ -330,8 +330,8 @@ if (res == -1)
 
 if (strcmp(buffer + 4 + sizeof(HDR_8), "ERR"))
     {
-    for (int i = 0; i < len/8; i++)
-        Blowfish_Decrypt(&ctxPass, (uint32_t*)(buffer + i*8), (uint32_t*)(buffer + i*8 + 4));
+    for (int i = 0; i < len / 8; i++)
+        DecodeString(buffer + i * 8, buffer + i * 8, &ctxPass);
     }
 
 return 0;
@@ -720,13 +720,14 @@ int IA_CLIENT_PROT::Prepare_CONN_SYN_8(char * buffer)
 {
 connSyn8 = (CONN_SYN_8*)buffer;
 
+assert(sizeof(CONN_SYN_8) == Min8(sizeof(CONN_SYN_8)) && "CONN_SYN_8 is not aligned to 8 bytes");
+
+connSyn8->len = sizeof(CONN_SYN_8);
+
 #ifdef ARCH_BE
 SwapBytes(connSyn8->len);
 #endif
 
-assert(sizeof(CONN_SYN_8) == Min8(sizeof(CONN_SYN_8)) && "CONN_SYN_8 is not aligned to 8 bytes");
-
-connSyn8->len = sizeof(CONN_SYN_8);
 strncpy((char*)connSyn8->type, "CONN_SYN", IA_MAX_TYPE_LEN);
 strncpy((char*)connSyn8->login, login.c_str(), IA_LOGIN_LEN);
 connSyn8->dirs = 0;
@@ -734,18 +735,13 @@ for (int i = 0; i < DIR_NUM; i++)
     {
     connSyn8->dirs |= (selectedDirs[i] << i);
     }
-return connSyn8->len;
+return sizeof(CONN_SYN_8);
 }
 //---------------------------------------------------------------------------
 int IA_CLIENT_PROT::Prepare_CONN_ACK_8(char * buffer)
 {
 connAck8 = (CONN_ACK_8*)buffer;
 
-#ifdef ARCH_BE
-SwapBytes(connAck8->len);
-SwapBytes(connAck8->rnd);
-#endif
-
 assert(sizeof(CONN_ACK_8) == Min8(sizeof(CONN_ACK_8)) && "CONN_ACK_8 is not aligned to 8 bytes");
 
 connAck8->len = sizeof(CONN_ACK_8);
@@ -754,18 +750,18 @@ strncpy((char*)connAck8->type, "CONN_ACK", IA_MAX_TYPE_LEN);
 rnd++;
 connAck8->rnd = rnd;
 
-return connAck8->len;
+#ifdef ARCH_BE
+SwapBytes(connAck8->len);
+SwapBytes(connAck8->rnd);
+#endif
+
+return sizeof(CONN_ACK_8);
 }
 //---------------------------------------------------------------------------
 int IA_CLIENT_PROT::Prepare_ALIVE_ACK_8(char * buffer)
 {
 aliveAck8 = (ALIVE_ACK_8*)buffer;
 
-#ifdef ARCH_BE
-SwapBytes(aliveAck8->len);
-SwapBytes(aliveAck8->rnd);
-#endif
-
 assert(Min8(sizeof(ALIVE_ACK_8)) == sizeof(ALIVE_ACK_8) && "ALIVE_ACK_8 is not aligned to 8 bytes");
 
 aliveAck8 = (ALIVE_ACK_8*)buffer;
@@ -773,42 +769,50 @@ aliveAck8->len = sizeof(ALIVE_ACK_8);
 strncpy((char*)aliveAck8->loginS, login.c_str(), IA_LOGIN_LEN);
 strncpy((char*)aliveAck8->type, "ALIVE_ACK", IA_MAX_TYPE_LEN);
 aliveAck8->rnd = ++rnd;
-return aliveAck8->len;
+
+#ifdef ARCH_BE
+SwapBytes(aliveAck8->len);
+SwapBytes(aliveAck8->rnd);
+#endif
+
+return sizeof(ALIVE_ACK_8);
 }
 //---------------------------------------------------------------------------
 int IA_CLIENT_PROT::Prepare_DISCONN_SYN_8(char * buffer)
 {
 disconnSyn8 = (DISCONN_SYN_8*)buffer;
 
+assert(Min8(sizeof(DISCONN_SYN_8)) == sizeof(DISCONN_SYN_8) && "DISCONN_SYN_8 is not aligned to 8 bytes");
+
+disconnSyn8->len = sizeof(DISCONN_SYN_8);
+
 #ifdef ARCH_BE
 SwapBytes(disconnSyn8->len);
 #endif
 
-assert(Min8(sizeof(DISCONN_SYN_8)) == sizeof(DISCONN_SYN_8) && "DISCONN_SYN_8 is not aligned to 8 bytes");
-
-disconnSyn8->len = sizeof(DISCONN_SYN_8);
 strncpy((char*)disconnSyn8->loginS, login.c_str(), IA_LOGIN_LEN);
 strncpy((char*)disconnSyn8->type, "DISCONN_SYN", IA_MAX_TYPE_LEN);
 strncpy((char*)disconnSyn8->login, login.c_str(), IA_LOGIN_LEN);
-return disconnSyn8->len;
+return sizeof(DISCONN_SYN_8);
 }
 //---------------------------------------------------------------------------
 int IA_CLIENT_PROT::Prepare_DISCONN_ACK_8(char * buffer)
 {
 disconnAck8 = (DISCONN_ACK_8*)buffer;
 
+assert(Min8(sizeof(DISCONN_ACK_8)) == sizeof(DISCONN_ACK_8) && "DISCONN_ACK_8 is not aligned to 8 bytes");
+
+disconnAck8->len = Min8(sizeof(DISCONN_ACK_8));
+disconnAck8->rnd = rnd + 1;
+
 #ifdef ARCH_BE
 SwapBytes(disconnAck8->len);
 SwapBytes(disconnAck8->rnd);
 #endif
 
-assert(Min8(sizeof(DISCONN_ACK_8)) == sizeof(DISCONN_ACK_8) && "DISCONN_ACK_8 is not aligned to 8 bytes");
-
-disconnAck8->len = Min8(sizeof(DISCONN_ACK_8));
-disconnAck8->rnd = rnd + 1;
 strncpy((char*)disconnAck8->loginS, login.c_str(), IA_LOGIN_LEN);
 strncpy((char*)disconnAck8->type, "DISCONN_ACK", IA_MAX_TYPE_LEN);
-return disconnAck8->len;
+return Min8(sizeof(DISCONN_ACK_8));
 }
 //---------------------------------------------------------------------------
 void IA_CLIENT_PROT::SetStatusChangedCb(tpStatusChangedCb p, void * data)