Python ldap 模块,MOD_ADD 实例源码

我们从Python开源项目中,提取了以下9个代码示例,用于说明如何使用ldap.MOD_ADD

项目:auth-tool    作者:luciddg    | 项目源码 | 文件源码
def add_sshpubkey(self, username, sshpubkey):
        """
        Add an sshPublicKey attribute to the user's dn
        """
        dn = 'uid={0},{1}'.format(username, self.base_dn)

        try:
            with self._ldap_connection() as ldap_cxn:
                ldap_cxn.simple_bind_s(self.bind_dn, self.bind_pw)
                mod_list = [(ldap.MOD_ADD, 'sshPublicKey', str(sshpubkey))]
                ldap_cxn.modify_s(dn, mod_list)

        except (ldap.INVALID_CREDENTIALS, ldap.INSUFFICIENT_ACCESS, ldap.LDAPError) as e:
            self.bus.log('LDAP Error: {0}'.format(e.message['desc'] if 'desc' in e.message else str(e)),
                         level=40,
                         traceback=True)
            raise
项目:Trusted-Platform-Module-nova    作者:BU-NU-CLOUD-SP16    | 项目源码 | 文件源码
def add_entry(self, name, address):
        if self.subentry_with_name(name):
            raise exception.FloatingIpDNSExists(name=name,
                                                domain=self.qualified_domain)

        entries = self.subentries_with_ip(address)
        if entries:
            # We already have an ldap entry for this IP, so we just
            # need to add the new name.
            existingdn = entries[0].dn
            self.lobj.modify_s(existingdn, [(ldap.MOD_ADD,
                                            'associatedDomain',
                                             utils.utf8(self._qualify(name)))])

            return self.subentry_with_name(name)
        else:
            # We need to create an entirely new entry.
            newdn = 'dc=%s,%s' % (name, self.dn)
            attrs = {'objectClass': ['domainrelatedobject', 'dnsdomain',
                                     'domain', 'dcobject', 'top'],
                     'aRecord': [address],
                     'associatedDomain': [self._qualify(name)],
                     'dc': [name]}
            self.lobj.add_s(newdn, create_modlist(attrs))
            return self.subentry_with_name(name)
项目:isam-ansible-roles    作者:IBM-Security    | 项目源码 | 文件源码
def exact(self):
        try:
            results = self.connection.search_s(
                self.dn, ldap.SCOPE_BASE, attrlist=[self.name])
        except ldap.LDAPError:
            e = get_exception()
            self.module.fail_json(
                msg="Cannot search for attribute %s" % self.name,
                details=str(e))

        current = results[0][1].get(self.name, [])
        modlist = []

        if frozenset(self.values) != frozenset(current):
            if len(current) == 0:
                modlist = [(ldap.MOD_ADD, self.name, self.values)]
            elif len(self.values) == 0:
                modlist = [(ldap.MOD_DELETE, self.name, None)]
            else:
                modlist = [(ldap.MOD_REPLACE, self.name, self.values)]

        return modlist
项目:pizza-auth    作者:xxpizzaxx    | 项目源码 | 文件源码
def group_apply(group):
    originalgroup = group
    group = str(group)
    assert(group in app.config["groups"]["closedgroups"]+app.config["groups"]["opengroups"])
    join = True
    if group in app.config["groups"]["closedgroups"]:
        group = group+"-pending"
        join = False
    if current_user.accountStatus[0]=="Ineligible":
        if group not in app.config["groups"]["publicgroups"]:
            flash("You cannot join that group.", "danger")
            return redirect("/groups")
    ldaptools.modgroup(current_user.get_id() , MOD_ADD, group)
    if join:
        flash("Joined %s group" % group, "success")
    else:
        flash("Applied for %s group" % originalgroup, "success")
    return redirect("/groups")
项目:pizza-auth    作者:xxpizzaxx    | 项目源码 | 文件源码
def verify_token(self, uid, query_args):
            code = query_args.get('code', None)
            state = query_args.get('state', None)
            user = self.ldaptools.getuser(uid)

            if code and state:
                state_key = self.config["statekey"]
                if state_key == state:
                    r = self.get_reddit_client(self.config["redirect_base"] + url_for('reddit_loop'))
                    access_info = r.get_access_information(code)
                    auth_reddit = r.get_me()
                    if 'redditAccount' in user.objectClass:
                        if hasattr(user, 'redditName') and hasattr(user, 'redditToken'):
                            from ldap import MOD_REPLACE
                            self.ldaptools.updateattrs(uid, MOD_REPLACE, {
                                'redditName': auth_reddit.name,
                                'redditToken': access_info['access_token']
                                })
                        else:
                            # Something went horribly wrong.
                            return False
                    else:
                        from ldap import MOD_ADD
                        self.ldaptools.updateattrs(uid, MOD_ADD, {
                            'objectClass': 'redditAccount',
                            'redditName': auth_reddit.name,
                            'redditToken': access_info['access_token']
                            })

                    return True

            return False
项目:pizza-auth    作者:xxpizzaxx    | 项目源码 | 文件源码
def groupapprove(id, group):
    if ("admin" not in current_user.get_authgroups()) and ("admin-%s" % group not in current_user.get_authgroups()):
        flash("You do not have the right to do that.", "danger")
        return redirect("/groups/admin")
    try:
        id = str(id)
        group = str(group)
        ldaptools.modgroup(id, MOD_DELETE, group+"-pending")
        ldaptools.modgroup(id, MOD_ADD, group)
        flash("Membership of %s approved for %s" % (group, id), "success")
        return redirect("/groups/admin")
    except:
        flash("Membership application not found", "danger")
        return redirect("/groups/admin")
项目:pizza-auth    作者:xxpizzaxx    | 项目源码 | 文件源码
def groupmkadmin(id, group):
    if ("admin" not in current_user.get_authgroups()) and ("admin-%s" % group not in current_user.get_authgroups()):
        flash("You do not have the right to do that.", "danger")
        return redirect("/groups/admin")
    id = str(id)
    group = str(group)
    try:
        ldaptools.modgroup(id, MOD_ADD, "admin-%s" % group)
        flash("Membership of admin-%s added for %s" % (group, id), "success")
    except:
        flash("That user is already in that group.", "danger")
    return redirect("/groups/list/"+group)
项目:pizza-auth    作者:xxpizzaxx    | 项目源码 | 文件源码
def groupmkping(id, group):
    if ("admin" not in current_user.get_authgroups()) and ("admin-%s" % group not in current_user.get_authgroups()):
        flash("You do not have the right to do that.", "danger")
        return redirect("/groups/admin")
    id = str(id)
    group = str(group)
    try:
        ldaptools.modgroup(id, MOD_ADD, "ping-%s" % group)
        flash("Membership of ping-%s added for %s" % (group, id), "success")
    except:
        flash("That user is already in that group.", "danger")
    return redirect("/groups/list/"+group)
项目:isam-ansible-roles    作者:IBM-Security    | 项目源码 | 文件源码
def add(self):
        values_to_add = filter(self._is_value_absent, self.values)

        if len(values_to_add) > 0:
            modlist = [(ldap.MOD_ADD, self.name, values_to_add)]
        else:
            modlist = []

        return modlist