Handler-скрипт — исполняемый файл, как правило, написанный на shell. С его помощью АСР LANBilling может совершать действия во внешних системах. Например, останавливать интернет-сессию абонента, если учётная запись попала в блокировку.
В старых версиях АСР LANBilling вместо handler-скриптов использовались vg-скрипты. Подробнее о том, как перенастроить работу с vg на handler, написано в этой инструкции.
Когда в АСР 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
Есть вопросы по документации? Пожалуйста, напишите их