Перейти с vg-скриптов на handler-скрипты

В старых версиях LANBilling можно было работать с vg-скриптами. Система запускала эти скрипты при определённом событии: например, при создании и удалении учётной записи или при остановке RADIUS-сессии. В версии 2.0.33 мы убрали поддержку vg-скриптов, теперь эти события нужно обрабатывать с помощью handler-скриптов.

Преимущества handler-скриптов:

  • Vg-скрипты работали с узким набором параметров: логин, пароль, IP-адрес, маска сети, скорость. В handler-скрипты можно передавать большее количество параметров: например, MAC-адрес, а также предыдущий и текущий статус учётной записи.

  • Если с учётной записью связано несколько IP-адресов, то система вызывала vg-скрипт несколько раз. Handler-скрипт в этом случае будет вызван только один раз.

Подробнее про handler-скрипты можно прочитать в актуальной документации.

Пример handler-скрипта

Пример handler-скрипта для Netflow-агента: lbucd_handler_example.sh. Пример вызова этого скрипта при создании учётной записи:

/usr/local/billing/scripts/lbucd_handler_example.sh —action create —login test_login —password test_password —net 10.10.0.100/255.255.255.255 —net 10.10.0.101/255.255.255.255 —shape 1024

В таблице представлено соответствие между vg-скриптами и опциями handler-скрипта.

Событие учётной записи Вызов vg-скрипта Вызов handler-скрипта
Cоздание script_create lbucd_handler_example.sh --action create
Активация script_on lbucd_handler_example.sh --action on
Изменение script_edit lbucd_handler_example.sh --action edit
Блокировка script_off lbucd_handler_example.sh --action off
Удаление script_delete lbucd_handler_example.sh --action delete

Переход на handler-скрипты

Логику взаимодействия, описанную в ваших vg-скриптах, нужно объединить в один handler-скрипт. Это можно сделать одним из двух способов:

  • Вызывать vg-скрипты из handler-скрипта.

    Пример на основе lbucd_handler_example.sh:

    case "${ACTION}" in
    	"create") # Cоздание УЗ
    		log "Logging create account: ${LOGIN}, ip: ${SEGMENT}, mask: ${MASK}"
    		# вызываем старый скрипт vg.create.sh:
    		/usr/local/billing/scripts/vg.create.sh "${LOGIN}" "${PASSWORD}" "${SEGMENT}" "${MASK}" "${SHAPE}" >> "{$LOG}"
    	;;
    	"delete") # Удаление УЗ
    		log "Logging delete account: ${LOGIN}, ip: ${SEGMENT}, mask: ${MASK}"
    		# Вызываем старый скрипт vg.delete.sh:
    		/usr/local/billing/scripts/vg.delete.sh "${LOGIN}" "${PASSWORD}" "${SEGMENT}" "${MASK}" "${SHAPE}" >> "{$LOG}"
    	;;
    esac
    
    
    
  • Перенести логику из vg-скриптов в handler-скрипт.

    Пример на основе lbucd_handler_example.sh:

    case "${ACTION}" in
    	"create") # Cоздание УЗ
    		log "Logging create account: ${LOGIN}, ip: ${SEGMENT}, mask: ${MASK}"
    		# Описываем логику вместо вызова внешнего скрипта
    		rsh -l "${NAS_SECRET}" "${NAS_IP}" "access-template 107 list2 any host ${SEGMENT}" >> "${LOG}"
    	;;
    	"delete") # Удаление УЗ
    		log "Logging delete account: ${LOGIN}, ip: ${SEGMENT}, mask: ${MASK}"
    		# Описываем логику вместо вызова внешнего скрипта
    		rsh -l "${NAS_SECRET}" "${NAS_IP}" "clear access-template 106 list1 host ${SEGMENT} any" >> "${LOG}"
    	;;
    esac