Sindbad~EG File Manager
�
'Μg1D��N� ddlZddlZddlZddlZddlZddlZddlmZmZddlm Z
ddlmZddlm
Z
ddlmZddlmZddlmZe
j"d �
�e
j$ZdZdZeed�r�ddlZd Zej.j1ej.j3e�xsej6d
d�Zej.j1ej.j3e�xsej6d
d�Zeed�ZdZdZ Gd�dejB�Z"Gd�dejFejH�Z%Gd�de�Z&erddl'm(Z(Gd�de(e"�Z)eGd�de&��Z*eGd�de&��Z+Gd �d!e�Z,d"�Z-e.d#k(rej^�yy)$�N)�TestCase�
skipUnless)�support)�hashlib_helper)�
socket_helper)�threading_helper)�asynchat)�asyncoreT)�moduleF�POP3_SSL�certdatazkeycert3.pemzpycacert.pemzSSL not supporteds1 1
2 2
3 3
4 4
5 5
.
stFrom: postmaster@python.org
Content-Type: text/plain
MIME-Version: 1.0
Subject: Dummy
line1
line2
line3
.
c��eZdZgdgd�ZdZd�Zd�Zd�Zd�Zd�Z d �Z
d
�Zd�Zd�Z
d
�ZeZd�ZeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zer
d�Zd�Zd�Zyy)�DummyPOP3Handlerzpython-testlib-pop-server)�UIDL�IMPLEMENTATIONFc��tjj||�|jd�g|_|jd�d|_d|_y)N�
�(+OK dummy pop3 server ready. <timestamp>F)r �
async_chat�__init__�set_terminator� in_buffer�push�
tls_active�tls_starting��self�conns �-/usr/local/lib/python3.12/test/test_poplib.pyrzDummyPOP3Handler.__init__7sI�����$�$�T�4�0����G�$����� � �<�=����!���c�:�|jj|�y�N)r�append�r�datas r�collect_incoming_dataz&DummyPOP3Handler.collect_incoming_data?s�������d�#r c�\�dj|j�}t|d�}g|_|jd�dj �}|jd�}|dk7r ||dzd}nd}t
|d|z�rt|d|z�}||�y|jd |z�y)
Nr �
ISO-8859-1� r������cmd_z$-ERR unrecognized POP3 command "%s".) �joinr�str�split�lower�find�hasattr�getattrr)r�line�cmd�space�arg�methods r�found_terminatorz!DummyPOP3Handler.found_terminatorBs����x�x����'���4��&������j�j��o�a� �&�&�(��� � �#����B�;��u�q�y�z�"�C��C��4��#��&��T�6�C�<�0�F��3�K��I�I�<�c�A�Br c���r"��rs r�handle_errorzDummyPOP3Handler.handle_errorR���
r c�h�tjj||jd�dz�y)Nr(r)r rr�encoder$s rrzDummyPOP3Handler.pushUs&����� � ��t�{�{�<�'@�7�'J�Kr c�&�|j|�yr"�r�rr8s r�cmd_echozDummyPOP3Handler.cmd_echoXs
��� � �#�r c�R�|dk7r|jd�|jd�y)N�guidoz-ERR no such userz+OK password requiredrCrDs r�cmd_userzDummyPOP3Handler.cmd_user\s#���'�>��I�I�)�*�� � �)�*r c�R�|dk7r|jd�|jd�y)N�pythonz-ERR wrong passwordz+OK 10 messagesrCrDs r�cmd_passzDummyPOP3Handler.cmd_passas#���(�?��I�I�+�,�� � �#�$r c�&�|jd�y)Nz
+OK 10 100rCrDs r�cmd_statzDummyPOP3Handler.cmd_statfs��� � �,�r c��|r|jd|�d|���y|jd�tjj|t�y)Nz+OK r)z+OK)rr r� LIST_RESPrDs r�cmd_listzDummyPOP3Handler.cmd_listis8����I�I�S�#�.�/��I�I�e�����$�$�T�9�5r c��|jdtt�z�tjj|t�y)Nz+OK %s bytes)r�len� RETR_RESPr rrDs r�cmd_retrzDummyPOP3Handler.cmd_retrrs-��� � �.�#�i�.�0�1���� � ��y�1r c�&�|jd�y)Nz +OK message marked for deletion.rCrDs r�cmd_delezDummyPOP3Handler.cmd_delexs��� � �4�5r c�&�|jd�y�Nz+OK done nothing.rCrDs r�cmd_noopzDummyPOP3Handler.cmd_noop{���� � �%�&r c�&�|jd�yrXrCrDs r�cmd_rpopzDummyPOP3Handler.cmd_rpop~rZr c�&�|jd�yrXrCrDs r�cmd_apopzDummyPOP3Handler.cmd_apop�rZr c�F�|jd�|j�y)Nz+OK closing.)r�close_when_donerDs r�cmd_quitzDummyPOP3Handler.cmd_quit�s��� � �.�!����r c�^�t|j�}|jstrg|d<|S�N�STLS)�dict�CAPASr�SUPPORTS_SSL)r�_capass r�
_get_capaszDummyPOP3Handler._get_capas�s'���d�j�j�!�����<��F�6�N��
r c� �|jd�|j�r\|j�j�D];\}}|g}|r|j|�|jdj |���=|jd�y)Nz+OK Capability list followsr)�.)rri�items�extendr.)rr8�cap�params�_lns r�cmd_capazDummyPOP3Handler.cmd_capa�sn��� � �/�0��?�?��#���0�6�6�8���V��e����J�J�v�&�� � �#�(�(�3�-�(� 9�
� � �#�r c�L�|j|jrd�yd�y)Nz+OK I know RFC6856z-ERR What is UTF8?!)r�enable_UTF8rDs r�cmd_utf8zDummyPOP3Handler.cmd_utf8�s$��� � ��%�%�'� .�,� .r c��|jdur�|jd�tjtj�}|jt�|j|jddd��}|j�|j|�d|_d|_g|_|j�y|jd�y)NFz+OK Begin TLS negotiationT)�server_side�do_handshake_on_connect�suppress_ragged_eofsz*-ERR Command not permitted when TLS active)rr�ssl�
SSLContext�PROTOCOL_TLS_SERVER�load_cert_chain�CERTFILE�wrap_socket�socket�del_channel�
set_socketrr�_do_tls_handshake)rr8�context�tls_socks r�cmd_stlszDummyPOP3Handler.cmd_stls�s������%�'�� � �5�6��.�.��)@�)@�A���'�'��1�"�.�.�t�{�{�;?�GL�DI�/�K��� � �"�����)�"&���$(��!�!#����&�&�(�� � �F�Gr c�Z� |jj�d|_d|_y#tj
$r�}|jdtjtjfvrYd}~y|jdtjk(r|j�cYd}~Sd|jdvsd|jdvr|j�cYd}~S�d}~wt$r?}|jdtjk(r|j�cYd}~SYd}~yd}~wwxYw)NTFr�SSLV3_ALERT_BAD_CERTIFICATEr+�SSLV3_ALERT_CERTIFICATE_UNKNOWN)r�do_handshakerrry�SSLError�args�SSL_ERROR_WANT_READ�SSL_ERROR_WANT_WRITE�
SSL_ERROR_EOF�handle_close�OSError�errno�ECONNABORTED)r�errs rr�z"DummyPOP3Handler._do_tls_handshake�s���
*����(�(�*� #'���$)��!��!�<�<�
��8�8�A�;�3�#:�#:�#&�#;�#;�#=�=���X�X�a�[�C�$5�$5�5��,�,�.�.�3�s�x�x��{�B�7�3�8�8�A�;�F��,�,�.�.����
/��8�8�A�;�%�"4�"4�4��,�,�.�.�5��
/�sD�+�D*�/C�2/C�!D*�'1C�D*�C�D*�+/D%�D*�%D*c���|jr|j�y tjj |�y#t
j$r|j�YywxYwr")rr�r r�handle_readry�SSLEOFErrorr�r=s rr�zDummyPOP3Handler.handle_read�sO��� � ��&�&�(�(��'�'�3�3�D�9�����(��%�%�'�(�s�?�#A%�$A%N)�__name__�
__module__�__qualname__rfrsrr&r:r>rrErHrKrMrP�cmd_uidlrT�cmd_toprVrYr\r^rarirqrtrgr�r�r�r<r rrr2s����,G�+H�I�E��K�"�$�C� �L��+�
%�
�6��H�2��G�6�'�'�'����.�
� H�$ *�* (�Sr rc�\�eZdZeZejfd�Zd�Zd�Z d�Z
d�Zd�ZeZ
d�Zd�Zy )
�DummyPOP3Serverc��tjj|�tjj|�d|_|j
|tj�|j|�|jd�d|_tj�|_
|jj�dd\|_|_d|_y)NT�F�)� threading�Threadrr
�
dispatcher�daemon�
create_socketr�SOCK_STREAM�bind�listen�active�Lock�active_lock�getsockname�host�port�handler_instance)r�address�afs rrzDummyPOP3Server.__init__�s������!�!�$�'����$�$�T�*�������2�v�1�1�2�� � �'�����A�����$�>�>�+���#�{�{�6�6�8��!�<��� �4�9� $��r c��tj�|_tjj |�|jj�yr")r��Event�_DummyPOP3Server__flagr��start�waitr=s rr�zDummyPOP3Server.start�s4���o�o�'��������t�$������r c��d|_|jj� |jrYtjrI|j
5tjdd��ddd�|jrtjr�Itjd��y#1swY�=xYw#tjd��wxYw)NTg�������?r+)�timeout�count)�
ignore_all)r�r��setr
�
socket_mapr��loop� close_allr=s r�runzDummyPOP3Server.run�s������������ 0��+�+�(�"5�"5��%�%��M�M�#�Q�7�&��+�+�(�"5�"5�
���$�/�&�%��
���$�/�s#�(B+�B�#$B+�B(�$B+�+Cc�2�d|_|j�y�NF)r�r.r=s r�stopzDummyPOP3Server.stop�s������ � �r c�0�|j|�|_yr")�handlerr�)rr�addrs r�handle_acceptedzDummyPOP3Server.handle_accepted�s�� $���T� 2��r c�$�|j�yr")�closer=s r�handle_connectzDummyPOP3Server.handle_connect�s���
�
�r c��y)Nrr<r=s r�writablezDummyPOP3Server.writable�s��r c���r"r<r=s rr>zDummyPOP3Server.handle_error�r?r N)r�r�r�rr�r�AF_INETrr�r�r�r�r�r�r�r>r<r rr�r��s;���G�#)�>�>�
%��0��
3�� �K��r r�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z
d �Zd
�Zd�Z
d�Zd
�Zd�Zej$dd��d��Zej$dd��d��Zd�Zd�Zd�Zd�Zd�Zd�Zed��Zed��Zed��Zy)�
TestPOP3Classc�D�|j|jd��y)N�+OK)�
assertTrue�
startswith�r�resps r�assertOKzTestPOP3Class.assertOKs���������/�0r c��tttf�|_|jj �tj|jj|jjtj��|_y�N�r�)r��HOST�PORT�serverr��poplib�POP3r�r��test_support�LOOPBACK_TIMEOUT�clientr=s r�setUpzTestPOP3Class.setUpsT��%�t�T�l�3����������k�k�$�+�+�"2�"2�D�K�K�4D�4D�*6�*G�*G�I��r c�z�|jj�|jj�d|_yr")r�r�r�r�r=s r�tearDownzTestPOP3Class.tearDowns)����������������r c�X�|j|jj�d�y)Ns(+OK dummy pop3 server ready. <timestamp>)�assertEqualr��
getwelcomer=s r�test_getwelcomezTestPOP3Class.test_getwelcomes#��������/�/�1�D� Fr c�n�|jtj|jjd�y)Nz echo -err)�assertRaisesr��error_protor�� _shortcmdr=s r�test_exceptionszTestPOP3Class.test_exceptionss$�����&�,�,�d�k�k�.C�.C�[�Qr c���|j|jjd��|jtj
|jjd�y)NrG�invalid)r�r��userr�r�r�r=s r� test_userzTestPOP3Class.test_users?���
�
�d�k�k�&�&�w�/�0����&�,�,�d�k�k�.>�.>� �Jr c���|j|jjd��|jtj
|jjd�y)NrJr�)r�r��pass_r�r�r�r�r=s r�
test_pass_zTestPOP3Class.test_pass_s?���
�
�d�k�k�'�'��1�2����&�,�,�d�k�k�.>�.>� �Jr c�X�|j|jj�d�y)N)�
�d)r�r��statr=s r� test_statzTestPOP3Class.test_stat!s��������)�)�+�Y�7r c���|j|jj�ddgd�df�|j|jjd�j d��y)Nr+)s1 1s2 2s3 3s4 4s5 5��1sOK 1 1)r�r��listr��endswithr=s r� test_listzTestPOP3Class.test_list$sY��������)�)�+�A�B�/�B��� �
������(�(��-�6�6�y�A�Br c�l�dgd�df}|jjd�}|j||�y)N�
+OK 116 bytes�sFrom: postmaster@python.orgsContent-Type: text/plainsMIME-Version: 1.0sSubject: Dummyr sline1sline2sline3�q�foo)r��retrr�)r�expectedrs r� test_retrzTestPOP3Class.test_retr*s<��$�8�� ��
�k�k���u�%������h�'r c��|jtj|jjdtj
dzdzz�y)Nzecho +%sr��a)r�r�r�r�r��_MAXLINEr=s r�test_too_long_linesz!TestPOP3Class.test_too_long_lines3s;�����&�,�,�d�k�k�.C�.C�$����2�)=��(D�E� Gr c�X�|j|jjd��y�Nr)r�r��deler=s r� test_delezTestPOP3Class.test_dele7����
�
�d�k�k�&�&�u�-�.r c�V�|j|jj��yr")r�r��noopr=s r� test_noopzTestPOP3Class.test_noop:s���
�
�d�k�k�&�&�(�)r c�X�|j|jjd��yr
)r�r��rpopr=s r� test_rpopzTestPOP3Class.test_rpop=rr �md5T)�opensslc�Z�|j|jjdd��y)Nr�
dummypassword)r�r��apopr=s r�test_apop_normalzTestPOP3Class.test_apop_normal@s���
�
�d�k�k�&�&�u�o�>�?r c���dddzz}tj|jd|�5|jtj
|jjdd�ddd�y#1swYyxYw)Nr��<i@B�welcomer �kb)r�� swap_attrr�r�r�r�r)r�evil_welcomes r�test_apop_REDOSzTestPOP3Class.test_apop_REDOSDsY������0��
�
#�
#�D�K�K��L�
I����f�0�0�$�+�+�2B�2B�C��N�J�
I�
I�s�7A*�*A3c�j�dgd�df}|j|jjdd�|�y)Nrrrr+)r�r��top)rrs r�test_topzTestPOP3Class.test_topOs7��%�4�� ��
���������A�.��9r c�n�|jj�|jjd�yr
)r��uidlr=s r� test_uidlzTestPOP3Class.test_uidlWs$��������������r c��d|jj_|jtj
|jj�yr�)r�r�rsr�r�r�r��utf8r=s r�test_utf8_raises_if_unsupportedz-TestPOP3Class.test_utf8_raises_if_unsupported[s4��*/������'����&�,�,�d�k�k�.>�.>�?r c��d|jj_d}|jj �}|j||�y)NTs+OK I know RFC6856)r�r�rsr�r+r�)rr�results r� test_utf8zTestPOP3Class.test_utf8_s;��*.������'�(�����!�!�#�������*r c�z�|jj�}|jd|j�v�y)Nr�r��capar��keys�rr2s r� test_capazTestPOP3Class.test_capaes,���{�{���!�����(�D�I�I�K�7�8r c���|jj�}|j|�|j|jj�|j|jj
�yr")r��quitr��assertIsNone�sock�filer�s r� test_quitzTestPOP3Class.test_quitisP���{�{���!����������$�+�+�*�*�+����$�+�+�*�*�+r c�z�|jj�}|jd|j�v�yrcr1r4s r�test_stls_capazTestPOP3Class.test_stls_capaos+���{�{���!������$�)�)�+�-�.r c�`�d}|jj�}|j||�y)N�+OK Begin TLS negotiation)r��stlsr�)rrr�s r� test_stlszTestPOP3Class.test_stlsts)��/���{�{���!������x�(r c�~�d}tjtj�}|jt�|j|jtj�|j|jd�|jtj�5|jj|��}ddd�tjd|jj t"j$��|_|jj|��}|j||�y#1swY�wxYw)Nr?T�r�� localhostr�)ryrz�PROTOCOL_TLS_CLIENT�load_verify_locations�CAFILEr��verify_mode�
CERT_REQUIRED�check_hostnamer��CertificateErrorr�r@r�r�r�r�r�r�)rr�ctxr�s r�test_stls_contextzTestPOP3Class.test_stls_contextzs���/���n�n�S�4�4�5���!�!�&�)�������#�*;�*;�<�����+�+�T�2�
�
�
�s�3�3�
4��;�;�#�#�C�#�0�D�5��k�k�+�t�{�{�/?�/?�*6�*G�*G�I����{�{�����,������x�(�5�
4�s� D3�3D<N)r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr�requires_hashdigestrr#r&r)r,r/r5r;�requires_sslr=rArMr<r rr�r�s���1�I��F�R�K�K�8�C�(�G�/�*�/�(�^�'�'��t�<�@�=�@�(�^�'�'��t�<�O�=�O�:� �@�+�9�,��/��/��)��)�
�)��)r r�)�
SSLConnectionc��eZdZd�Zy)�DummyPOP3_SSLHandlerc���tjj||�|j�|j d�g|_|j
d�d|_d|_y)NrrTF) r rr�secure_connectionrrrrrrs rrzDummyPOP3_SSLHandler.__init__�sU�����(�(��t�4��"�"�$�����(��D�N��I�I�@�A�"�D�O� %�D�r N)r�r�r�rr<r rrRrR�s�� &r rRc�.�eZdZd�Zd�Zd�Zd�ZeZd�Zy)�TestPOP3_SSLClassc��tttf�|_t|j_|jj
�tj|jj|jj�|_yr")r�r�r�r�rRr�r�r�rr�r�r�r=s rr�zTestPOP3_SSLClass.setUp�sT��%�t�T�l�3���2������������o�o�d�k�k�&6�&6����8H�8H�I��r c�D�|jdtj�y)Nr)�assertInr��__all__r=s r�test__all__zTestPOP3_SSLClass.test__all__�s���
�
�j�&�.�.�1r c�x�tjtj�}d|_tj|_|jj�tj|jj|jj|��|_|j|jjtj�|j!|jjj"|�|j%|jj'�j)d��y)NFrCr�)ryrzrErJ� CERT_NONErHr�r7r�rr�r�r��assertIsInstancer9� SSLSocket�assertIsr�r�rr�)rrLs r�test_contextzTestPOP3_SSLClass.test_context�s����n�n�S�4�4�5��"����-�-����������o�o�d�k�k�&6�&6����8H�8H�03�5������d�k�k�.�.��
�
�>��
�
�d�k�k�&�&�.�.��4�������(�(�*�5�5�f�=�>r c�l�|jtj|jj�yr"�r�r�r�r�r@r=s rrAzTestPOP3_SSLClass.test_stls��"�����&�,�,�d�k�k�.>�.>�?r c�z�|jj�}|jd|j�v�yrc�r�r2�assertFalser3r4s rr=z TestPOP3_SSLClass.test_stls_capa�s-���{�{���!������4�9�9�;�.�/r N) r�r�r�r�r[rarArMr=r<r rrVrV�s%��J�2�
?�@�"��0r rVc�(�eZdZd�Zd�Zd�ZeZd�Zy)�TestPOP3_TLSClassc�F�tttf�|_|jj �tj|jj|jjtj��|_|jj�yr�)
r�r�r�r�r�r�r�r�r�r�r�r�r@r=s rr�zTestPOP3_TLSClass.setUp�sd��%�t�T�l�3����������k�k�$�+�+�"2�"2�D�K�K�4D�4D�*6�*G�*G�I��������r c�:�|jj�1|jj� |jj�|jj�d|_y#tj
$r|jj
�Y�QwxYwr") r�r:r9r7r�r�r�r�r�r=s rr�zTestPOP3_TLSClass.tearDown�sx���;�;���'�D�K�K�,<�,<�,H�
$���� � �"�
�����������%�%�
$����!�!�#�
$�s�A*�*-B�Bc�l�|jtj|jj�yr"rcr=s rrAzTestPOP3_TLSClass.test_stls�rdr c�z�|jj�}|jd|j�v�y)NsSTLSrfr4s rr=z TestPOP3_TLSClass.test_stls_capa�s-���{�{���!������D�I�I�K�/�0r N)r�r�r�r�r�rArMr=r<r rriri�s����@�"��1r ric�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�TestTimeoutsc�$�tj�|_tjtjtj
�|_|jjd�tj|j�|_
tj|j|j|jf��|_
d|j_|jj�|jj!�y)N�<)�targetr�T)r�r��evtrr�r�r9�
settimeoutr� bind_portr�r�r��threadr�r�r�r=s rr�zTestTimeouts.setUp�s����?�?�$����M�M�&�.�.�&�2D�2D�E�� �� � ���R� �!�+�+�D�I�I�6�� ��&�&�d�k�k����4�9�9�@U�V���!��������������
�
�r c�F�|jj�d|_yr")rvr.r=s rr�zTestTimeouts.tearDown�s����������r c��|j�|j� |j�\}}|jd�|j �|j �y#t
$rY�wxYw#|j �wxYw)Ns
+ Hola mundo
)r�r��accept�sendr��TimeoutError)rrs�servrr�s rr�zTestTimeouts.server�si�����
���� � �����J�D�$��I�I�'�(��J�J�L�
�J�J�L��� �� ��
�J�J�L�s#�4A'�' A3�0A6�2A3�3A6�6Bc���|jtj��tjtj
� t
jt|j�}tjd�|j|jj�tj
�|j�y#tjd�wxYwr")r8r�getdefaulttimeout�setdefaulttimeoutr�r�r�r�r�r�r�r9�
gettimeoutr��r�pops r�testTimeoutDefaultzTestTimeouts.testTimeoutDefault�s������&�2�2�4�5�� � ��!>�!>�?� +��+�+�d�D�I�I�.�C��$�$�T�*�������,�,�.��0M�0M�N�� � ���
�$�$�T�*�s�$C
�
C!c��|jtj��tjd� t j
t|jd��}tjd�|j|jj��|j�y#tjd�wxYw)N�r�)r8rr~rr�r�r�r�r9r�r�r�s r�testTimeoutNonezTestTimeouts.testTimeoutNones������&�2�2�4�5�� � ��$� +��+�+�d�D�I�I�t�<�C��$�$�T�*����#�(�(�-�-�/�0�� � ���
�$�$�T�*�s�&B/�/Cc��tjt|jtj
��}|j
|jj�tj
�|j�|jt�5tjt|jd��ddd�y#1swYyxYw)Nr�r)r�r�r�r�r�r�r�r9r�r�r��
ValueErrorr�s r�testTimeoutValuezTestTimeouts.testTimeoutValuesx���k�k�$�� � �<�3P�3P�Q��������,�,�.��0M�0M�N�� � ��
�
�
�z�
*��K�K��d�i�i��3�+�
*�
*�s�'C�CN) r�r�r�r�r�r�r�r�r�r<r rroro�s ����
���4r roc�t�tj�}tjtjg|���yr")r�threading_setup�unittest�addModuleCleanup�threading_cleanup)�thread_infos r�setUpModuler�s*��"�2�2�4�K����.�@�@�O�;�Or �__main__)0r�r�osr�r�r�rr�testrr��test.supportrrrr r
�requires_working_socketr�r�rgr3ry�pathr.�dirname�__file__�curdirr}rGrOrOrSrrr�r�r�r��test.test_ftplibrPrRrVriror�r��mainr<r r�<module>r�s���$�
�
� ����)�(�'�&�)�!�!�%��$�$�D�1���������
�6�:����L��w�w�|�|�B�G�G�O�O�H�5�B����J�P^�_�H�
�W�W�\�\�"�'�'�/�/�(�3�@�r�y�y�*�n�
]�F��,�(;�<��
8� �
� �[(�x�*�*�[(�z0�h�)�)�9�+;�+;�0�fD)�H�D)�N�.� &�}�.>� &��0�
�0��0�D�1�
�1��1�B64�8�64�rP�
�z���H�M�M�O�r
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists