Таблицы базы данных: відмінності між версіями

Матеріал з NoDeny
Перейти до навігації Перейти до пошуку
Немає опису редагування
 
(Не показано 13 проміжних версій цього користувача)
Рядок 58: Рядок 58:
Если ip не привязан ни к какому клиенту, то uid = 0. Если ip статический, то он привязывается клиенту навсегда, вернее, до того момента, пока администратор не отвяжет его.
Если ip не привязан ни к какому клиенту, то uid = 0. Если ip статический, то он привязывается клиенту навсегда, вернее, до того момента, пока администратор не отвяжет его.


Динамический ip привязывается клиенту во время первой авторизации, после чего устанавливается поле release на пару минут в будущее. Каждое обновление авторизации отодвигает release в будущее. По окончанию авторизации, когда release станет большим текущего времени, поле uid устанавливается в 0.
Динамический ip привязывается клиенту во время первой авторизации, после чего с каждым обновлением авторизации отодвигает release в будущее. По окончанию авторизации, когда release станет большим текущего времени, поле uid устанавливается в 0.


Теги - текстовые метки через запятую.
Теги - текстовые метки через запятую.
==nets - описание сетей==
<pre>
  id        : автоинкрементное поле
  preset    : не используется
  priority  : приоритет записи
  class    : номер направления
  net      : сеть в виде xx.xx.xx.xx/yy
  port      : порт (0 - любой)
  comment  : комментарий
</pre>
NoDeny может классифицировать трафик на основе сетей и портов. Трафик может делиться на направления от 1 до 4 (поле class). Такое деление может использоваться для подсчета объема трафика в разные направления, либо же для предосталения разных скоростей в разные направления.
==pays - таблица платежей и событий==
<pre>
id        : уникальный id записи
mid        : id клиента в таблице users
cash      : денежная сумма, для всех нефинансовых записей = 0
time      : timestamp формирования записи
creator    : автор записи (админ/клиент/ядро)
creator_id : id автора записи
creator_ip : ip автора записи, для ядра = 0, что соответствует 0.0.0.0
reason    : многофункциональное поле, хранит закодированные детали платежа/события
comment    : обычно сообщение для клиента
category  : категория платежа, более детально сообщает о внутреннем устройстве
              текущей записи.
</pre>
Pay.pl по значению category декодирует поле reason.
==services==
<pre>
service_id  : id услуги
module      : модуль, который обрабатывает услугу
category    : краткое описание модуля услуги
title      : название услуги
description : описание услуги
grp_list    : через запятую группы клиентов, которые могут заказать услугу
conditions  : условия в виде sql
price      : стоимость услуги
auto_renew  : автопродление услуги, да/нет
no_renew    : блокировка автопродления, да/нет
param      : дополнительные параметры
</pre>
В таблице services описываются услуги, предоставляемые разными модулями.
Поле module хранит имя файла модуля без расширения pm в каталоге /usr/local/nodeny/services/.
Список групп в grp_list начинается и заканчивается запятыми для упрощения sql запросов.
==traflost - неучтенный трафик==
traflost хранит данные о трафике, который не удалось классифицировать, что свидетельствует о неправильной настройке системы, например, пробросе трафика вне контроля NoDeny либо неправильной настройке NoDeny.
<pre>
time      : время среза в timestamp
traf      : количество байт
collector  : номер коллектора каким он указан в настройках
ip1        : ip источника
ip2        : ip приемника
</pre>
==users - основные данные клиентов==
<pre>
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        : нужна авторизация/всегда онлайн;
</pre>
==users_services - подключенные клиентам услуги==
<pre>
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
</pre>
В таблице services описываются услуги в общем виде, в таблице users_services конкретно привязываются к клиентам.
Если услуга не создает запись в таблице платежей, то pay_id = 0.
После окончания действия услуги, запись удаляется и если поле next_service_id не равно 0, то создается новая запись, в которой поле service_id устанавливается равным next_service_id.
Теги - перечисленные через запятую ключевые слова, характеристики услуги. Например, слово inet сообщает, что услуга должна давать доступ в интернет. Модуль управления фаерволом сканирует услуги на наличие этого слова.
По умолчанию поле finish_count не существует - его создает модуль long_services.
==v_auth_now - некоторые данные клиентов, авторизованных в данный момент==
<pre>
    ip          : ip в текстовом виде
    id          : id клиента
    balance    : баланс
    state      : 'off' - доступ заблокирован, 'on' - включен
    limit_money : денежная граница отключения
    in1..in3    : входящий трафик
    out1..out4  : исходящий трафик
</pre>
Если клиент не блокируется по лимиту (поле block_if_limit таблицы users не установлено), то limit_money в этой view = -9999.
==v_ips - список ip, привязанных к клиентам в данный момент==
<pre>
    uid        : id клиента
    ip          : ip в текстовом виде
    ipn        : ip в unsigned int
    type        : тип ip (статический/динамический)
    release    : timestamp освобождения ip, если он динамический
    tm_auth    : длительность авторизации, секунд
    start      : timestamp начала авторизации
    last        : timestamp последнего подтверждения авторизации
    properties  : параметры авторизации
    auth        : 1 - авторизован, 0 - нет
</pre>
Данная view - это объединение таблиц ip_pool и auth_now. Содержит список всех ip, которые выделены клиентам. Если в данный момент ip не авторизован, то tm_auth, start, last и properties равны NULL.
==websessions==
<pre>
    ses    : сессия
    uid    : id клиента либо администратора
    role    : владелец сесии администратор или клиент
    trust  : 0 - безопасная сессия
    expire  : timestamp времени удаления записи
</pre>
По умолчанию trust=1, что дает право админу выполнять любые действия. Админ может установить поле в 0, если работает не за доверенным компьютером, поэтому в случае если он отлучится от админки, никто не сможет навредить, поскольку важные действия будут заблокированы.
Если uid = 0, сессия считается служебной (вспомогательной), используется в модуле авторизации по логинуи паролю.

Поточна версія на 11:47, 25 травня 2018

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