HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_urllib2_localnet.cpython-310.opt-2.pyc
o

�i�e�@s�ddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddlm
Z
ddlmZzddlZWneyGdZYnwej�e�Zej�ed�Zej�ed�ZGdd�dejj�ZGd	d
�d
ej�ZGdd�d�ZGd
d�dejj�ZGdd�dejj�Z Gdd�de	j!�Z"ej#ddd�Gdd�de	j!��Z$dd�Z%Gdd�de	j!�Z&dd�Z'e(dkr�e	�)�dSdS)�N)�hashlib_helper)�threading_helper)�warnings_helperzkeycert.pemzkeycert2.pemc@seZdZ	dd�Zdd�ZdS)�LoopbackHttpServercCs"tjj�|||�|j�d�dS)Ng�������?)�http�server�
HTTPServer�__init__�socket�
settimeout)�selfZserver_addressZRequestHandlerClass�r
�7/usr/local/lib/python3.10/test/test_urllib2_localnet.pyr	"s

�zLoopbackHttpServer.__init__cCs"	|j��\}}|�d�||fS)Ng$@)r
�acceptr)r�requestZclient_addressr
r
r�get_request+s
zLoopbackHttpServer.get_requestN)�__name__�
__module__�__qualname__r	rr
r
r
rrs	rc@�&eZdZ	dd�Zdd�Zdd�ZdS)�LoopbackHttpServerThreadcCs<tj�|�d|_t��|_d|_td|�|_|jj	|_
dS)NFzHTTP/1.0)z	127.0.0.1r)�	threading�Threadr	�_stop_server�Event�readyZprotocol_versionr�httpdZserver_port�port�r�request_handlerr
r
rr	:s
�z!LoopbackHttpServerThread.__init__cCs	d|_|��|j��dS)NT)r�joinrZserver_close�rr
r
r�stopCszLoopbackHttpServerThread.stopcCs(|j��|js|j��|jrdSdS�N)r�setrr�handle_requestr!r
r
r�runKs

�zLoopbackHttpServerThread.runN)rrrr	r"r&r
r
r
rr7s
	rc@sVeZdZ	dd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�DigestAuthHandlercCs"d|_g|_i|_d|_d|_dS)Nrz
Test Realm�auth)�_request_num�_nonces�_users�_realm_name�_qopr!r
r
rr	Us

zDigestAuthHandler.__init__cC�
||_dSr#)r-)rZqopr
r
r�set_qop\�
zDigestAuthHandler.set_qopcCr.r#)r+)rZusersr
r
r�	set_users_s
zDigestAuthHandler.set_userscCr.r#)r,)rZrealmr
r
r�	set_realmcr0zDigestAuthHandler.set_realmcCs8|jd7_t�t|j��d����}|j�|�|S)N��ascii)r)�hashlib�md5�str�encode�	hexdigestr*�append)r�noncer
r
r�_generate_noncefsz!DigestAuthHandler._generate_noncecCs�|�d�}||dd�}|�d�}i}|D](}|�d�\}}|��}|ddkr6|ddkr6|dd�}n|��}|||<q|S)N� r3�,�=r�"���)�find�split�strip)rZauth_strZfirst_space_index�parts�	auth_dict�part�name�valuer
r
r�_create_auth_dictls


z#DigestAuthHandler._create_auth_dictcCs�i}|�|�||d<||d<||d<d|}t�|�d����}d|}t�|�d����}	||d<|	|d<d	|}
t�|
�d����}||d
kS)N�password�method�uriz#%(username)s:%(realm)s:%(password)sr4z%(method)s:%(uri)s�HA1�HA2z3%(HA1)s:%(nonce)s:%(nc)s:%(cnonce)s:%(qop)s:%(HA2)s�response)�updater5r6r8r9)rrFrKrLrMZ
final_dictZHA1_strrNZHA2_strrOZresponse_strrPr
r
r�_validate_auth}s 
�z DigestAuthHandler._validate_authcCsN|�dd�|�dd�|�dd|j|j|��f�|��|j�d�dS)	Ni�zProxy Authentication Required�Content-Type�	text/htmlzProxy-Authenticatez(Digest realm="%s", qop="%s",nonce="%s", sProxy Authentication Required.F)�
send_response�send_headerr,r-r<�end_headers�wfile�writerr
r
r�_return_auth_challenge�s��z(DigestAuthHandler._return_auth_challengecCs�	t|j�dkr
dSd|jvr|�|�S|�|jd�}|d|jvr+|j|d}n|�|�S|�d�|jvr=|�|�S|j�|d�d}|j|j	fD]
}|�
|||j|�rZd}qM|sb|�|�SdS)NrTzProxy-Authorization�usernamer;F)�lenr+�headersrZrJ�getr*�remove�path�
short_pathrRZcommand)rrrFrKZauth_validatedr`r
r
rr%�s4

�

��
z DigestAuthHandler.handle_requestN)rrrr	r/r1r2r<rJrRrZr%r
r
r
rr'Rsr'c@sdeZdZ	dZdZdZdeefZe�e�	d���
d�Zdd�Zdd	�Z
d
d�Zdd
�Zdd�ZdS)�BasicAuthHandler�testUser�testPass�Testz%s:%sr4cOs tjjj|g|�Ri|��dSr#)rr�BaseHTTPRequestHandlerr	)r�args�kwargsr
r
rr	�s zBasicAuthHandler.__init__cG�dSr#r
�r�formatrgr
r
r�log_message�szBasicAuthHandler.log_messagecCs"|�d�|�dd�|��dS)N���Content-typerT)rUrVrWr!r
r
r�do_HEAD�s
zBasicAuthHandler.do_HEADcCs4|�d�|�dd|j�|�dd�|��dS)Ni�zWWW-AuthenticatezBasic realm="%s"rnrT)rUrV�REALMrWr!r
r
r�do_AUTHHEAD�s
zBasicAuthHandler.do_AUTHHEADcCsl|j�dd�s|��|j�d�dS|j�dd�d|jkr0|�d�|��|j�d�dS|��dS)NZ
Authorization�sNo Auth header receivedzBasic rmsIt works)r]r^rqrXrY�ENCODED_AUTHrUrWr!r
r
r�do_GET�s��
zBasicAuthHandler.do_GETN)rrr�USER�PASSWDrpZUSER_PASSWD�base64Z	b64encoder8�decodersr	rlrorqrtr
r
r
rrb�srbc@r)�FakeProxyHandlercOs&||_tjjj|g|�Ri|��dSr#)�digest_auth_handlerrrrfr	)rrzrgrhr
r
rr	�s zFakeProxyHandler.__init__cGrir#r
rjr
r
rrlszFakeProxyHandler.log_messagecCsztj�|jd�\}}}}}}||_|j�|�r;|�dd�|�dd�|�	�|j
�td|jd��|j
�d�dSdS)	NrrmZOKrSrTzYou've reached %s!<BR>r4sFOur apologies, but our server is down due to a sudden zombie invasion.)
�urllib�parse�urlparser`rarzr%rUrVrWrXrY�bytes)rZscm�netlocr`�params�query�fragmentr
r
rrt	s���zFakeProxyHandler.do_GETN)rrrr	rlrtr
r
r
rry�s
rycsPeZdZdZdZdZdZ�fdd�Zdd�Z�fd	d
�Z	dd�Z
d
d�Z�ZS)�BasicAuthTestsrcrdZ	IncorrectrecsTtt|���dd�}t|�|_|�|j�d|jj|_|j�	�|jj
��dS)Nc_st|i|��Sr#)rb�rgrhr
r
r�#http_server_with_basic_auth_handler!szABasicAuthTests.setUp.<locals>.http_server_with_basic_auth_handlerzhttp://127.0.0.1:%s)�superr��setUprr�
addCleanup�stop_serverr�
server_url�startr�wait)rr���	__class__r
rr�s

zBasicAuthTests.setUpcC�|j��d|_dSr#�rr"r!r
r
rr�)�

zBasicAuthTests.stop_servercstt|���dSr#)r�r��tearDownr!r�r
rr�-szBasicAuthTests.tearDowncCsztj��}|�|j|j|j|j�tj�tj�	|��z
|�
tj�|j��WdStjj
y<|�d|j�YdSw)Nz!Basic auth failed for the url: %s)r{r�HTTPBasicAuthHandler�add_passwordrpr�rurv�install_opener�build_opener�
assertTrue�urlopen�error�	HTTPError�fail�rZahr
r
r�test_basic_auth_success0s
�z&BasicAuthTests.test_basic_auth_successcCsRtj��}|�|j|j|j|j�tj�tj�	|��|�
tjjtjj
|j�dSr#)r{rr�r�rpr�ru�INCORRECT_PASSWDr�r��assertRaisesr�r�r�r�r
r
r�test_basic_auth_httperror9s
z(BasicAuthTests.test_basic_auth_httperror)
rrrrurvr�rpr�r�r�r�r��
__classcell__r
r
r�rr�s	r�r6T)ZopensslcsTeZdZdZdZdZdZ�fdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Z�Z
S)�ProxyAuthTestszhttp://localhostZtesterZtest123Z	TestRealmcs�tt����dd�}��|tj���dtjd<dtjd<t��_�j�	�j
�ji��j��j
��fdd�}t|��_���j��j���jj��d�jj}tj�d	|i�}tj���_tj�|�j��_dS)
NcS�tj��tj�|�dSr#��os�environ�clearrQ�Zold_environr
r
r�restore_environK�
z-ProxyAuthTests.setUp.<locals>.restore_environrr�NO_PROXY�no_proxycst�jg|�Ri|��Sr#)ryrzr�r!r
r�create_fake_proxy_handlerVsz7ProxyAuthTests.setUp.<locals>.create_fake_proxy_handlerzhttp://127.0.0.1:%dr)r�r�r�r�r�r��copyr'rzr1rurvr2rprrr�r�rr�rr{rZProxyHandlerZProxyDigestAuthHandler�proxy_digest_handlerr��opener)rr�r�Z	proxy_url�handlerr�r!rr�Hs&




�zProxyAuthTests.setUpcCr�r#r�r!r
r
rr�cr�zProxyAuthTests.stop_servercCsF|j�|j|j|j|jd�|j�d�|�t	j
j|jj
|j�dS)NZbadr()r�r�rp�URLrurvrzr/r�r{r�r�r��openr!r
r
r�-test_proxy_with_bad_password_raises_httperrorgs�
�z<ProxyAuthTests.test_proxy_with_bad_password_raises_httperrorcCs(|j�d�|�tjj|jj|j�dS�Nr()	rzr/r�r{r�r�r�r�r�r!r
r
r�,test_proxy_with_no_password_raises_httperroros

�z;ProxyAuthTests.test_proxy_with_no_password_raises_httperrorcCs||j�|j|j|j|j�|j�d�|j�	|j��}|�
�r,	|�
�sWd�dSWd�dS1s7wYdSr�)r�r�rpr�rurvrzr/r�r��read�r�resultr
r
r�test_proxy_qop_auth_worksus�
��"�z(ProxyAuthTests.test_proxy_qop_auth_workscCs�|j�|j|j|j|j�|j�d�z	|j�	|j�}Wnt
jjy(YdSw|�|�
�r=	|�
�s0Wd�dSWd�dS1sHwYdS)Nzauth-int)r�r�rpr�rurvrzr/r�r�r{r��URLErrorr�r�r
r
r�0test_proxy_qop_auth_int_works_or_throws_urlerror}s ��
��"�z?ProxyAuthTests.test_proxy_qop_auth_int_works_or_throws_urlerror)rrrr�rurvrpr�r�r�r�r�r�r�r
r
r�rr�@sr�csG��fdd�dtjj���S)NcsBeZdZdZgZgZdZdd�Zdd�Z��fdd�Z	d	d
�Z
dS)z1GetRequestHandler.<locals>.FakeHTTPRequestHandlerz	TestHTTP/�PcSs0|��}|r|j�|�}||d�}|sdSdSr#)�	send_headrXrY)r�body�doner
r
rrt�s
�z8GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_GETcSs2|jd}|j�t|��}|��|j�|�dS)NzContent-Length)r]Zrfiler��intrt�requestsr:)rZcontent_lengthZ	post_datar
r
r�do_POST�s
z9GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_POSTcs||j�_|j�|j���d�\}}}|�|�|D]\}}|�||d|ji�q|r8|�dd�|�	�|S|�	�dS)Nrrrnz
text/plain)
r]�headers_receivedr�r:r`�poprUrVrrW)rZ
response_coder]r��headerrI��FakeHTTPRequestHandler�	responsesr
rr��s
z;GetRequestHandler.<locals>.FakeHTTPRequestHandler.send_headcWrir#r
)rrgr
r
rrl�sz=GetRequestHandler.<locals>.FakeHTTPRequestHandler.log_messageN)rrrZserver_versionr�r�rrtr�r�rlr
r�r
rr��sr�)rrrf)r�r
r�r�GetRequestHandler�s&r�cs�eZdZ	�fdd�Zd.dd�Zdd�Zd.dd	�Zd.d
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Z�ZS)/�TestUrlopencsNtt|���|�tjj�dd�}|�|tj�	��dtjd<dtjd<dS)NcSr�r#r�r�r
r
rr��r�z*TestUrlopen.setUp.<locals>.restore_environ�*r�r�)
r�r�r�r�r{r�
urlcleanupr�r�r�)rr�r�r
rr��s
zTestUrlopen.setUpNcKsxg}tjj||fi|��}z$|�|�d��|�|���|�|�d��|�|���W|��n|��wd�	|�S)Nrmi�)
r{rr��extend�	readlinesr:�readliner��closer )r�url�datarh�l�fr
r
rr��s
zTestUrlopen.urlopencCr�r#r�r!r
r
rr��r�zTestUrlopen.stop_servercCsZ|dur
dgdfg}t|�}t|�|_|�|j�|j��|jj��|jj}||_|S)Nrms
we don't care)	r�rrr�r�r�rr�r)rr�r�rr
r
r�start_server�s

zTestUrlopen.start_servercKs^ttjd�s|�d�ddlm}|durdgdfg}t|�}||fd|i|��}|j|_|S)NZHTTPSHandlerzssl support requiredr)�make_https_serverrm�
we care a bitZ
handler_class)�hasattrr{r�skipTestZtest.ssl_serversr�r�r)rr�rhr�r�rr
r
r�start_https_server�s
zTestUrlopen.start_https_servercCsVd}ddgdfdg|fg}|�|�}|�d|j�}|�||�|�|jddg�dS)	NsWe got here...i.)ZLocationz(http://localhost:%(port)s/somewhere_elserrrm�http://localhost:%s/�/z/somewhere_else�r�r�r�assertEqualr�)r�expected_responser�r�r�r
r
r�test_redirection�s��
zTestUrlopen.test_redirectioncCs@d}d}ddg|fg}|�|�}|�d|j�}|�||�dS)Nshello worldsa
hello worl
1
d
0
rm)zTransfer-EncodingZchunkedr�)r�r�rr�)rr�Z
chunked_startrPr�r�r
r
r�test_chunkeds�
zTestUrlopen.test_chunkedc
Cs�d}|�dg|fg�}z
|�d|j�Wntjjy1}z|��}|��WYd}~n
d}~ww|�d�|�	||�|�	|j
dg�dS)NsBad bad bad...i�zhttp://localhost:%s/weeblez404 should raise URLErrorz/weeble)r�r�rr{r�r�r�r�r�r�r�)rr�r�r�r�r
r
r�test_404s��
zTestUrlopen.test_404cCsFd}|�dg|fg�}|�d|j�}|�||�|�|jdg�dS)N�
pycon 2008...rm�http://localhost:%s/bizarre�/bizarrer��rr�r�r�r
r
r�test_200#s
zTestUrlopen.test_200cCsJd}|�dg|fg�}|�d|jd�}|�||�|�|jddg�dS)Nr�rmr�sget=with_feelingr�r�r�r
r
r�test_200_with_parameters*s�z$TestUrlopen.test_200_with_parameterscCs8|��}tjtd�}|jd|j|d�}|�|d�dS)N�Zcafile�https://localhost:%s/bizarre��contextr�)r��ssl�create_default_context�CERT_localhostr�rr�)rr�r�r�r
r
r�
test_https2szTestUrlopen.test_httpsc	Cs|jtd�}t�dtf��i|jd|jtd�}|�|d�|�t	j
j��}|jd|jtd�Wd�n1s:wY|jtd�}|�t	j
j��}|jd|jtd�Wd�n1sawYWd�dSWd�dS1sywYdS)N��certfilerrr�r�r�)
r�r�r�check_warnings�DeprecationWarningr�rr�r�r{r�r��CERT_fakehostname)rr�r��cmr
r
r�test_https_with_cafile8s(������"�z"TestUrlopen.test_https_with_cafilec	Cs�|jtd�}t�dtf��2|�tjj��}|j	d|j
dd�Wd�n1s*wYWd�dSWd�dS1sBwYdS)Nr�rrr�T)Z	cadefault)r�r�rr�r�r�r{r�r�r�r)rr�r�r
r
r�test_https_with_cadefaultIs���"�z%TestUrlopen.test_https_with_cadefaultcs�tdur	|�d�tjs|�d�d��fdd�}t�tj�}|�|�|j|td�}tjtd�}|j	d|j
|d�|��d	�dS)
Nzssl module requiredzSNI support required in OpenSSLcs|�dSr#r
)Zssl_sockZserver_nameZinitial_context�Zsni_namer
r�cb_sniWsz*TestUrlopen.test_https_sni.<locals>.cb_sni)r�r�r�zhttps://localhost:%sr��	localhost)r�r�ZHAS_SNIZ
SSLContextZPROTOCOL_TLS_SERVERZset_servername_callbackr�r�r�r�rr�)rr�r�r�r
r�r�test_https_sniQs


zTestUrlopen.test_https_snicCsd|��}tjjd|jddid�}tj�|��Wd�n1s"wY|�|jdd�dS)Nr�ZRangezbytes=20-39�r])r�r{r�Requestrr�r�r��rr�Zreqr
r
r�test_sending_headersas��z TestUrlopen.test_sending_headerscCsv|��}tjjd|jddid�}tj�|��Wd�n1s"wY|�d|j���|�	d|j���dS)Nr�z
X-SoMe-hEaderZfoobarr�z
X-Some-Header)
r�r{rrrr�ZassertInr��keysZassertNotInrr
r
r�test_sending_headers_camelis��z&TestUrlopen.test_sending_headers_camelcCsp|��}tj�d|j��!}dD]
}|�t||�d|�q|�|��d�Wd�dS1s1wYdS)N�http://localhost:%s)r�r��info�geturlz3object returned from urlopen lacks the %s attributezcalling 'read' failed)r�r{rr�rr�r�r�)rr��open_url�attrr
r
r�
test_basicrs�"�zTestUrlopen.test_basiccCsl|��}tj�d|j�}|�|��}Wd�n1swY|�|tjj	d�|�
|��d�dS)NrzEobject returned by 'info' is not an instance of email.message.MessageZplain)r�r{rr�rrZassertIsInstance�email�messageZMessager�Zget_content_subtype)rr�rZinfo_objr
r
r�	test_infozs�
��zTestUrlopen.test_infocCs\|��}tj�d|j�}|�|��}Wd�n1swY|�|d|j�dS)Nr)r�r{rr�rrr�)rr�rr�r
r
r�test_geturl�s
�zTestUrlopen.test_geturlcCsBd}|�dg|fg�}tj�d|j�}|D]}|�||�qdS)Nr�rmr)r�r{rr�rr�)rr�r�r��liner
r
r�test_iteration�s�zTestUrlopen.test_iterationc
Cs�ddddddg}d�|�}|�dg|fg�}tj�d	|j�}t|�D]\}}|�|||d
|t||�t|�f�q%|�|dt|��dS)NsWe
sgot
shere
s	verylong i �
r�rmrzQFetched line number %s doesn't match expected:
    Expected length was %s, got %sr3)	r r�r{rr�r�	enumerater�r\)r�linesr�r�r��indexrr
r
r�test_line_iteration�s
��zTestUrlopen.test_line_iterationcCs�|�dgdfdgdfg�}tj��}tj�d|j�}|�d|j�|�|d�	d��|�d|j�|�d|�
d��|�|d�	d��|�d	|j�|�d
|�
d��dS)Nrmsanyr�1zus-ascii�1zContent-lengthZ
1234567890s
1234567890Z10)r�r{rr�rrr�r�r�r8Z
get_header)rr�r�rr
r
r�test_issue16464�s�
zTestUrlopen.test_issue16464r#)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
r
rrrrr�r
r
r�rr��s0




	r�cCs t��}tjtjg|�R�dSr#)rZthreading_setup�unittestZaddModuleCleanupZthreading_cleanup)�thread_infor
r
r�setUpModule�sr�__main__)*rwr�r�urllib.parser{Zurllib.requestZhttp.serverrrrr5Ztest.supportrrrr��ImportErrorr`�dirname�__file__�herer r�r�rrrrrr'rfrbryZTestCaser�Zrequires_hashdigestr�r�r�rr�mainr
r
r
r�<module>sF�y,!(M+{�