Exemplo n.º 1
0
    def update(self, newpasswd=""):
        try:
            ldif = conns.LDAP.search_s("uid=%s,ou=users,%s" % (self.name,self.rootdn),
                ldap.SCOPE_SUBTREE, "(objectClass=*)", None)
        except ldap.NO_SUCH_OBJECT:
            raise Exception("This user does not exist")
        self.first_name = str(self.first_name)
        self.last_name = str(self.last_name)
        self.domain = str(self.domain)

        ldif = ldif[0][1]
        attrs = {
            "givenName": self.first_name,
            "sn": self.last_name,
            "displayName": "%s %s" % (self.first_name, self.last_name),
            "cn": "%s %s" % (self.first_name, self.last_name),
            "mail": self.mail
        }
        if newpasswd:
            attrs["userPassword"] = hashpw(newpasswd, "crypt")
        signals.emit("users", "pre_update", self)
        nldif = ldap.modlist.modifyModlist(ldif, attrs, ignore_oldexistent=1)
        conns.LDAP.modify_ext_s("uid=%s,ou=users,%s" % (self.name,self.rootdn), nldif)
        self.update_adminsudo()
        signals.emit("users", "post_update", self)
Exemplo n.º 2
0
    def add(self, passwd):
        try:
            ldif = conns.LDAP.search_s("uid=%s,ou=users,%s" % (self.name,self.rootdn),
                ldap.SCOPE_SUBTREE, "(objectClass=*)", None)
            raise Exception("A user with this name already exists")
        except ldap.NO_SUCH_OBJECT:
            pass

        # Create LDAP user with proper metadata
        ldif = {
            "objectClass": ["mailAccount", "inetOrgPerson", "posixAccount"],
            "givenName": self.first_name,
            "sn": self.last_name or "NONE",
            "displayName": self.first_name+" "+self.last_name,
            "cn": self.first_name+" "+self.last_name,
            "uid": self.name,
            "mail": [self.name+"@"+self.domain],
            "maildrop": self.name,
            "userPassword": hashpw(passwd, "crypt"),
            "gidNumber": "100",
            "uidNumber": str(self.uid),
            "homeDirectory": "/home/%s" % self.name,
            "loginShell": "/usr/bin/bash"
            }
        ldif = ldap.modlist.addModlist(ldif)
        signals.emit("users", "pre_add", self)
        conns.LDAP.add_s("uid=%s,ou=users,%s" % (self.name,self.rootdn), ldif)
        self.update_adminsudo()
        signals.emit("users", "post_add", self)