Your IP : 3.144.3.235


Current Path : /opt/alt/python312/lib64/python3.12/__pycache__/
Upload File :
Current File : //opt/alt/python312/lib64/python3.12/__pycache__/poplib.cpython-312.opt-1.pyc

�

�Q�fS7���dZddlZddlZddlZddlZ	ddlZdZddgZGd�de	�Z
dZd	Zd
Z
dZe
ezZdZGd
�d�ZerGd�de�Zej'd�edk(r�ddlZeej*d�Zeej1��ej3ej*d�ej5ej*d�ej7�ej9�\ZZededz�D]<Z ejCe �\Z"Z#Z$ede z�e#D]
Z%ede%z��ed��>ejM�yy#e$rdZY��@wxYw)z@A POP3 client class.

Based on the J. Myers POP3 draft, Jan. 96
�NTF�POP3�error_protoc��eZdZy)rN)�__name__�
__module__�__qualname__���-/opt/alt/python312/lib64/python3.12/poplib.pyrrs�r
�ni��
�
ic��eZdZdZdZeejfd�Zd�Z	d�Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd!d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zej>d�Z d�Z!d�Z"d!d�Z#d�Z$d�Z%d!d �Z&y)"raPThis 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��||_||_d|_tjd|||�|j|�|_|jjd�|_d|_	|j�|_y)NFzpoplib.connect�rbr)�host�port�_tls_established�sys�audit�_create_socket�sock�makefile�file�
_debugging�_getresp�welcome)�selfrr�timeouts    r�__init__z
POP3.__init__bsg����	���	� %����	�	�"�D�$��5��'�'��0��	��I�I�&�&�t�,��	�����}�}���r
c�x�|�
|std��tj|j|jf|�S)Nz0Non-blocking socket (timeout=0) is not supported)�
ValueError�socket�create_connectionrr)rrs  rrzPOP3._create_socketms6����w��O�P�P��'�'����D�I�I�(>��H�Hr
c��|jdkDrtdt|��tjd||�|j
j
|tz�y)N�z*put*zpoplib.putline)r�print�reprrrr�sendall�CRLF�r�lines  r�_putlinez
POP3._putlinersB���?�?�Q���g�t�D�z� :��	�	�"�D�$�/��	�	���$��+�&r
c��|jrtdt|��t||j�}|j|�y)Nz*cmd*)rr'r(�bytes�encodingr-r+s  r�_putcmdzPOP3._putcmdzs2���?�?�E�'�4��:�6��T�4�=�=�)���
�
�d�r
c�R�|jjtdz�}t|�tkDrt	d��|j
dkDrt
dt|��|st	d��t|�}|ddtk(r|dd|fS|ddtk(r|dd|fS|dd|fS)Nr&z
line too longz*get*z-ERR EOF������)
r�readline�_MAXLINE�lenrrr'r(r*�CR)rr,�octetss   r�_getlinez
POP3._getline�s����y�y�!�!�(�Q�,�/���t�9�x���o�.�.��?�?�Q���g�t�D�z� :��;�z�2�2��T������9������9�f�$�$����8�r�>���"�:�v�%�%��C�R�y�&� � r
c��|j�\}}|jdkDrtdt|��|j	d�st|��|S)Nr&z*resp*�+)r:rr'r(�
startswithr)r�resp�os   rrz
POP3._getresp�sF���-�-�/���a��?�?�Q���h��T�
� ;����t�$��d�#�#��r
c��|j�}g}d}|j�\}}|dk7rJ|jd�r
|dz
}|dd}||z}|j|�|j�\}}|dk7r�J|||fS)Nr�.s..r&)rr:r=�append)rr>�listr9r,r?s      r�_getlongrespzPOP3._getlongresp�s����}�}�����A�6��-�-�/���a��d�l����u�%��a�C���A�B�x���a�Z�F��K�K����m�m�o�G�D�!�
�d�l��T�6�!�!r
c�D�|j|�|j�S�N)r1rr+s  r�	_shortcmdzPOP3._shortcmd�s�����T���}�}��r
c�D�|j|�|j�SrF)r1rDr+s  r�_longcmdz
POP3._longcmd�s�����T��� � �"�"r
c��|jSrF)r�rs r�
getwelcomezPOP3.getwelcome�s���|�|�r
c��||_yrF)r)r�levels  r�set_debuglevelzPOP3.set_debuglevel�s	����r
c�*�|jd|z�S)zVSend user name, return response

        (should indicate password required).
        zUSER %s�rG�r�users  rrSz	POP3.user�s��
�~�~�i�$�.�/�/r
c�*�|jd|z�S)z�Send password, return response

        (response includes message count, mailbox size).

        NB: mailbox is locked by server from here to 'quit()'
        zPASS %srQ)r�pswds  r�pass_z
POP3.pass_�s���~�~�i�$�.�/�/r
c���|jd�}|j�}|jrtdt	|��t|d�}t|d�}||fS)z]Get mailbox status.

        Result is tuple of 2 ints (message count, mailbox size)
        �STATz*stat*r&�)rG�splitrr'r(�int)r�retval�rets�numMessages�sizeMessagess     r�statz	POP3.stat�sV��
����'���|�|�~���?�?�E�(�D��J�7��$�q�'�l���4��7�|���\�*�*r
Nc�P�|�|jd|z�S|jd�S)aRequest 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.
        zLIST %s�LIST�rGrI�r�whichs  rrCz	POP3.list�s-�����>�>�)�e�"3�4�4��}�}�V�$�$r
c�*�|jd|z�S)zoRetrieve whole message number 'which'.

        Result is in form ['response', ['line', ...], octets].
        zRETR %s�rIrds  r�retrz	POP3.retr�s��
�}�}�Y��.�/�/r
c�*�|jd|z�S)zFDelete message number 'which'.

        Result is 'response'.
        zDELE %srQrds  r�delez	POP3.deles��
�~�~�i�%�/�0�0r
c�$�|jd�S)zXDoes nothing.

        One supposes the response indicates the server is alive.
        �NOOPrQrKs r�noopz	POP3.noops��
�~�~�f�%�%r
c�$�|jd�S)z(Unmark all messages marked for deletion.�RSETrQrKs r�rsetz	POP3.rsets���~�~�f�%�%r
c�H�|jd�}|j�|S)zDSignoff: commit changes on server, unlock mailbox, close connection.�QUIT)rG�close)rr>s  r�quitz	POP3.quits���~�~�f�%���
�
���r
c���	|j}d|_|�|j�|j}d|_|�1	|jtj
�|j�yy#t$r8}|jtjk7rt|dd�dk7r�Yd}~�Nd}~wwxYw#|j�wxYw#|j}d|_|��	|jtj
�nD#t$r8}|jtjk7rt|dd�dk7r�Yd}~nd}~wwxYw|j�w#|j�wxYwwxYw)z8Close the connection without assuming anything about it.N�winerrorri&')
rrsr�shutdownr#�	SHUT_RDWR�OSError�errno�ENOTCONN�getattr)rrr�excs    rrsz
POP3.closes)��	!��9�9�D��D�I����
�
���9�9�D��D�I���
!��M�M�&�"2�"2�3��J�J�L� �����	�	�U�^�^�3�"�3�
�A�6�%�?����
���J�J�L���9�9�D��D�I���
!��M�M�&�"2�"2�3�����	�	�U�^�^�3�"�3�
�A�6�%�?����
���J�J�L��D�J�J�L�� �sp�%C�A.�.	B/�7.B*�%B2�*B/�/B2�2C�E)�C>�=E�>	D?�.D:�5E�:D?�?E�E)�E%�%E)c�*�|jd|z�S)zNot sure what this does.zRPOP %srQrRs  r�rpopz	POP3.rpop7s���~�~�i�$�.�/�/r
s\+OK.[^<]*(<.*>)c�.�t||j�}|jj|j�}|std��ddl}|jd�|z}|j|�j�}|jd|�d|���S)aAuthorisation

        - 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 serverrNr&zAPOP � )r/r0�	timestamp�matchrr�hashlib�group�md5�	hexdigestrG)rrS�password�secret�mr��digests       r�apopz	POP3.apop>s{���x����/���N�N� � ����.����A�B�B�������F�"�����V�$�.�.�0���~�~�d�F�;�<�<r
c�0�|jd|�d|���S)z�Retrieve message header of message number 'which'
        and first 'howmuch' lines of message body.

        Result is in form ['response', ['line', ...], octets].
        zTOP r�rg)rre�howmuchs   r�topzPOP3.topSs���}�}�E�7�;�<�<r
c�P�|�|jd|z�S|jd�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]
        zUIDL %s�UIDLrcrds  r�uidlz	POP3.uidl\s-�����>�>�)�e�"3�4�4��}�}�V�$�$r
c�$�|jd�S)zITry to enter UTF-8 mode (see RFC 6856). Returns server response.
        �UTF8rQrKs r�utf8z	POP3.utf8hs���~�~�f�%�%r
c��d�}i}	|jd�}|d}|D]}||�\}}|||<�	|S#t$rtd��wxYw)aReturn 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�T�|jd�j�}|d|ddfS)N�asciirr&)�decoderZ)r,�lsts  r�	_parsecapzPOP3.capa.<locals>._parsecap{s-���+�+�g�&�,�,�.�C��q�6�3�q�r�7�?�"r
�CAPAr&z!-ERR CAPA not supported by server)rIr)rr��capsr>�rawcaps�capline�capnm�capargss        r�capaz	POP3.capansr��	#���	C��=�=��(�D��1�g�G�"��!*�7�!3���w�%��U��#�
����	C��A�B�B�	C�s	�-7�Ac��tstd��|jrtd��|j�}d|vrtd��|�t	j
�}|j
d�}|j|j|j��|_|jjd�|_d|_|S)z{Start a TLS session on the active connection as specified in RFC 2595.

                context - a ssl.SSLContext
        z-ERR TLS support missing�$-ERR TLS session already established�STLSz!-ERR STLS not supported by server��server_hostnamerT)�HAVE_SSLrrr��ssl�_create_stdlib_contextrG�wrap_socketrrrr)r�contextr�r>s    r�stlsz	POP3.stls�s���
��8�9�9�� � ��D�E�E��y�y�{����~��A�B�B��?��0�0�2�G��~�~�f�%���'�'��	�	�8<�	�	�(�C��	��I�I�&�&�t�,��	� $����r
rF)'rrr�__doc__r0�	POP3_PORTr#�_GLOBAL_DEFAULT_TIMEOUTr rr-r1r:rrDrGrIrLrOrSrVr`rCrhrjrmrprtrsr�re�compiler�r�r�r�r�r�r�r	r
rrr3s���)�V�H�"+��7�7�	'�I�
'��!�*�"� �#�� �0�0�
+�%�0�1�&�&�
�!�80�
��
�
�/�0�I�=�*=�	%�&��:r
c�D�eZdZdZefejdd�d�Zd�Zdd�Z	y)�POP3_SSLaNPOP3 client class over SSL connection

        Instantiate with: POP3_SSL(hostname, port=995, context=None)

               hostname - the hostname of the pop3 over ssl server
               port - port number
               context - a ssl.SSLContext

        See the methods of the parent class POP3 for more documentation.
        N)rr�c�n�|�tj�}||_tj	||||�yrF)r�r�r�rr )rrrrr�s     rr zPOP3_SSL.__init__�s.�����4�4�6��"�D�L��M�M�$��d�G�4r
c��tj||�}|jj||j��}|S)Nr�)rrr�r�r)rrrs   rrzPOP3_SSL._create_socket�s<���&�&�t�W�5�D��<�<�+�+�D�<@�I�I�,�G�D��Kr
c��td��)z�The method unconditionally raises an exception since the
            STLS command doesn't make any sense on an already established
            SSL/TLS session.
            r�)r)rr�s  rr�z
POP3_SSL.stls�s��
�D�E�Er
rF)
rrrr��
POP3_SSL_PORTr#r�r rr�r	r
rr�r��s,��		�'4�	5� &� >� >��	5�	�	Fr
r��__main__r&rY�zMessage %d:z   z-----------------------)'r�rzr�r#rr�r��ImportError�__all__�	Exceptionrr�r�r8�LFr*r6rr�rBr�argv�ar'rLrSrVrCr`�numMsgs�	totalSize�range�irh�header�msgr9r,rtr	r
r�<module>r�s|���
�	�
�
����H��-�
 ��#�)�"�
�	��
���
��	�"�u����k�k�\�F�4�F�@�N�N�:���z����S�X�X�a�[��A�	�!�,�,�.���F�F�3�8�8�A�;���G�G�C�H�H�Q�K���F�F�H��6�6�8��W�i�
�1�g��k�
"�� !���q�	����f�
�m�a�� ��D��%�$�,���
�'�(�#��F�F�H���[
���H��s�E�E�E

?>