Таблицы базы данных
admin - данные администраторов
id : id администратора login : логин администратора passwd : зашифрованный пароль name : имя post : id в таблице users. Т.е администратор может иметь учетную запись в users privil : через запятую привилегии usr_grps : через запятую id групп, к которым есть доступ tunes : настройки ext : пока не используется balance : баланс
Привилегии задаются в виде списка чисел, разделенных запятыми. Каждое число указывает на то, что соответствующая ему привилегия включена. Список соответствий число=привилегия можно узнать из файла /usr/local/nodeny/web/lang/RU_admin.pl.
Списки привилегий и групп клиентов обязательно начинаются и заканчиваются запятыми.
Баланс - сумма всех платежей, которые оформил данный админ клиентам как «наличный платеж».
auth_now - текущие авторизации
id : автоинкрементное поле ip : ip клиента в текстовом виде start : timestamp начала авторизации last : timestamp последнего подтверждения авторизации properties : дополнительные параметры
Модули авторизации устанавливают начало авторизации в start, после чего с каждым подтвержденным запросом авторизации модифицируют поле last текущим временем. Ядро NoDeny удаляет записи, у которых last не модифицировалось в последние xx секунд, т.е. удаляет записи «по таймауту».
properties хранит параметры авторизации, разделенные «;». Обязательный параметр mod - модуль, которым была осуществлена авторизация. «mod=dhcp;user=000cdbdff588» - мак клиента 00:0c:db:df:f5:88.
auth_log - лог авторизаций
id : автоинкрементное поле uid : id клиента ip : ip клиента (unsigned int) start : начало сессии (timestamp) end : конец сессии (timestamp) properties : дополнительные параметры
Когда клиент перестает быть авторизованным, ядро удаляет запись из таблицы auth_now и создает запись в auth_log, при этом параметр properties копируется из auth_now в auth_log
ip_pool - пул ip адресов
id : уникальный id записи ip : ip (unsigned int) type : тип ip (статический, динамический, зарезервирован) realip : флаг «реальный ip» release : timestamp освобождения, если ip динамический uid : id клиента tags : теги
Если ip не привязан ни к какому клиенту, то uid = 0. Если ip статический, то он привязывается клиенту навсегда, вернее, до того момента, пока администратор не отвяжет его.
Динамический ip привязывается клиенту во время первой авторизации, после чего с каждым обновлением авторизации отодвигает release в будущее. По окончанию авторизации, когда release станет большим текущего времени, поле uid устанавливается в 0.
Теги - текстовые метки через запятую.
nets - описание сетей
id : автоинкрементное поле preset : не используется priority : приоритет записи class : номер направления net : сеть в виде xx.xx.xx.xx/yy port : порт (0 - любой) comment : комментарий
NoDeny может классифицировать трафик на основе сетей и портов. Трафик может делиться на направления от 1 до 4 (поле class). Такое деление может использоваться для подсчета объема трафика в разные направления, либо же для предосталения разных скоростей в разные направления.
pays - таблица платежей и событий
id : уникальный id записи mid : id клиента в таблице users cash : денежная сумма, для всех нефинансовых записей = 0 time : timestamp формирования записи creator : автор записи (админ/клиент/ядро) creator_id : id автора записи creator_ip : ip автора записи, для ядра = 0, что соответствует 0.0.0.0 reason : многофункциональное поле, хранит закодированные детали платежа/события comment : обычно сообщение для клиента category : категория платежа, более детально сообщает о внутреннем устройстве текущей записи.
Pay.pl по значению category декодирует поле reason.
services
service_id : id услуги module : модуль, который обрабатывает услугу category : краткое описание модуля услуги title : название услуги description : описание услуги grp_list : через запятую группы клиентов, которые могут заказать услугу conditions : условия в виде sql price : стоимость услуги auto_renew : автопродление услуги, да/нет no_renew : блокировка автопродления, да/нет param : дополнительные параметры
В таблице services описываются услуги, предоставляемые разными модулями.
Поле module хранит имя файла модуля без расширения pm в каталоге /usr/local/nodeny/services/.
Список групп в grp_list начинается и заканчивается запятыми для упрощения sql запросов.
traflost - неучтенный трафик
traflost хранит данные о трафике, который не удалось классифицировать, что свидетельствует о неправильной настройке системы, например, пробросе трафика вне контроля NoDeny либо неправильной настройке NoDeny.
time : время среза в timestamp traf : количество байт collector : номер коллектора каким он указан в настройках ip1 : ip источника ip2 : ip приемника
users - основные данные клиентов
id : id учетной записи клиента name : логин/учетное имя/серийный номер (назначение задается в настройках группы) passwd : зашифрованный пароль grp : id группы (см. табл. user_grp) contract : договор contract_date : timestamp заключения договора state : состояние доступа вкл/выкл balance : баланс limit_balance : граница отключения block_if_limit : отключать ли запись при достижении границы отключения modify_time : timestamp последней модификации записи fio : ФИО discount : % скидки cstate : техническое состояние (настроить/ремонт/вирусы...) cstate_time : timestamp последнего изменения поля cstate comment : комментарий lstate : нужна авторизация/всегда онлайн;
users_services - подключенные клиентам услуги
id : уникальный id записи uid : id учетной записи клиента pay_id : id платежа в таблице pays service_id : ссылка на id услуги в таблице services tm_start : timestamp подключения услуги tm_end : timestamp, когда услуга должна завершиться next_service_id : после завершения услуги подключится эта услуга tags : теги finish_count : сколько раз будет подключаться эта же услуга, после чего заменится на next_service_id
В таблице services описываются услуги в общем виде, в таблице users_services конкретно привязываются к клиентам.
Если услуга не создает запись в таблице платежей, то pay_id = 0.
После окончания действия услуги, запись удаляется и если поле next_service_id не равно 0, то создается новая запись, в которой поле service_id устанавливается равным next_service_id.
Теги - перечисленные через запятую ключевые слова, характеристики услуги. Например, слово inet сообщает, что услуга должна давать доступ в интернет. Модуль управления фаерволом сканирует услуги на наличие этого слова.
По умолчанию поле finish_count не существует - его создает модуль long_services.
v_auth_now - некоторые данные клиентов, авторизованных в данный момент
ip : ip в текстовом виде id : id клиента balance : баланс state : 'off' - доступ заблокирован, 'on' - включен limit_money : денежная граница отключения in1..in3 : входящий трафик out1..out4 : исходящий трафик
Если клиент не блокируется по лимиту (поле block_if_limit таблицы users не установлено), то limit_money в этой view = -9999.
v_ips - список ip, привязанных к клиентам в данный момент
uid : id клиента ip : ip в текстовом виде ipn : ip в unsigned int type : тип ip (статический/динамический) release : timestamp освобождения ip, если он динамический tm_auth : длительность авторизации, секунд start : timestamp начала авторизации last : timestamp последнего подтверждения авторизации properties : параметры авторизации auth : 1 - авторизован, 0 - нет
Данная view - это объединение таблиц ip_pool и auth_now. Содержит список всех ip, которые выделены клиентам. Если в данный момент ip не авторизован, то tm_auth, start, last и properties равны NULL.
websessions
ses : сессия uid : id клиента либо администратора role : владелец сесии администратор или клиент trust : 0 - безопасная сессия expire : timestamp времени удаления записи
По умолчанию trust=1, что дает право админу выполнять любые действия. Админ может установить поле в 0, если работает не за доверенным компьютером, поэтому в случае если он отлучится от админки, никто не сможет навредить, поскольку важные действия будут заблокированы.
Если uid = 0, сессия считается служебной (вспомогательной), используется в модуле авторизации по логинуи паролю.