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