Package ldaptor :: Package protocols :: Package ldap :: Package autofill :: Module sambaSamAccount
[hide private]
[frames] | no frames]

Source Code for Module ldaptor.protocols.ldap.autofill.sambaSamAccount

 1  from ldaptor.protocols.ldap.autofill import ObjectMissingObjectClassException 
 2   
3 -class Autofill_samba: #TODO baseclass
4 - def __init__(self, domainSID, fixedPrimaryGroupSID=None):
5 self.domainSID = domainSID 6 self.fixedPrimaryGroupSID = fixedPrimaryGroupSID
7
8 - def start(self, ldapObject):
9 assert 'objectClass' in ldapObject 10 if 'sambaSamAccount' not in ldapObject['objectClass']: 11 raise ObjectMissingObjectClassException, ldapObject 12 13 assert 'sambaAcctFlags' not in ldapObject 14 ldapObject['sambaAcctFlags'] = ['[UX ]'] 15 assert 'sambaPwdLastSet' not in ldapObject 16 ldapObject['sambaPwdLastSet'] = ['0'] 17 assert 'sambaLogonTime' not in ldapObject 18 ldapObject['sambaLogonTime'] = ['0'] 19 assert 'sambaLogoffTime' not in ldapObject 20 ldapObject['sambaLogoffTime'] = ['0'] 21 assert 'sambaPwdCanChange' not in ldapObject 22 ldapObject['sambaPwdCanChange'] = ['0'] 23 assert 'sambaPwdMustChange' not in ldapObject 24 ldapObject['sambaPwdMustChange'] = ['0'] 25 26 if self.fixedPrimaryGroupSID is not None: 27 assert 'sambaPrimaryGroupSID' not in ldapObject 28 ldapObject['sambaPrimaryGroupSID'] = ['%s-%d' % ( 29 self.domainSID, self.fixedPrimaryGroupSID)] 30 31 # Handle attributeTypes that were added before we got 32 # started. We know we don't defer in notify, so we can do a 33 # simple loop here. 34 for attributeType in ldapObject.keys(): 35 self.notify(ldapObject, attributeType)
36
37 - def notify(self, ldapObject, attributeType):
38 # sambaSID=2*uidNumber+1000 39 if attributeType == 'uidNumber': 40 assert 'uidNumber' in ldapObject 41 assert len(ldapObject['uidNumber']) == 1 42 for uidNumber in ldapObject['uidNumber']: 43 uidNumber = int(uidNumber) 44 sid = '%s-%d' % (self.domainSID, uidNumber*2+1000) 45 ldapObject['sambaSID'] = [str(sid)] 46 return 47 48 # sambaPrimaryGroupSID = fixed or 2*gidNumber+1001 49 if (self.fixedPrimaryGroupSID is None 50 and attributeType == 'gidNumber'): 51 assert 'gidNumber' in ldapObject 52 assert len(ldapObject['gidNumber']) == 1 53 for gidNumber in ldapObject['gidNumber']: 54 gidNumber = int(gidNumber) 55 sid = '%s-%d' % (self.domainSID, gidNumber*2+1001) 56 ldapObject['sambaPrimaryGroupSID'] = [str(sid)] 57 return
58