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