Наименование | Описание | Примеры использования |
---|
$rlm | Стандартные коды возврата модуля rlm_perl сервера FreeRADIUS. Структура не зависит ни от конфигурации, ни от типа запроса: значения постоянны. Code Block |
---|
title | Словарь $rlm |
---|
collapse | true |
---|
| {
"REJECT": 0,
"FAIL": 1,
"OK": 2,
"HANDLED": 3,
"INVALID": 4,
"USERLOCK": 5,
"NOTFOUND": 6,
"NOOP": 7,
"UPDATED": 8,
"NUMCODES": 9
} |
| |
$var
| Пользовательские переменные, используемые для хранения промежуточных результатов вычислений в ходе обработки запроса. Они сохраняют своё значение на всех этапах обработки: от получения запроса до отправки ответа. Структура динамически формируется в процессе обработки каждого конкретного запроса в соответствии с конфигурацией используемых фильтров. Code Block |
---|
title | Пример словаря $var |
---|
collapse | true |
---|
| {
"Remote-Circuit-Ids": {
"Remote_Id": "10.70.12.117",
"Circuit_Id": 12
},
"Actual-MAC-Address": "93-AA-4A-B1-D6-79",
"Customer-VLAN": "114"
} |
| $var.Remote-Circuit-Ids.Remote_Id $var.Customer-VLAN
|
$request | Атрибуты RADIUS-запроса, полученные от модуля rlm_perl . Структура зависит от типа запроса и может включать следующие элементы верхнего уровня: req_type — тип запроса: authorize , authenticate , accounting , post_auth ;generated_at — дата и время получения запроса агентом (можно использовать как текущую дату и время);RAD_REQUEST — атрибуты RADIUS-запроса;RAD_CHECK — атрибуты для проверки;RAD_REPLY — атрибуты RADIUS-ответа.
Code Block |
---|
title | Пример словаря $request |
---|
collapse | true |
---|
| {
"req_type": "authorize",
"RAD_REQUEST": {
"NAS-Port-Type": "Virtual",
"CHAP-Password": "0x01375c12a4c1bf31a195bfb74ca2ab9329",
"Service-Type": "Framed-User",
"Tunnel-Type": "L2TP",
"Tunnel-Client-Endpoint": "192.168.2.1",
"CHAP-Challenge": "0x5502e459b4e20784bf0003b25021488a",
"NAS-IP-Address": "192.168.10.110",
"NAS-Port-Id": "L2TP LNS 33",
"Framed-Protocol": "PPP",
"User-Name": "admin-test",
"NAS-Identifier": "bras2",
"NAS-Port": "2432696353"
},
"RAD_CHECK": {
"Auth-Type": "CHAP"
}
} |
| $request.RAD_CHECK.Auth-Type $request.RAD_REQUEST.User-Name $request.generated_at.to_s("%d.%m.%Y %H:%M:%S")
|
$response | Атрибуты RADIUS-ответа, которые будут отданы модулю rlm_perl в качестве результата обработки RADIUS-запроса. Структура зависит от типа запроса и конфигурации плагина, может включать следующие элементы верхнего уровня: Code Block |
---|
title | Пример словаря $response |
---|
collapse | true |
---|
| {
"RAD_CHECK": {
"Cleartext-Password": "password",
"Auth-Type": "CHAP"
},
"result": 2
} |
| $response.try("RAD_REPLY").try("DHCP-Classless-Static-Route") $response.Cleartext-Password $response.try("RAD_REPLY").present?()
|
$customer_profile | Профиль абонентского оборудования, подобранный в кэше при обработке запроса. Заполняется при успешном подборе абонентского профиля, структура соответствует записи в коллекции profiles кэша. При обработке пакета аккаунтинга подбор профиля выполняется только при отсутствии в кэше записи о сессии, то есть при обработке первого пакета аккаунтинга по сессии. Code Block |
---|
title | Пример словаря $customer_profile |
---|
collapse | true |
---|
| {
"nested_profiles": [],
"dynamic_attributes": [],
"equipment_id": "50983201",
"_id": ObjectId('5631d972336b5557b82ea627'),
"active": True,
"attributes": {
"Simultaneous-Use": "1",
"Username": "admin-test",
"Static-IP": None,
"Service-State-Code": "SERV_STATE_InsufficientFunds",
"Password": "password",
"Speed-Upload-bps": "6291456",
"Speed-Download-bps": "6291456"
},
"child_profiles": [],
"context": "C70158719E376FC509318E242C521F5B873A8B437",
"firm_id": "100",
"signature": "||||||||0051596501|0051596501",
"profile_id": "1615601",
"template_id": "20101",
"profile_type": "C"
} |
Если подбор профиля оборудования не выполнялся или завершился с пустым результатом, то элементы верхнего уровня в словаре всё равно присутствуют. Code Block |
---|
title | Пустой словарь $customer_profile |
---|
collapse | true |
---|
| {
"nested_profiles": None,
"dynamic_attributes": None,
"equipment_id": None,
"_id": None,
"active": None,
"attributes": {},
"child_profiles": [],
"context": None,
"firm_id": None,
"signature": None,
"profile_id": None,
"template_id": None,
"profile_type": None
} |
| $customer_profile.null?() $customer_profile.attributes.L2TP-Password
|
$provider_profile | Профиль операторского оборудования, подобранный в кэше при обработке запроса. Заполняется при успешном подборе операторского профиля, структура соответствует записи в коллекции profiles кэша. При обработке пакета аккаунтинга подбор профиля выполняется только при отсутствии в кэше записи о сессии, то есть при обработке первого пакета аккаунтинга по сессии. Code Block |
---|
title | Пример словаря $provider_profile |
---|
collapse | true |
---|
| {
"dynamic_attributes": [],
"template_id": "42801",
"profile_id": "459859701",
"nested_profiles": [
{
"dynamic_attributes": [],
"template_id": "40501",
"profile_id": "920732301",
"bind_type": "network_connection",
"signature": "|||||||1130457991|1130457991",
"attributes": {
"IP-Address": "10.242.119.11",
"L2TP-Password": "qwerty",
"Simultaneous-Use": "1",
"Subnet-Mask": "255.255.255.0",
"Gateway-IP": "10.242.119.1",
"L2TP-Login": "test-login"
},
"active": True,
"firm_id": "100",
"equipment_id": "1130577491",
"profile_type": "C",
"child_profiles": [],
"bind_id": "15805201",
"context": "C82B0D4273F886E1720C3812AC82AE961285AC2AD"
}
],
"context": "P3129D3A086862F2BEEA34929D1C3670C31224948",
"attributes": {
"Switch-IP": "10.70.12.117",
"Switch-Port-Code": "12"
},
"active": True,
"_id": ObjectId('55f9662d72099a106d77893f'),
"firm_id": "100",
"equipment_id": "392626801",
"profile_type": "P",
"child_profiles": [],
"signature": "||"
} |
Если подбор профиля оборудования не выполнялся или завершился с пустым результатом, то элементы верхнего уровня в словаре всё равно присутствуют. Code Block |
---|
title | Пустой словарь $provider_profile |
---|
collapse | true |
---|
| {
"nested_profiles": None,
"dynamic_attributes": None,
"equipment_id": None,
"_id": None,
"active": None,
"attributes": {},
"child_profiles": [],
"context": None,
"firm_id": None,
"signature": None,
"profile_id": None,
"template_id": None,
"profile_type": None
} |
| $provider_profile.present?() $provider_profile.customer_profiles $provider_profile.attributes.PE-Switch-Id
|
$bind_id
| Идентификатор привязки абонентского оборудования ($customer_profile ) к операторскому ($provider_profile ). Заполняется только при раздельном подборе абонентского и операторского профилей. | |
$context | Весь контекст обработки запроса, включающий в себя теги, переменные, данные запроса и ответа. Используется, как правило, только для проверки установленности тегов. Code Block |
---|
title | Пример словаря $context |
---|
collapse | true |
---|
| {
"var": [
{
"Remote-Circuit-Ids": {
"Remote_Id": "10.70.12.117",
"Circuit_Id": 12
},
},
{
"Actual-MAC-Address": "93-AA-4A-B1-D6-79"
},
{
"Customer-VLAN": "114"
}
],
"request": {
"RAD_REQUEST": {
"NAS-Port-Type": "Virtual",
"CHAP-Password": "0x01375c12a4c1bf31a195bfb74ca2ab9329",
"Service-Type": "Framed-User",
"Tunnel-Type": "L2TP",
"Tunnel-Client-Endpoint": "192.168.2.1",
"CHAP-Challenge": "0x5502e459b4e20784bf0003b25021488a",
"NAS-IP-Address": "192.168.10.110",
"NAS-Port-Id": "L2TP LNS 33",
"Framed-Protocol": "PPP",
"User-Name": "admin-test",
"NAS-Identifier": "bras2",
"NAS-Port": "2432696353"
},
"req_type": "authorize",
"RAD_CHECK": {
"Auth-Type": "CHAP"
}
},
"tags": {
"authorize",
"request_from_smartedge"
},
"response": {}
} |
| $context.has_tag?("new-session") $context.has_tag?("simultaneous-limit-exceeded")
|
$prev_session | Сессия, подобранная в кэше при обработке пакета аккаунтинга. Code Block |
---|
title | Пример словаря $session |
---|
collapse | true |
---|
| {
"bind_id": None,
"load_to_hydra": True,
"services": [
{
"service_id": 50546901,
"value": 0,
"unit": "bytes"
},
{
"service_id": 50547101,
"value": 0,
"unit": "bytes"
}
],
"services_loaded": False,
"last_load_at": None,
"start_at": datetime.datetime(2015, 11, 4, 8, 28, 20, 801000),
"last_event_timestamp": datetime.datetime(2015, 11, 4, 8, 28, 21),
"provider_profile_id": None,
"_id": ObjectId('56399774336b5557aa2ea629'),
"duration_sec": 0,
"plugin_instance_name": "l2tp-login",
"customer_equipment_id": "50983201",
"session_id": "FF10FFFF58000021-56399774",
"customer_template_id": "20101",
"state": "Started",
"session_unique_id": "9c2f51c907674a2f0d63bf4717a5f6d7",
"customer_context": "C70158719E376FC509318E242C521F5B873A8B437",
"termination_cause": None,
"plugin_name": "base",
"finish_at": None,
"provider_equipment_id": None,
"customer_child_profiles": [],
"provider_context": None,
"archived_at": None,
"active": True,
"attributes": {
"Speedup-Service-State-Code": None,
"Acct-Interim-Interval": "600",
"User-Name": "admin-test",
"NAS-Port": "2432696353",
"NAS-Identifier": "bras2",
"NAS-Port-Id": "L2TP LNS 33",
"Qos-Policing-Profile-Name": "5120-in",
"Filter-Id": [
"in:acl_default_subscriber_in",
"out:acl_default_subscriber_out"
],
"Framed-IP-Address": "10.242.119.11",
"NAS-IP-Address": "192.168.10.110",
"Qos-Metering-Profile-Name": "5120-out"
},
"provider_signature": None,
"customer_signature": "||||||||0051596501|0051596501",
"session_loaded": False,
"service_profile_id": "1615601",
"firm_id": "100",
"customer_profile_id": "1615601",
"provider_template_id": None
} |
Если подходящая запись в кэше не найдена, значит обрабатывается первый пакет аккаунтинга по сессии — выполняется подбор профилей оборудования, а в словаре присутствуют только элементы верхнего уровня. Code Block |
---|
title | Пустой словарь $session |
---|
collapse | true |
---|
| {
"bind_id": None,
"load_to_hydra": None,
"services": [],
"services_loaded": False,
"last_load_at": None,
"start_at": None,
"last_event_timestamp": None,
"provider_profile_id": None,
"_id": None,
"duration_sec": 0,
"plugin_instance_name": None,
"customer_equipment_id": None,
"session_id": None,
"customer_template_id": None,
"state": None,
"session_unique_id": None,
"customer_context": None,
"termination_cause": None,
"plugin_name": None,
"session_duplicate_protection": None,
"finish_at": None,
"provider_equipment_id": None,
"customer_child_profiles": None,
"provider_context": None,
"archived_at": None,
"active": True,
"attributes": None,
"provider_signature": None,
"customer_signature": None,
"session_loaded": False,
"service_profile_id": None,
"firm_id": None,
"customer_profile_id": None,
"provider_template_id": None
} |
| $session.attributes.try("Speedup-Service-State-Code")
|