o
    jT                     @   sZ  d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	 dZ
dZdZd	Zd
ZdZdZdZdZdae
eeeeegZdadadadZzddlmZ W n ey_   ddlmZ G dd deZY nw dd Zdd Zdd Zdd Zd2dd Z d!d" Z!d#d$ Z"d%d& Z#d'd( Z$d)d* Z%d+d, Z&d-d. Z'd/d0 Z(ed1Z)e)*e  e"e e&e
 e d dS )3
    )	getLoggerDEBUG)deepcopy)pformat   )LDAPMessage
         (   2   )simplecredentialsserversaslcreds)r   passwordsasl_credentials	saslcredsserver_creds)userpassword
unicodepwdNi   ascii)NullHandler)Handlerc                   @   s$   e Zd Zdd Zdd Zdd ZdS )r   c                 C      d S N selfrecordr   r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/ldap3/utils/log.pyhandle:      zNullHandler.handlec                 C   r   r   r   r   r   r   r    emit=   r"   zNullHandler.emitc                 C   s
   d | _ d S r   )lock)r   r   r   r    
createLock@   s   
zNullHandler.createLockN)__name__
__module____qualname__r!   r#   r%   r   r   r   r    r   9   s    r   c                 C   s   t | ts| S zt| } W n ty   |  Y S w |  D ]&}t | | tr/t| | | |< q| tv rC| | rCdt| |  | |< q| S )Nz*<stripped %d characters of sensitive data>)	
isinstancedictr   	Exceptionkeys_strip_sensitive_data_from_dictlower_sensitive_argslen)dkr   r   r    r-   D   s   
r-   c                 C   sP   | t krdS | tkrdS | tkrdS | tkrdS | tkrdS | tkr$dS td)NOFFERRORBASICPROTOCOLNETWORKEXTENDEDzunknown detail level)r3   r4   r5   r6   r7   r8   
ValueError)
level_namer   r   r    get_detail_level_nameU   s   r;   c                 G   s   | t krqtrtdd |D }ttur&t| d ||  td}| }n(zt| d ||  td}W n t	yM   t| d ||  td}Y nw t
|tkritt|d t dt
|t f   d S tt| d S d S )Nc                 S   s"   g | ]}t |trt|n|qS r   )r)   r*   r-   ).0argr   r   r    
<listcomp>h   s   " zlog.<locals>.<listcomp>:backslashreplacereplacez. <removed %d remaining bytes in this log line>)_detail_level_hide_sensitive_datatuplestrbytesr;   encode_logging_encodingdecoder+   r0   _max_line_lengthloggerlog_logging_level)detailmessageargsencoded_messager   r   r    rL   e   s   
  *rL   c                 C   s   | t krttrdS dS NTF)rB   rK   isEnabledForrM   rN   r   r   r    log_enabledy   s   
rU   Tc                 C   s0   | rda nda ttrttdtt   d S d S )NTFzhide sensitive data set to )rC   rU   r4   rL   rE   )hider   r   r    #set_library_log_hide_sensitive_data   s   rW   c                   C   s   t rdS dS rR   )rC   r   r   r   r    #get_library_log_hide_sensitive_data   s   rX   c                 C   .   t | tr	| ad S ttrttd|  td)Nz*invalid library log activation level <%s> z$invalid library log activation level)r)   intrM   rU   r4   rL   r9   )logging_levelr   r   r     set_library_log_activation_level   
   
r\   c                   C      t S r   )rM   r   r   r   r     get_library_log_activation_lavel   r"   r_   c                 C   rY   )Nz!invalid log max line length <%s> z#invalid library log max line length)r)   rZ   rJ   rU   r4   rL   r9   )lengthr   r   r    set_library_log_max_line_length   r]   ra   c                   C   r^   r   )rJ   r   r   r   r    get_library_log_max_line_length   r"   rb   c                 C   sJ   | t v r| attrttdtt  d S d S ttr!ttd|  td)Nzdetail level set to z&unable to set log detail level to <%s>z invalid library log detail level)DETAIL_LEVELSrB   rU   r4   rL   r;   r9   rT   r   r   r    set_library_log_detail_level   s   rd   c                   C   r^   r   )rB   r   r   r   r    get_library_log_detail_level   r"   re   c           	   
   C   s  t | tr'z	|  d}W n ty& } zdt|g}W Y d }~nd }~ww t| d}d}|D ]T}|rtr~| 	 
tr~|d\}}}|
drS|ds]|
dro|dro|d| | d	t|d
 f  7 }q2|d| | d	t|  7 }q2|d| | 7 }q2|S )Nr   zpyasn1 exception =zb''zb""z+=<stripped %d characters of sensitive data>   )r)   r   prettyPrintsplitr+   rE   r   rC   stripr.   
startswith_sensitive_lines	partitionendswithr0   )	rO   prefix	formattedeprefixedlinetag_datar   r   r    format_ldap_message   s&   
($rz   ldap3)T)+__doc__loggingr   r   copyr   pprintr   protocol.rfc4511r   r3   r4   r5   r6   r7   r8   ro   r/   _sensitive_attrsrC   rc   rJ   rM   rB   rH   r   ImportErrorr   r-   r;   rL   rU   rW   rX   r\   r_   ra   rb   rd   re   rz   rK   
addHandlerr   r   r   r    <module>   sX    



