Execution Context

Variables available during request processing

Execution context in Radiator Server defines the set of variables and their structure that are available during the processing of a request. It provides access to various attributes related to the request, user, session, and environment, allowing for dynamic handling and customisation of request processing. Execution context is created at the beginning of request processing and is passed through the execution pipelines.

Supported namespaces

Below, '*' denotes any namespace, attribute name, or data type.

Various utility namespaces

VariableTypeAccessDescription
idnumberreadRequest identifier
env.*stringreadProcess enviroment variables
vars.**read/writeCustom variables
util.rand.XbytesreadReads X bytes of random
datetime.timestamptimestampreadCurrent time

Namespace aaa

VariableTypeAccessDescription
aaa.identitystringread/writeProtocol-agnostic username/identity of the request
aaa.identity.namestringreadName part of current username/identity
aaa.identity.realmstringread/writeRealm part of current username/identity
aaa.identity.realm.tldstringreadTLD part of the realm
aaa.protocolenumreadProtocol of the request
aaa.tracebooleanreadIs tracing enabled for the request?
aaa.accountingbooleanreadIs the request an accounting request?
aaa.policystringreadName of AAA policy handling the request
aaa.handlerstringreadName of AAA policy handler handling the request
aaa.methodenumreadAuthentication protocol/method
aaa.messagestringread/writeReply message
aaa.resultenumreadAAA result
aaa.reasonstringreadError or reason

Namespace user

VariableTypeAccessDescription
user.usernamestringread/writeUser entry's name
user.passwordstringread/writeUser's password
user.groupstring arrayread/writeUser's groups
user.rolestring arrayread/writeUser's roles
user.backendstringreadBackend's name from which user was fetched

Namespace acct

VariableTypeAccessDescription
acct.statusenumreadAccounting request status
acct.timestamptimestampreadAccounting request timestamp
acct.durationnumberreadAccounting session duration in seconds
acct.input.packetsnumberreadAccounting session packets in
acct.input.bytesnumberreadAccounting session bytes in
acct.output.packetsnumberreadAccounting session packets out
acct.output.bytesnumberreadAccounting session bytes out

Namespace auth

VariableTypeAccessDescription
auth.protocolenumread/writeAuthentication protocol
auth.challengestringread/writeAuthentication challenge
auth.responsebytesread/writeAuthentication response
auth.resultstringread/writeAuthentication result

Namespace tls

VariableTypeAccessDescription
tls.versionenumreadNegotiated TLS protocol version
tls.cipherenumreadNegotiated TLS cipher

Namespace cert

VariableTypeAccessDescription
cert.validbooleanreadDid basic certificate validation succeed?
cert.errorstringreadVerification error
cert.serverstringreadIn TLS client context, server's name or IP address
cert.issuerstringreadCertificate's issuer's name
cert.subjectstringreadCertificate's subject's name
cert.serialnumberreadCertificate's serial number
cert.issuedtimestampreadCertificate's issue timestamp
cert.expirestimestampreadCertificate's expiry timestamp
cert.policystring arrayreadCertificate's Policy OIDs
cert.sha256bytesreadSHA256 hash of the certificate
cert.issuer.*string arrayreadIssuer name's individual components (dc, c, st, l, o, ou, cn, emailaddress)
cert.subject.*string arrayreadSubject name's individual components (dc, c, st, l, o, ou, cn, emailaddress)
cert.subject_alt.*string arrayreadSubject's alternative names (email, dns, dn, uri, ip, oid, upn, other)
cert.ca.**readCertificate's first CA certificate
cert.ca[N].**readCertificate's Nth CA certificate

CA certificate has the same attributes as the cert.

Namespace radius

VariableTypeAccessDescription
radius.clientstringreadClient's name from which the request was received
radius.client.ipipreadIP address from which the request was received
radius.serverstringreadServer's name which received the request
radius.server.tlsbooleanreadWas request received over TLS?
radius.attr.**read/writeRadius request/reply attributes

Attribute's data type is defined by the RADIUS dictionary used. Examples:

ExampleDescription
radius.attr.user-nameUser-Name attribute
radius.attr.tunnel-type:1Tunnel-Type attribute with a tag value 1
radius.attr.framed-route[0]First Framed-Route attribute
radius.attr.framed-route[n]Last Framed-Route attribute
radius.attr.framed-route[*]All Framed-Route attributes
radius.attr.cisco.avpairCisco AV-pair attribute

Namespace radiusproxy

VariableTypeAccessDescription
radiusproxy.serverstringreadRadius proxy server's name to which send the request
radiusproxy.server.tlsbooleanreadIs Radius proxy server using TLS connection?
radiusproxy.attr.**read/writeRadius proxy reply/request attributes

Attribute's data type is defined by the RADIUS dictionary used. Examples:

ExampleDescription
radiusproxy.attr.user-nameUser-Name attribute
radiusproxy.attr.operator-nameOperator-Name attribute
radiusproxy.attr.tunnel-type:1Tunnel-Type attribute with a tag value 1
radiusproxy.attr.cisco.avpair[0]First Cisco AV-pair attribute
radiusproxy.attr.cisco.avpair[n]Last Cisco AV-pair attribute
radiusproxy.attr.cisco.avpair[*]All Cisco AV-pair attributes

Namespace eap

VariableTypeAccessDescription
eap.identitystringreadEAP identity
eap.methodenumreadEAP method

Namespace eap-ttls

VariableTypeAccessDescription
eap-ttls.attr.**read/writeEAP-TTLS request/response attributes

Attribute's data type is defined by the RADIUS dictionary used. Examples:

ExampleDescription
eap-ttls.attr.user-nameUser-Name attribute
eap-ttls.attr.user-passwordUser-Password attribute
eap-ttls.attr.chap-passwordCHAP-Password attribute
eap-ttls.attr.eap-messageEAP-Message attribute

Namespace eap-teap

VariableTypeAccessDescription
eap-teap.usernamestringreadEAP-TEAP basic password authentication response username
eap-teap.identity-typeenumreadEAP-TEAP Identity-Type TLV (user/machine)

Namespace parent

VariableTypeAccessDescription
parent.**read/writeParent context namespace

Examples:

ExampleDescription
parent.aaa.identityAAA identity from parent context
parent.radius.clientRADIUS client from parent context

Namespace tacacsplus

VariableTypeAccessDescription
tacacsplus.typenumberreadTACACS+ packet type
tacacsplus.authenticationbooleanreadIs the request an authentication request?
tacacsplus.authorizationbooleanreadIs the request an authorization request?
tacacsplus.accountingbooleanreadIs the request an accounting request?
tacacsplus.unencryptedbooleanreadIs the packet unencrypted?
tacacsplus.sessionnumberreadTACACS+ session ID
tacacsplus.request.actionnumberreadRequest action
tacacsplus.request.privilegenumberreadRequest privilege level
tacacsplus.request.authentication.methodnumberreadAuthentication method
tacacsplus.request.authentication.typenumberreadAuthentication type
tacacsplus.request.authentication.servicenumberreadAuthentication service
tacacsplus.request.userstringreadRequest username
tacacsplus.request.portstringreadRequest port
tacacsplus.request.addressstringreadRequest remote address
tacacsplus.request.databytesreadRequest data
tacacsplus.request.messagestringreadRequest message
tacacsplus.request.arg[N]stringreadNth request argument
tacacsplus.request.argsstring arrayreadAll request arguments
tacacsplus.reply.statusstringread/writeReply status
tacacsplus.reply.noechobooleanread/writeReply no-echo flag
tacacsplus.reply.messagestringread/writeReply message
tacacsplus.reply.databytesread/writeReply data
tacacsplus.reply.arg[N]stringwriteNth reply argument
tacacsplus.reply.argsstring arrayread/writeAll reply arguments
tacacsplus.clientstringread/writeTACACS+ client name
tacacsplus.client.ipipreadTACACS+ client IP address
tacacsplus.client.secretbyteswriteTACACS+ client secret
tacacsplus.client.timeoutnumberread/writeTACACS+ client timeout in milliseconds
tacacsplus.serverstringreadTACACS+ server name

Namespace http

VariableTypeAccessDescription
http.managementbooleanreadIs the request a management API request?
http.methodstringreadHTTP request method (GET, POST, etc.)
http.pathstringreadHTTP request path
http.path.NstringreadNth part of the HTTP path (0-based)
http.querymapreadAll HTTP query parameters
http.query.KEYstringreadSpecific HTTP query parameter value
http.bodybytesreadHTTP request body
http.body.PATH*readJSON path access to request body
http.header.NAMEstringreadHTTP request header value
http.headers.NAMEstringreadHTTP request header value (alias)
http.responsebytesread/writeHTTP response body
http.response_header.NAMEstringread/writeHTTP response header value
http.statusstringread/writeHTTP response status code
http.jsonbooleanread/writeShould response be JSON formatted?
http.authorization.usernamestringreadUsername from Authorization header
http.authorization.passwordstringreadPassword from Authorization header
http.authorization.bearerstringreadBearer token from Authorization header
http.clientstringreadHTTP client name
http.client.ipipreadHTTP client IP address
http.serverstringreadHTTP server name
http.server.ipipreadHTTP server IP address
http.server.tlsbooleanreadIs the HTTP connection using TLS?

Namespace root

VariableTypeAccessDescription
root.**read/writeRoot context namespace

Examples:

ExampleDescription
root.aaa.identityAAA identity from root context
root.radius.clientRADIUS client from root context

Namespace server

VariableTypeAccessDescription
server.instance_idstringreadServer instance's ID
server.cluster_idstringreadServer's cluster ID
server.hostnamestringreadHostname of server
server.versionstringreadSoftware version information