Для работы модуля необходимо завести учетную запись пользователя СУБД Firebird. Для этого используется утилита управления учетными записями gsec. Пример создания пользователя (подробности: Server configuration and management):
# gsec -user sysdba -password masterkey GSEC> add stg -pw 123456
Для корректной работы модуля пользователь должен иметь право на запись и чтение данных в таблицы БД.
Модуль для работы с СУБД Firebird требует наличия правильно созданной базы данных. SQL-скрипт для создания находится в каталоге projects/stargazer/inst/var/00-base-00.sql. В обычных условиях выполнение make install или make install-data автоматически создает базу данных, используя этот скрипт. Для того чтобы создать ее вручную необходимо в файле SQL-скрипта раскомментировать строки:
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;
и заменить в них адрес сервера, путь к базу, имя пользователя БД и пароль. После этого выполнить команду isql -i <файл_скрипта>.
Внимание! Для пользователей Debian и, возможно, некоторых других дистрибутивов командный интерпретатор SQL для СУБД Firebird называется isql-fb.
Таблица tb_admins (учетные записи администраторов системы):
pk_admin – уникальный идентификатор учетной записи администратора;
login – название учетной записи администратора;
passwd – пароль для учетной записи администратора (в зашифрованном виде);
chg_conf – флаг, позволяющий менять конфигурационные параметры пользователя;
chg_password – флаг, позволяющий менять пароль пользователя;
chg_stat – флаг, позволяющий менять статистические данные пользователя;
chg_cash – флаг, позволяющий менять количество денег на счету у пользователя;
usr_add_del – флаг, позволяющий удалять и добавлять пользователей;
chg_tariff – флаг, позволяющий управлять тарифами;
chg_admin – флаг, позволяющий управлять учетными записями администраторов системы;
chg_service – зарезервировано;
chg_corporation – зарезервировано.
С таблицей связан триггер tr_admin_bi, выполняющий автогенерацию идентификатора (первичного ключа) учетных записей администраторов системы.
Таблица tb_tariffs (описание тарифов):
pk_tariff – уникальный идентификатор тарифа;
name – название тарифа;
fee – абонплата;
free – количество бесплатных мегабайт трафика, входящих в абонплату;
passive_cost – стоимость «заморозки» пользователя;
traff_type — тип тарификации трафика:
up+down — входящий и исходящий трафик тарифицируется суммарно;
up — тарифицируется только исходящий трафик;
down — тарифицируется только входящий трафик;
max — тарифицируется большее количество трафика;
period — тип абонплаты:
day — ежедневная абонплата (параметр Fee трактуется как значение списываемое ежедневно);
month — ежемесячная абонплата (классическая, параметр Fee трактуется как значение списываемое за месяц, в том числе в режиме SpreadFee);
change_policy — политика смены тарифа:
allow — на период действия политики смена тарифного плана разрешена;
to_cheap — на период действия политики разрешена смена тарифного плана на более дешевый;
to_expensive — на период действия политики разрешена смена тарифного плана на более дорогой;
deny — на период действия политики смена тарифного плана запрещена;
change_policy_pimeout — момент завершения действия политики тарификации (0 - политика тарификации не завершается никогда);
С таблицей связана хранимая процедура sp_add_tariff, получающая в качестве параметров название тарифа и количество направлений. Возвращает сгенерированный идентификатор (первичный ключ) тарифа. При вызове создает запись в таблице tb_tariffs и указанное количество записей в таблице tb_tariffs_params, соответствующее количеству направлений. С таблицей так же связана хранимая процедура sp_delete_tariff, получающая на вход название тарифа и удаляющая его из таблицы tb_tariffs и связанные с ним данные из таблицы tb_tariffs_params.
Таблица tb_tariffs_params (параметры тарифов):
pk_tariff_param – уникальный идентификатор записи информации о направлении в тарифе;
fk_tariff – внешний ключ для связи с тарифом;
dir_num – номер направления;
price_day_a – стоимость 1 Мб трафика днем до превышения порога;
price_day_b – стоимость 1 Мб трафика днем после превышения порога;
price_night_a – стоимость 1 Мб трафика ночью до превышения порога;
price_night_b – стоимость 1 Мб трафика ночью после превышения порога;
threshold – порог по трафику;
time_day_begins – время начала дня;
time_day_ends – время конца дня.
С таблицей связан триггер tr_tariffs_params_bi, выполняющий автогенерацию идентификаторов записей (первичных ключей) в таблице.
Таблица tb_corporations – зарезервирована.
С таблицей связан триггер tr_corporations_bi, выполняющий автогенерацию первичных ключей.
Таблица tb_users (учетные записи пользователей системы):
pk_user – уникальный идентификатор пользователя;
fk_tariff – внешний ключ для связи с тарифом;
fk_tariff_change – внешний ключ для связи с тарифом (может быть пустым);
fk_corporation – зарезервировано;
address – адрес пользователя;
always_online – флаг «всегда on-line»;
credit – величина кредита в деньгах;
credit_expire – дата окончания действия кредита;
disabled_detail_stat — отключение детальной статистики пользователя;
disabled – флаг «отключен»;
email – email пользователя;
grp – название группы пользователя;
note – примечание;
passive – флаг «заморозки»;
passwd – пароль пользователя (в открытом виде);
phone – номер телефона пользователя;
name – название учетной записи пользователя (логин);
real_name – реальное имя пользователя.
С таблицей связана хранимая процедура sp_add_user, принимающая на вход 2 параметра: название учетной записи пользователя и количество направлений. Возвращает сгенерированное значение первичного ключа. При вызове создает запись в таблице tb_users, соответствующую ей запись в таблице tb_stats и указанное количество записей в таблице tb_stats_traffic. Так же с таблицей связана хранимая процедура sp_delete_user, получающая в качестве входного параметра название учетной записи (логин) пользователя и удаляющая учетную запись и всю сопутствующую информацию (данные пользователя, IP-адреса, сообщения, журналы параметров, статистику и детальную статистику, журналы сессий) о пользователе из базы.
Таблица tb_detail_stats (детальная статистика по пользователям системы):
pk_detail_stat – уникальный идентификатор записи детальной статистики;
fk_user – внешний ключ для связи с пользователем;
dir_num – номер направления;
ip – удаленный IP-адрес (в формате 32-битного беззнакового целого);
download – количество принятых байт;
upload – количество отправленных байт;
cost – стоимость объема данных;
from_time – время начала сессии;
till_time – время завершения сеанса.
С таблицей связан триггер tr_detail_stats_bi, выполняющий автогенерацию уникальных идентификаторов записей детальной статистики (первичных ключей).
Таблица tb_services – зарезервирована. С ней связан триггер tr_services_bi, выполняющий автогенерацию первичных ключей. Так же с ней связана хранимая процедура sp_delete_service, удаляющая всю информацию связанную с записью в данной таблице.
Таблица tb_users_services – зарезервирована. С ней связан триггер tr_users_services_bi, выполняющий автогенерацию первичных ключей.
Таблица tb_messages (сообщения пользователям):
pk_message – уникальный идентификатор сообщения;
fk_user – внешний ключ для связи с пользователем;
ver – версия формата сообщения;
msg_type – тип сообщения;
last_send_time – время последней отсылки сообщения;
creation_time – время создания сообщения;
show_time – время показа сообщения;
repeat – количество повторений;
repeat_period – период повторения;
msg_text – текст сообщения.
С таблицей связана хранимая процедура sp_add_message, которая получает на вход идентификатор, параметры и текст сообщения. В случае если идентификатор пустой – сообщение добавляется в таблицу. Если не пустой – параметры и текст сообщения обновляются. Процедура возвращает идентификатор сообщения.
Таблица tb_stats (статистика пользователя):
pk_stat – уникальный идентификатор записи статистики;
fk_user – внешний ключ для связи с пользователем;
cash – количество денег на счету;
free_mb – количество не истраченных бесплатных Мб;
last_activity_time – время последней активности пользователя;
last_cash_add – последнее пополнение счета;
last_cash_add_time – время последнего пополнения счета;
passive_time – время, проведенное пользователем в «замороженном» состоянии за месяц (используется для вычисления объема снимаемой абонплаты);
stats_date – дата записи статистики (месячной статистики).
С таблицей связана хранимая процедура sp_add_stat, получающая на вход набор данных статистики, добавляющая запись в таблицу и возвращающая сгенерированный первичный ключ записи.
Таблица tb_stats_traffic (статистика по направлениям):
pk_stat_traffic – уникальный идентификатор записи статистики;
fk_stat – внешний ключ для связи со статистикой пользователя (текущей или месячной);
dir_num – номер направления;
download – объем входящего трафика;
upload – объем исходящего трафика.
С таблицей связан триггер tr_stat_traffic_bi, служащий для автогенерации первичного ключа.
Таблица tb_users_data (данные пользователя):
pk_user_data – уникальный идентификатор записи;
fk_user – внешний ключ для связи с пользователем;
num – номер поля данных;
data – текст поля данных.
С таблицей связан триггер tr_user_data_bi, служащий для автогенерации первичного ключа.
Таблица tb_allowed_ip (IP-адреса пользователя):
pk_allowed_ip – уникальный идентификатор записи;
fk_user – внешний ключ для связи с пользователем;
ip – IP-адрес (в формате 32-битного беззнакового целого);
mask – маска (в формате 32-битного беззнакового целого).
С таблицей связан триггер tr_allowed_ip_bi, служащий для автогенерации первичного ключа.
Таблица tb_sessions_log (журнал сессии):
pk_session_log – уникальный идентификатор записи в журнале;
fk_user – внешний ключ для связи с пользователем;
event_time – время события;
event_type – тип события (connect/disconnect);
ip – IP-адрес пользователя.
С таблицей связана хранимая процедура sp_append_session_log, получающая в качестве параметров данные для записи в журнал сессии. Добавляет запись в журнал и возвращает сгенерированный первичный ключ.
Таблица tb_sessions_data (данные сессии):
pk_session_data – уникальный идентификатор записи данных;
fk_session_log – внешний ключ для связи с записью в журнале сессии;
dir_num – номер направления;
session_upload – объем исходящего трафика за сессию;
session_download – объем входящего трафика за сессию;
month_upload – объем исходящего трафика за месяц;
month_download – объем входящего трафика за месяц.
С таблицей связан триггер tr_session_data_bi, служащий для автогенерации первичного ключа.
Таблица tb_parameters (параметры пользователя):
pk_parameter – уникальный идентификатор параметра;
name – название параметра.
С таблицей связан триггер tr_parameter_bi, служащий для автогенерации первичного ключа.
Таблица tb_params_log (журнал изменений параметров пользователя):
pk_param_log – уникальный идентификатор записи в журнале изменений параметров пользователя;
fk_user – внешний ключ для связи с пользователем;
fk_parameter – внешний ключ для связи с таблицей параметров;
event_time – время изменения;
from_val – старое значение (в виде строки);
to_val – новое значение (в виде строки);
comment – коментарий.
С таблицей связан триггер tr_param_log_bi, служащий для автогенерации первичного ключа.