Источник данных типа ScriptCallDatasource (доступен с версии 4.0.1405) позволяет вызывать внешние скрипты, реагируя на наступления некоторых событий в биллинге. Этот тип источника на самом деле не является "источником", то есть он не представляет никаких данных в биллинг, а служит только для "обратной реакции". Это связано с существующей реализацией внутреннего механизма обмена информацией между ядром биллинга, и источниками данных (двухсторонний обмен типа "данные" <--> "команды"). Данный источник одинаково хорошо работает под Windows и Linux/FreeBSD. Конечно, вы должны применять только платформо-зависимые скрипты (CMD, shell). Также возможен вызов любых исполняемых операционной системой файлов. Вызов осуществляется на том же сервере, который исполняет код биллинга (для вызова скрипта на удаленном сервере применяйте RemoteAgentDataSource).
Источних данных ScriptCallDatasource, будучи настроенным и запущенным, выполняет две функции (обе, или любую одну):
- реагирование на наступление события изменения статуса Учетного Объекта - блокировка, разблокировка (биллингом), логин, логаут (службой авторизации)
- периодическое сохранение текущего состояния всех Учетных Объектов
В первом случае скрипту передаются (в виде аргументов командной строки) набор параметров, отвечающих указанным в настройках вариантов. При вызове каждый из агрументов параметра "параметры скрипта" заменяется на актуальное значение. Возможные варианты:
- action - действие (PERMIT, DENY, LOGIN, LOGOUT), переданное биллингом
- ip - IP-адрес учетного объекта
- mask - сетевая маска учетного объекта
- au_id - идентификатор учетного объекта
- ds_id - идентификатор данного источника данных
- timestamp - метка времени, момент наступления события (unit time в секундах с 1970 года)
По умолчанию набор параметров таков: "action ip mask au_id timestamp". Он приводит к вызову указанного скрипта с такими аргументами: "BLOCK 192.168.1.100 32 1 1335683133"
Можно также опционально указать имя лог-файла, в который при каждом вызове скрипта будут записываться передаваемые ему параметры. Внимание: результаты работы (успешность вызова, выводимый им текст) никуда не сохраняются. Внимание! Данный скрипт, обрабатывающий результаты передачи ему команд, вы должны написать сами (пользуясь примерами)
Во втором случае представляется возможным периодическое создание "файла состояний", в который каждый раз будут записываться текущие состояния всех зарегистрированных в биллинге Учетных Объектов. Строка состояний формируется согласно правилам "строки параметров", указанных выше. По окончании формирования файла может быть вызван другой скрипт, который вы можете использовать для обработки данного файла (например, создания таблицы фильтрования, или пересылки access-list в роутер). Данный скрипт получает имя файла состояний как агрумент командной строки. Внимание! Данный скрипт вам необходимо написать самостоятельно!
Параметрами настроек источника данных являются:
Параметр | Описание |
ds_name | Человеческое имя источника данных |
feedback_policy | Применяемая в вашей организации политика доступа по умолчанию (PERMIT или DENY) |
script_path | Путь до скрипта, вызываемого при получении каждого сообжения об изменении состояния учетного объекта. Если не задан, вызова не производится. |
script_params | Шаблон параметров командной строки скрипта, которые создаются при его вызове путем замены ключевых слов (см. выше). По умолчанию action ip mask au_id timestamp. |
log_file | Путь до лог-файла, куда дописываются команды и параметры в момент запуска скрипта. Если не задан, лог-файл не ведется. |
state2_file | Путь до скрипта, вызываемого при завершении создания файла состояний. В качестве параметра передается имя файла. Если не задан, вызова не производится (но файл состояний создается). |
script2_offset | Смещение начала процесса создания файла состояний относительно момента старта биллинга. Служит для разгрузки сервера при старте биллинга. Варианты: disabled (файлы состояний не создаются и скрипт не вызывается), startup (15 секунд от старта и далее каждые script2_offset), zero (ближайший script2_offset выровненный относительно 0 часов 0 минут 0 секунд далее каждые script2_offset) |
script2_period | Периодичность создания файла состояний (по умолчанию 60 минут) |
script2_path | Путь до файла состояний. Каждый раз файл перезаписывается. |
Пример:
В процессе работы источника данных можно наблюдать его статистику работы: