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.7/test/__pycache__/test_urllib2_localnet.cpython-37.opt-2.pyc
B

��ga�@sfddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZyddl
Z
Wnek
rxdZ
YnXej�e�Zej�ed�Zej�ed�ZGdd�dejj�ZGdd�dej�ZGd	d
�d
�ZGdd�dejj�ZGd
d�dejj�ZGdd�de	j�Z Gdd�de	j�Z!dd�Z"Gdd�de	j�Z#da$dd�Z%dd�Z&e'dk�rbe	�(�dS)�N)�supportzkeycert.pemzkeycert2.pemc@seZdZdd�Zdd�ZdS)�LoopbackHttpServercCs"tjj�|||�|j�d�dS)Ng�������?)�http�server�
HTTPServer�__init__�socket�
settimeout)�selfZserver_addressZRequestHandlerClass�r�6/usr/local/lib/python3.7/test/test_urllib2_localnet.pyr s
zLoopbackHttpServer.__init__cCs |j��\}}|�d�||fS)Ng$@)rZacceptr	)r
�requestZclient_addressrrr�get_request)s
zLoopbackHttpServer.get_requestN)�__name__�
__module__�__qualname__rrrrrrrs	rc@s$eZdZdd�Zdd�Zdd�ZdS)�LoopbackHttpServerThreadcCs<tj�|�d|_t��|_d|_td|�|_|jj	|_
dS)NFzHTTP/1.0)z	127.0.0.1r)�	threading�Threadr�_stop_serverZEvent�readyZprotocol_versionr�httpdZserver_port�port)r
�request_handlerrrrr8s
z!LoopbackHttpServerThread.__init__cCsd|_|��|j��dS)NT)r�joinrZserver_close)r
rrr�stopAszLoopbackHttpServerThread.stopcCs$|j��x|js|j��qWdS)N)r�setrr�handle_request)r
rrr�runIs
zLoopbackHttpServerThread.runN)rrrrrrrrrrr5s	rc@sTeZdZdd�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�_qop)r
rrrrSs
zDigestAuthHandler.__init__cCs
||_dS)N)r%)r
Zqoprrr�set_qopZszDigestAuthHandler.set_qopcCs
||_dS)N)r#)r
Zusersrrr�	set_users]szDigestAuthHandler.set_userscCs
||_dS)N)r$)r
Zrealmrrr�	set_realmaszDigestAuthHandler.set_realmcCs8|jd7_t�t|j��d����}|j�|�|S)N��ascii)r!�hashlib�md5�str�encode�	hexdigestr"�append)r
�noncerrr�_generate_noncedsz!DigestAuthHandler._generate_noncecCs�|�d�}||dd�}|�d�}i}xX|D]P}|�d�\}}|��}|ddkrn|ddkrn|dd�}n|��}|||<q.W|S)N� r)�,�=r�"���)�find�split�strip)r
Zauth_strZfirst_space_index�parts�	auth_dict�part�name�valuerrr�_create_auth_dictjs


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)sr*z%(method)s:%(uri)s�HA1�HA2z3%(HA1)s:%(nonce)s:%(nc)s:%(cnonce)s:%(qop)s:%(HA2)s�response)�updater+r,r.r/)r
r<rArBrCZ
final_dictZHA1_strrDZHA2_strrEZresponse_strrFrrr�_validate_auth{s
z DigestAuthHandler._validate_authcCsN|�dd�|�dd�|�dd|j|j|��f�|��|j�d�dS)	Ni�zProxy Authentication RequiredzContent-Typez	text/htmlzProxy-Authenticatez(Digest realm="%s", qop="%s",nonce="%s", sProxy Authentication Required.F)�
send_response�send_headerr$r%r2�end_headers�wfile�write)r
rrrr�_return_auth_challenge�sz(DigestAuthHandler._return_auth_challengecCs�t|j�dkrdSd|jkr&|�|�S|�|jd�}|d|jkrT|j|d}n
|�|�S|�d�|jkrx|�|�S|j�|d�d}x*|j|j	gD]}|�
|||j|�r�d}q�W|s�|�|�SdSdS)NrTzProxy-AuthorizationZusernamer1F)�lenr#�headersrNr@�getr"�remove�path�
short_pathrHZcommand)r
rr<rAZauth_validatedrSrrrr�s,	




z DigestAuthHandler.handle_requestN)rrrrr&r'r(r2r@rHrNrrrrrrPsrc@sbeZdZdZdZdZdeefZe�e�	d���
d�Zdd�Zdd	�Z
d
d�Zdd
�Zdd�ZdS)�BasicAuthHandler�testUser�testPass�Testz%s:%sr*cOstjjj|f|�|�dS)N)rr�BaseHTTPRequestHandlerr)r
�args�kwargsrrrr�szBasicAuthHandler.__init__cGsdS)Nr)r
�formatrZrrr�log_message�szBasicAuthHandler.log_messagecCs"|�d�|�dd�|��dS)N��zContent-typez	text/html)rIrJrK)r
rrr�do_HEAD�s
zBasicAuthHandler.do_HEADcCs4|�d�|�dd|j�|�dd�|��dS)Ni�zWWW-AuthenticatezBasic realm="%s"zContent-typez	text/html)rIrJ�REALMrK)r
rrr�do_AUTHHEAD�s
zBasicAuthHandler.do_AUTHHEADcCsh|j�dd�s$|��|j�d�n@|j�dd�d|jkr\|�d�|��|j�d�n|��dS)NZ
Authorization�sNo Auth header receivedzBasic r^sIt works)rPrQrarLrM�ENCODED_AUTHrIrK)r
rrr�do_GET�s
zBasicAuthHandler.do_GETN)rrr�USER�PASSWDr`ZUSER_PASSWD�base64Z	b64encoder.�decodercrr]r_rardrrrrrU�srUc@s$eZdZdd�Zdd�Zdd�ZdS)�FakeProxyHandlercOs ||_tjjj|f|�|�dS)N)�digest_auth_handlerrrrYr)r
rjrZr[rrrr�szFakeProxyHandler.__init__cGsdS)Nr)r
r\rZrrrr]szFakeProxyHandler.log_messagecCsvtj�|jd�\}}}}}}||_|j�|�rr|�dd�|�dd�|�	�|j
�td|jd��|j
�d�dS)	Nrr^ZOKzContent-Typez	text/htmlzYou've reached %s!<BR>r*sFOur apologies, but our server is down due to a sudden zombie invasion.)
�urllib�parseZurlparserSrTrjrrIrJrKrLrM�bytes)r
ZscmZnetlocrS�paramsZqueryZfragmentrrrrdszFakeProxyHandler.do_GETN)rrrrr]rdrrrrri�sricsPeZdZdZdZdZdZ�fdd�Zdd�Z�fd	d
�Z	dd�Z
d
d�Z�ZS)�BasicAuthTestsrVrWZ	IncorrectrXcsTtt|���dd�}t|�|_|�|j�d|jj|_|j�	�|jj
��dS)Nc_s
t||�S)N)rU)rZr[rrr�#http_server_with_basic_auth_handlerszABasicAuthTests.setUp.<locals>.http_server_with_basic_auth_handlerzhttp://127.0.0.1:%s)�superro�setUprr�
addCleanup�stop_serverr�
server_url�startr�wait)r
rp)�	__class__rrrrs

zBasicAuthTests.setUpcCs|j��d|_dS)N)rr)r
rrrrt's
zBasicAuthTests.stop_servercstt|���dS)N)rqro�tearDown)r
)rxrrry+szBasicAuthTests.tearDowncCs|tj��}|�|j|j|j|j�tj�tj�	|��y|�
tj�|j��Wn(tjj
k
rv|�d|j�YnXdS)Nz!Basic auth failed for the url: %s)rkr
�HTTPBasicAuthHandler�add_passwordr`rurerf�install_opener�build_opener�
assertTrue�urlopen�error�	HTTPError�fail)r
�ahrrr�test_basic_auth_success.s
z&BasicAuthTests.test_basic_auth_successcCsRtj��}|�|j|j|j|j�tj�tj�	|��|�
tjjtjj
|j�dS)N)rkr
rzr{r`rure�INCORRECT_PASSWDr|r}�assertRaisesr�r�r)r
r�rrr�test_basic_auth_httperror7s
z(BasicAuthTests.test_basic_auth_httperror)
rrrrerfr�r`rrrtryr�r��
__classcell__rr)rxrros	rocsTeZdZdZdZdZdZ�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)
NcSstj��tj�|�dS)N)�os�environ�clearrG)�old_environrrr�restore_environHs
z-ProxyAuthTests.setUp.<locals>.restore_environrb�NO_PROXY�no_proxycst�jf|�|�S)N)rirj)rZr[)r
rr�create_fake_proxy_handlerSsz7ProxyAuthTests.setUp.<locals>.create_fake_proxy_handlerzhttp://127.0.0.1:%dr)rqr�rrrsr�r��copyrrjr'rerfr(r`rrrtrvrrwrrkr
ZProxyHandlerZProxyDigestAuthHandler�proxy_digest_handlerr}�opener)r
r�r�Z	proxy_url�handler)rx)r
rrrEs$



zProxyAuthTests.setUpcCs|j��d|_dS)N)rr)r
rrrrt`s
zProxyAuthTests.stop_servercCsF|j�|j|j|j|jd�|j�d�|�t	j
j|jj
|j�dS)NZbadr )r�r{r`�URLrerfrjr&r�rkr�r�r��open)r
rrr�-test_proxy_with_bad_password_raises_httperrords
z<ProxyAuthTests.test_proxy_with_bad_password_raises_httperrorcCs(|j�d�|�tjj|jj|j�dS)Nr )	rjr&r�rkr�r�r�r�r�)r
rrr�,test_proxy_with_no_password_raises_httperrorls
z;ProxyAuthTests.test_proxy_with_no_password_raises_httperrorcCsN|j�|j|j|j|j�|j�d�|j�	|j�}x|�
�r@q6W|��dS)Nr )r�r{r`r�rerfrjr&r�r��read�close)r
�resultrrr�test_proxy_qop_auth_worksrs
z(ProxyAuthTests.test_proxy_qop_auth_workscCst|j�|j|j|j|j�|j�d�y|j�	|j�}Wnt
jjk
rTd}YnX|rpx|�
�rfq\W|��dS)Nzauth-int)r�r{r`r�rerfrjr&r�r�rkr��URLErrorr�r�)r
r�rrr�0test_proxy_qop_auth_int_works_or_throws_urlerror{s

z?ProxyAuthTests.test_proxy_qop_auth_int_works_or_throws_urlerror)rrrr�rerfr`rrrtr�r�r�r�r�rr)rxrr�>s	r�csG��fdd�dtjj���S)NcsBeZdZdZgZgZdZdd�Zdd�Z��fdd�Z	d	d
�Z
dS)z1GetRequestHandler.<locals>.FakeHTTPRequestHandlerz	TestHTTP/�PcSs.|��}x |r(|j�|�}||d�}q
WdS)N)�	send_headrLrM)r
�bodyZdonerrrrd�sz8GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_GETcSs2|jd}|j�t|��}|��|j�|�dS)NzContent-Length)rPZrfiler��intrd�requestsr0)r
Zcontent_lengthZ	post_datarrr�do_POST�s
z9GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_POSTcs�|j�_|j�|j���d�\}}}|�|�x&|D]\}}|�||d|ji�q6W|rt|�dd�|�	�|S|�	�dS)NrrzContent-typez
text/plain)
rP�headers_receivedr�r0rS�poprIrJrrK)r
Z
response_coderPr��headerr?)�FakeHTTPRequestHandler�	responsesrrr��s
z;GetRequestHandler.<locals>.FakeHTTPRequestHandler.send_headcWsdS)Nr)r
rZrrrr]�sz=GetRequestHandler.<locals>.FakeHTTPRequestHandler.log_messageN)rrrZserver_versionr�r�rrdr�r�r]r)r�r�rrr��sr�)rrrY)r�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)�Z�ZS)-�TestUrlopencs@tt|���dd�}|�|tj���dtjd<dtjd<dS)NcSstj��tj�|�dS)N)r�r�r�rG)r�rrrr��s
z*TestUrlopen.setUp.<locals>.restore_environ�*r�r�)rqr�rrrsr�r�r�)r
r�)rxrrrr�s

zTestUrlopen.setUpNcKslg}tjj||f|�}z@|�|�d��|�|���|�|�d��|�|���Wd|��Xd�	|�S)Nr^i�)
rkr
r�extend�	readlinesr0�readliner�r�r)r
�url�datar[�l�frrrr�s
zTestUrlopen.urlopencCs|j��d|_dS)N)rr)r
rrrrt�s
zTestUrlopen.stop_servercCsZ|dkrdgdfg}t|�}t|�|_|�|j�|j��|jj��|jj}||_|S)Nr^s
we don't care)	r�rrrsrtrvrrwr)r
r�r�rrrr�start_server�s

zTestUrlopen.start_servercKs^ttjd�s|�d�ddlm}|dkr6dgdfg}t|�}||fd|i|��}|j|_|S)NZHTTPSHandlerzssl support requiredr)�make_https_serverr^s
we care a bitZ
handler_class)�hasattrrkr
�skipTestZtest.ssl_serversr�r�r)r
r�r[r�r�rrrr�start_https_server�s
zTestUrlopen.start_https_servercCsVd}ddgdfdg|fg}|�|�}|�d|j�}|�||�|�|jddg�dS)	NsWe got here...i.)ZLocationz(http://localhost:%(port)s/somewhere_elserbr^zhttp://localhost:%s/�/z/somewhere_else)r�rr�assertEqualr�)r
�expected_responser�r�r�rrr�test_redirection�s
zTestUrlopen.test_redirectioncCs@d}d}ddg|fg}|�|�}|�d|j�}|�||�dS)Nshello worldsa
hello worl
1
d
0
r^)zTransfer-EncodingZchunkedzhttp://localhost:%s/)r�rrr�)r
r�Z
chunked_startrFr�r�rrr�test_chunkeds
zTestUrlopen.test_chunkedc
Cs�d}|�dg|fg�}y|�d|j�Wn6tjjk
r`}z|��}|��Wdd}~XYnX|�d�|�	||�|�	|j
dg�dS)NsBad bad bad...i�zhttp://localhost:%s/weeblez404 should raise URLErrorz/weeble)r�rrrkr�r�r�r�r�r�r�)r
r�r�r�r�rrr�test_404s
zTestUrlopen.test_404cCsFd}|�dg|fg�}|�d|j�}|�||�|�|jdg�dS)Ns
pycon 2008...r^zhttp://localhost:%s/bizarrez/bizarre)r�rrr�r�)r
r�r�r�rrr�test_200s
zTestUrlopen.test_200cCsJd}|�dg|fg�}|�d|jd�}|�||�|�|jddg�dS)Ns
pycon 2008...r^zhttp://localhost:%s/bizarresget=with_feelingz/bizarre)r�rrr�r�)r
r�r�r�rrr�test_200_with_parameters%sz$TestUrlopen.test_200_with_parameterscCs8|��}tjtd�}|jd|j|d�}|�|d�dS)N)�cafilezhttps://localhost:%s/bizarre)�contexts
we care a bit)r��ssl�create_default_context�CERT_localhostrrr�)r
r�r�r�rrr�
test_https-szTestUrlopen.test_httpsc
Cs�|jtd�}t�dtf���|jd|jtd�}|�|d�|�t	j
j��}|jd|jtd�WdQRX|jtd�}|�t	j
j��}|jd|jtd�WdQRXWdQRXdS)N)�certfilerbzhttps://localhost:%s/bizarre)r�s
we care a bit)
r�r�r�check_warnings�DeprecationWarningrrr�r�rkr�r��CERT_fakehostname)r
r�r��cmrrr�test_https_with_cafile3sz"TestUrlopen.test_https_with_cafilec
CsX|jtd�}t�dtf��4|�tjj��}|j	d|j
dd�WdQRXWdQRXdS)N)r�rbzhttps://localhost:%s/bizarreT)Z	cadefault)r�r�rr�r�r�rkr�r�rr)r
r�r�rrr�test_https_with_cadefaultDs
z%TestUrlopen.test_https_with_cadefaultcs�tdkr|�d�tjs"|�d�d��fdd�}t�tj�}|�|�|j|td�}tjtd�}|j	d|j
|d�|��d	�dS)
Nzssl module requiredzSNI support required in OpenSSLcs|�dS)Nr)Zssl_sockZserver_nameZinitial_context)�sni_namerr�cb_sniRsz*TestUrlopen.test_https_sni.<locals>.cb_sni)r�r�)r�zhttps://localhost:%s)r�Z	localhost)r�r�ZHAS_SNIZ
SSLContextZPROTOCOL_TLS_SERVERZset_servername_callbackr�r�r�rrr�)r
r�r�r�r)r�r�test_https_sniLs


zTestUrlopen.test_https_snic	CsP|��}tjjd|jddid�}tj�|��WdQRX|�|jdd�dS)Nzhttp://localhost:%s/ZRangezbytes=20-39)rP)r�rkr
ZRequestrrr�r�)r
r�Zreqrrr�test_sending_headers\s
z TestUrlopen.test_sending_headerscCsb|��}tj�d|j�}x"dD]}|�t||�d|�q Wz|�|��d�Wd|��XdS)Nzhttp://localhost:%s)r�r��info�geturlz3object returned from urlopen lacks the %s attributezcalling 'read' failed)	r�rkr
rrr~r�r�r�)r
r��open_url�attrrrr�
test_basicds
zTestUrlopen.test_basicc	CsX|��}tj�d|j�}|�|��}WdQRX|�|tjj	d�|�
|��d�dS)Nzhttp://localhost:%szEobject returned by 'info' is not an instance of email.message.MessageZplain)r�rkr
rrr�ZassertIsInstance�email�messageZMessager�Zget_content_subtype)r
r�r�Zinfo_objrrr�	test_infooszTestUrlopen.test_infoc	CsH|��}tj�d|j�}|�|��}WdQRX|�|d|j�dS)Nzhttp://localhost:%s)r�rkr
rrr�r�)r
r�r�r�rrr�test_geturlzs
zTestUrlopen.test_geturlcCsFd}|�dg|fg�}tj�d|j�}x|D]}|�||�q.WdS)Ns
pycon 2008...r^zhttp://localhost:%s)r�rkr
rrr�)r
r�r�r��linerrr�test_iteration�s

zTestUrlopen.test_iterationc
Cs�ddddddg}d�|�}|�dg|fg�}tj�d	|j�}x<t|�D]0\}}|�|||d
|t||�t|�f�qLW|�|dt|��dS)NsWe
sgot
shere
s	verylong i �
r�r^zhttp://localhost:%szQFetched line number %s doesn't match expected:
    Expected length was %s, got %sr))	rr�rkr
rr�	enumerater�rO)r
�linesr�r�r��indexr�rrr�test_line_iteration�s
zTestUrlopen.test_line_iteration)N)N)N)rrrrrrrtr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr)rxrr��s(	




r�cCst��adS)N)rZthreading_setup�threads_keyrrrr�setUpModule�sr�cCstrtjt�dS)N)r�rZthreading_cleanuprrrr�tearDownModule�sr��__main__))rgr�r�Zurllib.parserkZurllib.requestZhttp.serverrrZunittestr+Ztestrr��ImportErrorrS�dirname�__file__�hererr�r�rrrrrrrYrUriZTestCaseror�r�r�r�r�r�r�mainrrrr�<module>s>
y,!(N+`