B
    à%Q[R  ã               @   s\  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yddlmZ W n0 ek
rÀ   ddlmZ G dd„ deƒZY nX 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ÚcredentialsZserversaslcreds)r   ÚpasswordZsasl_credentialsZ	saslcredsZserver_creds)ZuserpasswordZ
unicodepwdNi   Úascii)ÚNullHandler)ÚHandlerc               @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )r   c             C   s   d S )N© )ÚselfÚrecordr   r   úRC:\Users\HIRONO~1\AppData\Local\Temp\pip-install-6i93dh7p\ldap3\ldap3\utils\log.pyÚhandle:   s    zNullHandler.handlec             C   s   d S )Nr   )r   r   r   r   r   Úemit=   s    zNullHandler.emitc             C   s
   d | _ d S )N)Ú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 yt| ƒ} W n tk
r.   | S X xX|  ¡ D ]L}t | | tƒr^t| | ƒ| |< q:| ¡ tkr:| | r:dt| | ƒ | |< q:W | 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   sT   | t krdS | tkrdS | tkr$dS | tkr0dS | tkr<dS | tkrHdS tdƒ‚d S )NÚOFFÚERRORÚBASICÚPROTOCOLÚNETWORKÚEXTENDEDzunknown detail level)r)   r*   r+   r,   r-   r.   Ú
ValueError)Z
level_namer   r   r   Úget_detail_level_nameU   s    r0   c             G   sŽ   | t krŠtrtdd„ |D ƒƒ}t| ƒd ||   td¡}ttk	rJ| ¡ }t	|ƒt
kr~t t|d t
… dt	|ƒt
 f  ¡ nt t|¡ 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>ú:Úbackslashreplacez. <removed %d remaining bytes in this log line>)Ú_detail_levelÚ_hide_sensitive_dataÚtupler0   ÚencodeÚ_logging_encodingÚstrÚbytesÚdecoder&   Ú_max_line_lengthÚloggerÚlogÚ_logging_level)ÚdetailÚmessageÚargsZencoded_messager   r   r   r@   e   s    (r@   c             C   s   | t krt t¡rdS dS )NTF)r6   r?   ÚisEnabledForrA   )rB   r   r   r   Úlog_enabledt   s    
rF   Tc             C   s,   | r
da nda ttƒr(ttdtt ƒ ƒ d S )NTFzhide sensitive data set to )r7   rF   r*   r@   r;   )Zhider   r   r   Ú#set_library_log_hide_sensitive_data|   s
    rG   c               C   s   t rdS dS )NTF)r7   r   r   r   r   Ú#get_library_log_hide_sensitive_data†   s    rH   c             C   s0   t | tƒr| anttƒr$ttd| ƒ tdƒ‚d S )Nz*invalid library log activation level <%s> z$invalid library log activation level)r   ÚintrA   rF   r*   r@   r/   )Zlogging_levelr   r   r   Ú set_library_log_activation_levelŠ   s
    
rJ   c               C   s   t S )N)rA   r   r   r   r   Ú get_library_log_activation_lavel”   s    rK   c             C   s0   t | tƒr| anttƒr$ttd| ƒ tdƒ‚d S )Nz!invalid log max line length <%s> z#invalid library log max line length)r   rI   r>   rF   r*   r@   r/   )Úlengthr   r   r   Úset_library_log_max_line_length˜   s
    
rM   c               C   s   t S )N)r>   r   r   r   r   Úget_library_log_max_line_length¢   s    rN   c             C   sH   | t kr(| attƒrDttdttƒ ƒ nttƒr<ttd| ƒ tdƒ‚d S )Nzdetail level set to z&unable to set log detail level to <%s>z invalid library log detail level)ÚDETAIL_LEVELSr6   rF   r*   r@   r0   r/   )rB   r   r   r   Úset_library_log_detail_level¦   s    rP   c               C   s   t S )N)r6   r   r   r   r   Úget_library_log_detail_level²   s    rQ   c             C   sÜ   d}xÒt | tƒr|  ¡  d¡nt| ƒ d¡D ]¨}|r,trÄ| ¡  ¡  t	¡rÄ| 
d¡\}}}| d¡rn| d¡s‚| d¡r¦| d¡r¦|d| | dt|ƒd	 f  7 }qÔ|d| | dt|ƒ  7 }q,|d| | 7 }q,W |S )
NÚ r   ú=zb'ú'zb"ú"z+=<stripped %d characters of sensitive data>é   )r   r   ZprettyPrintÚsplitr   r7   Ústripr$   Ú
startswithÚ_sensitive_linesÚ	partitionÚendswithr&   )rC   ÚprefixÚprefixedÚlineÚtagÚ_Údatar   r   r   Úformat_ldap_message¶   s    ,($rc   Zldap3)T)+Ú__doc__Úloggingr   r   Úcopyr   Úpprintr   Zprotocol.rfc4511r   r)   r*   r+   r,   r-   r.   rZ   r%   Z_sensitive_attrsr7   rO   r>   rA   r6   r:   r   ÚImportErrorr   r#   r0   r@   rF   rG   rH   rJ   rK   rM   rN   rP   rQ   rc   r?   Ú
addHandlerr   r   r   r   Ú<module>   sT   



