Handler-скрипт — исполняемый файл, как правило, написанный на shell. С его помощью АСР LANBilling может совершать действия во внешних системах. Например, останавливать интернет-сессию абонента, если учётная запись попала в блокировку.
Когда в АСР LANBilling происходит событие, предусмотренное скриптом, система передаёт в handler набор параметров:
Скрипт обрабатывает эти параметры и выполняет последовательность команд.
Чтобы работать с handler-скриптом, подготовьте файл и пропишите путь к нему в конфигурации системы. Можно настроить handler-скрипт для модулей:
Вы можете использовать сразу несколько скриптов. Например, для ядра АСР LANBilling и для RADIUS-агента. В этом случае убедитесь, что скрипты не будут конфликтовать.
Путь к handler-скрипту для LBcore нужно указать в файле конфигурации /etc/billing.conf.
Пример:
# External script handler
handler = /usr/local/billing/scripts/handler.py
Для учётных записей телефонии и IP-телефонии с агентами LBphone, VoIP:
Для учётных записей интернета с агентами Netflow, RADIUS:
Для учётных записей услуг:
| Событие | Тип УЗ, агент | Параметр | Значение |
|---|---|---|---|
| Когда в учётной записи телефонии начинает или заканчивает действовать номер телефона. Система проверяет это изменение раз в час |
УЗ телефонии, агенты — LBphone, VoIP | edit | |
| Создание учётной записи | Все агенты | create | |
| После создания учётной записи скрипт вызывается ещё раз | Все агенты | Зависит от статуса учётной записи:
|
|
| Изменение учётной записи | Все агенты | edit | |
| Смена тарифа | Все агенты | edit | |
| Изменение полосы пропускания | УЗ интернета, агенты — RADIUS, Netflow | edit | |
| Смена статуса | УЗ интернета, агенты — RADIUS, Netflow | Зависит от статуса учётной записи:
|
|
| Удаление учётной записи | Все агенты | delete |
Пример handler-скрипта: scripts_handler.py
Путь к handler для LBucd нужно указать в файле конфигурации /etc/billing.conf.LBucd.
Пример:
# External script handler
handler = /usr/local/billing/scripts/handler.example.LBucd.sh
| Событие | Параметр | Значение |
|---|---|---|
| Создание учётной записи | create | |
| После создания скрипт вызывается ещё раз | Зависит от статуса учётной записи:
|
|
| Изменение учётной записи | edit | |
| Смена статуса |
|
|
| Удаление учётной записи | delete |
Пример handler-скрипта: scripts_handler.example.LBucd.py
Путь к handler для LBarcd нужно указать в файле конфигурации etc/billing.conf.LBarcd.
Пример:
# External script handler
handler = /usr/local/billing/scripts/handler.example.LBarcd.sh
| Событие | Параметр | Значение |
|---|---|---|
| Создание учётной записи | create | |
| После создания скрипт вызывается ещё раз | Зависит от статуса учётной записи:
|
|
| Изменение учётной записи | edit | |
| Смена статуса |
|
|
| Удаление учётной записи | delete | |
| Учётная запись перешла в любой статус, кроме «Отключена (10)», и у неё есть сессия с типом NAS: cisco_isg или redback | isg-stop | |
| IP-адрес сервера доступа | ||
| Логин, переданный во время аутентификации | ||
| IP-адрес сессии | ||
| Значение атрибута Calling-Station-Id | ||
| Ограничение полосы пропускания |
||
| Новый статус учётной записи | ||
| Старый статус учётной записи | ||
| Идентификатор сессии | ||
| Логин учётной записи в системе | ||
| У учётной записи изменилась полоса пропускания | stop | |
Причина разрыва. Значение выбирается на основе поля stop_req записи сессии в БД:
|
||
| Идентификатор сессии | ||
| Логин, переданный во время аутентификации | ||
| IP-адрес сервера доступа | ||
| IP-адрес сессии | ||
| Значение атрибута Calling-Station-Id | ||
| Новое ограничение полосы пропускания |
||
| Старое ограничение полосы пропускания |
||
| Имя пользователя, переданное во время аутентификации | ||
| После того как для сессии получен start-пакет | start | |
| Идентификатор сессии | ||
| Логин, переданный во время аутентификации | ||
| IP-адрес сервера доступа | ||
| IP-адрес сессии | ||
| Значение атрибута Calling-Station-Id | ||
| Новое ограничение полосы пропускания |
||
| Имя пользователя, переданное во время аутентификации | ||
| Логин учётной записи в системе | ||
| Сессия разорвана, причина разрыва установлена в stop_req | stop | |
Причина разрыва:
|
||
| Идентификатор сессии | ||
| Логин, переданный во время аутентификации | ||
| IP-адрес сервера доступа | ||
| IP-адрес сессии | ||
| Значение атрибута Calling-Station-Id | ||
| Ограничение полосы пропускания |
||
| Логин учётной записи в системе | ||
| Исчерпана квота (для оборудования Cisco ISG) | quota | |
| Идентификатор сессии | ||
| Логин, переданный во время аутентификации | ||
| IP-адрес сервера доступа | ||
| IP-адрес сессии | ||
| Значение атрибута Calling-Station-Id | ||
| Ограничение полосы пропускания |
||
| Логин учётной записи в системе |
Пример handler-скрипта: Setup_handler.example.LBarcd
Путь к handler нужно указать в файле конфигурации /etc/billing.conf.LBircd.
Пример:
# External script handler
handler = /usr/local/billing/scripts/handler.example.LBircd.sh
| Событие | Параметр | Значение |
|---|---|---|
| Создание учётной записи | create | |
| После создания учётной записи скрипт вызывается ещё раз | Зависит от статуса учётной записи:
|
|
| Изменение учётной записи | edit | |
| Смена статуса |
|
|
| Удаление учётной записи | delete | |
| После того как для сессии получен старт-пакет | start | |
| Идентификатор сессии | ||
| Логин, переданный во время аутентификации | ||
| IP-адрес сервера доступа | ||
| Сессия разорвана, причина разрыва установлена в stop_req | stop | |
Причина разрыва:
|
||
| Идентификатор сессии | ||
| Логин, переданный во время аутентификации | ||
| IP-адрес сервера доступа | ||
| IP-адрес сессии | ||
| Ограничение полосы пропускания |
||
| Значение атрибута Calling-Station-Id |
Пример handler-скрипта: scripts_handler.example.LBircd
Есть вопросы по документации? Пожалуйста, напишите их