File: //proc/self/root/lib/python3.6/site-packages/ipaclient/__pycache__/discovery.cpython-36.opt-1.pyc
3
�d[e;] � @ sV d dl mZ d dlZd dlZd dlmZ d dlmZ d dlm Z d dl
mZ d dlm
Z
d dlmZmZ d d lmZ d d
lmZmZ d dlmZ yd dlZW n ek
r� dZY nX d dlmZ eje�Zd Zd(Z d)Z!d*Z"d+Z#d,Z$d-Z%d.Z&d/Z'd0Z(dZ)ede de!de"de#de$de%de&de'de(d i
Z*d!d"� Z+G d#d$� d$�Z,d%d&� Z-ed'k�rRe-� dS )1� )�absolute_importN)� rdatatype)�DNSException)�errors)�FQDN)�validate_domain_name)� query_srv�resolve)�paths)�valid_ip�realm_to_suffix)�DN)�ipaldap� � � � � � � �
� zipa v2.0ZSuccess�NOT_FQDN�NO_LDAP_SERVER�REALM_NOT_FOUND�NOT_IPA_SERVER�NO_ACCESS_TO_LDAP�NO_TLS_LDAP�PYTHON_LDAP_NOT_INSTALLED�BAD_HOST_CONFIG�
UNKNOWN_ERRORc
C s | j t� ddgd�}dd� |jd D �}d|krd|jd \}|jd�}||krX|j|� |jd|� x�|D ]�}tjd|� y| jt|�| j d �\}W n" t
jk
r� tjd
� wjY nX |jd \}|jd�j� }|t
kr�tjd|t
� qjtjd
|� t|�S W dS )z�
Get base DN of IPA suffix in given LDAP server.
None is returned if the suffix is not found
:param conn: Bound LDAPClient that will be used for searching
ZdefaultnamingcontextZnamingcontexts)Z
attrs_listc S s g | ]}|j d ��qS )zutf-8)�decode)�.0�c� r$ �/usr/lib/python3.6/discovery.py�
<listcomp>T s z"get_ipa_basedn.<locals>.<listcomp>zutf-8r z'Check if naming context '%s' is for IPAz(info=IPA*)zBLDAP server did not return info attribute to check for IPA version�infoz>Detected IPA server version (%s) did not match the client (%s)z*Naming context '%s' is a valid IPA contextN)Z get_entryr
�rawr! �remove�insert�logger�debug�get_entriesZ
SCOPE_BASEr �NotFound�lower�IPA_BASEDN_INFO)Zconn�entryZcontexts�default�contextr'