1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- # -*- 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)
|