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-1.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@s eZdZdZdd�Zdd�ZdS)�LoopbackHttpServerz^HTTP server w/ a few modifications that make it useful for
    loopback testing purposes.
    cCs"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)zHTTPServer method, overridden.g$@)rZacceptr	)r
�requestZclient_addressrrr�get_request)s
zLoopbackHttpServer.get_requestN)�__name__�
__module__�__qualname__�__doc__rrrrrrrs	rc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�LoopbackHttpServerThreadz2Stoppable thread that runs a loopback http server.cCs<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)z.Stops the webserver if it's currently running.TN)r�joinrZserver_close)r
rrr�stopAszLoopbackHttpServerThread.stopcCs$|j��x|js|j��qWdS)N)r�setrr�handle_request)r
rrr�runIs
zLoopbackHttpServerThread.runN)rrrrrrrrrrrr5s	rc@sXeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)�DigestAuthHandlerz-Handler for performing digest authentication.cCs"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/r0)r
r=rBrCrDZ
final_dictZHA1_strrEZHA2_strrFZresponse_strrGrrr�_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&r3�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)aPerforms digest authentication on the given HTTP request
        handler.  Returns True if authentication was successful, False
        otherwise.

        If no users have been set, then digest auth is effectively
        disabled and this method will always return True.
        rTzProxy-AuthorizationZusernamer2FN)�lenr$�headersrOrA�getr#�remove�path�
short_pathrIZcommand)r
rr=rBZauth_validatedrTrrrr�s,	




z DigestAuthHandler.handle_requestN)
rrrrrr'r(r)r3rArIrOrrrrrr Psr c@sfeZdZdZdZdZdZdeefZe�	e�
d���d�Zdd�Z
d	d
�Zdd�Zd
d�Zdd�ZdS)�BasicAuthHandlerz,Handler for performing basic authentication.�testUser�testPass�Testz%s:%sr+cOstjjj|f|�|�dS)N)rr�BaseHTTPRequestHandlerr)r
�args�kwargsrrrr�szBasicAuthHandler.__init__cGsdS)Nr)r
�formatr[rrr�log_message�szBasicAuthHandler.log_messagecCs"|�d�|�dd�|��dS)N��zContent-typez	text/html)rJrKrL)r
rrr�do_HEAD�s
zBasicAuthHandler.do_HEADcCs4|�d�|�dd|j�|�dd�|��dS)Ni�zWWW-AuthenticatezBasic realm="%s"zContent-typez	text/html)rJrK�REALMrL)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)rQrRrbrMrN�ENCODED_AUTHrJrL)r
rrr�do_GET�s
zBasicAuthHandler.do_GETN)rrrr�USER�PASSWDraZUSER_PASSWD�base64Z	b64encoder/�decoderdrr^r`rbrerrrrrV�srVc@s(eZdZdZdd�Zdd�Zdd�ZdS)	�FakeProxyHandlerz�This is a 'fake proxy' that makes it look like the entire
    internet has gone down due to a sudden zombie invasion.  It main
    utility is in providing us with authentication support for
    testing.
    cOs ||_tjjj|f|�|�dS)N)�digest_auth_handlerrrrZr)r
rkr[r\rrrr�szFakeProxyHandler.__init__cGsdS)Nr)r
r]r[rrr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�parseZurlparserTrUrkrrJrKrLrMrN�bytes)r
ZscmZnetlocrT�paramsZqueryZfragmentrrrreszFakeProxyHandler.do_GETN)rrrrrr^rerrrrrj�srjcsPeZdZdZdZdZdZ�fdd�Zdd�Z�fd	d
�Z	dd�Z
d
d�Z�ZS)�BasicAuthTestsrWrXZ	IncorrectrYcsTtt|���dd�}t|�|_|�|j�d|jj|_|j�	�|jj
��dS)Nc_s
t||�S)N)rV)r[r\rrr�#http_server_with_basic_auth_handlerszABasicAuthTests.setUp.<locals>.http_server_with_basic_auth_handlerzhttp://127.0.0.1:%s)�superrp�setUprr�
addCleanup�stop_serverr�
server_url�startr�wait)r
rq)�	__class__rrrss

zBasicAuthTests.setUpcCs|j��d|_dS)N)rr)r
rrrru's
zBasicAuthTests.stop_servercstt|���dS)N)rrrp�tearDown)r
)ryrrrz+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)rlr
�HTTPBasicAuthHandler�add_passwordrarvrfrg�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)rlr
r{r|rarvrf�INCORRECT_PASSWDr}r~�assertRaisesr�r�r�)r
r�rrr�test_basic_auth_httperror7s
z(BasicAuthTests.test_basic_auth_httperror)
rrrrfrgr�rarsrurzr�r��
__classcell__rr)ryrrps	rpcsTeZdZdZdZdZdZ�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�clearrH)�old_environrrr�restore_environHs
z-ProxyAuthTests.setUp.<locals>.restore_environrc�NO_PROXY�no_proxycst�jf|�|�S)N)rjrk)r[r\)r
rr�create_fake_proxy_handlerSsz7ProxyAuthTests.setUp.<locals>.create_fake_proxy_handlerzhttp://127.0.0.1:%dr)rrr�rsrtr�r��copyr rkr(rfrgr)rarrrurwrrxrrlr
ZProxyHandlerZProxyDigestAuthHandler�proxy_digest_handlerr~�opener)r
r�r�Z	proxy_url�handler)ry)r
rrsEs$



zProxyAuthTests.setUpcCs|j��d|_dS)N)rr)r
rrrru`s
zProxyAuthTests.stop_servercCsF|j�|j|j|j|jd�|j�d�|�t	j
j|jj
|j�dS)NZbadr!)r�r|ra�URLrfrgrkr'r�rlr�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!)	rkr'r�rlr�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|rar�rfrgrkr'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|rar�rfrgrkr'r�r�rlr��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�rfrgrarsrur�r�r�r�r�rr)ryr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_headrMrN)r
�bodyZdonerrrre�sz8GetRequestHandler.<locals>.FakeHTTPRequestHandler.do_GETcSs2|jd}|j�t|��}|��|j�|�dS)NzContent-Length)rQZrfiler��intre�requestsr1)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)
rQ�headers_receivedr�r1rT�poprJrKrrL)r
Z
response_coderQr��headerr@)�FakeHTTPRequestHandler�	responsesrrr��s
z;GetRequestHandler.<locals>.FakeHTTPRequestHandler.send_headcWsdS)Nr)r
r[rrrr^�sz=GetRequestHandler.<locals>.FakeHTTPRequestHandler.log_messageN)rrrZserver_versionr�r�rrer�r�r^r)r�r�rrr��sr�)rrrZ)r�r)r�r�r�GetRequestHandler�s&r�cs�eZdZdZ�fdd�Zd+dd�Zdd�Zd,d	d
�Zd-dd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Z�ZS).�TestUrlopenaNTests urllib.request.urlopen using the network.

    These tests are not exhaustive.  Assuming that testing using files does a
    good job overall of some of the basic interface features.  There are no
    tests exercising the optional 'data' and 'proxies' arguments.  No tests
    for transparent redirection have been written.
    cs@tt|���dd�}|�|tj���dtjd<dtjd<dS)NcSstj��tj�|�dS)N)r�r�r�rH)r�rrrr��s
z*TestUrlopen.setUp.<locals>.restore_environ�*r�r�)rrr�rsrtr�r�r�)r
r�)ryrrrs�s

zTestUrlopen.setUpNcKslg}tjj||f|�}z@|�|�d��|�|���|�|�d��|�|���Wd|��Xd�	|�S)Nr_i�)
rlr
r��extend�	readlinesr1�readliner�r�r)r
�url�datar\�l�frrrr��s
zTestUrlopen.urlopencCs|j��d|_dS)N)rr)r
rrrru�s
zTestUrlopen.stop_servercCsZ|dkrdgdfg}t|�}t|�|_|�|j�|j��|jj��|jj}||_|S)Nr_s
we don't care)	r�rrrtrurwrrxr)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)�hasattrrlr
�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_elsercr_zhttp://localhost:%s/�/z/somewhere_else)r�r�r�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�r�rr�)r
r�Z
chunked_startrGr�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�r�rrlr�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�r�rr�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�r�rr�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_localhostr�rr�)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)�certfilerczhttps://localhost:%s/bizarre)r�s
we care a bit)
r�r�r�check_warnings�DeprecationWarningr�rr�r�rlr�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�rczhttps://localhost:%s/bizarreT)Z	cadefault)r�r�rr�r�r�rlr�r�r�r)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�r�rr�)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)rQ)r�rlr
ZRequestrr�r�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�rlr
r�rrr�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�rlr
r�rr�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�rlr
r�rr�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�rlr
r�rr�)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�rlr
r�r�	enumerater�rP)r
�linesr�r�r��indexr�rrr�test_line_iteration�s
zTestUrlopen.test_line_iteration)N)N)N)rrrrrsr�rur�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr)ryrr��s*




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