U ,af*@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z m Z ddl mZzddlZdZWnek rdZYnXddd d d d gZd ZdZdZdZdZdZdddddddddddddddddddddddddddddddddddddddddd)ZedZedZedZedejZedZ edZ!edZ"edejZ#dZ$dZ%Gd ddZ&erGd!d"d"e&Z'e(d"Gd#dde&Z)Gd$d%d%Z*d&+d'Z,d(d)e-e,d*dDZ.d+d Z/d,d Z0d-d Z1d.d Z2e3d/krddl4Z4ddl5Z5ze44ej6d*dd0\Z7Z8Wn.e4j9k rlZ:z d1\Z7Z8W5dZ:[:XYnXdZ;e7D]8\Ze5?Z@e55d5e@e>pd6fZAd7e@d8d9ZBd:e@eAffd;dd?ddeBffd@dAdBdCdDdEdFdGdHfZCdIdJdKdLd>dddeBffdGdMfZDdNdOZEze;r^e)e;ZFne&e>ZFeFjGdPkr~eCd*dZCeFHdQeFjIeFHdReFjJfeCD]\ZKZ8eEeKe8qeEdSdTD].*))?s.*FLAGS \((?P[^\)]*)\)s.*INTERNALDATE "(?P[ 0123][0-9])-(?P[A-Z][a-z][a-z])-(?P[0-9][0-9][0-9][0-9]) (?P[0-9][0-9]):(?P[0-9][0-9]):(?P[0-9][0-9]) (?P[-+])(?P[0-9][0-9])(?P[0-9][0-9])"s.*{(?P\d+)}$s \r\n|\r|\ns%\[(?P[A-Z-]+)( (?P.*))?\]s$\* (?P[A-Z-]+)( (?P.*))?s3\* (?P\d+) (?P[A-Z-]+)( (?P.*))?c@seZdZGdddeZGdddeZGdddeZdefdd Zd d Z d d Z ddZ ddZ ddZ ddZddZdefddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Z d:d;Z!dd?Z#d@dAZ$dBdCZ%dDdEZ&dFdGZ'ddJdKZ(dLdMZ)dNdOZ*dPdQZ+dRdSZ,ddTdUZ-dVdWZ.dXdYZ/dZd[Z0d\d]Z1d^d_Z2d`daZ3dbdcZ4ddfdgZ5dhdiZ6djdkZ7dldmZ8dndoZ9ddqdrZ:dsdtZ;dudvZd{d|Z?d}d~Z@ddZAddZBddZCddZDddZEddZFddZGdddZHddZIddZJddZKddZLddZMddZNdpS)rc@s eZdZdS)z IMAP4.errorN__name__ __module__ __qualname__r=r=,/opt/alt/python38/lib64/python3.8/imaplib.pyerrorsr?c@s eZdZdS)z IMAP4.abortNr9r=r=r=r>abortsr@c@s eZdZdS)zIMAP4.readonlyNr9r=r=r=r>readonlysrAc Cst|_d|_d|_i|_i|_d|_d|_d|_d|_ | | ||z | Wn8t k rz |Wntk rYnXYnXdS)NrrBFr)Debugdebugstateliteraltagged_commandsuntagged_responsescontinuation_response is_readonlytagnum_tls_established _mode_asciiopen_connect ExceptionshutdownOSErrorselfhostportr=r=r>__init__s&   zIMAP4.__init__cCs0d|_d|_tttj|_tttj|_dS)NFascii) utf8_enabled _encodingrecompile_LiteralASCIILiteral_Untagged_statusUntagged_statusrTr=r=r>rMszIMAP4._mode_asciicCs(d|_d|_tt|_tt|_dS)NTutf-8)rYrZr[r\r]r_r`rarbr=r=r> _mode_utf8s zIMAP4._mode_utf8cCsttdd|_td|jdtj|_| |_ d|j krHd|_ nd|j krZd|_ n | |j |tD]}||jkrqr||_dS| d dS) Niis(?Ps"\d+) (?P[A-Z]+) (?P.*)ZPREAUTHrOKrzserver not IMAP4 compliant)r randomZrandinttagprer[r\r^tagre __version__ _get_responseZwelcomerHrEr?_get_capabilitiesAllowedVersions capabilitiesPROTOCOL_VERSION)rTversionr=r=r>rOs*     zIMAP4._connectcCs&|tkrt||Std|dS)NzUnknown IMAP4 command: '%s')CommandsgetattrlowerAttributeError)rTattrr=r=r> __getattr__ szIMAP4.__getattr__cCs|SNr=rbr=r=r> __enter__szIMAP4.__enter__cGs4|jdkrdSz |Wntk r.YnXdSNr)rElogoutrR)rTargsr=r=r>__exit__s   zIMAP4.__exit__cCs4|js dn|j}td||j|jt||jfS)Nz imaplib.open)rUsysauditrVsocketZcreate_connection)rTrUr=r=r>_create_socketszIMAP4._create_socketcCs(||_||_||_|jd|_dS)Nrb)rUrVrsockmakefilefilerSr=r=r>rN's z IMAP4.opencCs |j|Srv)rreadrTsizer=r=r>r3sz IMAP4.readcCs.|jtd}t|tkr*|dt|S)Nzgot more than %d bytes)rreadline_MAXLINElenr?rTliner=r=r>r8s zIMAP4.readlinecCstd|||j|dS)Nz imaplib.send)r|r}rZsendallrTdatar=r=r>send@sz IMAP4.sendc Cst|jzXz|jtjWn@tk r^}z"|jtjkrNt |dddkrNW5d}~XYnXW5|jXdS)NZwinerrorri&') rcloserrQr~Z SHUT_RDWRrRerrnoZENOTCONNrq)rTexcr=r=r>rQFs  zIMAP4.shutdowncCs|jSrv)rrbr=r=r>r~Vsz IMAP4.socketcCsBd}|ddg|\}}|dr(||fS|\}}||||S)NZRECENTre)_untagged_responsenooprTnametypdatr=r=r>recentbs  z IMAP4.recentcCs||dg|Srv)rupper)rTcoder=r=r>responsesszIMAP4.responsecCsxd}|s d}|r.|d|dfdkr2d|}nd}|r@t|}nd}tt|}|jrbd|d}||_|||||S) NrINBOXrr()(%s)sUTF8 ())r MapCRLFsubCRLFrYrF_simple_command)rTmailboxflags date_timemessagerrFr=r=r>appends    z IMAP4.appendcCsP|}t|j|_|d|\}}|dkrB||dddd|_||fS)Nrrerrcreplacer)r_AuthenticatorprocessrFrr?decoderE)rTZ mechanismZ authobjectmechrrr=r=r> authenticates zIMAP4.authenticatecCs d}||\}}||||S)Nrrrrr=r=r> capabilityszIMAP4.capabilitycCs |dS)Nrrrbr=r=r>checksz IMAP4.checkcCs$z|d\}}W5d|_X||fS)Nrr)rErrTrrr=r=r>rsz IMAP4.closecCs|d||S)Nrr)rT message_setZ new_mailboxr=r=r>copysz IMAP4.copycCs |d|S)NrrrTrr=r=r>createsz IMAP4.createcCs |d|S)Nrrrr=r=r>deletesz IMAP4.deletecCs|d||S)Nrr)rTrwhor=r=r> deleteaclszIMAP4.deleteaclcCsHd|jkrtd|d|\}}|dkr@d|kr@|||fS)NrzServer does not support ENABLErez UTF8=ACCEPT)rmrr?rrrd)rTrrrr=r=r>enables   z IMAP4.enablecCs d}||\}}||||S)Nrrrr=r=r>expunges z IMAP4.expungecCs$d}||||\}}||||S)Nrr)rTrZ message_partsrrrr=r=r>fetchs z IMAP4.fetchcCs|d|\}}|||dS)NrZACLrrTrrrr=r=r>getaclsz IMAP4.getaclcCs"|d|||\}}|||dS)Nr ANNOTATIONr)rTrentryZ attributerrr=r=r> getannotation(szIMAP4.getannotationcCs|d|\}}|||dS)Nr!QUOTAr)rTrootrrr=r=r>getquota0szIMAP4.getquotacCs@|d|\}}|||d\}}|||d\}}|||gfS)Nr"rZ QUOTAROOTr)rTrrrZquotaZ quotarootr=r=r> getquotaroot;szIMAP4.getquotaroot""*cCs$d}||||\}}||||S)Nr$rrTZ directorypatternrrrr=r=r>listFsz IMAP4.listcCs<|d|||\}}|dkr.||dd|_||fS)Nr%rerr)r_quoter?rE)rTuserpasswordrrr=r=r>loginRs z IMAP4.logincCs|||_|_|d|jS)NzCRAM-MD5)rrr_CRAM_MD5_AUTH)rTrrr=r=r>login_cram_md5`szIMAP4.login_cram_md5cCsBddl}t|jtr |jdn|j}|jd|||dS)Nrrc Zmd5)hmac isinstancerstrencoderZHMACZ hexdigest)rTZ challengerpwdr=r=r>ris zIMAP4._CRAM_MD5_AUTHcCs$d|_|d\}}|||fSrx)rErrQrr=r=r>ryqsz IMAP4.logoutcCs$d}||||\}}||||S)Nr&rrr=r=r>lsub~sz IMAP4.lsubcCs|d|\}}|||dS)Nr#rrr=r=r>myrightsszIMAP4.myrightscCs d}||\}}||||S)Nr'rrr=r=r> namespaceszIMAP4.namespacecCs |dS)Nr(rrbr=r=r>rsz IMAP4.noopcCs(d}||||||\}}|||dS)Nr)rr)rTZ message_numZ message_partstartZlengthrrrr=r=r>partialsz IMAP4.partialcCsd}|d|S)Nr*r)rTrrr=r=r> proxyauths zIMAP4.proxyauthcCs|d||S)Nr+r)rTZ oldmailboxZ newmailboxr=r=r>renamesz IMAP4.renamecGsTd}|r2|jrtd|j|d|f|\}}n|j|f|\}}||||S)Nr,z'Non-None charset not valid in UTF8 modeCHARSET)rYrr?rr)rTcharsetZcriteriarrrr=r=r>searchs z IMAP4.searchrFcCsvi|_||_|rd}nd}|||\}}|dkr@d|_||fSd|_d|jkrb|sb|d|||jddgfS) Nrr-rerr READ-ONLYz%s is not writableEXISTS)rHrJrrErAget)rTrrArrrr=r=r>selects  z IMAP4.selectcCs|d|||S)Nr.r)rTrrZwhatr=r=r>setaclsz IMAP4.setaclcGs |jd|\}}|||dS)Nr/r)r/r)rTrzrrr=r=r> setannotationszIMAP4.setannotationcCs |d||\}}|||dS)Nr0rr)rTrZlimitsrrr=r=r>setquota szIMAP4.setquotacGsFd}|d|dfdkr d|}|j|||f|\}}||||S)Nr1rrrrr)rTZ sort_criteriarsearch_criteriarrrr=r=r>sorts z IMAP4.sortNcCsd}ts|d|jr"|d||jkr6|d|dkrFt}||\}}|dkr|j|j |j d|_ |j d|_ d|_| n |d ||||S) Nr2zSSL support missingzTLS session already establishedzTLS not supported by serverreZserver_hostnamerTzCouldn't establish TLS session)HAVE_SSLr?rLr@rmssl_create_stdlib_contextr wrap_socketrrUrrrkr)rT ssl_contextrrrr=r=r>starttls s&      zIMAP4.starttlscCs$d}||||\}}||||S)Nr3r)rTrnamesrrrr=r=r>status7sz IMAP4.statuscCs>|d|dfdkrd|}|d|||\}}|||dS)Nrrrrr4rr)rTrcommandrrrr=r=r>storeCsz IMAP4.storecCs |d|S)Nr5rrr=r=r> subscribeNszIMAP4.subscribecGs*d}|j|||f|\}}||||S)Nr6r)rTZthreading_algorithmrrrrrr=r=r>threadVsz IMAP4.threadc Gs|}|tkr|d||jt|krL|d||jdt|fd}|j||f|\}}|dkrt|}nd}||||S)NzUnknown IMAP4 UID command: %s9command %s illegal in state %s, only allowed in states %s, r7)r,r1r6r)rrpr?rEjoinrr)rTrrzrrrr=r=r>uid`s z IMAP4.uidcCs |d|S)Nr8rrr=r=r> unsubscribeyszIMAP4.unsubscribecGs,|}|tkr|jft|<|j|f|Srv)rrprErrTrrzr=r=r>xatoms  z IMAP4.xatomcCs8|dkr d}|j}||kr*|||n |g||<dSN)rHrr)rTrrZurr=r=r>_append_untaggeds zIMAP4._append_untaggedcCs,|jd}|r(||d|jddS)NBYErr)rHrr@rrZ)rTbyer=r=r> _check_byes zIMAP4._check_byec Gs|jt|kr4d|_|d||jdt|fdD]}||jkr8|j|=q8d|jkrj|jsj|d|}t ||j }|d|}|D]0}|dkrqt |t rt ||j }|d|}q|j}|dk r d|_t |t |jkr|}nd}|t dt||j }z||tWn2tk rN} z|d| W5d} ~ XYnX|dkr^|S|r||j|r^|Sq^|r||j}z|||tWn2tk r} z|d| W5d} ~ XYnX|s^qq^|S) NrrreNOBADrz#mailbox status changed to READ-ONLY z {%s}zsocket error: %s)rErprFr?rrHrJrA_new_tagbytesrZrrtype_commandrrrrRr@rjrGrI) rTrrzrtagrargrFZ literatorvalr=r=r>rsb                 zIMAP4._commandc Cs|dk}|s|z|j||d\}}Wnj|jk r`}z|d||fW5d}~XYn6|jk r}z|d||fW5d}~XYnX|s||dkr|d|||f||fS)Nr) expect_byezcommand: %s => %sr z%s command error: %s %s)r_get_tagged_responser@r?)rTrrryrrrr=r=r>_command_completes"$zIMAP4._command_completecCsJ|\}}|dgkr |dt|d|j}|}t||_dS)Nz"no CAPABILITY response from serverr)rr?rrZrtuplesplitrmrr=r=r>rk s    zIMAP4._get_capabilitiescCs|}||j|rp|jd}||jkr:|d||jd}t||j}|jd}||gf|j|<nd}|t |s||j |r|jd}|jdkr|t |r|jd|_ dS|d||jd}t||j}|jd}|dkrd}|r|d|}||j |rZt|jd }||}||||f|}q||||d kr|t|r|jd}t||j}|||jd|S) Nrzunexpected tagged response: %rrrZdata2zunexpected response: %rrr rr ) _get_line_matchrhmogrouprGr@rrZUntagged_responsera ContinuationrIr_intrr Response_code)rTresprrrZdat2rrr=r=r>rjsH                   zIMAP4._get_responsec Cs|j|}|dk r|j|=|S|rDd}|j|d}|dk rD||fS|z |Wq|jk r~}zW5d}~XYqXqdS)Nr)rGrHpoprrjr@)rTrrresultrrrr=r=r>rcs  zIMAP4._get_tagged_responsecCs>|}|s|d|ds.|d||dd}|S)Nzsocket error: EOFr z#socket error: unterminated line: %r)rr@endswithrr=r=r>rs   zIMAP4._get_linecCs|||_|jdk Srv)matchr)rTZcresr=r=r>rs z IMAP4._matchcCs2|jtt|j|j}|jd|_d|j|<|S)Nr)rgrrrKrZrG)rTrr=r=r>r s  zIMAP4._new_tagcCs$|dd}|dd}d|dS)N\z\\"z\")r)rTrr=r=r>rs  z IMAP4._quotecGs|||j|f|Srv)rrrr=r=r>rszIMAP4._simple_commandcCs8|dkr||fS||jkr$|dgfS|j|}||fS)Nr )rHr")rTrrrrr=r=r>rs    zIMAP4._untagged_response)rr)rr)rF)N)F)Sr:r;r<rPr?r@rA IMAP4_PORTrWrMrdrOrurwr{rrNrrrrQr~rrrrrrrrrrrrrrrrrrrrrrryrrrrrrrrrrrrrrrrrrrrrrrrrrkrjrrrr rrr_mesgZ_dump_urZ_logZ print_logr=r=r=r>rs.*                    M P ! $c@s6eZdZdedddfddZddZdefddZdS) IMAP4_SSLrBNcCs|dk r|dk rtd|dk r0|dk r0td|dk s@|dk rVddl}|dtd||_||_|dkrxtj||d}||_t |||dS)Nz8ssl_context and keyfile arguments are mutually exclusivez9ssl_context and certfile arguments are mutually exclusiverzEkeyfile and certfile are deprecated, use a custom ssl_context instead)certfilekeyfile) ValueErrorwarningswarnDeprecationWarningr/r.rrrrrW)rTrUrVr/r.rr1r=r=r>rWs$zIMAP4_SSL.__init__cCst|}|jj||jdS)Nr)rrrrrU)rTrr=r=r>rs zIMAP4_SSL._create_socketcCst|||dSrv)rrNrSr=r=r>rNszIMAP4_SSL.open)r:r;r<IMAP4_SSL_PORTrWrrNr=r=r=r>r,s  r,c@s>eZdZddZdddZddZdd Zd d Zd d ZdS)rcCs||_t|dSrv)rrrW)rTrr=r=r>rW/szIMAP4_stream.__init__NcCsNd|_d|_d|_d|_tj|jttjtjddd|_ |j j |_ |j j |_ dS)NT)bufsizestdinstdoutshellZ close_fds)rUrVrr subprocessPopenrrPIPErr6 writefiler7readfilerSr=r=r>rN4s zIMAP4_stream.opencCs |j|Srv)r=rrr=r=r>rDszIMAP4_stream.readcCs |jSrv)r=rrbr=r=r>rIszIMAP4_stream.readlinecCs|j||jdSrv)r<writeflushrr=r=r>rNs zIMAP4_stream.sendcCs"|j|j|jdSrv)r=rr<rwaitrbr=r=r>rQTs  zIMAP4_stream.shutdown)NN) r:r;r<rWrNrrrrQr=r=r=r>r#s   c@s,eZdZddZddZddZddZd S) rcCs ||_dSrv)r)rTZmechinstr=r=r>rWbsz_Authenticator.__init__cCs&|||}|dkrdS||S)N*)rrr)rTrZretr=r=r>resz_Authenticator.processcCsnd}t|tr|d}|rjt|dkrB|dd}|dd}n|}d}t|}|r||dd}q|S)Nrrc0r)rrrrbinasciiZ b2a_base64)rTinpZoupter=r=r>rks      z_Authenticator.encodecCs|sdSt|Sr)rCZ a2b_base64)rTrDr=r=r>rsz_Authenticator.decodeN)r:r;r<rWrrrr=r=r=r>r\srz0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov DecrcCsi|]\}}||dqS)r)r).0nr'r=r=r> srIrc Cst|}|sdSt|d}|d}t|d}t|d}t|d}t|d}t|d}t|d} t|d } | d | d } |d kr| } ||||||d d d f } t| | } t| S) Nmonzonendayyearhourminseczonehzonem<-r) InternalDater&Mon2numrrcalendarZtimegmtime localtime)r!rrJrKrLrMrNrOrPrQrRZzoneZttutcr=r=r>rs$  cCs@d}d}tt|}|rr s cCs$t|}|sdSt|dS)Nr=r)Flagsr&rrr)r!rr=r=r>r s cCst|ttfr"t|tj}nt|trz |j }WnZt k rt j r|d}|dkrpt t |d}t jt jf| }nt j }YnXt|d}t|dddt|i}nLt|tr|jdkrtd|}n*t|tr|d|dfdkr|Std d t|j}||S) Nr)Zsecondstzinfozdate_time must be awarer)r)r)zdate_time not of a known typez"%d-{}-%Y %H:%M:%S %z")rrfloatrZ fromtimestamprrZZ astimezoner tm_gmtoffrsrXdaylightrYmktimealtzonerrbr0rformatMonthsZmonthstrftime)rZdtZgmtoffZdstZdeltaZfmtr=r=r>r s2       __main__zd:s:)r=r=z-dz-s)rBzIMAP password for %s on %s: Z localhostzJFrom: %(user)s@localhost%(lf)sSubject: IMAP4 test%(lf)s%(lf)sdata...%(lf)s )rZlfr)r) /tmp/xxx 1)r)rmz/tmp/yyy)r /tmp/yyz 2rro)r)z/tmpzyy*)rrn)r)NZSUBJECTZtest)r)1z(FLAGS INTERNALDATE RFC822))r)rpFLAGSz (\Deleted))rr=)rr=)rr=)rr=)rr=)r)Z UIDVALIDITY)r)r,ZALL)r)r)ryr=cCsLtd||ftt||\}}td|||f|dkrH|d|S)Nz%s %sz %s => %s %sr r)Mr+rq)cmdrzrrr=r=r>run's rtrzPROTOCOL_VERSION = %szCAPABILITIES = %rr)z/tmp/zyy%z .*"([^"]+)"$rrrrz%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 )TrirCrrfr[r~r9r|rXrWrrriorrr ImportError__all__rrCr*r4rlrrpr\rr_rUr^r_rr rrar]r`rr,rrrrri enumeraterVrr r r r:ZgetoptZgetpassargvZoptlistrzr?rZstream_commandoptrrUZgetuserZUSERZPASSWDZ test_mesgZ test_seq1Z test_seq2rtrrrEr+rnrmrsZmlr&rrpathrrprintr=r=r=r>sXH   /     l4 9, #  )