<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?hØ×  ã                +   @   s˜  d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
m
Z
mZmZ ddlmZ zddlZdZW n ey’   dZY n0 g d¢ZdZdZd	Zd
ZdZdZdZdddddddddddddddddddddddddddddddddddddddddddœ*Ze d¡Ze d¡Ze d¡Ze dej¡Z e d¡Z!e d¡Z"e d¡Z#e dej¡Z$dZ%dZ&G dd„ dƒZ'er G dd„ de'ƒZ(e )d¡ G d d!„ d!e'ƒZ*G d"d#„ d#ƒZ+d$ ,d%¡Z-d&d'„ e.e-d(d… ƒD ƒZ/d)d*„ Z0d+d,„ Z1d-d.„ Z2d/d0„ Z3e4d1kr”ddl5Z5ddl6Z6ze5 5ej7d(d… d2¡\Z8Z9W n0 e5j:yj Z; zd3\Z8Z9W Y dZ;[;n
dZ;[;0 0 dZ<e8D ]8\Z=Z;e=d4kre>e;ƒZne=d5krte;Z<e9ste<fZ9qte9s¸d6Z9e9d Z?e6 @¡ ZAe6 6d7eAe?pØd8f ¡ZBd9eAd:d;œ ZCd<eAeBffd=d>d?d@dAddeCffdBdCdDdEdFdGdHdIdJfZDdKdLdMdNd@dddeCffdIdOfZEdPdQ„ ZFze<r\e*e<ƒZGne'e?ƒZGeGjHdRkr|eDd(d… ZDeG IdSeGjJ ¡ eG IdTeGjKf ¡ eDD ]\ZLZ9eFeLe9ƒ q¢eFdUdVƒD ]<ZMe NdWeM¡ZOeOräeO Pd(¡ZQneM ,¡ dX ZQeFdYeQfƒ qÂeED ]T\ZLZ9eFeLe9ƒZReLe9fdMkr(qeRdX  ,¡ ZSeSs>qeFdZd[d\eSdX  d]fƒ qeTd^ƒ W n.   eTd_ƒ esŒeTd`ej7d  ƒ ‚ Y n0 dS )az2.58é    N)ÚdatetimeÚtimezoneÚ	timedelta)ÚDEFAULT_BUFFER_SIZETF)ÚIMAP4ÚIMAP4_streamÚInternaldate2tupleÚInt2APÚ
ParseFlagsÚTime2Internaldateó   
é   iá  )Z	IMAP4REV1r   i@B i   )ÚAUTHÚSELECTED)ÚNONAUTH)r   r   r   ÚLOGOUT)r   )r   )*ÚAPPENDÚAUTHENTICATEÚ
CAPABILITYÚCHECKÚCLOSEÚCOPYÚCREATEÚDELETEÚ	DELETEACLÚENABLEÚEXAMINEÚEXPUNGEÚFETCHÚGETACLÚGETANNOTATIONÚGETQUOTAÚGETQUOTAROOTÚMYRIGHTSÚLISTÚLOGINr   ÚLSUBZMOVEÚ	NAMESPACEÚNOOPÚPARTIALÚ	PROXYAUTHÚRENAMEÚSEARCHÚSELECTÚSETACLÚSETANNOTATIONÚSETQUOTAÚSORTÚSTARTTLSÚSTATUSÚSTOREÚ	SUBSCRIBEÚTHREADÚUIDÚUNSUBSCRIBEÚUNSELECTs   \+( (?P<data>.*))?s   .*FLAGS \((?P<flags>[^\)]*)\)sÕ   .*INTERNALDATE "(?P<day>[ 0123][0-9])-(?P<mon>[A-Z][a-z][a-z])-(?P<year>[0-9][0-9][0-9][0-9]) (?P<hour>[0-9][0-9]):(?P<min>[0-9][0-9]):(?P<sec>[0-9][0-9]) (?P<zonen>[-+])(?P<zoneh>[0-9][0-9])(?P<zonem>[0-9][0-9])"s   .*{(?P<size>\d+)}$s
   \r\n|\r|\ns%   \[(?P<type>[A-Z-]+)( (?P<data>.*))?\]s$   \* (?P<type>[A-Z-]+)( (?P<data>.*))?s3   \* (?P<data>\d+) (?P<type>[A-Z-]+)( (?P<data2>.*))?c                   @   s–  e Zd ZG dd„ deƒZG dd„ deƒZG dd„ deƒZdedfd	d
„Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdedfdd„Zdd„ Zdd„ Zd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d1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Z d;d<„ Z!d=d>„ Z"d?d@„ Z#dAdB„ Z$dCdD„ Z%dEdF„ Z&dGdH„ Z'ddKdL„Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dždUdV„Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dŸdgdh„Z5didj„ Z6dkdl„ Z7dmdn„ Z8dodp„ Z9d dqdr„Z:dsdt„ Z;dudv„ Z<dwdx„ Z=dydz„ Z>d{d|„ Z?d}d~„ Z@dd€„ ZAdd‚„ ZBdƒd„„ ZCd…d†„ ZDd‡dˆ„ ZEd‰dŠ„ ZFd‹dŒ„ ZGddŽ„ ZHd¡dd„ZId‘d’„ ZJd“d”„ ZKd•d–„ ZLd—d˜„ ZMd™dš„ ZNd›dœ„ ZOdS )¢r   c                   @   s   e Zd ZdS )zIMAP4.errorN©Ú__name__Ú
__module__Ú__qualname__© r>   r>   ú,/opt/alt/python39/lib64/python3.9/imaplib.pyÚerror»   ó    r@   c                   @   s   e Zd ZdS )zIMAP4.abortNr:   r>   r>   r>   r?   Úabort¼   rA   rB   c                   @   s   e Zd ZdS )zIMAP4.readonlyNr:   r>   r>   r>   r?   Úreadonly½   rA   rC   Ú Nc                 C   s’   t | _d| _d | _i | _i | _d| _d| _d| _d| _	|  
¡  |  |||¡ z|  ¡  W n4 tyŒ   z|  ¡  W n ty„   Y n0 ‚ Y n0 d S )Nr   rD   Fr   )ÚDebugÚdebugÚstateÚliteralÚtagged_commandsÚuntagged_responsesÚcontinuation_responseÚis_readonlyÚtagnumÚ_tls_establishedÚ_mode_asciiÚopenÚ_connectÚ	ExceptionÚshutdownÚOSError©ÚselfÚhostÚportÚtimeoutr>   r>   r?   Ú__init__¿   s&    zIMAP4.__init__c                 C   s0   d| _ d| _t ttj¡| _t ttj¡| _d S )NFÚascii)	Úutf8_enabledÚ	_encodingÚreÚcompileÚ_LiteralÚASCIIÚLiteralÚ_Untagged_statusÚUntagged_status©rV   r>   r>   r?   rO   Ø   s    zIMAP4._mode_asciic                 C   s(   d| _ d| _t t¡| _t t¡| _d S )NTúutf-8)r\   r]   r^   r_   r`   rb   rc   rd   re   r>   r>   r?   Ú
_mode_utf8ß   s    zIMAP4._mode_utf8c                 C   sœ   t t dd¡ƒ| _t d| j d tj¡| _|  	¡ | _
d| jv rHd| _nd| jv rZd| _n|  | j
¡‚|  ¡  tD ]}|| jvr‚qr|| _ d S |  d	¡‚d S )
Ni   iÿÿ  s   (?P<tag>s"   \d+) (?P<type>[A-Z]+) (?P<data>.*)ZPREAUTHr   ÚOKr   zserver not IMAP4 compliant)r	   ÚrandomZrandintÚtagprer^   r_   ra   ÚtagreÚ__version__Ú_get_responseZwelcomerJ   rG   r@   Ú_get_capabilitiesÚAllowedVersionsÚcapabilitiesÚPROTOCOL_VERSION)rV   Úversionr>   r>   r?   rQ   æ   s*    ÿþþ



zIMAP4._connectc                 C   s&   |t v rt| | ¡ ƒS td| ƒ‚d S )NzUnknown IMAP4 command: '%s')ÚCommandsÚgetattrÚlowerÚAttributeError)rV   Úattrr>   r>   r?   Ú__getattr__  s    zIMAP4.__getattr__c                 C   s   | S ©Nr>   re   r>   r>   r?   Ú	__enter__  s    zIMAP4.__enter__c                 G   s2   | j dkrd S z|  ¡  W n ty,   Y n0 d S ©Nr   )rG   ÚlogoutrT   )rV   Úargsr>   r>   r?   Ú__exit__  s    
zIMAP4.__exit__c                 C   s`   |d ur|st dƒ‚| jsd n| j}t d| | j| j¡ || jf}|d urVt ||¡S t |¡S )Nz0Non-blocking socket (timeout=0) is not supportedzimaplib.open)Ú
ValueErrorrW   ÚsysÚauditrX   ÚsocketZcreate_connection)rV   rY   rW   Zaddressr>   r>   r?   Ú_create_socket&  s    
zIMAP4._create_socketc                 C   s*   || _ || _|  |¡| _| j d¡| _d S )NÚrb)rW   rX   rƒ   ÚsockÚmakefileÚfilerU   r>   r>   r?   rP   3  s    z
IMAP4.openc                 C   sV   t |tƒ}| j |¡}||k rRt|ƒ|krRt ||| ƒ}|| j |¡7 }||7 }q|S ry   )ÚminÚ_SAFE_BUF_SIZEr‡   ÚreadÚlen)rV   ÚsizeZcursizeÚdataÚdeltar>   r>   r?   rŠ   ?  s    

z
IMAP4.readc                 C   s.   | j  td ¡}t|ƒtkr*|  dt ¡‚|S )Né   zgot more than %d bytes)r‡   ÚreadlineÚ_MAXLINEr‹   r@   ©rV   Úliner>   r>   r?   r   J  s    zIMAP4.readlinec                 C   s   t  d| |¡ | j |¡ d S )Nzimaplib.send)r€   r   r…   Zsendall©rV   r   r>   r>   r?   ÚsendR  s    z
IMAP4.sendc              
   C   s€   | j  ¡  zdz| j tj¡ W nB ty` } z*|jtjkrLt	|ddƒdkrL‚ W Y d }~n
d }~0 0 W | j ¡  n| j ¡  0 d S )NZwinerrorr   i&'  )
r‡   Úcloser…   rS   r‚   Z	SHUT_RDWRrT   ÚerrnoZENOTCONNrt   )rV   Úexcr>   r>   r?   rS   X  s    
ÿzIMAP4.shutdownc                 C   s   | j S ry   )r…   re   r>   r>   r?   r‚   h  s    zIMAP4.socketc                 C   sB   d}|   dd g|¡\}}|d r(||fS |  ¡ \}}|   |||¡S )NZRECENTrh   éÿÿÿÿ)Ú_untagged_responseÚnoop©rV   ÚnameÚtypÚdatr>   r>   r?   Úrecentt  s    	zIMAP4.recentc                 C   s   |   |d g| ¡ ¡S ry   )rš   Úupper)rV   Úcoder>   r>   r?   Úresponse…  s    zIMAP4.responsec                 C   sx   d}|sd}|r.|d |d fdkr2d| }nd }|r@t |ƒ}nd }t t|¡}| jrbd| d }|| _|  ||||¡S )	Nr   ÚINBOXr   r™   ©ú(ú)ú(%s)s   UTF8 (ó   ))r   ÚMapCRLFÚsubÚCRLFr\   rH   Ú_simple_command)rV   ÚmailboxÚflagsÚ	date_timeÚmessager   rH   r>   r>   r?   Úappend“  s    

zIMAP4.appendc                 C   sP   |  ¡ }t|ƒj| _|  d|¡\}}|dkrB|  |d  dd¡¡‚d| _||fS )Nr   rh   r™   rf   Úreplacer   )r¡   Ú_AuthenticatorÚprocessrH   r­   r@   ÚdecoderG   )rV   Z	mechanismZ
authobjectÚmechrž   rŸ   r>   r>   r?   Úauthenticate­  s    zIMAP4.authenticatec                 C   s    d}|   |¡\}}|  |||¡S )Nr   ©r­   rš   rœ   r>   r>   r?   Ú
capabilityÊ  s    zIMAP4.capabilityc                 C   s
   |   d¡S )Nr   ©r­   re   r>   r>   r?   ÚcheckÓ  s    zIMAP4.checkc                 C   s*   z|   d¡\}}W d| _nd| _0 ||fS )Nr   r   ©r­   rG   ©rV   rž   rŸ   r>   r>   r?   r–   Û  s    zIMAP4.closec                 C   s   |   d||¡S )Nr   r»   )rV   Úmessage_setZnew_mailboxr>   r>   r?   Úcopyê  s    z
IMAP4.copyc                 C   s   |   d|¡S )Nr   r»   ©rV   r®   r>   r>   r?   Úcreateò  s    zIMAP4.createc                 C   s   |   d|¡S )Nr   r»   rÁ   r>   r>   r?   Údeleteú  s    zIMAP4.deletec                 C   s   |   d||¡S )Nr   r»   )rV   r®   Úwhor>   r>   r?   Ú	deleteacl  s    zIMAP4.deleteaclc                 C   sH   d| j vrt d¡‚|  d|¡\}}|dkr@d| ¡ v r@|  ¡  ||fS )Nr   zServer does not support ENABLErh   zUTF8=ACCEPT)rp   r   r@   r­   r¡   rg   )rV   rº   rž   r   r>   r>   r?   Úenable  s    

zIMAP4.enablec                 C   s    d}|   |¡\}}|  |||¡S )Nr   r¹   rœ   r>   r>   r?   Úexpunge  s    	zIMAP4.expungec                 C   s$   d}|   |||¡\}}|  |||¡S )Nr   r¹   )rV   r¿   Zmessage_partsr   rž   rŸ   r>   r>   r?   Úfetch"  s    
zIMAP4.fetchc                 C   s   |   d|¡\}}|  ||d¡S )Nr   ZACLr¹   ©rV   r®   rž   rŸ   r>   r>   r?   Úgetacl1  s    zIMAP4.getaclc                 C   s"   |   d|||¡\}}|  ||d¡S )Nr    Ú
ANNOTATIONr¹   )rV   r®   ÚentryZ	attributerž   rŸ   r>   r>   r?   Úgetannotation:  s    zIMAP4.getannotationc                 C   s   |   d|¡\}}|  ||d¡S )Nr!   ÚQUOTAr¹   )rV   Úrootrž   rŸ   r>   r>   r?   ÚgetquotaB  s    zIMAP4.getquotac                 C   s@   |   d|¡\}}|  ||d¡\}}|  ||d¡\}}|||gfS )Nr"   rÎ   Z	QUOTAROOTr¹   )rV   r®   rž   rŸ   ZquotaZ	quotarootr>   r>   r?   ÚgetquotarootM  s    zIMAP4.getquotarootú""Ú*c                 C   s$   d}|   |||¡\}}|  |||¡S )Nr$   r¹   ©rV   Z	directoryÚpatternr   rž   rŸ   r>   r>   r?   ÚlistX  s    z
IMAP4.listc                 C   s<   |   d||  |¡¡\}}|dkr.|  |d ¡‚d| _||fS )Nr%   rh   r™   r   )r­   Ú_quoter@   rG   )rV   ÚuserÚpasswordrž   rŸ   r>   r>   r?   Úlogind  s
    zIMAP4.loginc                 C   s   || | _ | _|  d| j¡S )NzCRAM-MD5)rØ   rÙ   r¸   Ú_CRAM_MD5_AUTH)rV   rØ   rÙ   r>   r>   r?   Úlogin_cram_md5r  s    zIMAP4.login_cram_md5c                 C   sB   dd l }t| jtƒr | j d¡n| j}| jd | ||d¡ ¡  S )Nr   rf   ú Zmd5)ÚhmacÚ
isinstancerÙ   ÚstrÚencoderØ   ZHMACZ	hexdigest)rV   Z	challengerÞ   Úpwdr>   r>   r?   rÛ   {  s
    ÿzIMAP4._CRAM_MD5_AUTHc                 C   s$   d| _ |  d¡\}}|  ¡  ||fS r{   )rG   r­   rS   r¾   r>   r>   r?   r|   ƒ  s    zIMAP4.logoutc                 C   s$   d}|   |||¡\}}|  |||¡S )Nr&   r¹   rÔ   r>   r>   r?   Úlsub  s    z
IMAP4.lsubc                 C   s   |   d|¡\}}|  ||d¡S )Nr#   r¹   rÉ   r>   r>   r?   Úmyrights›  s    zIMAP4.myrightsc                 C   s    d}|   |¡\}}|  |||¡S )Nr'   r¹   rœ   r>   r>   r?   Ú	namespace£  s    zIMAP4.namespacec                 C   s
   |   d¡S )Nr(   r»   re   r>   r>   r?   r›   ­  s    z
IMAP4.noopc                 C   s(   d}|   |||||¡\}}|  ||d¡S )Nr)   r   r¹   )rV   Zmessage_numZmessage_partÚstartZlengthr   rž   rŸ   r>   r>   r?   Úpartial¸  s    zIMAP4.partialc                 C   s   d}|   d|¡S )Nr*   r»   )rV   rØ   r   r>   r>   r?   Ú	proxyauthÄ  s    	zIMAP4.proxyauthc                 C   s   |   d||¡S )Nr+   r»   )rV   Z
oldmailboxZ
newmailboxr>   r>   r?   ÚrenameÑ  s    zIMAP4.renamec                 G   sX   d}|r4| j rt d¡‚| j|d|g|¢R Ž \}}n| j|g|¢R Ž \}}|  |||¡S )Nr,   z'Non-None charset not valid in UTF8 modeÚCHARSET)r\   r   r@   r­   rš   )rV   ÚcharsetZcriteriar   rž   rŸ   r>   r>   r?   ÚsearchÙ  s    
zIMAP4.searchr¤   Fc                 C   sv   i | _ || _|rd}nd}|  ||¡\}}|dkr@d| _||fS d| _d| j v rb|sb|  d| ¡‚|| j  dd g¡fS )	Nr   r-   rh   r   r   ú	READ-ONLYz%s is not writableÚEXISTS)rJ   rL   r­   rG   rC   Úget)rV   r®   rC   r   rž   rŸ   r>   r>   r?   Úselectë  s    
ÿzIMAP4.selectc                 C   s   |   d|||¡S )Nr.   r»   )rV   r®   rÄ   Zwhatr>   r>   r?   Úsetacl  s    zIMAP4.setaclc                 G   s$   | j dg|¢R Ž \}}|  ||d¡S )Nr/   rË   r¹   )rV   r}   rž   rŸ   r>   r>   r?   Úsetannotation  s    zIMAP4.setannotationc                 C   s    |   d||¡\}}|  ||d¡S )Nr0   rÎ   r¹   )rV   rÏ   Zlimitsrž   rŸ   r>   r>   r?   Úsetquota  s    zIMAP4.setquotac                 G   sH   d}|d |d fdkr d| }| j |||g|¢R Ž \}}|  |||¡S )Nr1   r   r™   r¥   r¨   r¹   )rV   Zsort_criteriarë   Úsearch_criteriar   rž   rŸ   r>   r>   r?   Úsort$  s
    z
IMAP4.sortc                 C   s¦   d}t s|  d¡‚| jr"|  d¡‚|| jvr6|  d¡‚|d u rFt ¡ }|  |¡\}}|dkrŽ|j| j	| j
d| _	| j	 d¡| _d| _|  ¡  n
|  d	¡‚|  |||¡S )
Nr2   zSSL support missingzTLS session already establishedzTLS not supported by serverrh   ©Zserver_hostnamer„   TzCouldn't establish TLS session)ÚHAVE_SSLr@   rN   rB   rp   ÚsslÚ_create_stdlib_contextr­   Úwrap_socketr…   rW   r†   r‡   rn   rš   )rV   Ússl_contextr   rž   rŸ   r>   r>   r?   Ústarttls2  s&    



ÿ

zIMAP4.starttlsc                 C   s$   d}|   |||¡\}}|  |||¡S )Nr3   r¹   )rV   r®   Únamesr   rž   rŸ   r>   r>   r?   ÚstatusI  s    zIMAP4.statusc                 C   s>   |d |d fdkrd| }|   d|||¡\}}|  ||d¡S )Nr   r™   r¥   r¨   r4   r   r¹   )rV   r¿   Úcommandr¯   rž   rŸ   r>   r>   r?   ÚstoreU  s    zIMAP4.storec                 C   s   |   d|¡S )Nr5   r»   rÁ   r>   r>   r?   Ú	subscribe`  s    zIMAP4.subscribec                 G   s,   d}| j |||g|¢R Ž \}}|  |||¡S )Nr6   r¹   )rV   Zthreading_algorithmrë   rô   r   rž   rŸ   r>   r>   r?   Úthreadh  s    zIMAP4.threadc              	   G   sˆ   |  ¡ }|tvr|  d| ¡‚| jt| vrL|  d|| jd t| ¡f ¡‚d}| j||g|¢R Ž \}}|dv rv|}nd}|  |||¡S )NzUnknown IMAP4 UID command: %sú9command %s illegal in state %s, only allowed in states %sú, r7   )r,   r1   r6   r   )r¡   rs   r@   rG   Újoinr­   rš   )rV   rÿ   r}   r   rž   rŸ   r>   r>   r?   Úuidr  s    ÿþz	IMAP4.uidc                 C   s   |   d|¡S )Nr8   r»   rÁ   r>   r>   r?   Úunsubscribe‹  s    zIMAP4.unsubscribec                 C   s*   z|   d¡\}}W d| _nd| _0 ||fS )Nr9   r   r½   )rV   rž   r   r>   r>   r?   Úunselect“  s    	zIMAP4.unselectc                 G   s.   |  ¡ }|tvr| jft|< | j|g|¢R Ž S ry   )r¡   rs   rG   r­   ©rV   r   r}   r>   r>   r?   Úxatom£  s    
zIMAP4.xatomc                 C   s8   |d u rd}| j }||v r*||  |¡ n
|g||< d S ©NrA   )rJ   r‹   r²   )rV   rž   rŸ   Zurr>   r>   r?   Ú_append_untagged¹  s    zIMAP4._append_untaggedc                 C   s,   | j  d¡}|r(|  |d  | jd¡¡‚d S )NÚBYEr™   r³   )rJ   rï   rB   r¶   r]   )rV   Úbyer>   r>   r?   Ú
_check_byeÇ  s    zIMAP4._check_byec           
   
   G   sî  | j t| vr4d | _|  d|| j d t| ¡f ¡‚dD ]}|| jv r8| j|= q8d| jv rj| jsj|  d¡‚|  ¡ }t	|| j
ƒ}|d | }|D ]0}|d u rœqŽt|tƒr²t	|| j
ƒ}|d | }qŽ| j}|d ur
d | _t|ƒt| jƒu rî|}nd }|t	dt|ƒ | j
ƒ }z|  |t ¡ W n4 tyP }	 z|  d|	 ¡‚W Y d }	~	n
d }	~	0 0 |d u r`|S |  ¡ r~| j| r`|S q`|rŽ|| jƒ}z|  |¡ |  t¡ W n4 tyÚ }	 z|  d|	 ¡‚W Y d }	~	n
d }	~	0 0 |s`qêq`|S )	Nr  r  ©rh   ÚNOÚBADrí   z#mailbox status changed to READ-ONLYó    z {%s}zsocket error: %s)rG   rs   rH   r@   r  rJ   rL   rC   Ú_new_tagÚbytesr]   rß   rà   ÚtypeÚ_commandr‹   r•   r¬   rT   rB   rm   rI   rK   )
rV   r   r}   rž   Útagr   ÚargrH   Z	literatorÚvalr>   r>   r?   r  Í  s`    ÿþ


ÿ



$



$zIMAP4._commandc              
   C   sÊ   |dk}|s|   ¡  z| j||d\}}W nn | jyb } z|  d||f ¡‚W Y d }~n@d }~0  | jy˜ } z|  d||f ¡‚W Y d }~n
d }~0 0 |s¦|   ¡  |dkrÂ|  d|||f ¡‚||fS )Nr   )Ú
expect_byezcommand: %s => %sr  z%s command error: %s %s)r  Ú_get_tagged_responserB   r@   )rV   r   r  r|   rž   r   r  r>   r>   r?   Ú_command_complete  s    &(zIMAP4._command_completec                 C   sJ   |   ¡ \}}|d gkr |  d¡‚t|d | jƒ}| ¡ }t| ¡ ƒ| _d S )Nz"no CAPABILITY response from serverr™   )rº   r@   rà   r]   r¡   ÚtupleÚsplitrp   r¾   r>   r>   r?   rn   ,  s    

zIMAP4._get_capabilitiesc                 C   s®  |   ¡ }|  | j|¡rp| j d¡}|| jvr:|  d| ¡‚| j d¡}t|| jƒ}| j d¡}||gf| j|< nöd }|  t	|¡sš|  | j
|¡rš| j d¡}| jd u rÐ|  t|¡rÂ| j d¡| _d S |  d| ¡‚| j d¡}t|| jƒ}| j d¡}|d u rd}|r|d | }|  | j|¡rZt| j d	¡ƒ}|  |¡}|  |||f¡ |   ¡ }q|  ||¡ |d
v rª|  t|¡rª| j d¡}t|| jƒ}|  || j d¡¡ |S )Nr  zunexpected tagged response: %rr  r   Zdata2zunexpected response: %rrA   r  rŒ   r  )Ú	_get_lineÚ_matchrk   ÚmoÚgrouprI   rB   rà   r]   ÚUntagged_responserd   ÚContinuationrK   rb   ÚintrŠ   r  ÚResponse_code)rV   Úrespr  rž   rŸ   Zdat2rŒ   r   r>   r>   r?   rm   5  sD    


zIMAP4._get_responsec              
   C   sˆ   | j | }|d ur| j |= |S |rDd}| j |d ¡}|d urD||fS |  ¡  z|  ¡  W q  | jy€ } z‚ W Y d }~q d }~0 0 q d S )Nr  )rI   rJ   Úpopr  rm   rB   )rV   r  r  Úresultrž   r  r  r>   r>   r?   r  …  s    
zIMAP4._get_tagged_responsec                 C   s>   |   ¡ }|s|  d¡‚| d¡s.|  d| ¡‚|d d… }|S )Nzsocket error: EOFr   z#socket error: unterminated line: %réþÿÿÿ)r   rB   Úendswithr’   r>   r>   r?   r   ¦  s    

zIMAP4._get_linec                 C   s   |  |¡| _| jd uS ry   )Úmatchr"  )rV   ZcreÚsr>   r>   r?   r!  ¹  s    zIMAP4._matchc                 C   s2   | j tt| jƒ| jƒ }| jd | _d | j|< |S )Nr   )rj   r  rà   rM   r]   rI   )rV   r  r>   r>   r?   r  Å  s    
zIMAP4._new_tagc                 C   s$   |  dd¡}|  dd¡}d| d S )Nú\z\\ú"z\")r³   )rV   r  r>   r>   r?   r×   Í  s    zIMAP4._quotec                 G   s   |   || j|g|¢R Ž ¡S ry   )r  r  r	  r>   r>   r?   r­   Õ  s    zIMAP4._simple_commandc                 C   s8   |dkr||fS || j vr$|d gfS | j  |¡}||fS )Nr  )rJ   r)  )rV   rž   rŸ   r   r   r>   r>   r?   rš   Ú  s    

zIMAP4._untagged_response)rÒ   rÓ   )rÒ   rÓ   )r¤   F)N)F)Tr;   r<   r=   rR   r@   rB   rC   Ú
IMAP4_PORTrZ   rO   rg   rQ   rx   rz   r~   rƒ   rP   rŠ   r   r•   rS   r‚   r    r£   r²   r¸   rº   r¼   r–   rÀ   rÂ   rÃ   rÅ   rÆ   rÇ   rÈ   rÊ   rÍ   rÐ   rÑ   rÖ   rÚ   rÜ   rÛ   r|   rã   rä   rå   r›   rç   rè   ré   rì   rð   rñ   rò   ró   rõ   rü   rþ   r   r  r  r  r  r  r
  r  r  r  r  rn   rm   r  r   r!  r  r×   r­   rš   Ú_mesgZ_dump_urZ_logZ	print_logr>   r>   r>   r?   r   Š   s˜   1*		
	


 	

M	P
!$r   c                   @   s:   e Zd Zdeddddfdd„Zdd„ Zdedfdd„ZdS )	Ú	IMAP4_SSLrD   Nc                 C   s’   |d ur|d urt dƒ‚|d ur0|d ur0t dƒ‚|d us@|d urVdd l}| dtd¡ || _|| _|d u rxtj||d}|| _t	 
| |||¡ d S )Nz8ssl_context and keyfile arguments are mutually exclusivez9ssl_context and certfile arguments are mutually exclusiver   zEkeyfile and certfile are deprecated, use a custom ssl_context insteadé   )ÚcertfileÚkeyfile)r   ÚwarningsÚwarnÚDeprecationWarningr6  r5  rø   rù   rû   r   rZ   )rV   rW   rX   r6  r5  rû   rY   r7  r>   r>   r?   rZ   #  s"    ÿÿzIMAP4_SSL.__init__c                 C   s   t  | |¡}| jj|| jdS )Nrö   )r   rƒ   rû   rú   rW   )rV   rY   r…   r>   r>   r?   rƒ   7  s    ÿzIMAP4_SSL._create_socketc                 C   s   t  | |||¡ d S ry   )r   rP   rU   r>   r>   r?   rP   <  s    zIMAP4_SSL.open)r;   r<   r=   ÚIMAP4_SSL_PORTrZ   rƒ   rP   r>   r>   r>   r?   r3    s
   ÿ
r3  c                   @   s>   e Zd Zdd„ Zddd„Zdd„ Zdd	„ Zd
d„ Zdd„ ZdS )r   c                 C   s   || _ t | ¡ d S ry   )rÿ   r   rZ   )rV   rÿ   r>   r>   r?   rZ   S  s    zIMAP4_stream.__init__Nc                 C   sN   d | _ d | _d | _d | _tj| jttjtjddd| _	| j	j
| _| j	j| _d S )NT)ÚbufsizeÚstdinÚstdoutÚshellZ	close_fds)rW   rX   r…   r‡   Ú
subprocessÚPopenrÿ   r   ÚPIPErµ   r<  Ú	writefiler=  ÚreadfilerU   r>   r>   r?   rP   X  s    ý
zIMAP4_stream.openc                 C   s   | j  |¡S ry   )rC  rŠ   )rV   rŒ   r>   r>   r?   rŠ   h  s    zIMAP4_stream.readc                 C   s
   | j  ¡ S ry   )rC  r   re   r>   r>   r?   r   m  s    zIMAP4_stream.readlinec                 C   s   | j  |¡ | j  ¡  d S ry   )rB  ÚwriteÚflushr”   r>   r>   r?   r•   r  s    zIMAP4_stream.sendc                 C   s"   | j  ¡  | j ¡  | j ¡  d S ry   )rC  r–   rB  rµ   Úwaitre   r>   r>   r?   rS   x  s    

zIMAP4_stream.shutdown)NNN)	r;   r<   r=   rZ   rP   rŠ   r   r•   rS   r>   r>   r>   r?   r   G  s   
r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
r´   c                 C   s
   || _ d S ry   )r·   )rV   Zmechinstr>   r>   r?   rZ   †  s    z_Authenticator.__init__c                 C   s&   |   |  |¡¡}|d u rdS |  |¡S )Nó   *)r·   r¶   rá   )rV   r   Zretr>   r>   r?   rµ   ‰  s    z_Authenticator.processc                 C   sn   d}t |tƒr| d¡}|rjt|ƒdkrB|d d… }|dd … }n|}d}t |¡}|r||d d…  }q|S )NrA   rf   é0   r™   )rß   rà   rá   r‹   ÚbinasciiZ
b2a_base64)rV   ÚinpZoupÚtÚer>   r>   r?   rá     s    	


z_Authenticator.encodec                 C   s   |sdS t  |¡S r  )rI  Z
a2b_base64)rV   rJ  r>   r>   r?   r¶   §  s    z_Authenticator.decodeN)r;   r<   r=   rZ   rµ   rá   r¶   r>   r>   r>   r?   r´   €  s   r´   z0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov DecrÝ   c                 C   s   i | ]\}}|  ¡ |d  “qS )r   )rá   )Ú.0Únr.  r>   r>   r?   Ú
<dictcomp>­  rA   rO  r   c              	   C   sØ   t  | ¡}|sd S t| d¡ }| d¡}t| d¡ƒ}t| d¡ƒ}t| d¡ƒ}t| d¡ƒ}t| d¡ƒ}t| d¡ƒ}	t| d	¡ƒ}
|	d
 |
 d
 }|dkrª| }||||||dddf	}t |¡| }t |¡S )NÚmonÚzonenÚdayÚyearÚhourrˆ   ÚsecÚzonehÚzonemé<   ó   -r™   )	ÚInternalDater-  ÚMon2numr#  r&  ÚcalendarZtimegmÚtimeÚ	localtime)r(  r"  rP  rQ  rR  rS  rT  rˆ   rU  rV  rW  ZzoneZttÚutcr>   r>   r?   r   ¯  s$    

r   c                 C   s@   d}d}t t| ƒƒ} | r<t| dƒ\} }|||d … | }q|S )NrA   s   ABCDEFGHIJKLMNOPé   r   )r&  ÚabsÚdivmod)Znumr  ZAPÚmodr>   r>   r?   r	   Ò  s    r	   c                 C   s$   t  | ¡}|sdS t| d¡ ¡ ƒS )Nr>   r¯   )ÚFlagsr-  r  r#  r  )r(  r"  r>   r>   r?   r
   ß  s    
r
   c                 C   s  t | ttfƒr"t | tj¡ ¡ }nàt | tƒr¶z
| j	}W nX t
yŽ   tjr‚| d }|dkrnt t | ¡¡d }tjtjf|  }ntj }Y n0 t|d}t| d d… dt|ƒiŽ}nLt | tƒrØ| jd u rÒtdƒ‚| }n*t | tƒrú| d | d fdkrú| S td	ƒ‚d
 t|j ¡}| |¡S )Né   r™   )Zsecondsé   Útzinfozdate_time must be awarer   )r0  r0  zdate_time not of a known typez"%d-{}-%Y %H:%M:%S %z")rß   r&  Úfloatr   Zfromtimestampr   r_  Z
astimezoner  Ú	tm_gmtoffrv   r]  Údaylightr^  ÚmktimeÚaltzoner   rg  r   rà   ÚformatÚMonthsZmonthÚstrftime)r°   ZdtZgmtoffZdstrŽ   Zfmtr>   r>   r?   r   ê  s2    ÿ





r   Ú__main__zd:s:)r>   r>   z-dz-s)rD   zIMAP password for %s on %s: Z	localhostzJFrom: %(user)s@localhost%(lf)sSubject: IMAP4 test%(lf)s%(lf)sdata...%(lf)sÚ
)rØ   ZlfrÚ   )rÂ   )ú
/tmp/xxx 1)ré   )rr  z/tmp/yyy)r   ©ú
/tmp/yyz 2r²   rt  )rÖ   )z/tmpzyy*)rð   rs  )rì   )NZSUBJECTÚtest)rÈ   )Ú1z(FLAGS INTERNALDATE RFC822))r   )rv  ÚFLAGSz
(\Deleted))rå   r>   )rÇ   r>   )r    r>   )r–   r>   )rð   r>   )r£   )ZUIDVALIDITY)r  )r,   ZALL)r£   )rî   )r|   r>   c                 C   sL   t  d| |f ¡ tt | ƒ|Ž \}}t  d| ||f ¡ |dkrH|d ‚|S )Nz%s %sz%s => %s %sr  r   )ÚMr2  rt   )Úcmdr}   rž   rŸ   r>   r>   r?   ÚrunK  s
    rz  r   zPROTOCOL_VERSION = %szCAPABILITIES = %rrÖ   )z/tmp/zyy%z.*"([^"]+)"$r™   rÃ   r  r   z%sz:(FLAGS INTERNALDATE RFC822.SIZE RFC822.HEADER RFC822.TEXT)z
All tests OK.z
Tests failed.z8
If you would like to see debugging output,
try: %s -d5
)Url   rI  r—   ri   r^   r‚   r?  r€   r]  r\  r   r   r   Úior   rø   r÷   ÚImportErrorÚ__all__r¬   rE   r1  r:  ro   r‘   r‰   rs   r_   r%  rd  rZ  ra   rb   rª   r'  r$  rd   r`   rc   r   r3  r²   r   r´   r  rn  Ú	enumerater[  r   r	   r
   r   r;   ZgetoptZgetpassÚargvZoptlistr}   r@   r  Zstream_commandÚoptr&  rW   ZgetuserZUSERZPASSWDZ	test_mesgZ	test_seq1Z	test_seq2rz  rx  rG   r2  rq   rp   ry  Zmlr-  r"  r#  ÚpathrŸ   r  Úprintr>   r>   r>   r?   Ú<module>   sL  H
	Õ0



	

ÿ         6
9,
#)





òù



ÿ
ý