U :e:@shddlZddlZddlZddlZzddlZdZWnek rHdZYnXddgZGdddeZ dZ dZ d Z d Z e e Zd ZGd ddZerGd ddeZededkrdddlZeejdZeeeejdeejdee\ZZededD]BZe e\Z!Z"Z#edee"D]Z$ede$qd:d;Z%dS)?rzUTF-8cCsP||_||_d|_td||||||_|jd|_d|_ | |_ dS)NFzpoplib.connectrbr) hostport_tls_establishedsysaudit_create_socketsockmakefilefile _debugging_getrespwelcome)selfr rtimeoutrrr__init__bs z POP3.__init__cCst|j|jf|SN)socketcreate_connectionr r)rrrrrrmszPOP3._create_socketcCs:|jdkrtdt|td|||j|tdS)Nz*put*zpoplib.putline)rprintreprrrrsendallCRLFrlinerrr_putlineps z POP3._putlinecCs.|jrtdt|t||j}||dS)Nz*cmd*)rr r!bytesencodingr&r$rrr_putcmdxs z POP3._putcmdcCs|jtd}t|tkr$td|jdkr)cCs\t||j}|j|j}|s&tdddl}|d|}|| }| d||fS)Nz!-ERR APOP not supported by serverrrz APOP %s %s) r'r( timestampmatchrrhashlibgroupmd5 hexdigestr:)rrBZpasswordZsecretmr]digestrrrapop<s z POP3.apopcCs|d||fS)Nz TOP %s %srL)rrKZhowmuchrrrtopQszPOP3.topcCs |dk r|d|S|dS)NzUIDL %sZUIDLrIrJrrruidlZsz POP3.uidlcCs |dS)NZUTF8r@r<rrrutf8fsz POP3.utf8c Cspdd}i}z4|d}|d}|D]}||\}}|||<q$Wn*tk rj}z tdW5d}~XYnX|S)NcSs"|d}|d|ddfS)Nasciirr)decoderE)r%Zlstrrr _parsecapyszPOP3.capa.._parsecapZCAPArz!-ERR CAPA not supported by server)r;r) rricapsr4ZrawcapsZcaplineZcapnmZcapargsZ_errrrrcapals   z POP3.capacCsxts td|jrtd|}d|kr2td|dkrBt}|d}|j|j|j d|_|j d|_ d|_|S)Nz-ERR TLS support missing$-ERR TLS session already establishedZSTLSz!-ERR STLS not supported by serverZserver_hostnamer T) HAVE_SSLrrrkssl_create_stdlib_contextr: wrap_socketrr rr)rcontextrjr4rrrstlss  z POP3.stls)N)N)N)&rrrr( POP3_PORTr_GLOBAL_DEFAULT_TIMEOUTrrr&r)r1rr9r:r;r=r?rBrCrGr8rMrNrOrPrRrQrZrecompiler[rcrdrerfrkrsrrrrr3s@-       c@s4eZdZeddejdfddZddZdddZdS) POP3_SSLNcCs|dk r|dk rtd|dk r0|dk r0td|dk s@|dk rVddl}|dtd||_||_|dkrxtj||d}||_t ||||dS)Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiverzAkeyfile and certfile are deprecated, use a custom context insteadrD)certfilekeyfile) ValueErrorwarningswarnDeprecationWarningrzryrorprrrr)rr rrzryrrrr|rrrrs$zPOP3_SSL.__init__cCs"t||}|jj||jd}|S)Nrm)rrrrrqr )rrrrrrrs  zPOP3_SSL._create_socketcCs tddS)Nrl)r)rrzryrrrrrrssz POP3_SSL.stls)NNN) rrr POP3_SSL_PORTrrurrrsrrrrrxs  rx__main__rrDz Message %d:z z-----------------------)&rWrvrrrorn ImportError__all__ Exceptionrrtrr/ZLFr#r-rrxr7rargvar r=rBrCr8rGZnumMsgsZ totalSizerangeirMheadermsgr0r%rRrrrrsJ n0