Handler-скрипты

Handler-скрипт — исполняемый файл, как правило, написанный на shell. С его помощью LANBilling может совершать действия во внешних системах. Например, останавливать интернет-сессию абонента, если учётная запись попала в блокировку.

В старых версиях LANBilling вместо handler-скриптов использовались vg-скрипты. Подробнее о том, как перенастроить работу с vg на handler, написано в этой инструкции.

Общая информация

Когда в LANBilling происходит событие, предусмотренное скриптом, система передаёт в handler-скрипт набор параметров:

  • причина запуска;
  • учётная запись, для которой нужно выполнить действие;
  • особенности события.

Скрипт обрабатывает эти параметры и выполняет последовательность команд.

Чтобы работать с handler-скриптом, подготовьте файл и пропишите путь к нему в конфигурации системы. Можно настроить handler-скрипт для модулей:

  • LBcore — ядро LANBilling
  • LBucd — для агента Netflow
  • LBarcd — для агента RADIUS
  • LBircd — для агента IP-телефонии

Вы можете использовать сразу несколько скриптов: например, для ядра LANBilling и для RADIUS-агента. В этом случае убедитесь, что скрипты не будут конфликтовать.

LBcore

Пример handler-скрипта: scripts_handler.py

Путь к скрипту для LBcore нужно указать в файле конфигурации /etc/billing.conf. Пример:

# External script handler
handler = /usr/local/billing/scripts/handler.py

Передаваемые параметры

  • Для учётных записей телефонии и IP-телефонии с агентами LBphone, VoIP:

    • "--sysid" — идентификатор агента;
    • "--action" — действие;
    • "--vgid" — идентификатор учётной записи;
    • "--login" — логин учётной записи;
    • "--password" — пароль учётной записи;
    • "--phone" — номер телефона. Если в учётной записи несколько номеров, то каждый передаётся в отдельном параметре "--phone". Если номер имеет пустое значение, то в параметр записывается «empty_phone».
  • Для учётных записей интернета с агентами Netflow, RADIUS:

    • "--sysid" — идентификатор агента;
    • "--action" — действие;
    • "--vgid" — идентификатор учётной записи;
    • "--login" — логин учётной записи;
    • "--password" — пароль учётной записи;
    • "--shape" — текущее значение полосы пропускания на учётной записи;
    • "--net" — если к учётной записи привязаны IP-сегменты, то добавляется список, где указываются адреса этих сегментов в формате «IP/маска».
  • Для учётных записей услуг:

    • "--sysid" — идентификатор агента;
    • "--action" — действие;
    • "--vgid" — идентификатор учётной записи;
    • "--login" — логин учётной записи;
    • "--password" — пароль учётной записи.

Когда запускается скрипт

Событие Тип УЗ, агент Параметр Значение
Когда в учётной записи телефонии начинает или заканчивает действовать номер телефона.

Система проверяет это изменение раз в час

УЗ телефонии,
агенты LBphone и VoIP
"--action" edit
Создание учётной записи Все агенты "--action" create
После создания учётной записи скрипт вызывается ещё раз Все агенты "--action" Зависит от статуса учётной записи:
  • активна (0) — on
  • в остальных случаях — off
Изменение учётной записи Все агенты "--action" edit
Смена тарифа Все агенты "--action" edit
Изменение полосы пропускания УЗ интернета,
агенты RADIUS и Netflow
"--action" edit
Смена статуса УЗ интернета,
агенты RADIUS и Netflow
"--action"
  • активна (0) — on
  • в остальных случаях — off
Удаление учётной записи Все агенты "--action" delete

LBucd

Пример handler-скрипта: scripts_handler.example.LBucd.py

Путь к скрипту для LBucd нужно указать в файле конфигурации /etc/billing.conf.LBucd. Пример:

# External script handler
handler = /usr/local/billing/scripts/handler.example.LBucd.sh

Передаваемые параметры

  • "--action" — действие;
  • "--login" — логин учётной записи;
  • "--password" — пароль учётной записи;
  • "--shape" — текущее значение полосы пропускания на учётной записи (Кбит/с);
  • "--net" — если к учётной записи привязаны IP-сегменты, то добавляется список, где указываются адреса этих сегментов в формате «IP/маска».

Когда запускается скрипт

Событие Параметр Значение
Создание учётной записи "--action" create
После создания скрипт вызывается ещё раз "--action" Зависит от статуса учётной записи:
  • активна (0) — on
  • в остальных случаях — off
Изменение учётной записи "--action" edit
Смена статуса "--action"
  • активна (0) — on
  • в остальных случаях — off
Удаление учётной записи "--action" delete

LBarcd

Пример handler-скрипта: Setup_handler.example.LBarcd

Путь к скрипту для LBarcd нужно указать в файле конфигурации /etc/billing.conf.LBarcd. Пример:

# External script handler
handler = /usr/local/billing/scripts/handler.example.LBarcd.sh

Передаваемые параметры

  • "--action" — действие;
  • "--reason" — причина разрыва;
  • "--session" — идентификатор сессии;
  • "--login" — логин учётной записи, переданный во время аутентификации;
  • "--nas" — IP-адрес сервера доступа;
  • "--ip" — IP-адрес сессии;
  • "--net" — если к учётной записи привязаны IP-сегменты, то добавляется список, где указываются адреса этих сегментов в формате «IP/маска»;
  • "--shape" — ограничение полосы пропускания (Кбит/с);
  • "--oldshape" — старое ограничение полосы пропускания (Кбит/с);
  • "--mac" — значение атрибута Calling-Station-Id;
  • "--password" — пароль учётной записи;
  • "--oldblocked" — старый статус учётной записи;
  • "--blocked" — новый статус учётной записи;
  • "--username" — имя пользователя, переданное во время аутентификации;
  • "--vglogin" — логин учётной записи в системе.

Когда запускается скрипт

Событие Параметр Значение
Создание учётной записи "--action" create
После создания скрипт вызывается ещё раз "--action" Зависит от статуса учётной записи:
  • активна (0) — on
  • в остальных случаях — off
Изменение учётной записи "--action" edit
Смена статуса "--action"
  • активна (0) — on
  • в остальных случаях — off
Удаление учётной записи "--action" delete
Учётная запись перешла в любой статус, кроме «Отключена (10)», и у неё есть сессия с типом NAS: cisco_isg или redback "--action" isg-stop
"--nas" IP-адрес сервера доступа
"--login" Логин, переданный во время аутентификации
"--ip" IP-адрес сессии
"--mac" Значение атрибута Calling-Station-Id
"--shape" Ограничение полосы пропускания (Кбит/с)
"--blocked" Новый статус учётной записи
"--oldblocked" Старый статус учётной записи
"--session" Идентификатор сессии
"--vg-login" Логин учётной записи в системе
У учётной записи изменилась полоса пропускания "--action" stop
"--reason" Причина разрыва. Значение выбирается на основе поля stop_req записи сессии в БД:
  • managed
  • traffic
  • timeout
  • changed
  • blocked
  • port
  • undefined
"--session" Идентификатор сессии
"--login" Логин, переданный во время аутентификации
"--nas" IP-адрес сервера доступа
"--ip" IP-адрес сессии
"--mac" Значение атрибута Calling-Station-Id
"--shape" Новое ограничение полосы пропускания (Кбит/с)
"--oldshape" Старое ограничение полосы пропускания (Кбит/с)
"--user-name" Имя пользователя, переданное во время аутентификации
После того как для сессии получен start-пакет "--action" start
"--session" Идентификатор сессии
"--login" Логин, переданный во время аутентификации
"--nas" IP-адрес сервера доступа
"--ip" IP-адрес сессии
"--mac" Значение атрибута Calling-Station-Id
"--shape" Новое ограничение полосы пропускания (Кбит/с)
"--user-name" Имя пользователя, переданное во время аутентификации
"--vg-login" Логин учётной записи в системе
Сессия разорвана, причина разрыва установлена в stop_req "--action" stop
"--reason" Причина разрыва:
  • managed
  • traffic
  • timeout
  • changed
  • blocked
  • port
  • undefined
"--session" Идентификатор сессии
"--login" Логин, переданный во время аутентификации
"--nas" IP-адрес сервера доступа
"--ip" IP-адрес сессии
"--mac" Значение атрибута Calling-Station-Id
"--shape" Ограничение полосы пропускания (Кбит/с)
"--vg-login" Логин учётной записи в системе
Исчерпана квота (для оборудования Cisco ISG) "--action" quota
"--session" Идентификатор сессии
"--login" Логин, переданный во время аутентификации
"--nas" IP-адрес сервера доступа
"--ip" IP-адрес сессии
"--mac" Значение атрибута Calling-Station-Id
"--shape" Ограничение полосы пропускания (Кбит/с)
"--vg-login" Логин учётной записи в системе

LBircd

Пример handler-скрипта: scripts_handler.example.LBircd

Путь к скрипту нужно указать в файле конфигурации /etc/billing.conf.LBircd. Пример:

# External script handler
handler = /usr/local/billing/scripts/handler.example.LBircd.sh

Передаваемые параметры

  • "--action" — действие;
  • "--reason" — причина разрыва;
  • "--session" — идентификатор сессии;
  • "--login" — логин учётной записи;
  • "--nas" — IP-адрес сервера доступа;
  • "--ani" — значение атрибута Calling-Station-Id;
  • "--password" — пароль учётной записи;
  • "--phone" — номер телефона. Если в учётной записи несколько номеров, то каждый передаётся в отдельном параметре "--phone". Если номер имеет пустое значение, то в параметр записывается «empty_phone».

Когда запускается скрипт

Событие Параметр Значение
Создание учётной записи "--action" create
После создания учётной записи скрипт вызывается ещё раз "--action" Зависит от статуса учётной записи:
  • активна (0) — on
  • в остальных случаях — off
Изменение учётной записи "--action" edit
Смена статуса "--action"
  • активна (0) — on
  • в остальных случаях — off
Удаление учётной записи "--action" delete
После того как для сессии получен старт-пакет "--action" start
"--session" Идентификатор сессии
"--login" Логин, переданный во время аутентификации
"--nas" IP-адрес сервера доступа
Сессия разорвана, причина разрыва установлена в stop_req "--action" stop
"--reason" Причина разрыва:
  • managed
  • traffic
  • timeout
  • changed
  • blocked
  • port
  • undefined
"--session" Идентификатор сессии
"--login" Логин, переданный во время аутентификации
"--nas" IP-адрес сервера доступа
"--ip" IP-адрес сессии
"--shape" Ограничение полосы пропускания (Кбит/с)
"--ani" Значение атрибута Calling-Station-Id