1 from ldaptor.protocols.ldap.autofill import ObjectMissingObjectClassException
2
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
32
33
34 for attributeType in ldapObject.keys():
35 self.notify(ldapObject, attributeType)
36
37 - def notify(self, ldapObject, attributeType):
38
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
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