Источник данных типа 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

Путь до файла состояний. Каждый раз файл перезаписывается.

Пример:

 

В процессе работы источника данных можно наблюдать его статистику работы:

 
 

 

  • No labels