Таблицы базы данных

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку

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, сессия считается служебной (вспомогательной), используется в модуле авторизации по логинуи паролю.