Edit File: poplib.cpython-37.opt-1.pyc
B ����l}�ct:������������������@���sl��d�Z�ddlZddlZddlZyddlZdZW�n�ek rD���dZY�nX�ddgZG�dd��de�Z dZ d Zd ZdZ ee �ZdZG�d d��d�Zer�G�dd��de�Ze�d��edk�rhddlZeejd��Zee�����e�ejd���e�ejd���e����e���\ZZxXeded��D�]FZ e�!e �\Z"Z#Z$ede ���xe#D�]Z%ede%����q<W�ed���qW�e�&���dS�)z@A POP3 client class. Based on the J. Myers POP3 draft, Jan. 96 �����NTF�POP3�error_protoc���������������@���s���e�Zd�ZdS�)r���N)�__name__� __module__�__qualname__��r���r����+/opt/alt/python37/lib64/python3.7/poplib.pyr������s�����n���i������� ���� i���c���������������@���s��e�Zd�ZdZdZeejfdd�Zdd��Z dd��Z d d ��Zdd��Zd d��Z dd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zdd��Zd=d d!�Zd"d#��Zd$d%��Zd&d'��Zd(d)��Zd*d+��Zd,d-��Zd.d/��Ze�d0�Z d1d2��Z!d3d4��Z"d>d5d6�Z#d7d8��Z$d9d:��Z%d?d;d<�Z&dS�)@r���aP��This class supports both the minimal and optional command sets. Arguments can be strings or integers (where appropriate) (e.g.: retr(1) and retr('1') both work equally well. Minimal Command Set: USER name user(name) PASS string pass_(string) STAT stat() LIST [msg] list(msg = None) RETR msg retr(msg) DELE msg dele(msg) NOOP noop() RSET rset() QUIT quit() Optional Commands (some servers support these): RPOP name rpop(name) APOP name digest apop(name, digest) TOP msg n top(msg, n) UIDL [msg] uidl(msg = None) CAPA capa() STLS stls() UTF8 utf8() Raises one exception: 'error_proto'. Instantiate with: POP3(hostname, port=110) NB: the POP protocol locks the mailbox from user authorization until QUIT, so be sure to get in, suck the messages, and quit, each time you access the mailbox. POP is a line-based protocol, which means large mail messages consume lots of python cycles reading them line-by-line. If it's available on your mail server, use IMAP4 instead, it doesn't suffer from the two problems above. zUTF-8c�������������C���s@���||�_�||�_d|�_|��|�|�_|�j�d�|�_d|�_|����|�_ d�S�)NF�rbr���) �host�port�_tls_established�_create_socket�sock�makefile�file� _debugging�_getresp�welcome)�selfr ���r����timeoutr���r���r����__init__a���s����z POP3.__init__c�������������C���s���t��|�j|�jf|�S�)N)�socketZcreate_connectionr ���r���)r���r���r���r���r���r���k���s����zPOP3._create_socketc�������������C���s,���|�j�dkrtdt|���|�j�|t���d�S�)N����z*put*)r����print�reprr���Zsendall�CRLF)r����liner���r���r����_putlinen���s���� �z POP3._putlinec�������������C���s.���|�j�rtdt|���t||�j�}|��|��d�S�)Nz*cmd*)r���r���r����bytes�encodingr ���)r���r���r���r���r����_putcmdu���s�����zPOP3._putcmdc�������������C���s����|�j��td��}t|�tkr$td��|�jdkr<tdt|���|sHtd��t|�}|dd���tkrp|d�d��|fS�|d�d��t kr�|dd��|fS�|d�d��|fS�)Nr���z line too longz*get*z-ERR EOF������) r����readline�_MAXLINE�lenr���r���r���r���r����CR)r���r����octetsr���r���r����_getline���s���� ��z POP3._getlinec�������������C���s:���|�����\}}|�jdkr$tdt|���|�d�s6t|��|S�)Nr���z*resp*����+)r+���r���r���r���� startswithr���)r����resp�or���r���r���r�������s���� � z POP3._getrespc�������������C���sp���|�����}g�}d}|����\}}xH|dkrd|�d�rD|d�}|dd���}||�}|�|��|����\}}qW�|||fS�)Nr�������.s���..r���)r���r+���r-����append)r���r.����listr*���r���r/���r���r���r����_getlongresp����s����� zPOP3._getlongrespc�������������C���s���|���|��|����S�)N)r#���r���)r���r���r���r���r���� _shortcmd����s���� zPOP3._shortcmdc�������������C���s���|���|��|����S�)N)r#���r3���)r���r���r���r���r����_longcmd����s���� z POP3._longcmdc�������������C���s���|�j�S�)N)r���)r���r���r���r���� getwelcome����s����zPOP3.getwelcomec�������������C���s ���||�_�d�S�)N)r���)r����levelr���r���r����set_debuglevel����s����zPOP3.set_debuglevelc�������������C���s���|���d|��S�)zVSend user name, return response (should indicate password required). zUSER %s)r4���)r����userr���r���r���r9�������s����z POP3.userc�������������C���s���|���d|��S�)z�Send password, return response (response includes message count, mailbox size). NB: mailbox is locked by server from here to 'quit()' zPASS %s)r4���)r���Zpswdr���r���r����pass_����s����z POP3.pass_c�������������C���sF���|���d�}|���}|�jr&tdt|���t|d��}t|d��}||fS�)z]Get mailbox status. Result is tuple of 2 ints (message count, mailbox size) ZSTATz*stat*r�������)r4����splitr���r���r����int)r���ZretvalZretsZnumMessagesZsizeMessagesr���r���r����stat����s���� �z POP3.statNc�������������C���s ���|dk r|���d|��S�|��d�S�)a��Request listing, return result. Result without a message number argument is in form ['response', ['mesg_num octets', ...], octets]. Result when a message number argument is given is a single response: the "scan listing" for that message. NzLIST %sZLIST)r4���r5���)r����whichr���r���r���r2�������s���� z POP3.listc�������������C���s���|���d|��S�)zoRetrieve whole message number 'which'. Result is in form ['response', ['line', ...], octets]. zRETR %s)r5���)r���r?���r���r���r����retr����s����z POP3.retrc�������������C���s���|���d|��S�)zFDelete message number 'which'. Result is 'response'. zDELE %s)r4���)r���r?���r���r���r����dele����s����z POP3.delec�������������C���s ���|���d�S�)zXDoes nothing. One supposes the response indicates the server is alive. ZNOOP)r4���)r���r���r���r����noop��s����z POP3.noopc�������������C���s ���|���d�S�)z(Unmark all messages marked for deletion.ZRSET)r4���)r���r���r���r����rset��s����z POP3.rsetc�������������C���s���|���d�}|�����|S�)zDSignoff: commit changes on server, unlock mailbox, close connection.ZQUIT)r4����close)r���r.���r���r���r����quit��s���� z POP3.quitc�������������C���s����z |�j�}d|�_�|dk r|����W�d|�j}d|�_|dk r�zVy|�tj��W�n@�tk r��}�z"|jtjkrxt |dd�dkrx��W�dd}~X�Y�nX�W�d|����X�X�dS�)z8Close the connection without assuming anything about it.NZwinerrorr���i&'��) r���rD���r���Zshutdownr���Z SHUT_RDWR�OSError�errnoZENOTCONN�getattr)r���r���r����excr���r���r���rD�����s����z POP3.closec�������������C���s���|���d|��S�)zNot sure what this does.zRPOP %s)r4���)r���r9���r���r���r����rpop2��s����z POP3.rpops���\+OK.[^<]*(<.*>)c�������������C���s\���t�||�j�}|�j�|�j�}|s&td��ddl}|�d�|�}|�|�� ��}|�� d||f��S�)a��Authorisation - only possible if server has supplied a timestamp in initial greeting. Args: user - mailbox user; password - mailbox password. NB: mailbox is locked by server from here to 'quit()' z!-ERR APOP not supported by serverr���Nr���z APOP %s %s)r!���r"���� timestamp�matchr���r����hashlib�groupZmd5Z hexdigestr4���)r���r9���ZpasswordZsecret�mrM���Zdigestr���r���r����apop9��s����z POP3.apopc�������������C���s���|���d||f��S�)z�Retrieve message header of message number 'which' and first 'howmuch' lines of message body. Result is in form ['response', ['line', ...], octets]. z TOP %s %s)r5���)r���r?���Zhowmuchr���r���r����topN��s����zPOP3.topc�������������C���s ���|dk r|���d|��S�|��d�S�)z�Return message digest (unique id) list. If 'which', result contains unique id for that message in the form 'response mesgnum uid', otherwise result is the list ['response', ['mesgnum uid', ...], octets] NzUIDL %sZUIDL)r4���r5���)r���r?���r���r���r����uidlW��s����z POP3.uidlc�������������C���s ���|���d�S�)zITry to enter UTF-8 mode (see RFC 6856). Returns server response. ZUTF8)r4���)r���r���r���r����utf8c��s����z POP3.utf8c������� ��� ���C���st���dd��}i�}y8|���d�}|d�}x |D�]}||�\}}|||<�q&W�W�n*�tk rn�}�ztd��W�dd}~X�Y�nX�|S�)a���Return server capabilities (RFC 2449) as a dictionary >>> c=poplib.POP3('localhost') >>> c.capa() {'IMPLEMENTATION': ['Cyrus', 'POP3', 'server', 'v2.2.12'], 'TOP': [], 'LOGIN-DELAY': ['0'], 'AUTH-RESP-CODE': [], 'EXPIRE': ['NEVER'], 'USER': [], 'STLS': [], 'PIPELINING': [], 'UIDL': [], 'RESP-CODES': []} >>> Really, according to RFC 2449, the cyrus folks should avoid having the implementation split into multiple arguments... c�������������S���s"���|���d����}|d�|dd���fS�)N�asciir���r���)�decoder<���)r���Zlstr���r���r���� _parsecapv��s����zPOP3.capa.<locals>._parsecapZCAPAr���z!-ERR CAPA not supported by serverN)r5���r���) r���rV����capsr.���ZrawcapsZcaplineZcapnmZcapargsZ_errr���r���r����capai��s���� z POP3.capac�������������C���sx���t�std��|�jrtd��|����}d|kr2td��|dkrBt���}|��d�}|j|�j|�j d�|�_|�j� d�|�_d|�_|S�) z{Start a TLS session on the active connection as specified in RFC 2595. context - a ssl.SSLContext z-ERR TLS support missingz$-ERR TLS session already establishedZSTLSz!-ERR STLS not supported by serverN)�server_hostnamer���T)�HAVE_SSLr���r���rX����ssl�_create_stdlib_contextr4����wrap_socketr���r ���r���r���)r����contextrW���r.���r���r���r����stls���s���� z POP3.stls)N)N)N)'r���r���r����__doc__r"���� POP3_PORTr����_GLOBAL_DEFAULT_TIMEOUTr���r���r ���r#���r+���r���r3���r4���r5���r6���r8���r9���r:���r>���r2���r@���rA���rB���rC���rE���rD���rJ����re�compilerK���rP���rQ���rR���rS���rX���r_���r���r���r���r���r���2���s@���+ c���������������@���s8���e�Zd�ZdZeddejdfdd�Zdd��Zd dd�Z dS�) �POP3_SSLa��POP3 client class over SSL connection Instantiate with: POP3_SSL(hostname, port=995, keyfile=None, certfile=None, context=None) hostname - the hostname of the pop3 over ssl server port - port number keyfile - PEM formatted file that contains your private key certfile - PEM formatted certificate chain file context - a ssl.SSLContext See the methods of the parent class POP3 for more documentation. Nc�������������C���s����|d�k r|d�k rt�d��|d�k r0|d�k r0t�d��|d�k s@|d�k rVdd�l}|�dtd��||�_||�_|d�krxtj||d�}||�_t � |�|||��d�S�)Nz4context and keyfile arguments are mutually exclusivez5context and certfile arguments are mutually exclusiver���zAkeyfile and certfile are deprecated, use a custom context insteadr;���)�certfile�keyfile)� ValueError�warnings�warn�DeprecationWarningrg���rf���r[���r\���r^���r���r���)r���r ���r���rg���rf���r���r^���ri���r���r���r���r������s����zPOP3_SSL.__init__c�������������C���s"���t��|�|�}|�jj||�jd�}|S�)N)rY���)r���r���r^���r]���r ���)r���r���r���r���r���r���r������s���� zPOP3_SSL._create_socketc�������������C���s���t�d��dS�)z�The method unconditionally raises an exception since the STLS command doesn't make any sense on an already established SSL/TLS session. z$-ERR TLS session already establishedN)r���)r���rg���rf���r^���r���r���r���r_������s����z POP3_SSL.stls)NNN) r���r���r���r`���� POP3_SSL_PORTr���rb���r���r���r_���r���r���r���r���re������s ��� re����__main__r���r;�������zMessage %d:z z-----------------------)'r`���rG���rc���r���r[���rZ����ImportError�__all__� Exceptionr���ra���rl���r)���ZLFr���r'���r���re���r1���r����sys�argv�ar���r6���r9���r:���r2���r>���ZnumMsgsZ totalSize�range�ir@����header�msgr*���r���rE���r���r���r���r����<module>���sJ��� ��l0