Просмотр Исходного

{toc:maxLevel=3}

h2. Как это работает?

При изменении состояний услуг абонента или изменении его данных ядро отправляет команды на оборудование доступа к услугам (NAS, BRAS) через механизм OSS системы.
OSS система вызывает функции скрипта управления оборудованием при тех или иных событиях: подключилась услуга, абонента заблокировало или разблокировало, изменились параметры его учетной записи и тд.
При вызове функций скрипта, в него передаются некие "переменные": данные конкретного абонента, услуги, его учетной записи, параметры NAS-сервера и тд - все что может быть важно для управления состоянием сервиса и удаленного управления.

В зависимости от текущего события за раз может быть отправлено несколько команд. Например, при удалении в корзину отправляются команды деактивации услуг и удаления абонентской "сессии".


h2. Таблица Состояний абонента (subscriber) для услуг трафика

|| Состояние пользователя в БД \\ || Описание \\ || Состояние на оборудовании \\ || OSS команда синхронизации ||
| Создан \\
deleted=0 \\ | Учетка существует в биллинге. \\
\\ | Используется в схемах со статическим IP и без RADIUS. \\
На оборудовании должны быть созданы нужные постоянные \\
 VLAN, ACL, static clips и т.п. | user_add |
| Удален \\
deleted=1 \\ | Учетка удалена в корзину в биллинге. Изменен *ключевой параметр* учетной записи \\ | На оборудовании должны быть удалены все записи о пользователе. \\
 Часто достаточно просто disconnect. \\ | user_del |
| Не заблокирован администратором \\
accept=1 \\ | Есть хоть одна услуга трафика без флага блокировки администратором. \\ | На оборудовании должна быть сессия(subscriber) пользователя. \\
Не должно быть redirect на страницу блокировки администратором. \\
Если оборудование без сессий, то добавлено правило в acl_accept | user_accept |
| Заблокирован администратором \\
accept=0 \\ | Все услуги трафика заблокированы администратором \\
или самоблокировкой абонента. \\
\\ | Означает, что пользователю(subscriber) нужно создать redirect на страницу блокировки администратором. \\
\*Не рекомендуется при этом просто запрещать трафик, тк это снижает лояльность абонента. \\ | user_drop |
| Баланс исчерпан \\
redirect=1 \\ | Все услуги трафика исчерпали свой баланс. \\ | Означает, что пользователю(subscriber) нужно создать redirect на страницу превышен лимит. | user_redirect |
| Баланс не исчерпан \\
redirect=0 \\ | Есть хоть одна оплаченная услуга трафика или услуга трафика с постоплатой. \\ | Означает, что пользователю(subscriber) должен быть на оборудовании и у него нет редиректа на превышен лимит. | user_redirect_cancel |
| Авторизован \\
logged=1 \\ | Пользователь авторизован, через радиус или веб-авторизацию \\ | Если для веб-авторизации, чтобы убрать правило редиректа noauth \\ | user_auth \\ |
| Не авторизован \\
logged=0 \\ | Пользователь не авторизован \\ | Используется в двух случаях:
* для сброса авторизации - кнопка "Отключить" в карточке абонента; \\
* чтобы убедиться, что сессия сброшена: когда RADIUS-сервер получил от NAS Accounting-Stop (это можно отключить, включив в настройках NAS опцию "Не посылать user_disconnect при получении Radius Stop") | user_disconnect \\ |
| Активирована добровольная блокировка | Абонент активировал добровольную блокировку, вызывается при любом стостоянии авторизации и прочих блокировках | | own_disabled \\ |
| Снята добровольное блокировка | Абонент снял добровольную блокировку, вызывается при любом стостоянии авторизации и прочих блокировках | | own_disabled_cancel \\ |
| Изменилась скорость доступа к сети | Изменилась скорость доступа к сети интернет: например, поменяли тариф или включили турбокнопку. | | user_rate_set |
| Услуга активирована | Одна из [услуг подключенных абоненту|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=49087043#Выбортарифногопланаиуслуг.Добавлениеуслугабоненту-Добавлениеуслуги] была активирована. \\
Если одновременно было активировано несколько услуг, по каждой будет создано отдельно событие. \\
Используется для всех схем [интеграции IPTV|CarbonBilling:Интеграция сервисов интернет-телевидения]. | Зависит от схемы интеграции с телевидением. Для IPTV это управление дополнительными пакетами, в [стандартных схемах|CarbonBilling:Стандартные схемы] интеграции с NAS интернет не используется. | usluga_activated \\ |
| Услуга деактивирована | Одна из [услуг подключенных абоненту|https://docs.carbonsoft.ru/pages/viewpage.action?pageId=49087043#Выбортарифногопланаиуслуг.Добавлениеуслугабоненту-Добавлениеуслуги] была деактивирована. \\
Если одновременно было деактивировано несколько услуг, по каждой будет создано отдельно событие \\
Используется для всех схем [интеграции IPTV|CarbonBilling:Интеграция сервисов интернет-телевидения]. | Зависит от схемы интеграции с телевидением. Для IPTV это управление дополнительными пакетами, в [стандартных схемах|CarbonBilling:Стандартные схемы] интеграции с NAS интернет не используется. | usluga_deactivated \\ |


{INFO}
При изменении любых ключевых параметров учетной записи будет вызвано событие *user_del* 2 раза: Сначала со старыми данными учетной записи а после с измененными.
{INFO}

h2. Список ключевых параметров учетной записи

'ip',
'login',
'mac',
'server' - Опция "У пользователя белый ip"
'snatip',
'deleted' - Флаг, который появляется у учетной записи при удалении в корзину.
'auth_type' - Тип авторизации
'nas_ip',
'router_ip' - IP маршрутизатора
'opt82' -
'switch_port',
'switch_vlan',
'switch_ip',
'nas_id' - ID NAS'a
'psw' - Пароль
'gpon_modem_port' - GPON-порт на приставке

h2. Какие "состояния" должны быть у абонента чтобы интернет работал или наоборот не работал?

*Полноценный Интернет будет у пользователя при наборе состояний:* "Создан","Не заблокирован администратором","Баланс не исчерпан", "Авторизован".

*Редирект на соответствующие страницы будет при наборе состояний:* "Создан","Заблокирован администратором" или "Баланс исчерпан".

*Физическое отключение, не будет работать Ping, PPPoE, VPN, DHCP, при наборе состояний:* "Удален"

h2. Какие команды будут отправлены в разных случаях

h3. Смена тарифа

h4. user_rate_set

При смене тарифа интернет отключается активная услуга интернет и подключается/активируется новая. При этом скорость доступа реально изменится только при поступлении в биллинг трафика по новой услуге или при переавторизации в сети (если используется подключение с использованием протокола RADIUS)

Таким образом, user_rate_set будет вызвана три раза:

* Первая отправка со _старой_ скоростью при _деактивации старой_ услуги
* Вторая отправка со _старой скоростью_ при _активации новой_ услуги
* Третья отправка с _новой скоростью_ при поступлении трафика

Здесь нужно обратить внимание еще на один момент: ID услуги будет передан только в первой и второй отправке. При третьей отправке переменная *usluga_id* будет пустой.

h3. Изменение учетной записи

h4. user_edit

При редактировании любых полей в учетной записи отправляется событие *user_edit*.

h4. user_del и user_add

В случае когда меняется IP либо NAS обязательно будет уходить *user_del* со старыми параметрами и *user_add* с новыми.

h3. Удаление абонента или учетной записи

При удалении в биллинге абонента или учетной записи на NAS передается команда *user_del*, описанная в файле _session_, который находится внутри управляющего каталога каждого NAS в биллинге, по адресу _chroot_ _/app/asr_billing /var/oss/core/__[Название NAS]__/bin(ubin)._
В команде перечислены действия, которые необходимо выполнить NAS с сессией абонента.
{code:title=Пример команды user_del из скрипта session схемы mikrotik-simple}
user_del(){
if [ "$auth_type" == "0" -o "$auth_type" == "6" ]; then
while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=[find address =${ip}]; do :; done
echo "User-Name=\"${login}\"" | radclient -x ${nas_ip}:${coa_port} disconnect "${radius_secret}"
else
while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_auth; do :; done
while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_negbal; do :; done
while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /ip firewall address-list remove numbers=${ip}_crb_blocked; do :; done
fi
while send_mikrotik_cmd -s "$nas_ip" "$telnet_login" "$telnet_password" /queue simple remove numbers=crb_${ip}; do :; done
}
{code}

Необходимо обязательно описать команду *user_del*,если самостоятельно внедряете пользовательскую схему, или, если используете подключения по *RADIUS* \- убедитесь, что оборудование отправляет биллингу *Accounting-Stop* пакеты. Удаление сессии с оборудования важно для правильной работы подсистем биллинга - это необходимо для того чтобы биллинг мог освободить занятый абонентом IP-адрес, а так же закрыть период, если абонент был удалён.