<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="uk">
	<id>https:///index.php?action=history&amp;feed=atom&amp;title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85</id>
	<title>Таблицы базы данных - Історія редагувань</title>
	<link rel="self" type="application/atom+xml" href="https:///index.php?action=history&amp;feed=atom&amp;title=%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D1%8B_%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"/>
	<link rel="alternate" type="text/html" href=""/>
	<updated>2026-05-05T12:28:54Z</updated>
	<subtitle>Історія редагувань цієї сторінки в вікі</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id></id>
		<title>Sv: /* users_services - подключенные клиентам услуги */</title>
		<link rel="alternate" type="text/html" href=""/>
		<updated>2018-05-25T11:47:01Z</updated>

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