Handler-скрипт — исполняемый файл, как правило, написанный на shell. С его помощью LANBilling может совершать действия во внешних системах. Например, останавливать интернет-сессию абонента, если учётная запись попала в блокировку.
В старых версиях LANBilling вместо handler-скриптов использовались vg-скрипты. Подробнее о том, как перенастроить работу с vg на handler, написано в этой инструкции.
Когда в LANBilling происходит событие, предусмотренное скриптом, система передаёт в handler-скрипт набор параметров:
Скрипт обрабатывает эти параметры и выполняет последовательность команд.
Чтобы работать с handler-скриптом, подготовьте файл и пропишите путь к нему в конфигурации системы. Можно настроить handler-скрипт для модулей:
Вы можете использовать сразу несколько скриптов: например, для ядра LANBilling и для RADIUS-агента. В этом случае убедитесь, что скрипты не будут конфликтовать.
Пример handler-скрипта: scripts_handler.py
Путь к скрипту для 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.example.LBucd.py
Путь к скрипту для LBucd нужно указать в файле конфигурации /etc/billing.conf.LBucd. Пример:
# External script handler
handler = /usr/local/billing/scripts/handler.example.LBucd.sh
| Событие | Параметр | Значение |
|---|---|---|
| Создание учётной записи | create | |
| После создания скрипт вызывается ещё раз | Зависит от статуса учётной записи:
|
|
| Изменение учётной записи | edit | |
| Смена статуса |
|
|
| Удаление учётной записи | delete |
Пример handler-скрипта: Setup_handler.example.LBarcd
Путь к скрипту для LBarcd нужно указать в файле конфигурации /etc/billing.conf.LBarcd. Пример:
# External script handler
handler = /usr/local/billing/scripts/handler.example.LBarcd.sh
Calling-Station-Id;| Событие | Параметр | Значение |
|---|---|---|
| Создание учётной записи | 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-скрипта: scripts_handler.example.LBircd
Путь к скрипту нужно указать в файле конфигурации /etc/billing.conf.LBircd. Пример:
# External script handler
handler = /usr/local/billing/scripts/handler.example.LBircd.sh
Calling-Station-Id;| Событие | Параметр | Значение |
|---|---|---|
| Создание учётной записи | create | |
| После создания учётной записи скрипт вызывается ещё раз | Зависит от статуса учётной записи:
|
|
| Изменение учётной записи | edit | |
| Смена статуса |
|
|
| Удаление учётной записи | delete | |
| После того как для сессии получен старт-пакет | start | |
| Идентификатор сессии | ||
| Логин, переданный во время аутентификации | ||
| IP-адрес сервера доступа | ||
| Сессия разорвана, причина разрыва установлена в stop_req | stop | |
Причина разрыва:
|
||
| Идентификатор сессии | ||
| Логин, переданный во время аутентификации | ||
| IP-адрес сервера доступа | ||
| IP-адрес сессии | ||
| Ограничение полосы пропускания |
||
Значение атрибута Calling-Station-Id |
Есть вопросы по документации? Пожалуйста, напишите их