Общие рекомендации
Системные переменные
Наименование | Описание | Пример обращения к элементам |
---|---|---|
$rlm | Стандартные коды возврата модуля |
|
| Пользовательские переменные, используемые для хранения промежуточных результатов вычислений в ходе обработки запроса. Они сохраняют своё значение на всех этапах обработки: от получения запроса до отправки ответа. Структура динамически формируется в процессе обработки каждого конкретного запроса в соответствии с конфигурацией используемых фильтров. |
|
$request | Атрибуты RADIUS-запроса, полученные от модуля Структура зависит от типа запроса и может включать следующие элементы верхнего уровня:
|
|
$response | Атрибуты RADIUS-ответа, которые будут отданы модулю Структура зависит от типа запроса и конфигурации плагина, может включать следующие элементы верхнего уровня:
|
|
$customer_profile | Профиль абонентского оборудования, подобранный в кэше при обработке запроса. Заполняется при успешном подборе абонентского профиля, структура соответствует записи в коллекции Если подбор профиля оборудования не выполнялся или завершился с пустым результатом, то элементы верхнего уровня в словаре всё равно присутствуют. |
|
$provider_profile | Профиль операторского оборудования, подобранный в кэше при обработке запроса. Заполняется при успешном подборе операторского профиля, структура соответствует записи в коллекции Если подбор профиля оборудования не выполнялся или завершился с пустым результатом, то элементы верхнего уровня в словаре всё равно присутствуют. |
|
| Идентификатор привязки абонентского оборудования ( | |
$context | Весь контекст обработки запроса, включающий в себя теги, переменные, данные запроса и ответа. В конфигурации в основном используется для проверки наличия тегов. |
|
$session | Сессия, подобранная в кэше при обработке пакета аккаунтинга. Если подходящая запись в кэше не найдена, значит обрабатывается первый пакет аккаунтинга по сессии — выполняется подбор профилей оборудования, а в словаре присутствуют только элементы верхнего уровня. |
|
Операторы
Обозначение | Описание |
---|---|
or , and , not | Логические операторы: дизъюнкция, конъюнкция, отрицание |
<= , < , >= , > | Операторы отношения: меньше или равно, меньше, больше или равно, больше |
== , != | Операторы сравнения: равно, не равно |
+ , - , * , / , % | Арифметические операторы: сложение, вычитание, умножение, деление, целочисленное деление |
Методы
Перечисленные ниже методы могут применяться к стандартным словарям и их элементам, отделяясь от них точкой. Для последовательного применения нескольких методов необходимо указывать их друг за другом, разделяя точкой.
Проверки
Формат вызова | Описание | Примеры использования |
---|---|---|
| Является ли значение «пустым»? Пустыми считаются:
|
|
| Заканчивается ли значение строкой | $response.RAD_REPLY.DHCP-Subnet-Mask.ends_with?("/32") |
| Имеется ли ключ <field_name> в словаре? | $response.RAD_REPLY.has_filed?("DHCP-Flags") |
| Присвоен ли тег запросу? Применяется только к переменной $context . |
|
| Входит ли значение в список <list_of_values> ? | $request.RAD_REQUEST.try("Session-Error-Msg").in?("Radius test by administrator;Authentication failure".split(";")) |
| Является ли значение IPv4-адресом? | $request.RAD_REQUEST.Agent-Remote-Id.ip4?() |
| Является ли значение маской IPv4-подсети? | $request.RAD_REQUEST.DHCP-Subnet-Mask.ip4_mask?() |
| Соответствует ли значение регулярному выражению <pattern> ? |
|
| Является ли значение MAC-адресом? | $request.RAD_REQUEST.Agent-Remote-Id.mac?() |
| Пуст ли словарь? | $customer_profile.null?() |
| Заполнен ли словарь или задано ли значение? |
|
| Принадлежность IPv4-адреса к одной из локальных подсетей:
| $request.RAD_REQUEST.Agent-Remote-Id.private_ip4?() |
| Начинается ли значение строкой <prefix> . Если указаны опциональные аргументы, то проверяется не всё значение, а подстрока c символа <start_position> до символа <end_postion> . Символы нумеруются с нуля, верхняя граница интервала не включается. |
|
Преобразования
Формат вызова | Описание | Пример использования |
---|---|---|
coalesce(<list_of_values>) |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| Приведение строки к нижнему регистру. |
|
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| Удаление пробелов в начале и конце строки <string> . |
|
| Извлечение подстроки из <string> : <from_position> — начало, а <to_position> — окончание. Символы нумеруются с нуля, верхняя граница интервала не включается. Если верхняя граница <to_position> не задана, подстрока извлекается до конца исходной строки. |
|
| Приведение строки в формате <format> к дате с временем (тип datetime.datetime в Python). Правила преобразования и описания формата идентичны таковым у метода datetime.strptime в Python: описание на docs.python.org. |
|
| Приведение количества дней <number> к разнице между датами с временем (тип datetime.timedelta в Python). <number> — целое число, либо преобразуемая к такому числу строка. |
|
| Приведение количества часов <number> к разнице между датами с временем (тип datetime.timedelta в Python). <number> — целое число, либо преобразуемая к такому числу строка. |
|
<string>.to_i() | ||
| Приведение количества минут <number> к разнице между датами с временем (тип datetime.timedelta в Python). <number> — целое число, либо преобразуемая к такому числу строка. |
|
| Приведение к строке. Если <value> — это дата с временем (тип datetime.datetime в Python), то она будет преобразована в соответствии с форматом <format> (его указание в этом случае обязательно). Правила преобразования и описания формата идентичны таковым у метода datetime.strftime в Python: описание на docs.python.org. |
|
| Приведение количества секунд <number> к разнице между датами (тип datetime.timedelta в Python). <number> — целое число, либо преобразуемая к такому числу строка. |
|
| Определение длины префикса IPv4-подсети с маской <string> (суффикса подсети в CIDR-нотации). |
|
| Формирование маски IPv4-подсети с длиной префикса равной <number> бит. <number> — целое число от 0 до 32, либо преобразуемая к такому числу строка. |
|
| Возвращает значение из
|
|
| Декодирование строки <string> , представленной в виде шестнадцатеричных кодов символов (формат ASCII-HEX). Если в исходной строке есть префикс 0x , он отбрасывается. |
|
| Приведение строки <string> к верхнему регистру. |
|