U e5d:@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)socketZcreate_connectionr r)rrrrrrmszPOP3._create_socketcCs:|jdkrtdt|td|||j|tdS)Nz*put*zpoplib.putline)rprintreprrrrZsendallCRLFrlinerrr_putlineps z POP3._putlinecCs.|jrtdt|t||j}||dS)Nz*cmd*)rrr bytesencodingr$r"rrr_putcmdxs z POP3._putcmdcCs|jtd}t|tkr$td|jdkr)rZpswdrrrpass_sz POP3.pass_cCsF|d}|}|jr&tdt|t|d}t|d}||fS)NZSTATz*stat*r)r8splitrrr int)rZretvalZretsZ numMessagesZ sizeMessagesrrrstats   z POP3.statNcCs |dk r|d|S|dS)NzLIST %sZLISTr8r9rwhichrrrr6s z POP3.listcCs|d|S)NzRETR %sr9rGrrrretrsz POP3.retrcCs|d|S)NzDELE %sr>rGrrrdelesz POP3.delecCs |dS)NZNOOPr>r:rrrnoopsz POP3.noopcCs |dS)NZRSETr>r:rrrrsetsz POP3.rsetcCs|d}||S)NZQUIT)r8close)rr2rrrquits z POP3.quitcCsz |j }d|_ |dk r|W5|j}d|_|dk rzVz|tjWn@tk r}z"|jtjkrxt|dddkrxW5d}~XYnXW5|XXdS)NZwinerrorri&') rrNZshutdownrZ SHUT_RDWROSErrorerrnoZENOTCONNgetattrr)rrexcrrrrrNs   z POP3.closecCs|d|S)NzRPOP %sr>r?rrrrpop5sz POP3.rpops\+OK.[^<]*(<.*>)cCs\t||j}|j|j}|s&tdddl}|d|}|| }| d||fS)Nz!-ERR APOP not supported by serverrrz APOP %s %s) r%r& timestampmatchrrhashlibgroupZmd5Z hexdigestr8)rr@ZpasswordZsecretmrWZdigestrrrapop<s z POP3.apopcCs|d||fS)Nz TOP %s %srI)rrHZhowmuchrrrtopQszPOP3.topcCs |dk r|d|S|dS)NzUIDL %sZUIDLrFrGrrruidlZsz 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)decoderC)r#Zlstrrr _parsecapyszPOP3.capa.._parsecapZCAPArz!-ERR CAPA not supported by server)r9r) rr`capsr2ZrawcapsZcaplineZcapnmZcapargsZ_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_SSLrrrbssl_create_stdlib_contextr8 wrap_socketrr rr)rcontextrar2rrrstlss  z POP3.stls)N)N)N)&rrrr& POP3_PORTr_GLOBAL_DEFAULT_TIMEOUTrrr$r'r/rr7r8r9r;r=r@rArEr6rJrKrLrMrOrNrTrecompilerUrZr[r\r]rbrjrrrrr3s@-       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 insteadrB)certfilekeyfile) ValueErrorwarningswarnDeprecationWarningrqrprfrgrirr)rr rrqrprrirsrrrrs$zPOP3_SSL.__init__cCs"t||}|jj||jd}|S)Nrd)rrrirhr )rrrrrrrs  zPOP3_SSL._create_socketcCs tddS)Nrc)r)rrqrprirrrrjsz POP3_SSL.stls)NNN) rrr POP3_SSL_PORTrrlrrrjrrrrros  ro__main__rrBz Message %d:z z-----------------------)&rQrmrrrfre ImportError__all__ Exceptionrrkrvr-ZLFr!r+rror5rargvarr;r@rAr6rEZnumMsgsZ totalSizerangeirJheadermsgr.r#rOrrrrsJ n0