当前位置: 首页>>代码示例>>Python>>正文


Python ldap.NO_SUCH_OBJECT属性代码示例

本文整理汇总了Python中ldap.NO_SUCH_OBJECT属性的典型用法代码示例。如果您正苦于以下问题:Python ldap.NO_SUCH_OBJECT属性的具体用法?Python ldap.NO_SUCH_OBJECT怎么用?Python ldap.NO_SUCH_OBJECT使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在ldap的用法示例。


在下文中一共展示了ldap.NO_SUCH_OBJECT属性的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: add

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def add(self):
        """Add the group to LDAP."""
        try:
            ldif = conns.LDAP.search_s(self.ldap_id, ldap.SCOPE_SUBTREE,
                                       "(objectClass=*)", None)
            emsg = "A group with this name already exists"
            raise errors.InvalidConfigError(emsg)
        except ldap.NO_SUCH_OBJECT:
            pass
        ldif = {
            "objectClass": [b"posixGroup", b"top"],
            "cn": [b(self.name)],
            "gidNumber": [b(str(self.gid))]
        }
        if self.users:
            ldif["memberUid"] = [b(u) for u in self.users]
        ldif = ldap.modlist.addModlist(ldif)
        signals.emit("groups", "pre_add", self)
        conns.LDAP.add_s(self.ldap_id, ldif)
        signals.emit("groups", "post_add", self) 
开发者ID:arkOScloud,项目名称:core,代码行数:22,代码来源:groups.py

示例2: _get_conn

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def _get_conn(self):
        self._log.debug('Setting up LDAP connection')
        ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)

        try:
            conn = ldap.initialize(self._url)
            conn.set_option(ldap.OPT_NETWORK_TIMEOUT, 3)
            conn.set_option(ldap.OPT_REFERRALS, ldap.OPT_OFF)
            conn.simple_bind_s(self._binddn, self._bindpw)
        except (
            ldap.SERVER_DOWN,
            ldap.NO_SUCH_OBJECT,
            ldap.INVALID_CREDENTIALS
        ) as e:
            if hasattr(e, 'message') and 'desc' in e.message:
                msg = e.message['desc']
            else:
                msg = e.args[0]['desc']
            self._log.debug('%s (%s)' % (msg, self._url))
            return False

        self._log.debug('LDAP connection established')
        return conn 
开发者ID:peterpakos,项目名称:checkipaconsistency,代码行数:25,代码来源:freeipaserver.py

示例3: get_memberof

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def get_memberof(realname, server_options, reuse=None):
    """
    Returns the list of memberOf groups
    """
    if not server_options['ldap']:
        return list(), None
    if reuse:
        ldap_conn = reuse
    else:
        ldap_conn, err_msg = get_ldap_conn(
            server_options['ldap_host'],
            server_options['ldap_username'],
            server_options['ldap_password'])
        if err_msg:
            return list(), 'Error: wrong cassh ldap credentials'
    try:
        output = ldap_conn.search_s(
            server_options['ldap_bind_dn'],
            SCOPE_SUBTREE,
            filterstr='(&({}={}))'.format(
                server_options['ldap_filter_realname_key'],
                realname))
    except NO_SUCH_OBJECT:
        return list(), 'Error: admin LDAP filter is incorrect (no such object).'
    if not isinstance(output, list) or not output:
        return list(), None
    if len(output) != 1:
        return list(), 'Error: admin LDAP filter is incorrect (multiple user).'
    ldap_infos = output[0]
    if not isinstance(output, list) or not output:
        return list(), None
    for i in ldap_infos:
        if isinstance(i, dict) and server_options['ldap_filter_memberof_key'] in i:
            if isinstance(i[server_options['ldap_filter_memberof_key']], list):
                return i[server_options['ldap_filter_memberof_key']], None
            return list(), 'Error: admin LDAP output is incorrect.'
    return list(), 'Error: admin LDAP filter is incorrect.' 
开发者ID:nbeguier,项目名称:cassh,代码行数:39,代码来源:tools.py

示例4: get_groups

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def get_groups(ldapobject):
  """This function will search the LDAP directory for the specificied group DNs."""

  groups = []
  for group_dn in group_dns:
    try:
      result_set = get_ldap_search_resultset(group_dn, group_query, ldapobject, ldap.SCOPE_BASE)
      for i in range(len(result_set)):
        for entry in result_set[i]:
          groups.append(entry)
    except ldap.NO_SUCH_OBJECT, e:
      if not silent:
        sys.stderr.write("Couldn't find a group with DN %s.\n" % group_dn)
      raise e 
开发者ID:whitlockjc,项目名称:sync-ldap-groups-to-svn-authz,代码行数:16,代码来源:sync_ldap_groups_to_svn_authz.py

示例5: update

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def update(self, newpasswd=""):
        """
        Update a user's object in LDAP. Change params on the object first.

        To change password, do so via the ``newpasswd`` param here.

        :param str newpasswd: new password to set
        """
        try:
            ldif = conns.LDAP.search_s(self.ldap_id, ldap.SCOPE_SUBTREE,
                                       "(objectClass=*)", None)
        except ldap.NO_SUCH_OBJECT:
            raise errors.InvalidConfigError(
                "Users", "This user does not exist")

        self.mail = list(set(self.mail))

        for i, x in enumerate(self.mail):
            if not x.endswith(self.domain):
                self.mail[i] = x.split("@")[0] + "@" + self.domain

        ldif = ldif[0][1]
        attrs = {
            "givenName": [b(self.first_name)],
            "sn": [b(self.last_name)] if self.last_name else [b"NONE"],
            "displayName": [b(self.full_name)],
            "cn": [b(self.full_name)],
            "mail": [b(x) for x in self.mail]
        }
        if newpasswd:
            attrs["userPassword"] = [b(ldap_sha512_crypt.encrypt(newpasswd))]
        signals.emit("users", "pre_update", self)
        nldif = ldap.modlist.modifyModlist(ldif, attrs, ignore_oldexistent=1)
        conns.LDAP.modify_s(self.ldap_id, nldif)

        self.update_adminsudo()
        self.update_samba(newpasswd)

        signals.emit(
            "users", "post_update", {"user": self, "passwd": newpasswd}
        ) 
开发者ID:arkOScloud,项目名称:core,代码行数:43,代码来源:users.py

示例6: update_adminsudo

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def update_adminsudo(self):
        """Update the user's admin and sudo group settings in LDAP."""
        ldif = conns.LDAP.search_s(
            "cn=admins,ou=groups,{0}".format(self.rootdn),
            ldap.SCOPE_SUBTREE, "(objectClass=*)", None)[0][1]
        memlist = ldif["member"]
        ldif_vals = [(1, "member", None), (0, "member", memlist)]

        if self.admin and b(self.ldap_id) not in memlist:
            memlist += [b(self.ldap_id)]
            conns.LDAP.modify_s(
                "cn=admins,ou=groups,{0}".format(self.rootdn), ldif_vals)
        elif not self.admin and self.ldap_id in memlist:
            memlist.remove(self.ldap_id)
            conns.LDAP.modify_s(
                "cn=admins,ou=groups,{0}".format(self.rootdn), ldif_vals)

        try:
            conns.LDAP.search_s(
                "cn={0},ou=sudo,{1}".format(
                    self.name, self.rootdn),
                ldap.SCOPE_SUBTREE, "(objectClass=*)", None)
            is_sudo = True
        except ldap.NO_SUCH_OBJECT:
            is_sudo = False

        if self.sudo and not is_sudo:
            nldif = {
                "objectClass": [b"sudoRole", b"top"],
                "cn": [b(self.name)],
                "sudoHost": b"ALL",
                "sudoCommand": b"ALL",
                "sudoUser": [b(self.name)],
                "sudoOption": b"authenticate"
            }
            nldif = ldap.modlist.addModlist(nldif)
            conns.LDAP.add_s(
                "cn=" + self.name + ",ou=sudo," + self.rootdn, nldif)
        elif not self.sudo and is_sudo:
            conns.LDAP.delete_s(
                "cn=" + self.name + ",ou=sudo," + self.rootdn) 
开发者ID:arkOScloud,项目名称:core,代码行数:43,代码来源:users.py

示例7: add

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def add(self):
        """Add the domain to LDAP."""
        try:
            ldif = conns.LDAP.search_s(self.ldap_id, ldap.SCOPE_SUBTREE,
                                       "(objectClass=*)", None)
            emsg = "This domain is already present here"
            raise errors.InvalidConfigError(emsg)
        except ldap.NO_SUCH_OBJECT:
            pass
        ldif = {"virtualdomain": [b(self.name)],
                "objectClass": [b"mailDomain", b"top"]}
        signals.emit("domains", "pre_add", self)
        conns.LDAP.add_s(self.ldap_id, ldap.modlist.addModlist(ldif))
        signals.emit("domains", "post_add", self) 
开发者ID:arkOScloud,项目名称:core,代码行数:16,代码来源:domains.py

示例8: _validate_password

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def _validate_password(self, username, password):
        '''by username'''
        password = h.really_unicode(password).encode('utf-8')
        try:
            ldap_user = ldap_user_dn(username)
        except ValueError:
            return False
        try:
            con = ldap_conn(ldap_user, password)
            con.unbind_s()
            return True
        except (ldap.INVALID_CREDENTIALS, ldap.UNWILLING_TO_PERFORM, ldap.NO_SUCH_OBJECT):
            log.debug('LdapAuth: could not authenticate {}'.format(username), exc_info=True)
        return False 
开发者ID:apache,项目名称:allura,代码行数:16,代码来源:plugin.py

示例9: _get_pref

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def _get_pref(self, username, pref_name):
        con = ldap_conn()
        try:
            rs = con.search_s(ldap_user_dn(username), ldap.SCOPE_BASE)
        except ldap.NO_SUCH_OBJECT:
            rs = []
        else:
            con.unbind_s()
        if not rs:
            log.warning('LdapUserPref: No user record found for: {}'.format(username))
            return ''
        user_dn, user_attrs = rs[0]
        ldap_attr = self.fields[pref_name]
        # assume single-valued list
        return user_attrs[ldap_attr][0].decode('utf-8') 
开发者ID:apache,项目名称:allura,代码行数:17,代码来源:plugin.py

示例10: _search

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def _search(self, base, fltr, attrs=None, scope=ldap.SCOPE_SUBTREE):
        self._log.debug('Search base: %s, filter: %s, attributes: %s, scope: %s' % (base, fltr, attrs, scope))
        try:
            results = self._conn.search_s(base, scope, fltr, attrs)
        except (ldap.NO_SUCH_OBJECT, ldap.SERVER_DOWN) as e:
            self._log.debug(self._get_ldap_msg(e))
            results = False
        except ldap.REFERRAL as e:
            self._log.critical("Replica %s is temporarily unavailable." % self._fqdn)
            self._log.debug("Replica redirected")
            self._log.debug(e.message['info'])
            exit(1)
        return results 
开发者ID:peterpakos,项目名称:checkipaconsistency,代码行数:15,代码来源:freeipaserver.py

示例11: _ldap_search

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def _ldap_search(cnx, filter_str, attributes, non_unique='raise'):
    """Helper function to perform the actual LDAP search

    @param cnx: The LDAP connection object
    @param filter_str: The LDAP filter string
    @param attributes: The LDAP attributes to fetch. This *must* include self.ldap_username
    @param non_unique: What to do when there is more than one result. Can be either 'log' (log an error
                       and return None - used to indicate that this is a configuration problem that needs
                       to be address by the site admin, not by the current user) or 'raise' (raise an
                       exception with a message that will be displayed to the current user - such
                       as 'please use your unique id instead'). Other values will silently ignore the error.
    @return: A dictionary defining 'cn', self.ldap_username and any other attributes that were defined
             in attributes; or None if no user was found.
    """
    try:
        res = cnx.search_s(config['ckanext.ldap.base_dn'], ldap.SCOPE_SUBTREE, filterstr=filter_str, attrlist=attributes)
    except ldap.SERVER_DOWN:
        log.error('LDAP server is not reachable')
        return None
    except ldap.OPERATIONS_ERROR as e:
        log.error('LDAP query failed. Maybe you need auth credentials for performing searches? Error returned by the server: ' + e.info)
        return None
    except (ldap.NO_SUCH_OBJECT, ldap.REFERRAL) as e:
        log.error('LDAP distinguished name (ckanext.ldap.base_dn) is malformed or does not exist.')
        return None
    except ldap.FILTER_ERROR:
        log.error('LDAP filter (ckanext.ldap.search) is malformed')
        return None
    if len(res) > 1:
        if non_unique == 'log':
            log.error('LDAP search.filter search returned more than one entry, ignoring. Fix the search to return only 1 or 0 results.')
        elif non_unique == 'raise':
            raise MultipleMatchError(config['ckanext.ldap.search.alt_msg'])
        return None
    elif len(res) == 1:
        cn = res[0][0]
        attr = res[0][1]
        ret = {
            'cn': cn,
        }

        # Check required fields
        for i in ['username', 'email']:
            cname = 'ckanext.ldap.' + i
            if config[cname] not in attr or not attr[config[cname]]:
                log.error('LDAP search did not return a {}.'.format(i))
                return None
        # Set return dict
        for i in ['username', 'fullname', 'email', 'about']:
            cname = 'ckanext.ldap.' + i
            if cname in config and config[cname] in attr:
                v = attr[config[cname]]
                if v:
                    ret[i] = v[0]
        return ret
    else:
        return None 
开发者ID:italia,项目名称:daf-recipes,代码行数:59,代码来源:user.py

示例12: add

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def add(self, passwd):
        """
        Add the user to LDAP.

        :param str passwd: user password to set
        """
        try:
            ldif = conns.LDAP.search_s(
                self.ldap_id, ldap.SCOPE_BASE, "(objectClass=*)", None)
            msg = "A user named {0} already exists".format(self.name)
            raise errors.InvalidConfigError(msg)
        except ldap.NO_SUCH_OBJECT:
            pass

        # Create LDAP user with proper metadata
        ldif = {
            "objectClass": [b"mailAccount", b"inetOrgPerson", b"posixAccount"],
            "givenName": [b(self.first_name)],
            "sn": [b(self.last_name)] if self.last_name else [b"NONE"],
            "displayName": [b(self.full_name)],
            "cn": [b(self.full_name)],
            "uid": [b(self.name)],
            "mail": [b(self.name + "@" + self.domain)],
            "maildrop": [b(self.name)],
            "userPassword": [b(ldap_sha512_crypt.encrypt(passwd))],
            "gidNumber": [b"100"],
            "uidNumber": [b(str(self.uid))],
            "homeDirectory": [b("/home/" + self.name)],
            "loginShell": [b"/usr/bin/bash"]
            }
        ldif = ldap.modlist.addModlist(ldif)
        signals.emit("users", "pre_add", self)
        logger.debug("Roles", "Adding user: {0}".format(self.ldap_id))
        conns.LDAP.add_s(self.ldap_id, ldif)
        modes = ["admin" if self.admin else "", "sudo" if self.sudo else ""]
        msg = "Setting user modes: {0}".format(", ".join(modes))
        logger.debug("Roles", msg)

        self.update_adminsudo()
        self.update_samba(passwd)

        signals.emit("users", "post_add", {"user": self, "passwd": passwd}) 
开发者ID:arkOScloud,项目名称:core,代码行数:44,代码来源:users.py

示例13: get

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def get(uid=None, name=None):
    """
    Get all LDAP users.

    :param str id: ID of single user to fetch
    :param str name: username of single user to fetch
    :returns: User(s)
    :rtype: User or list thereof
    """
    r = []
    rootdn = config.get("general", "ldap_rootdn")
    ldap_users = conns.LDAP.search_s("ou=users," + rootdn, ldap.SCOPE_SUBTREE,
                                     "(objectClass=inetOrgPerson)", None)
    for x in ldap_users:
        for y in x[1]:
            if y == "mail":
                continue
            if type(x[1][y]) == list and len(x[1][y]) == 1:
                x[1][y] = x[1][y][0]
        u = User(x[1]["uid"].decode(), x[1]["givenName"].decode(),
                 x[1]["sn"].decode() if x[1]["sn"] != b"NONE" else None,
                 int(x[1]["uidNumber"]),
                 x[1]["mail"][0].split(b"@")[1].decode(),
                 x[0].split("ou=users,")[1],
                 [z.decode() for z in x[1]["mail"]])

        # Check if the user is a member of the admin or sudo groups
        try:
            conns.LDAP.search_s("cn={0},ou=sudo,{1}".format(u.name, u.rootdn),
                                ldap.SCOPE_SUBTREE, "(objectClass=*)", None)
            u.sudo = True
        except ldap.NO_SUCH_OBJECT:
            u.sudo = False
        memlist = conns.LDAP.search_s("cn=admins,ou=groups,{0}"
                                      .format(u.rootdn), ldap.SCOPE_SUBTREE,
                                      "(objectClass=*)", None)[0][1]["member"]
        if b("uid={0},ou=users,{1}".format(u.name, u.rootdn)) in memlist:
            u.admin = True
        else:
            u.admin = False

        if u.uid == uid:
            return u
        elif name and u.name == name:
            return u
        r.append(u)
    return r if uid is None and name is None else None 
开发者ID:arkOScloud,项目名称:core,代码行数:49,代码来源:users.py

示例14: add_to_groups

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def add_to_groups(self, username, groups):
        ldap_client = self._bind()
        # recover dn of the user and his attributes
        tmp = self._get_user(self._byte_p2(username), ALL_ATTRS)
        dn = tmp[0]
        attrs = tmp[1]
        attrs['dn'] = dn
        self._normalize_group_attrs(attrs)
        dn = self._byte_p2(tmp[0])
        # add user to all groups
        for group in groups:
            group = self._byte_p2(group)
            # iterate on group membership attributes
            for attr in self.group_attrs:
                # fill the content template
                content = self._byte_p2(self.group_attrs[attr] % attrs)
                self._logger(
                    severity=logging.DEBUG,
                    msg="%(backend)s: adding user '%(user)s'"
                        " with dn '%(dn)s' to group '%(group)s' by"
                        " setting '%(attr)s' to '%(content)s'" % {
                            'user': username,
                            'dn': self._uni(dn),
                            'group': self._uni(group),
                            'attr': attr,
                            'content': self._uni(content),
                            'backend': self.backend_name
                            }
                )
                ldif = modlist.modifyModlist(
                        {},
                        {attr: self._modlist(self._byte_p3(content))}
                       )
                try:
                    ldap_client.modify_s(group, ldif)
                # if already member, not a big deal, just log it and continue
                except (ldap.TYPE_OR_VALUE_EXISTS, ldap.ALREADY_EXISTS) as e:
                    self._logger(
                        severity=logging.INFO,
                        msg="%(backend)s: user '%(user)s'"
                            " already member of group '%(group)s'"
                            " (attribute '%(attr)s')" % {
                                'user': username,
                                'group': self._uni(group),
                                'attr': attr,
                                'backend': self.backend_name
                                }
                    )
                except ldap.NO_SUCH_OBJECT as e:
                    raise GroupDoesntExist(group, self.backend_name)
                except Exception as e:
                    ldap_client.unbind_s()
                    self._exception_handler(e)
        ldap_client.unbind_s() 
开发者ID:kakwa,项目名称:ldapcherry,代码行数:56,代码来源:backendLdap.py

示例15: fetch_metric

# 需要导入模块: import ldap [as 别名]
# 或者: from ldap import NO_SUCH_OBJECT [as 别名]
def fetch_metric(self, conn, bind, type=int):
        self.log.debug("Running bind: {1}", bind)

        try:
            res = conn.search_s(bind, ldap.SCOPE_SUBTREE, '(objectClass=*)', ['*', '+'])
            if len(res) == 0:
                self.log.warn("No results for bind: {0}", bind)
                return None
        except ldap.NO_SUCH_OBJECT:
            self.log.warn("No such object for bind: {0}", bind)
            return None
        except ldap.LDAPError as e:
            self.log.error("Unexpected error for bind {0}:", bind, e)
            return None

        # Take first result from the server
        _, attrs = res[0]

        obj_class = attrs['structuralObjectClass'][0]
        if obj_class == 'monitoredObject':
            value_field = 'monitoredInfo'
        elif obj_class == 'monitorCounterObject':
            value_field = 'monitorCounter'
        else:
            self.log.error("Unknown type of metric: {0}", obj_class)
            return None

        try:
            # Since a single result can contain multiple values, we also take
            # the first element in the list.
            value = attrs[value_field][0]
        except (KeyError, IndexError):
            self.log.error("Unable to extract value from bind: {0}", bind)
            return None

        # Try to convert by passing the value to the type of the metric.
        converted = value
        if type is not None:
            try:
                converted = type(value)
            except (ValueError, TypeError):
                self.log.warn('Unable to convert metric for bind {0}: {1} cannot be converted to {2}',
                    bind,
                    value,
                    type.__name__
                )

        self.log.debug("Finished with bind: {0}", bind)
        return converted 
开发者ID:stripe,项目名称:datadog-checks,代码行数:51,代码来源:slapd.py


注:本文中的ldap.NO_SUCH_OBJECT属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。