Source code for ldaptor.protocols.ldap.autofill.sambaSamAccount
from ldaptor.protocols.ldap.autofill import ObjectMissingObjectClassException
[docs]class Autofill_samba: #TODO baseclass
def __init__(self, domainSID, fixedPrimaryGroupSID=None):
self.domainSID = domainSID
self.fixedPrimaryGroupSID = fixedPrimaryGroupSID
[docs] def start(self, ldapObject):
assert 'objectClass' in ldapObject
if 'sambaSamAccount' not in ldapObject['objectClass']:
raise ObjectMissingObjectClassException, ldapObject
assert 'sambaAcctFlags' not in ldapObject
ldapObject['sambaAcctFlags'] = ['[UX ]']
assert 'sambaPwdLastSet' not in ldapObject
ldapObject['sambaPwdLastSet'] = ['1']
assert 'sambaLogonTime' not in ldapObject
ldapObject['sambaLogonTime'] = ['0']
assert 'sambaLogoffTime' not in ldapObject
ldapObject['sambaLogoffTime'] = ['0']
assert 'sambaPwdCanChange' not in ldapObject
ldapObject['sambaPwdCanChange'] = ['0']
assert 'sambaPwdMustChange' not in ldapObject
ldapObject['sambaPwdMustChange'] = ['0']
if self.fixedPrimaryGroupSID is not None:
assert 'sambaPrimaryGroupSID' not in ldapObject
ldapObject['sambaPrimaryGroupSID'] = ['%s-%d' % (
self.domainSID, self.fixedPrimaryGroupSID)]
# Handle attributeTypes that were added before we got
# started. We know we don't defer in notify, so we can do a
# simple loop here.
for attributeType in ldapObject.keys():
self.notify(ldapObject, attributeType)
[docs] def notify(self, ldapObject, attributeType):
# sambaSID=2*uidNumber+1000
if attributeType == 'uidNumber':
assert 'uidNumber' in ldapObject
assert len(ldapObject['uidNumber']) == 1
for uidNumber in ldapObject['uidNumber']:
uidNumber = int(uidNumber)
sid = '%s-%d' % (self.domainSID, uidNumber*2+1000)
ldapObject['sambaSID'] = [str(sid)]
return
# sambaPrimaryGroupSID = fixed or 2*gidNumber+1001
if (self.fixedPrimaryGroupSID is None
and attributeType == 'gidNumber'):
assert 'gidNumber' in ldapObject
assert len(ldapObject['gidNumber']) == 1
for gidNumber in ldapObject['gidNumber']:
gidNumber = int(gidNumber)
sid = '%s-%d' % (self.domainSID, gidNumber*2+1001)
ldapObject['sambaPrimaryGroupSID'] = [str(sid)]
return