/usr/share/pyshared/ldap/controls/simple.py is in python-ldap 2.4.10-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 | # -*- coding: utf-8 -*-
"""
ldap.controls.simple - classes for some very simple LDAP controls
See http://www.python-ldap.org/ for details.
$Id: simple.py,v 1.8 2012/02/21 16:50:36 stroeder Exp $
"""
import struct,ldap
from ldap.controls import RequestControl,ResponseControl,LDAPControl,KNOWN_RESPONSE_CONTROLS
class ValueLessRequestControl(RequestControl):
"""
Base class for controls without a controlValue.
The presence of the control in a LDAPv3 request changes the server's
behaviour when processing the request simply based on the controlType.
controlType
OID of the request control
criticality
criticality request control
"""
def __init__(self,controlType=None,criticality=False):
self.controlType = controlType
self.criticality = criticality
def encodeControlValue(self):
return None
class OctetStringInteger(LDAPControl):
"""
Base class with controlValue being unsigend integer values
integerValue
Integer to be sent as OctetString
"""
def __init__(self,controlType=None,criticality=False,integerValue=None):
self.controlType = controlType
self.criticality = criticality
self.integerValue = integerValue
def encodeControlValue(self):
return struct.pack('!Q',self.integerValue)
def decodeControlValue(self,encodedControlValue):
self.integerValue = struct.unpack('!Q',encodedControlValue)[0]
class BooleanControl(LDAPControl):
"""
Base class for simple request controls with boolean control value.
Constructor argument and class attribute:
booleanValue
Boolean (True/False or 1/0) which is the boolean controlValue.
"""
boolean2ber = { 1:'\x01\x01\xFF', 0:'\x01\x01\x00' }
ber2boolean = { '\x01\x01\xFF':1, '\x01\x01\x00':0 }
def __init__(self,controlType=None,criticality=False,booleanValue=False):
self.controlType = controlType
self.criticality = criticality
self.booleanValue = booleanValue
def encodeControlValue(self):
return self.boolean2ber[int(self.booleanValue)]
def decodeControlValue(self,encodedControlValue):
self.booleanValue = self.ber2boolean[encodedControlValue]
class ManageDSAITControl(ValueLessRequestControl):
"""
Manage DSA IT Control
"""
def __init__(self,criticality=False):
ValueLessRequestControl.__init__(self,ldap.CONTROL_MANAGEDSAIT,criticality=False)
KNOWN_RESPONSE_CONTROLS[ldap.CONTROL_MANAGEDSAIT] = ManageDSAITControl
class RelaxRulesControl(ValueLessRequestControl):
"""
Relax Rules Control
"""
def __init__(self,criticality=False):
ValueLessRequestControl.__init__(self,ldap.CONTROL_RELAX,criticality=False)
KNOWN_RESPONSE_CONTROLS[ldap.CONTROL_RELAX] = RelaxRulesControl
class ProxyAuthzControl(RequestControl):
"""
Proxy Authorization Control
authzId
string containing the authorization ID indicating the identity
on behalf which the server should process the request
"""
def __init__(self,criticality,authzId):
RequestControl.__init__(self,ldap.CONTROL_PROXY_AUTHZ,criticality,authzId)
class AuthorizationIdentityRequestControl(ValueLessRequestControl):
"""
Authorization Identity Request and Response Controls
Class attributes:
authzId
decoded authorization identity
"""
controlType = '2.16.840.1.113730.3.4.16'
def __init__(self,criticality):
ValueLessRequestControl.__init__(self,self.controlType,criticality)
class AuthorizationIdentityResponseControl(ResponseControl):
"""
Authorization Identity Request and Response Controls
Class attributes:
authzId
decoded authorization identity
"""
controlType = '2.16.840.1.113730.3.4.15'
def decodeControlValue(self,encodedControlValue):
self.authzId = encodedControlValue
KNOWN_RESPONSE_CONTROLS[AuthorizationIdentityResponseControl.controlType] = AuthorizationIdentityResponseControl
class GetEffectiveRightsControl(RequestControl):
"""
Get Effective Rights Control
"""
def __init__(self,criticality,authzId=None):
RequestControl.__init__(self,'1.3.6.1.4.1.42.2.27.9.5.2',criticality,authzId)
|