Mini Shell
# -*- coding: utf-8 -*-
"""
ldap.controls.sessiontrack - class for session tracking control
(see draft-wahl-ldap-session)
See https://www.python-ldap.org/ for project details.
"""
from ldap.controls import RequestControl
from pyasn1.type import namedtype,univ
from pyasn1.codec.ber import encoder
from pyasn1_modules.rfc2251 import LDAPString,LDAPOID
# OID constants
SESSION_TRACKING_CONTROL_OID = "1.3.6.1.4.1.21008.108.63.1"
SESSION_TRACKING_FORMAT_OID_RADIUS_ACCT_SESSION_ID = SESSION_TRACKING_CONTROL_OID+".1"
SESSION_TRACKING_FORMAT_OID_RADIUS_ACCT_MULTI_SESSION_ID = SESSION_TRACKING_CONTROL_OID+".2"
SESSION_TRACKING_FORMAT_OID_USERNAME = SESSION_TRACKING_CONTROL_OID+".3"
class SessionTrackingControl(RequestControl):
"""
Class for Session Tracking Control
Because criticality MUST be false for this control it cannot be set
from the application.
sessionSourceIp
IP address of the request source as string
sessionSourceName
Name of the request source as string
formatOID
OID as string specifying the format
sessionTrackingIdentifier
String containing a specific tracking ID
"""
class SessionIdentifierControlValue(univ.Sequence):
componentType = namedtype.NamedTypes(
namedtype.NamedType('sessionSourceIp',LDAPString()),
namedtype.NamedType('sessionSourceName',LDAPString()),
namedtype.NamedType('formatOID',LDAPOID()),
namedtype.NamedType('sessionTrackingIdentifier',LDAPString()),
)
controlType = SESSION_TRACKING_CONTROL_OID
def __init__(self,sessionSourceIp,sessionSourceName,formatOID,sessionTrackingIdentifier):
# criticality MUST be false for this control
self.criticality = False
self.sessionSourceIp,self.sessionSourceName,self.formatOID,self.sessionTrackingIdentifier = \
sessionSourceIp,sessionSourceName,formatOID,sessionTrackingIdentifier
def encodeControlValue(self):
s = self.SessionIdentifierControlValue()
s.setComponentByName('sessionSourceIp',LDAPString(self.sessionSourceIp))
s.setComponentByName('sessionSourceName',LDAPString(self.sessionSourceName))
s.setComponentByName('formatOID',LDAPOID(self.formatOID))
s.setComponentByName('sessionTrackingIdentifier',LDAPString(self.sessionTrackingIdentifier))
return encoder.encode(s)
Zerion Mini Shell 1.0