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}|r†t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    ý



