U e5d�:�@shddlZddlZddlZddlZzddlZdZWnek rHdZYnXddgZGdd�de�Z dZ dZ d Z d Z e e Zd ZGd d�d�Zer�Gd d�de�Ze�d�edk�rdddlZeejd�Zee���e�ejd�e�ejd�e��e��\ZZeded�D]BZe� e�\Z!Z"Z#ede�e"D]Z$ede$��qd:d;�Z%dS)?rzUTF-8cCsP||_||_d|_t�d|||�|�|�|_|j�d�|_d|_ |� �|_ dS)NFzpoplib.connect�rbr) �host�port�_tls_established�sys�audit�_create_socket�sock�makefile�file� _debugging�_getresp�welcome)�selfr r�timeoutrrr�__init__bs z POP3.__init__cCst�|j|jf|�S�N)�socketZcreate_connectionr r)rrrrrrmszPOP3._create_socketcCs:|jdkrtdt|��t�d||�|j�|t�dS)N�z*put*zpoplib.putline)r�print�reprrrrZsendall�CRLF�r�linerrr�_putlineps z POP3._putlinecCs.|jrtdt|��t||j�}|�|�dS)Nz*cmd*)rrr �bytes�encodingr$r"rrr�_putcmdxs z POP3._putcmdcCs�|j�td�}t|�tkr$td��|jdkr)rZpswdrrr�pass_�sz POP3.pass_cCsF|�d�}|��}|jr&tdt|��t|d�}t|d�}||fS)NZSTATz*stat*r�)r8�splitrrr �int)rZretvalZretsZ numMessagesZ sizeMessagesrrr�stat�s   z POP3.statNcCs |dk r|�d|�S|�d�S)NzLIST %sZLIST�r8r9�r�whichrrrr6�s z POP3.listcCs|�d|�S)NzRETR %s�r9rGrrr�retr�sz POP3.retrcCs|�d|�S)NzDELE %sr>rGrrr�dele�sz POP3.delecCs |�d�S)NZNOOPr>r:rrr�noopsz POP3.noopcCs |�d�S)NZRSETr>r:rrr�rsetsz POP3.rsetcCs|�d�}|��|S)NZQUIT)r8�close)rr2rrr�quits z POP3.quitcCs�z |j }d|_ |dk r|��W5|j}d|_|dk r�zVz|�tj�Wn@tk r�}z"|jtjkrxt|dd�dkrx�W5d}~XYnXW5|��XXdS)NZwinerrorri&') rrNZshutdownrZ SHUT_RDWR�OSError�errnoZENOTCONN�getattrr)rr�excrrrrrNs   �z POP3.closecCs|�d|�S)NzRPOP %sr>r?rrr�rpop5sz POP3.rpops\+OK.[^<]*(<.*>)cCs\t||j�}|j�|j�}|s&td��ddl}|�d�|}|�|�� �}|� d||f�S)Nz!-ERR APOP not supported by serverrrz APOP %s %s) r%r&� timestamp�matchrr�hashlib�groupZmd5Z hexdigestr8)rr@ZpasswordZsecret�mrWZdigestrrr�apop<s z POP3.apopcCs|�d||f�S)Nz TOP %s %srI)rrHZhowmuchrrr�topQszPOP3.topcCs |dk r|�d|�S|�d�S)NzUIDL %sZUIDLrFrGrrr�uidlZsz POP3.uidlcCs |�d�S)NZUTF8r>r:rrr�utf8fsz POP3.utf8c Cspdd�}i}z4|�d�}|d}|D]}||�\}}|||<q$Wn*tk rj}z td��W5d}~XYnX|S)NcSs"|�d���}|d|dd�fS)N�asciirr)�decoderC)r#Zlstrrr� _parsecapyszPOP3.capa.._parsecapZCAPArz!-ERR CAPA not supported by server)r9r) rr`�capsr2ZrawcapsZcaplineZcapnmZcapargsZ_errrrr�capals   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 server�Zserver_hostnamer T) �HAVE_SSLrrrb�ssl�_create_stdlib_contextr8� wrap_socketrr rr)r�contextrar2rrr�stls�s  �z POP3.stls)N)N)N)&rrrr&� POP3_PORTr�_GLOBAL_DEFAULT_TIMEOUTrrr$r'r/rr7r8r9r;r=r@rArEr6rJrKrLrMrOrNrT�re�compilerUrZr[r\r]rbrjrrrrr3s@-�       c@s4eZdZeddejdfdd�Zdd�Zddd�ZdS) �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)�certfile�keyfile) � ValueError�warnings�warn�DeprecationWarningrqrprfrgrirr)rr rrqrprrirsrrrr�s$��zPOP3_SSL.__init__cCs"t�||�}|jj||jd�}|S)Nrd)rrrirhr )rrrrrrr�s  �zPOP3_SSL._create_socketcCs td��dS)Nrc)r)rrqrprirrrrj�sz POP3_SSL.stls)NNN) rrr� POP3_SSL_PORTrrlrrrjrrrrro�s � ro�__main__rrB�z Message %d:z z-----------------------)&rQrmrrrfre� ImportError�__all__� Exceptionrrkrvr-ZLFr!r+rror5r�argv�arr;r@rAr6rEZnumMsgsZ totalSize�range�irJ�header�msgr.r#rOrrrr�sJ n0