
    Vh                         d dl mZmZmZ eZd dlZd dlZd dlm	Z	 	 d dl
Z
d dlZ
d dlZ
d dlZ
dZe
j                  j                   e
j                  j"                  dZd Zd Z G d	 d
e      Zy# e$ r dZY w xY w)    )absolute_importdivisionprint_functionN)	to_nativeT)gssapiexternalFc                  P   | j                  t               t        dd      t        d      t        d      t        ddd	dg
      t        d      t        dd      t        dd      t        ddgdd      t        g ddd      t        d d      t        d d      d       | S )N T)defaultno_logpath)type)requiredstr	anonymousdisabled)r   r   choicesz	ldapi:///)r   Fbool)r   r   r   r   )r   r   r   )enableautodisabler   )bind_dnbind_pwca_pathdnreferrals_chasing
server_uri	start_tlsvalidate_certs
sasl_classxorder_discoveryclient_cert
client_key)updatedict)specss    o/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/community/general/plugins/module_utils/ldap.py	gen_specsr(   !   s    	LL640V$D!!ukJXcKde;/%f5t&9J#9:TYZ )FPV]bcDv64f5  L    c                      ddggS )Nr"   r#    r+   r)   r'   ldap_required_togetherr,   4   s    L)**r)   c                   *    e Zd Zd Zd Zd Zd Zd Zy)LdapGenericc                    || _         | j                   j                  d   | _        | j                   j                  d   | _        | j                   j                  d   | _        | j                   j                  d   | _        | j                   j                  d   | _        | j                   j                  d   | _        | j                   j                  d   | _        | j                   j                  d   | _	        | j                   j                  d	   | _
        | j                   j                  d
   | _        | j                   j                  d   | _        | j                         | _        | j                  dk(  s| j                  dk(  r&| j                         s| j!                         | _        y | j                   j                  d   | _        y )Nr   r   r   r   r   r   r   r    r!   r"   r#   r   r   r   )moduleparamsr   r   r   r   r   r   verify_certr    r!   r"   r#   _connect_to_ldap
connection
_xorder_dn_find_dnr   )selfr0   s     r'   __init__zLdapGeneric.__init__9   s^   {{)))4{{)))4{{)))4!%!3!34G!H++,,\:++K8;;--.>?++,,\: $ 2 23E F;;--m<++,,\: //1  H,1F1F&1PY]YhYhYjmmoDGkk((.DGr)   c                 v    | j                   j                  |t        |      t        j                                y )N)msgdetails	exception)r0   	fail_jsonr   	traceback
format_exc)r7   r:   exns      r'   failzLdapGeneric.failQ   s/    cN**, 	 	
r)   c                    | j                   j                  d   }t        j                  j	                  |      }t        |      dkD  r}	 t        j                  j                  |d         }d|z  }| j                  j                  dj                  |dd        t        j                  |      }t        |      dk(  r|d   \  }}|S |S # t        $ r Y |S w xY w)Nr      r   z(%s),)r0   r1   ldapr   
explode_dnlenfilterescape_filter_charsr4   search_sjoinSCOPE_ONELEVEL	Exception)r7   r   rF   escaped_value	filterstrdnsdummys          r'   r6   zLdapGeneric._find_dnX   s    [[%WW''+
z?Q $ ? ?
1 N"]2	oo..sxx
12/G/3/B/BIOs8q= #AIB 	r	  	s   A:C 	CCc                    | j                   s2t        j                  t        j                  t        j                         | j
                  r.t        j                  t        j                  | j
                         | j                  rh| j                  r\t        j                  t        j                  | j                         t        j                  t        j                  | j                         t        j                  | j                        }| j                  dk(  r |j                  t        j                  d       | j                  r	 |j!                          	 | j&                  (|j)                  | j&                  | j*                         |S t,        j/                  | j0                  t        j2                  j4                        }|j7                  d |              	 |S # t        j"                  $ r}| j%                  d|       Y d }~d }~ww xY w# t        j"                  $ r}| j%                  d|       Y d }~|S d }~ww xY w)Nr   r   zCannot start TLS.r
   zCannot bind to the server.)r2   rE   
set_optionOPT_X_TLS_REQUIRE_CERTOPT_X_TLS_NEVERr   OPT_X_TLS_CACERTFILEr"   r#   OPT_X_TLS_CERTFILEOPT_X_TLS_KEYFILE
initializer   r   OPT_REFERRALSr   start_tls_s	LDAPErrorrA   r   simple_bind_sr   SASCL_CLASSgetr    saslr   sasl_interactive_bind_s)r7   r4   eklasss       r'   r3   zLdapGeneric._connect_to_ldapj   s   OOD779M9MN<<OOD55t||DOOD33T5E5EFOOD22DOOD__T__5
!!Z/!!$"4"4a8>>2&&(	7||'((t||D  $9K9KL222uw?  >> 2		-q112 ~~ 	7II2A66	7s7   G 2H AH H2H		HI$H<<Ic                     d}t         j                  j                  | j                  j                  d         }t        j                  ||d         d uS )Nz.+\{\d+\}.+r   r   )rE   r   rF   r0   r1   rematch)r7   regexrF   s      r'   r5   zLdapGeneric._xorder_dn   sD    WW''(:(:4(@A
xxz!}-T99r)   N)__name__
__module____qualname__r8   rA   r6   r3   r5   r+   r)   r'   r.   r.   8   s    /0
$ D:r)   r.   )
__future__r   r   r   r   __metaclass__re   r>   +ansible.module_utils.common.text.convertersr   rE   ldap.dnldap.filter	ldap.saslHAS_LDAPr`   r   r   r^   ImportErrorr(   r,   objectr.   r+   r)   r'   <module>rt      s    A @ 	  AH ))""II&&K&+Y:& Y:7  Hs   ?A- -A76A7