a DOgx+@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z m Z ddl mZzddlZdZWneydZYn0gdZdZdZd Zd Zd Zd Zd dddddd d d dd ddd d d d d d ddd dd dddd dd d d d ddd dd ddd dd*ZedZedZedZedejZedZ edZ!edZ"edejZ#dZ$dZ%GdddZ&erGddde&Z'e(dGdd d e&Z)Gd!d"d"Z*d#+d$Z,d%d&e-e,d'dDZ.d(d)Z/d*d+Z0d,d-Z1d.d/Z2e3d0krddl4Z4ddl5Z5ze44ej6d'dd1\Z7Z8Wn0e4j9yfZ:zd2\Z7Z8WYdZ:[:n dZ:[:00dZ;e7D]8\Ze5?Z@e55d6e@e>pd7fZAd8e@d9d:ZBd;e@eAffdd?d@ddeBffdAdBdCdDdEdFdGdHdIfZCdJdKdLdMd?dddeBffdHdNfZDdOdPZEze;rXe)e;ZFne&e>ZFeFjGdQkrxeCd'dZCeFHdReFjIeFHdSeFjJfeCD]\ZKZ8eEeKe8qeEdTdUD].*))?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@seZdZGdddeZGdddeZGdddeZdedfd d Zd d Z d dZ ddZ ddZ ddZ ddZddZdedfddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Z d;d<Z!d=d>Z"d?d@Z#dAdBZ$dCdDZ%dEdFZ&dGdHZ'ddKdLZ(dMdNZ)dOdPZ*dQdRZ+dSdTZ,ddUdVZ-dWdXZ.dYdZZ/d[d\Z0d]d^Z1d_d`Z2dadbZ3dcddZ4ddgdhZ5didjZ6dkdlZ7dmdnZ8dodpZ9ddqdrZ:dsdtZ;dudvZd{d|Z?d}d~Z@ddZAddZBddZCddZDddZEddZFddZGddZHdddZIddZJddZKddZLddZMddZNddZOdS)rc@s eZdZdS)z IMAP4.errorN__name__ __module__ __qualname__r>r>,/opt/alt/python39/lib64/python3.9/imaplib.pyerrorr@c@s eZdZdS)z IMAP4.abortNr:r>r>r>r?abortrArBc@s eZdZdS)zIMAP4.readonlyNr:r>r>r>r?readonlyrArCNc Cst|_d|_d|_i|_i|_d|_d|_d|_d|_ | | |||z | Wn4t yz |WntyYn0Yn0dS)NrrDFr)Debugdebugstateliteraltagged_commandsuntagged_responsescontinuation_response is_readonlytagnum_tls_established _mode_asciiopen_connect ExceptionshutdownOSErrorselfhostporttimeoutr>r>r?__init__s&    zIMAP4.__init__cCs0d|_d|_tttj|_tttj|_dS)NFascii) utf8_enabled _encodingrecompile_LiteralASCIILiteral_Untagged_statusUntagged_statusrVr>r>r?rOszIMAP4._mode_asciicCs(d|_d|_tt|_tt|_dS)NTutf-8)r\r]r^r_r`rbrcrdrer>r>r? _mode_utf8s zIMAP4._mode_utf8cCsttdd|_td|jdtj|_| |_ d|j vrHd|_ nd|j vrZd|_ n | |j |tD]}||jvrqr||_dS| d dS) Niis(?Ps"\d+) (?P[A-Z]+) (?P.*)ZPREAUTHrOKrzserver not IMAP4 compliant)r randomZrandinttagprer^r_ratagre __version__ _get_responseZwelcomerJrGr@_get_capabilitiesAllowedVersions capabilitiesPROTOCOL_VERSION)rVversionr>r>r?rQs*     zIMAP4._connectcCs&|tvrt||Std|dS)NzUnknown IMAP4 command: '%s')CommandsgetattrlowerAttributeError)rVattrr>r>r? __getattr__ szIMAP4.__getattr__cCs|SNr>rer>r>r? __enter__szIMAP4.__enter__cGs2|jdkrdSz |Wnty,Yn0dSNr)rGlogoutrT)rVargsr>r>r?__exit__s    zIMAP4.__exit__cCs`|dur|std|jsdn|j}td||j|j||jf}|durVt||St|S)Nz0Non-blocking socket (timeout=0) is not supportedz imaplib.open) ValueErrorrWsysauditrXsocketZcreate_connection)rVrYrWZaddressr>r>r?_create_socket#s   zIMAP4._create_socketcCs*||_||_|||_|jd|_dS)Nrb)rWrXrsockmakefilefilerUr>r>r?rP0s z IMAP4.opencCs |j|Sry)rreadrVsizer>r>r?r<sz IMAP4.readcCs.|jtd}t|tkr*|dt|S)Nzgot more than %d bytes)rreadline_MAXLINElenr@rVliner>r>r?rAs zIMAP4.readlinecCstd|||j|dS)Nz imaplib.send)rrrZsendallrVdatar>r>r?sendIsz IMAP4.sendc Cs|jzdz|jtjWnBty`}z*|jtjkrLt |dddkrLWYd}~n d}~00W|jn |j0dS)NZwinerrorri&') rcloserrSrZ SHUT_RDWRrTerrnoZENOTCONNrt)rVexcr>r>r?rSOs  zIMAP4.shutdowncCs|jSry)rrer>r>r?r_sz IMAP4.socketcCsBd}|ddg|\}}|dr(||fS|\}}||||S)NZRECENTrh)_untagged_responsenooprVnametypdatr>r>r?recentks  z IMAP4.recentcCs||dg|Sry)rupper)rVcoder>r>r?response|szIMAP4.responsecCsxd}|s d}|r.|d|dfdkr2d|}nd}|r@t|}nd}tt|}|jrbd|d}||_|||||S) NrINBOXrr()(%s)sUTF8 ())r MapCRLFsubCRLFr\rH_simple_command)rVmailboxflags date_timemessagerrHr>r>r?appends    z IMAP4.appendcCsP|}t|j|_|d|\}}|dkrB||dddd|_||fS)Nrrhrrfreplacer)r_AuthenticatorprocessrHrr@decoderG)rVZ mechanismZ authobjectmechrrr>r>r? authenticates zIMAP4.authenticatecCs d}||\}}||||S)Nrrrrr>r>r? capabilityszIMAP4.capabilitycCs |dS)Nrrrer>r>r?checksz IMAP4.checkcCs*z|d\}}Wd|_nd|_0||fS)NrrrrGrVrrr>r>r?rsz IMAP4.closecCs|d||S)Nrr)rV message_setZ new_mailboxr>r>r?copysz IMAP4.copycCs |d|S)NrrrVrr>r>r?createsz IMAP4.createcCs |d|S)Nrrrr>r>r?deletesz IMAP4.deletecCs|d||S)Nrr)rVrwhor>r>r? deleteaclszIMAP4.deleteaclcCsHd|jvrtd|d|\}}|dkr@d|vr@|||fS)NrzServer does not support ENABLErhz UTF8=ACCEPT)rprr@rrrg)rVrrrr>r>r?enables   z IMAP4.enablecCs d}||\}}||||S)Nrrrr>r>r?expunge s z IMAP4.expungecCs$d}||||\}}||||S)Nrr)rVrZ message_partsrrrr>r>r?fetchs z IMAP4.fetchcCs|d|\}}|||dS)NrZACLrrVrrrr>r>r?getacl(sz IMAP4.getaclcCs"|d|||\}}|||dS)Nr ANNOTATIONr)rVrentryZ attributerrr>r>r? getannotation1szIMAP4.getannotationcCs|d|\}}|||dS)Nr!QUOTAr)rVrootrrr>r>r?getquota9szIMAP4.getquotacCs@|d|\}}|||d\}}|||d\}}|||gfS)Nr"rZ QUOTAROOTr)rVrrrZquotaZ quotarootr>r>r? getquotarootDszIMAP4.getquotaroot""*cCs$d}||||\}}||||S)Nr$rrVZ directorypatternrrrr>r>r?listOsz IMAP4.listcCs<|d|||\}}|dkr.||dd|_||fS)Nr%rhrr)r_quoter@rG)rVuserpasswordrrr>r>r?login[s z IMAP4.logincCs|||_|_|d|jS)NzCRAM-MD5)rrr_CRAM_MD5_AUTH)rVrrr>r>r?login_cram_md5iszIMAP4.login_cram_md5cCsBddl}t|jtr |jdn|j}|jd|||dS)Nrrf Zmd5)hmac isinstancerstrencoderZHMACZ hexdigest)rVZ challengerpwdr>r>r?rrs zIMAP4._CRAM_MD5_AUTHcCs$d|_|d\}}|||fSr{)rGrrSrr>r>r?r|zsz IMAP4.logoutcCs$d}||||\}}||||S)Nr&rrr>r>r?lsubsz IMAP4.lsubcCs|d|\}}|||dS)Nr#rrr>r>r?myrightsszIMAP4.myrightscCs d}||\}}||||S)Nr'rrr>r>r? namespaceszIMAP4.namespacecCs |dS)Nr(rrer>r>r?rsz IMAP4.noopcCs(d}||||||\}}|||dS)Nr)rr)rVZ message_numZ message_partstartZlengthrrrr>r>r?partialsz IMAP4.partialcCsd}|d|S)Nr*r)rVrrr>r>r? proxyauths zIMAP4.proxyauthcCs|d||S)Nr+r)rVZ oldmailboxZ newmailboxr>r>r?renamesz IMAP4.renamecGsXd}|r4|jrtd|j|d|g|R\}}n|j|g|R\}}||||S)Nr,z'Non-None charset not valid in UTF8 modeCHARSET)r\rr@rr)rVcharsetZcriteriarrrr>r>r?searchs z IMAP4.searchrFcCsvi|_||_|rd}nd}|||\}}|dkr@d|_||fSd|_d|jvrb|sb|d|||jddgfS) Nrr-rhrr READ-ONLYz%s is not writableEXISTS)rJrLrrGrCget)rVrrCrrrr>r>r?selects  z IMAP4.selectcCs|d|||S)Nr.r)rVrrZwhatr>r>r?setaclsz IMAP4.setaclcGs$|jdg|R\}}|||dS)Nr/rr)rVr}rrr>r>r? setannotation szIMAP4.setannotationcCs |d||\}}|||dS)Nr0rr)rVrZlimitsrrr>r>r?setquotaszIMAP4.setquotacGsHd}|d|dfdkr d|}|j|||g|R\}}||||S)Nr1rrrrr)rVZ sort_criteriarsearch_criteriarrrr>r>r?sorts z IMAP4.sortcCsd}ts|d|jr"|d||jvr6|d|durFt}||\}}|dkr|j|j |j d|_ |j d|_ d|_| n |d ||||S) Nr2zSSL support missingzTLS session already establishedzTLS not supported by serverrhZserver_hostnamerTzCouldn't establish TLS session)HAVE_SSLr@rNrBrpssl_create_stdlib_contextr wrap_socketrrWrrrnr)rV ssl_contextrrrr>r>r?starttls)s&      zIMAP4.starttlscCs$d}||||\}}||||S)Nr3r)rVrnamesrrrr>r>r?status@sz IMAP4.statuscCs>|d|dfdkrd|}|d|||\}}|||dS)Nrrrrr4rr)rVrcommandrrrr>r>r?storeLsz IMAP4.storecCs |d|S)Nr5rrr>r>r? subscribeWszIMAP4.subscribecGs,d}|j|||g|R\}}||||S)Nr6r)rVZthreading_algorithmrrrrrr>r>r?thread_sz IMAP4.threadc Gs|}|tvr|d||jt|vrL|d||jdt|fd}|j||g|R\}}|dvrv|}nd}||||S)NzUnknown IMAP4 UID command: %s9command %s illegal in state %s, only allowed in states %s, r7)r,r1r6r)rrsr@rGjoinrr)rVrr}rrrr>r>r?uidis z IMAP4.uidcCs |d|S)Nr8rrr>r>r? unsubscribeszIMAP4.unsubscribecCs*z|d\}}Wd|_nd|_0||fS)Nr9rr)rVrrr>r>r?unselects zIMAP4.unselectcGs.|}|tvr|jft|<|j|g|RSry)rrsrGrrVrr}r>r>r?xatoms  z IMAP4.xatomcCs8|dur d}|j}||vr*|||n |g||<dSNrA)rJrr)rVrrZurr>r>r?_append_untaggeds zIMAP4._append_untaggedcCs,|jd}|r(||d|jddS)NBYErr)rJrrBrr])rVbyer>r>r? _check_byes zIMAP4._check_byec Gs|jt|vr4d|_|d||jdt|fdD]}||jvr8|j|=q8d|jvrj|jsj|d|}t ||j }|d|}|D]0}|durqt |t rt ||j }|d|}q|j}|dur d|_t |t |jur|}nd}|t dt||j }z||tWn4tyP} z|d| WYd} ~ n d} ~ 00|dur`|S|r~|j|r`|Sq`|r||j}z|||tWn4ty} z|d| WYd} ~ n d} ~ 00|s`qq`|S) NrrrhNOBADrz#mailbox status changed to READ-ONLY z {%s}zsocket error: %s)rGrsrHr@rrJrLrC_new_tagbytesr]rrtype_commandrrrrTrBrmrIrK) rVrr}rtagrargrHZ literatorvalr>r>r?rs`           $     $zIMAP4._commandc Cs|dk}|s|z|j||d\}}Wnn|jyb}z|d||fWYd}~n@d}~0|jy}z|d||fWYd}~n d}~00|s||dkr|d|||f||fS)Nr) expect_byezcommand: %s => %srz%s command error: %s %s)r _get_tagged_responserBr@)rVrrr|rrrr>r>r?_command_completes&(zIMAP4._command_completecCsJ|\}}|dgkr |dt|d|j}|}t||_dS)Nz"no CAPABILITY response from serverr)rr@rr]rtuplesplitrprr>r>r?rn#s    zIMAP4._get_capabilitiescCs|}||j|rp|jd}||jvr:|d||jd}t||j}|jd}||gf|j|<nd}|t |s||j |r|jd}|jdur|t |r|jd|_ dS|d||jd}t||j}|jd}|durd}|r|d|}||j |rZt|jd }||}||||f|}q||||d vr|t|r|jd}t||j}|||jd|S) Nrzunexpected tagged response: %rrrZdata2zunexpected response: %rrArrr) _get_line_matchrkmogrouprIrBrr]Untagged_responserd ContinuationrKrbintrr  Response_code)rVresprrrZdat2rrr>r>r?rm,sD                 zIMAP4._get_responsec Cs|j|}|dur|j|=|S|rDd}|j|d}|durD||fS|z |Wq|jy}zWYd}~qd}~00qdS)Nr )rIrJpopr rmrB)rVrrresultrr rr>r>r?r|s  zIMAP4._get_tagged_responsecCs>|}|s|d|ds.|d||dd}|S)Nzsocket error: EOFr z#socket error: unterminated line: %r)rrBendswithrr>r>r?rs   zIMAP4._get_linecCs|||_|jduSry)matchr )rVZcresr>r>r?rs z IMAP4._matchcCs2|jtt|j|j}|jd|_d|j|<|S)Nr)rjrrrMr]rI)rVrr>r>r?rs  zIMAP4._new_tagcCs$|dd}|dd}d|dS)N\z\\"z\")r)rVrr>r>r?rs  z IMAP4._quotecGs|||j|g|RSry)rrrr>r>r?rszIMAP4._simple_commandcCs8|dkr||fS||jvr$|dgfS|j|}||fS)Nr)rJr')rVrrrrr>r>r?rs    zIMAP4._untagged_response)rr)rr)rF)N)F)Tr;r<r=rRr@rBrC IMAP4_PORTrZrOrgrQrxrzr~rrPrrrrSrrrrrrrrrrrrrrrrrrrrrrrr|rrrrrrrrrrrrrrrrrrrrrrr r rrrnrmrrrrrrr_mesgZ_dump_urZ_logZ print_logr>r>r>r?rs1*                     M P ! $rc@s:eZdZdeddddfddZddZdedfddZdS) IMAP4_SSLrDNcCs|dur|durtd|dur0|dur0td|dus@|durVddl}|dtd||_||_|durxtj||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) rwarningswarnDeprecationWarningr4r3rrrrrZ)rVrWrXr4r3rrYr5r>r>r?rZs"zIMAP4_SSL.__init__cCst||}|jj||jdS)Nr)rrrrrW)rVrYrr>r>r?r.s zIMAP4_SSL._create_socketcCst||||dSry)rrPrUr>r>r?rP3szIMAP4_SSL.open)r;r<r=IMAP4_SSL_PORTrZrrPr>r>r>r?r1s  r1c@s>eZdZddZdddZddZdd Zd d Zd d ZdS)rcCs||_t|dSry)rrrZ)rVrr>r>r?rZJszIMAP4_stream.__init__NcCsNd|_d|_d|_d|_tj|jttjtjddd|_ |j j |_ |j j |_ dS)NT)bufsizestdinstdoutshellZ close_fds)rWrXrr subprocessPopenrrPIPErr: writefiler;readfilerUr>r>r?rPOs zIMAP4_stream.opencCs |j|Sry)rArrr>r>r?r_szIMAP4_stream.readcCs |jSry)rArrer>r>r?rdszIMAP4_stream.readlinecCs|j||jdSry)r@writeflushrr>r>r?ris zIMAP4_stream.sendcCs"|j|j|jdSry)rArr@rwaitrer>r>r?rSos  zIMAP4_stream.shutdown)NNN) r;r<r=rZrPrrrrSr>r>r>r?r>s   rc@s,eZdZddZddZddZddZd S) rcCs ||_dSry)r)rVZmechinstr>r>r?rZ}sz_Authenticator.__init__cCs&|||}|durdS||S)N*)rrr)rVrZretr>r>r?rsz_Authenticator.processcCsnd}t|tr|d}|rjt|dkrB|dd}|dd}n|}d}t|}|r||dd}q|S)NrArf0r)rrrrbinasciiZ b2a_base64)rVinpZoupter>r>r?rs      z_Authenticator.encodecCs|sdSt|Sr )rGZ a2b_base64)rVrHr>r>r?rsz_Authenticator.decodeN)r;r<r=rZrrrr>r>r>r?rwsrz0 Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov DecrcCsi|]\}}||dqS)r)r).0nr,r>r>r? rArMrc 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+Mon2numr!r$calendarZtimegmtime localtime)r&r rNrOrPrQrRrSrTrUrVZzoneZttutcr>r>r?rs$  rcCs@d}d}tt|}|rr>r?r s  r cCs$t|}|sdSt|dS)Nr>r)Flagsr+rr!r)r&r r>r>r?r s r cCst|ttfr"t|tj}nt|trz |j }WnXt yt j r|d}|dkrnt t |d}t jt jf| }nt j }Yn0t|d}t|dddt|i}nLt|tr|jdurtd|}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")rr$floatrZ fromtimestamprr^Z astimezoner tm_gmtoffrvr\daylightr]mktimealtzonerrfrrformatMonthsZmonthstrftime)rZdtZgmtoffZdstZdeltaZfmtr>r>r?r s2        r __main__zd:s:)r>r>z-dz-s)rDzIMAP 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)rqz/tmp/yyy)r /tmp/yyz 2rrs)r)z/tmpzyy*)rrr)r)NZSUBJECTtest)r)1z(FLAGS INTERNALDATE RFC822))r)ruFLAGSz (\Deleted))rr>)rr>)rr>)rr>)rr>)r)Z UIDVALIDITY)r)r,ZALL)r)r)r|r>cCsLtd||ftt||\}}td|||f|dkrH|d|S)Nz%s %sz %s => %s %srr)Mr0rt)cmdr}rrr>r>r?runBs ryrzPROTOCOL_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 )TrlrGrrir^rr=rr\r[rrriorrr ImportError__all__rrEr/r8rorrsr_r#rcrYrarbrr%r"rdr`rcrr1rrrrrm enumeraterZrr r r r;ZgetoptZgetpassargvZoptlistr}r@rZstream_commandoptr$rWZgetuserZUSERZPASSWDZ test_mesgZ test_seq1Z test_seq2ryrwrGr0rqrprxZmlr+r r!pathrrprintr>r>r>r?sJH    0     6 9, #  )