403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.217.130
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_httpservers.cpython-36.opt-1.pyc
3

�w2_=��@s�dZddlmZmZmZmZddlmZmZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlmZddlZddlmZejd�ZGdd	�d	�ZGd
d�dej�ZGdd
�d
ej�Z Gdd�de �Z!Gdd�de �Z"Gdd�de �Z#dZ$dZ%dZ&ej'e(e	d��o6e	j)�dkd�Gdd�de ��Z*Gdd�de�Z+Gdd�de+�Z,Gdd �d �Z-Gd!d"�d"ej�Z.Gd#d$�d$ej�Z/Gd%d&�d&ej�Z0d*d'd(�Z1e2d)k�r�e1�dS)+z�Unittests for the various HTTPServer modules.

Written by Cody A.W. Somerville <cody-somerville@ubuntu.com>,
Josip Dzolonga, and Michael Otteneder for the 2007/08 GHOP contest.
�)�BaseHTTPRequestHandler�
HTTPServer�SimpleHTTPRequestHandler�CGIHTTPRequestHandler)�server�
HTTPStatusN)�BytesIO)�support�	threadingc@seZdZdd�Zddd�ZdS)�NoLogRequestHandlercGsdS)N�)�self�argsrr�:/opt/alt/python36/lib64/python3.6/test/test_httpservers.py�log_messageszNoLogRequestHandler.log_messageNcCsdS)N�r)r
�nrrr�read!szNoLogRequestHandler.read)N)�__name__�
__module__�__qualname__rrrrrrrsrc@s$eZdZdd�Zdd�Zdd�ZdS)�TestServerThreadcCstjj|�||_||_dS)N)r
�Thread�__init__�request_handler�test_object)r
rrrrrr&szTestServerThread.__init__c
CsZtd|j�|_|jjj�\|j_|j_|jjj	�d|_z|jj
d�Wd|jj�XdS)N�	localhostrg�������?)rr)rrrZsocketZgetsocknamer�HOST�PORT�server_started�setZ
serve_foreverZserver_close)r
rrr�run+szTestServerThread.runcCs|jj�|j�dS)N)rZshutdown�join)r
rrr�stop5s
zTestServerThread.stopN)rrrrr!r#rrrrr%s
rc@s,eZdZdd�Zdd�Zddifdd�ZdS)	�BaseTestCasecCsDtj�|_tj�t_tj�|_t	||j
�|_|jj�|jj
�dS)N)r	Zthreading_setup�_threadsZEnvironmentVarGuard�os�environr
ZEventrrr�thread�start�wait)r
rrr�setUp;s



zBaseTestCase.setUpcCs*|jj�d|_tjj�tj|j�dS)N)r(r#r&r'�__exit__r	Zthreading_cleanupr%)r
rrr�tearDownCs

zBaseTestCase.tearDown�GETNcCs0tjj|j|j�|_|jj||||�|jj�S)N)�http�client�HTTPConnectionrrZ
connection�request�getresponse)r
Zuri�method�body�headersrrrr2IszBaseTestCase.request)rrrr+r-r2rrrrr$:sr$c@s�eZdZGdd�dee�Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+S),�BaseHTTPServerTestCasec@s\eZdZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Z	dd
�Z
dd�Zdd�Zdd�Z
dS)z&BaseHTTPServerTestCase.request_handlerzHTTP/1.1cCs0|jtj�|jdd�|jdd�|j�dS)NzContent-Typez	text/html�
Connection�close)�
send_responser�
NO_CONTENT�send_header�end_headers)r
rrr�do_TESTTsz.BaseHTTPServerTestCase.request_handler.do_TESTcCs0|jtj�|jdd�|jdd�|j�dS)NzContent-Typez	text/htmlr8z
keep-alive)r:rr;r<r=)r
rrr�do_KEEPZsz.BaseHTTPServerTestCase.request_handler.do_KEEPcCs|jd�dS)Ni�)�
send_error)r
rrr�do_KEYERROR`sz2BaseHTTPServerTestCase.request_handler.do_KEYERRORcCs|jtj�dS)N)r@r�	NOT_FOUND)r
rrr�do_NOTFOUNDcsz2BaseHTTPServerTestCase.request_handler.do_NOTFOUNDcCs|jddd�dS)Ni�z
Short MessagezThis is a long 
 explanation)r@)r
rrr�do_EXPLAINERRORfsz6BaseHTTPServerTestCase.request_handler.do_EXPLAINERRORcCs.|jd�|jdd�|jdd�|j�dS)Ni�zContent-Typez	text/htmlr8r9)r:r<r=)r
rrr�	do_CUSTOMjs
z0BaseHTTPServerTestCase.request_handler.do_CUSTOMcCsJ|jd�|jdd�|jdd�|j�|jdjd�}|jj|�dS)Ni�z	X-SpecialuDängerous Mindr8r9zx-special-incomingzutf-8)r:r<r=r6�encode�wfile�write)r
r5rrr�do_LATINONEHEADERps
z8BaseHTTPServerTestCase.request_handler.do_LATINONEHEADERcCs|jt|jdd���dS)N�)r@�int�path)r
rrr�
do_SEND_ERRORxsz4BaseHTTPServerTestCase.request_handler.do_SEND_ERRORcCs|jt|jdd���dS)NrJ)r@rKrL)r
rrr�do_HEAD{sz.BaseHTTPServerTestCase.request_handler.do_HEADN)rrr�protocol_version�default_request_versionr>r?rArCrDrErIrMrNrrrrrPsrcCs,tj|�tjj|j|j�|_|jj�dS)N)	r$r+r/r0r1rr�con�connect)r
rrrr+~s
zBaseHTTPServerTestCase.setUpcCs,|jjdd�|jj�}|j|jtj�dS)Nr.�/)rQr2r3�assertEqual�statusr�NOT_IMPLEMENTED)r
�resrrr�test_command�s
z#BaseHTTPServerTestCase.test_commandcCs>d|j_|jjdd�|jj�|jj�}|j|jtj�dS)Nz	HTTP/1.1
ZXYZBOGUSrS)	rQ�
_http_vsn_str�
putrequest�
endheadersr3rTrUrrV)r
rWrrr�test_request_line_trimming�s


z1BaseHTTPServerTestCase.test_request_line_trimmingcCs>d|j_|jjdd�|jj�|jj�}|j|jtj�dS)NZFUBARr.rS)	rQrYrZr[r3rTrUr�BAD_REQUEST)r
rWrrr�test_version_bogus�s


z)BaseHTTPServerTestCase.test_version_boguscCs>d|j_|jjdd�|jj�|jj�}|j|jtj�dS)Nz
HTTP/9.9.9r.rS)	rQrYrZr[r3rTrUrr])r
rWrrr�test_version_digits�s


z*BaseHTTPServerTestCase.test_version_digitscCs>d|j_|jjdd�|jj�|jj�}|j|jtj�dS)Nrr.rS)	rQrYrZr[r3rTrUrrV)r
rWrrr�test_version_none_get�s


z,BaseHTTPServerTestCase.test_version_none_getcCs>d|j_|jjdd�|jj�|jj�}|j|jtj�dS)Nr�CUSTOMrS)	rQrYrZr[r3rTrUrr])r
rWrrr�test_version_none�s


z(BaseHTTPServerTestCase.test_version_nonecCsFd|j_d|j_|jjdd�|jj�|jj�}|j|jtj	�dS)N�czHTTP/9.9r.rS)
rQZ	_http_vsnrYrZr[r3rTrUrZHTTP_VERSION_NOT_SUPPORTED)r
rWrrr�test_version_invalid�s

z+BaseHTTPServerTestCase.test_version_invalidcCs>d|j_|jjdd�|jj�|jj�}|j|jtj�dS)Nr)	rQrYrZr[r3rTrUrr])r
rWrrr�test_send_blank�s


z&BaseHTTPServerTestCase.test_send_blankcCsD|jjdd�|jjdd�|jj�|jj�}|j|jtj�dS)Nr.rSr8r9)	rQrZ�	putheaderr[r3rTrUrrV)r
rWrrr�test_header_close�s


z(BaseHTTPServerTestCase.test_header_closecCsLd|j_|jjdd�|jjdd�|jj�|jj�}|j|jtj	�dS)NzHTTP/1.1r.rSr8z
keep-alive)
rQrYrZrfr[r3rTrUrrV)r
rWrrr�test_header_keep_alive�s

z-BaseHTTPServerTestCase.test_header_keep_alivecCs,|jjdd�|jj�}|j|jtj�dS)N�TESTrS)rQr2r3rTrUrr;)r
rWrrr�test_handler�s
z#BaseHTTPServerTestCase.test_handlercCsJ|jjdd�|jj�}|j|jd�d�|jjdd�|j|jj�dS)NZKEEPrSr8z
keep-aliveri)rQr2r3rT�	getheaderZ
addCleanupr9)r
rWrrr�test_return_header_keep_alive�s

z4BaseHTTPServerTestCase.test_return_header_keep_alivecCs*|jjdd�|jj�}|j|jd�dS)NZKEYERRORrSi�)rQr2r3rTrU)r
rWrrr�test_internal_key_error�s
z.BaseHTTPServerTestCase.test_internal_key_errorcCs*|jjdd�|jj�}|j|jd�dS)NrarSi�)rQr2r3rTrU)r
rWrrr�test_return_custom_status�s
z0BaseHTTPServerTestCase.test_return_custom_statuscCs>|jjdd�|jj�}|j|jd�|jt|jd���dS)NZEXPLAINERRORrSi�zContent-Length)rQr2r3rTrU�
assertTruerKrk)r
rWrrr�test_return_explain_error�s
z0BaseHTTPServerTestCase.test_return_explain_errorcCsL|jjddddid�|jj�}|j|jd�d�|j|j�djd��dS)	NZLATINONEHEADERrSzX-Special-IncominguÄrger mit Unicode)r6z	X-SpecialuDängerous Mindzutf-8)rQr2r3rTrkrrF)r
rWrrr�test_latin1_header�s


z)BaseHTTPServerTestCase.test_latin1_headercCsN|jjdd�|jj�}|j|jtj�|j�}|jt|j	d��t
|��dS)NZNOTFOUNDrSzContent-Length)rQr2r3rTrUrrBrrKrk�len)r
rW�datarrr�test_error_content_length�s

z0BaseHTTPServerTestCase.test_error_content_lengthcCs�tjtjf}x�tjtjtjtjtjfD]�}|jjddj|��|jj	�}|j
||j�|j
d|jd��|j
d|jd��||kr�|j
d|jd��|j
�}|j
d|�q&WdS)NZ
SEND_ERRORz/{}zContent-LengthzContent-TypezTransfer-Encoding�)r�NOT_MODIFIED�
RESET_CONTENTr;Z
PROCESSING�SWITCHING_PROTOCOLSrQr2�formatr3rTrUrkr)r
�allow_transfer_encoding_codes�coderWrsrrr�test_send_error�s

z&BaseHTTPServerTestCase.test_send_errorcCs�tjtjf}x�tjtjtjtjtjfD]�}|jjddj|��|jj	�}|j
||j�|tjkr�|jt
|jd��dk�|jd|jd��n$|j
d|jd��|j
d|jd��||kr�|j
d|jd��|j�}|j
d|�q&WdS)	N�HEADz/{}zContent-Lengthrz	text/htmlzContent-TypezTransfer-Encodingru)rrvrw�OKr;rxrQr2ryr3rTrUrorKrk�assertInr)r
rzr{rWrsrrr�test_head_via_send_errors"


z/BaseHTTPServerTestCase.test_head_via_send_errorN)rrrrrrr+rXr\r^r_r`rbrdrergrhrjrlrmrnrprqrtr|r�rrrrr7Os*.	r7c@s,eZdZGdd�de�Zdd�Zdd�ZdS)�RequestHandlerLoggingTestCasec@s$eZdZdZdZdd�Zdd�ZdS)z-RequestHandlerLoggingTestCase.request_handlerzHTTP/1.1cCs|jtj�|j�dS)N)r:rr~r=)r
rrr�do_GET#sz4RequestHandlerLoggingTestCase.request_handler.do_GETcCs|jtjd�dS)NzFile not found)r@rrB)r
rrr�do_ERROR'sz6RequestHandlerLoggingTestCase.request_handler.do_ERRORN)rrrrOrPr�r�rrrrrsrc
Csbtjj|j|j�|_|jj�tj��}|jj	dd�|jj
�WdQRX|j|j�j
d��dS)Nr.rSz"GET / HTTP/1.1" 200 -
)r/r0r1rrrQrRr	�captured_stderrr2r3ro�getvalue�endswith)r
�errrrr�test_get*s

z&RequestHandlerLoggingTestCase.test_getc
Cs�tjj|j|j�|_|jj�tj��}|jj	dd�|jj
�WdQRX|j�jd�}|j
|djd��|j
|djd��dS)NZERRORrS�
rz code 404, message File not foundrJz"ERROR / HTTP/1.1" 404 -)r/r0r1rrrQrRr	r�r2r3r��splitror�)r
r��linesrrr�test_err5s

z&RequestHandlerLoggingTestCase.test_errN)rrrrrr�r�rrrrr�sr�c@s�eZdZGdd�dee�Zdd�Zdd�Zddd	�Ze	j
ejd
kd�e	j
ejdkd
�e	j
ejd�dd����Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)�SimpleHTTPServerTestCasec@seZdZdS)z(SimpleHTTPServerTestCase.request_handlerN)rrrrrrrrCsrc	Cs�tj|�tj�|_tj�}tj|�d|_tj	|d�|_
tjj|j
�|_
d|j
|_ttjj|j
d�d��}|j|j�WdQRXdS)NsWe are the knights who say Ni!)�dirrS�test�wb)r$r+r&�getcwd�cwd�tempfileZ
gettempdir�chdirrs�mkdtemp�tempdirrL�basename�tempdir_name�base_url�openr"rH)r
ZbasetempdirZtemprrrr+Fs


zSimpleHTTPServerTestCase.setUpcCs@z.tj|j�ytj|j�WnYnXWdtj|�XdS)N)r&r�r��shutilZrmtreer�r$r-)r
rrrr-Rs
z!SimpleHTTPServerTestCase.tearDownNcs���fdd�}d�|�_�j�}|j��|j�j|�|j�j�|rT|j||�|j�jd�|j�jj	dd�d�|j�jd�dd��j
�|S)	Ncs�j�d�_dS)zWDon't close reader yet so we can check if there was leftover
            buffered inputN)�fpr)�reader�responserr�
close_conn]szDSimpleHTTPServerTestCase.check_status_and_reason.<locals>.close_conn�
r8r9�ruzConnection should be closed)Z_close_connrrorTrU�assertIsNotNone�reason�version�msg�getr9)r
r�rUrsr�r5r)r�r�r�check_status_and_reason\s
z0SimpleHTTPServerTestCase.check_status_and_reason�darwinz2undecodable name cannot always be decoded on macOSZwin32z+undecodable name cannot be decoded on win32zneed support.TESTFN_UNDECODABLEc
Cstj�}tjtj�d}ttjj|j	|�d��}|j
tj�WdQRX|j|jd�}tj
dkr�x"tj|j	�D]}|dkrn|}PqnW|j|tj�}tjj|dd�}|jd|j|d	�|�|jd
tj|dd�j|d	�|�|j|jd|�}|j|tjtjd
�dS)Nz.txtr�rSr�r��
surrogatepass)�errorsz	href="%s"�surrogateescapez>%s<F)�quote)rs)�sys�getfilesystemencodingr&�fsdecoder	�TESTFN_UNDECODABLEr�rLr"r�rHr2r��platform�listdirr�rr~�urllib�parser�rrF�html�escape)r
�enc�filename�fr��namer5Z
quotednamerrr�test_undecodable_filenameus&

z2SimpleHTTPServerTestCase.test_undecodable_filenamecCs�|j|jd�}|j|tj|jd�|j|jd�}|j|tj�|j|jd�}|j|tj�|j|j�}|j|tj�|j|jd�}|j|tj�|j|jd�}|j|tj�|j|j	d�|jd�|jd	�}|j|tj�|jd�}|j|tj�d}t
tjj
|jd�d
��}|j|�WdQRX|j|jd�}|j|tj|�tjdk�r�tj�dk�r�tj|jd�z"|j|jd�}|j|tj�Wdtj|jd�XdS)Nz/test)rsz/test/rSz/?hi=2z?hi=1�Locationz/?hi=1z/ThisDoesNotExistZThisDoesNotExistsDummy index file
z
index.htmlr��posixri�z/ThisDoesNotExistz/ThisDoesNotExist/)r2r�r�rr~rsrB�MOVED_PERMANENTLYrTrkr�r&rLr"r�rHr��geteuid�chmodr�)r
r�rsr�rrrr��s:

z!SimpleHTTPServerTestCase.test_getcCsT|j|jddd�}|j|tj�|j|jd�tt|j	���|j|jd�d�dS)Nz/testr})r4zcontent-lengthzcontent-typezapplication/octet-stream)
r2r�r�rr~rTrk�strrrrs)r
r�rrr�	test_head�sz"SimpleHTTPServerTestCase.test_headcCsX|jddd�}|j|tj�|jddd�}|j|tj�|jddd�}|j|tj�dS)NrSZFOO)r4ZcustomZGETs)r2r�rrV)r
r�rrr�test_invalid_requests�sz.SimpleHTTPServerTestCase.test_invalid_requestscCs�|j|jd�}|j|tj|jd�|j|jd�}|j|tj�|j|jd�}|j|tj�|j|j�}|j|tj�|j|jd�}|j|tj�|j|jd�}|j|tj�|j|j	d�|jd�dS)	Nz/test)rsz/test/rSz/?hi=2z?hi=1r�z/?hi=1)
r2r�r�rr~rsrBr�rTrk)r
r�rrr�test_path_without_leading_slash�sz8SimpleHTTPServerTestCase.test_path_without_leading_slashcCs�d}tjj|j|�}yt|d�j�Wn"tk
rHtjd|��YnXz,|j	|j
d�}|j|tj
�}|jj�}Wdtj|�X|j|�dtj|dd�}|j|j|�|�dS)Nz<test&>.txt�wz-Can not create file %s on current file systemrSz>%s<F)r�)r&rLr"r�r�r9�OSError�unittestZSkipTestr2r�r�rr~r6Zget_content_charset�unlinkr�r�r�rrF)r
r�Zfullpathr�r5r�Z	html_textrrr�test_html_escape_filename�s
z2SimpleHTTPServerTestCase.test_html_escape_filename)N)rrrrrrr+r-r�r��skipIfr�r�Z
skipUnlessr	r�r�r�r�r�r�r�rrrrr�Bs

&		r�zD#!%s

print("Content-type: text/html")
print()
print("Hello World")
z�#!%s
import cgi

print("Content-type: text/html")
print()

form = cgi.FieldStorage()
print("%%s, %%s, %%s" %% (form.getfirst("spam"), form.getfirst("eggs"),
                          form.getfirst("bacon")))
zR#!%s
import os

print("Content-type: text/html")
print()

print(os.environ["%s"])
r�z7This test can't be run reliably as root (issue #13308).c@s�eZdZGdd�dee�Zejjd�Zdd�Z	dd�Z
dd	�Zd
d�Zdd
�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zd S)!�CGIHTTPServerTestCasec@seZdZdS)z%CGIHTTPServerTestCase.request_handlerN)rrrrrrrrsr�asciic/Csptj|�tj�|_tj�|_tjj	|jd�|_
tjj	|j
d�|_tj|j
�tj|j�d|_
d|_d|_d|_d|_tj�r�tjj	|jd�|_tjtj|j�ntj|_y|jjd�Wn&tk
r�|j�|jd�YnXtjj	|jd�|_
t|j
d��}|jt|j�WdQRXtj|j
d�tjj	|j
d	�|_t|jddd
��}|jt|j�WdQRXtj|jd�tjj	|j
d�|_t|jddd
��}|jt |j�WdQRXtj|jd�tjj	|jd�|_t|jddd
��}|jt|j�WdQRXtj|jd�tjj	|j
d
�|_t|jddd
��}|jt!|jdf�WdQRXtj|jd�tj"|j�dS)Nzcgi-binz	child-dir�pythonzutf-8z0Python executable path is not encodable to utf-8znocgi.pyr�i�zfile1.py)�encodingzfile2.pyzfile3.pyzfile4.pyZQUERY_STRING)#r$r+r&r�r�r�r��
parent_dirrLr"�cgi_dir�
cgi_child_dir�mkdir�
nocgi_path�
file1_path�
file2_path�
file3_path�
file4_pathr	Zcan_symlink�	pythonexe�symlinkr��
executablerF�UnicodeEncodeErrorr-ZskipTestr�rH�	cgi_file1r��	cgi_file2�	cgi_file4r�)r
r�Zfile1Zfile2Zfile3Zfile4rrrr+sT


zCGIHTTPServerTestCase.setUpcCs�z�tj|j�|jtjkr&tj|j�|jr8tj|j�|jrJtj|j�|j	r\tj|j	�|j
rntj|j
�|jr�tj|j�tj|j
�tj|j�tj|j�Wdtj|�XdS)N)r&r�r�r�r�r��remover�r�r�r�r��rmdirr�r�r�r$r-)r
rrrr-Qs$zCGIHTTPServerTestCase.tearDowncCs�dttddddddddddddddddd	d
d
tddtddd
�}x^|j�D]R\}}t|t�rvt|t�rv|j|tj|�qHtj|�}|j	||d|||fd�qHWdS)Nz//z//\z/cgi-bin/file1.pyz//az/C:/z/a/bz/a/b/z/a/b/dz/a/b/d/fz/a/b/fz/a/fz//f)rz..z/.//..rSz//z/\z/.//zcgi-bin/file1.pyz/cgi-bin/file1.py�az/az//az./az./C:/z/a/bz/a/b/z/a/b/.z	/a/b/c/..z/a/b/c/../dz/a/b/c/../d/e/../fz/a/b/c/../d/e/../../fz/a/b/c/../d/e/.././././..//fz../a/b/c/../d/e/.././././..//fz/a/b/c/../d/e/../../../fz/a/b/c/../d/e/../../../../fz/a/b/c/../d/e/../../../../../fz/a/b/c/../d/e/../../../../f/..z /a/b/c/../d/e/../../../../f/../.zpath = %r
Got:    %r
Wanted: %r)r�)
�
IndexError�items�
isinstance�type�
issubclass�	Exception�assertRaisesrZ_url_collapse_pathrT)r
Ztest_vectorsrL�expectedZactualrrr�test_url_collapse_pathfsH
z,CGIHTTPServerTestCase.test_url_collapse_pathcCs:|jd�}|j|j�|jd�|jfd|jdtjf�dS)Nz/cgi-bin/file1.pyzContent-typesHello Worldz	text/html)r2rTrrkrU�lineseprr~)r
rWrrr�test_headers_and_content�s
z.CGIHTTPServerTestCase.test_headers_and_contentcCs|jd�}|j|jtj�dS)Nz)///////////nocgi.py/../cgi-bin/nothere.sh)r2rTrUrrB)r
rWrrr�test_issue19435�s
z%CGIHTTPServerTestCase.test_issue19435cCsFtjjdddd��}ddi}|jdd||�}|j|j�d	|j�dS)
NrJr�i@�)ZspamZeggsZbaconzContent-typez!application/x-www-form-urlencodedz/cgi-bin/file2.pyZPOSTs1, python, 123456)r�r�Z	urlencoder2rTrr�)r
Zparamsr6rWrrr�	test_post�s
zCGIHTTPServerTestCase.test_postcCs&|jd�}|j�|j|jtj�dS)Nz/cgi-bin/invalid)r2rrTrUrrB)r
rWrrr�test_invaliduri�s
z%CGIHTTPServerTestCase.test_invaliduricCsRddtjd�i}|jdd|d�}|jd|jdtjf|j�|jd	�|j	f�dS)
Ns
AuthorizationsBasic s
username:passz/cgi-bin/file1.pyr.)r6sHello Worldz	text/htmlzContent-type)
�base64Z	b64encoder2rTr�rr~rrkrU)r
r6rWrrr�test_authorization�sz(CGIHTTPServerTestCase.test_authorizationcCs:|jd�}|jd|jdtjf|j�|jd�|jf�dS)Nzcgi-bin/file1.pysHello Worldz	text/htmlzContent-type)r2rTr�rr~rrkrU)r
rWrrr�test_no_leading_slash�s
z+CGIHTTPServerTestCase.test_no_leading_slashcCsZd}|tjd<|jd�}|jd|jdtjf|j�|jd�|j	f�|jtjd|�dS)NzTest CGI ServerZSERVER_SOFTWAREz/cgi-bin/file1.pysHello Worldz	text/htmlzContent-type)
r&r'r2rTr�rr~rrkrU)r
Z	signaturerWrrr�test_os_environ_is_not_altered�s

z4CGIHTTPServerTestCase.test_os_environ_is_not_alteredcCs:|jd�}|jd|jdtjf|j�|jd�|jf�dS)Nz/cgi-bin%2ffile1.pysHello Worldz	text/htmlzContent-type)r2rTr�rr~rrkrU)r
rWrrr�#test_urlquote_decoding_in_cgi_check�s
z9CGIHTTPServerTestCase.test_urlquote_decoding_in_cgi_checkcCs:|jd�}|jd|jdtjf|j�|jd�|jf�dS)Nz/cgi-bin/child-dir/file3.pysHello Worldz	text/htmlzContent-type)r2rTr�rr~rrkrU)r
rWrrr�test_nested_cgi_path_issue21323�s
z5CGIHTTPServerTestCase.test_nested_cgi_path_issue21323cCs:|jd�}|jd|jdtjf|j�|jd�|jf�dS)Nz/cgi-bin/file4.py?a=b?c=dsa=b?c=dz	text/htmlzContent-type)r2rTr�rr~rrkrU)r
rWrrr�&test_query_with_multiple_question_mark�s
z<CGIHTTPServerTestCase.test_query_with_multiple_question_markcCs:|jd�}|jd|jdtjf|j�|jd�|jf�dS)Nz0/cgi-bin/file4.py?k=aa%2F%2Fbb&//q//p//=//a//b//sk=aa%2F%2Fbb&//q//p//=//a//b//z	text/htmlzContent-type)r2rTr�rr~rrkrU)r
rWrrr�"test_query_with_continuous_slashes�s

z8CGIHTTPServerTestCase.test_query_with_continuous_slashesN)rrrrrrr&r�rFr+r-r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�s :*	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�SocketlessRequestHandlercCsd|_d|_dS)NFzHTTP/1.1)�
get_calledrO)r
rrrr�sz!SocketlessRequestHandler.__init__cCs6d|_|jtj�|jdd�|j�|jjd�dS)NTzContent-Typez	text/htmls <html><body>Data</body></html>
)r�r:rr~r<r=rGrH)r
rrrr��s
zSocketlessRequestHandler.do_GETcGsdS)Nr)r
ryrrrrr�sz$SocketlessRequestHandler.log_messageN)rrrrr�rrrrrr��sr�c@seZdZdd�ZdS)�!RejectingSocketlessRequestHandlercCs|jtj�dS)NF)r@rZEXPECTATION_FAILED)r
rrr�handle_expect_100�sz3RejectingSocketlessRequestHandler.handle_expect_100N)rrrr�rrrrr��sr�c@s0eZdZdd�Zdd�Zdd�Zedd��Zd	S)
�AuditableBytesIOcCs
g|_dS)N)�datas)r
rrrr�szAuditableBytesIO.__init__cCs|jj|�dS)N)r��append)r
rsrrrrH�szAuditableBytesIO.writecCsdj|j�S)Nru)r"r�)r
rrr�getData�szAuditableBytesIO.getDatacCs
t|j�S)N)rrr�)r
rrr�	numWrites�szAuditableBytesIO.numWritesN)rrrrrHr��propertyrrrrrr��sr�c@s�eZdZdZejd�Zdd�Zdd�Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-S).�BaseHTTPRequestHandlerTestCasezrTest the functionality of the BaseHTTPServer.

       Test the support for the Expect 100-continue header.
       sHTTP/1.[0-9]+ 200 OKcCst�|_dS)N)r��handler)r
rrrr+sz$BaseHTTPRequestHandlerTestCase.setUpcCs:t|�}t�}||j_||j_|jj�|jd�|j�S)Nr)rr�rfilerG�handle_one_request�seek�	readlines)r
�message�input�outputrrr�send_typical_request	s

z3BaseHTTPRequestHandlerTestCase.send_typical_requestcCs|j|jj�dS)N)rorr�)r
rrr�verify_get_calledsz0BaseHTTPRequestHandlerTestCase.verify_get_calledcs0x*dD]"�|jt�fdd�|D��d�qWdS)N�Server: �Date: �Content-Type: c3s|]}|j��VqdS)N)�
startswith)�.0�h)�	fieldNamerr�	<genexpr>szIBaseHTTPRequestHandlerTestCase.verify_expected_headers.<locals>.<genexpr>rJ)r
rr)rT�sum)r
r6r)rr�verify_expected_headerss
z6BaseHTTPRequestHandlerTestCase.verify_expected_headerscCs|jj|�}|j|�dS)N)�HTTPResponseMatch�searchr�)r
r��matchrrr�verify_http_server_responsesz:BaseHTTPRequestHandlerTestCase.verify_http_server_responsecCs�|jd�}|j|d�|j|dd	��|j�|j|d
d�|j|jjd�|j|jjd�|j|jjd�|j|jj	d�|j
|jjj�f�dS)NsGET / HTTP/1.1

rrJs <html><body>Data</body></html>
zGET / HTTP/1.1r.rSzHTTP/1.1���r)
rrrrrTr�requestline�commandrL�request_version�assertSequenceEqualr6r�)r
�resultrrr�
test_http_1_1s
z,BaseHTTPRequestHandlerTestCase.test_http_1_1cCs�|jd�}|j|d�|j|dd	��|j�|j|d
d�|j|jjd�|j|jjd�|j|jjd�|j|jj	d�|j
|jjj�f�dS)NsGET / HTTP/1.0

rrJs <html><body>Data</body></html>
zGET / HTTP/1.0r.rSzHTTP/1.0rr)
rrrrrTrrrrLrrr6r�)r
r rrr�
test_http_1_0)s
z,BaseHTTPRequestHandlerTestCase.test_http_1_0cCs6|jd�}|jt|�d�|j|dd�|j�dS)NsGET / HTTP/0.9

rJrs <html><body>Data</body></html>
)rrTrrr)r
r rrr�
test_http_0_95s
z,BaseHTTPRequestHandlerTestCase.test_http_0_9cCs�|jd�}|j|d�|j|dd��|j�|j|dd�|j|jjd�|j|jjd�|j|jjd�|j|jj	d�d}|j
|jjj�|�dS)Ns(GET / HTTP/1.0
Expect: 100-continue

rrJs <html><body>Data</body></html>
zGET / HTTP/1.0r.rSzHTTP/1.0�Expect�100-continuerr�r$r%)r&)
rrrrrTrrrrLrrr6r�)r
r r6rrr�test_with_continue_1_0;s
z5BaseHTTPRequestHandlerTestCase.test_with_continue_1_0cCs�|jd�}|j|dd�|j|dd�|j|dd�|j|dd��|j�|j|dd�|j|jjd	�|j|jjd
�|j|jjd�|j|jjd�d}|j	|jj
j�|�dS)Ns(GET / HTTP/1.1
Expect: 100-continue

rsHTTP/1.1 100 Continue
rJs
�sHTTP/1.1 200 OK
s <html><body>Data</body></html>
zGET / HTTP/1.1r.rSzHTTP/1.1r$�100-continuerr�r$r))r*)rrTrrrrrrLrrr6r�)r
r r6rrr�test_with_continue_1_1Hs
z5BaseHTTPRequestHandlerTestCase.test_with_continue_1_1cCsNtd�}t�}t�}||_||_d|_d|_d|_|jd�|j	|j
d�dS)NsGET / HTTP/1.1

zHTTP/1.1ri�r()rr�r�rrGrrrr@rTr)r
r	r
rrrr�#test_header_buffering_of_send_errorWs
zBBaseHTTPRequestHandlerTestCase.test_header_buffering_of_send_errorcCsXtd�}t�}t�}||_||_d|_|jd�|j|jd�|j	�|j|jd�dS)NsGET / HTTP/1.1

zHTTP/1.1i�rrJ)
rr�r�rrGrZsend_response_onlyrTrr=)r
r	r
rrrr�+test_header_buffering_of_send_response_onlyes
zJBaseHTTPRequestHandlerTestCase.test_header_buffering_of_send_response_onlycCsvtd�}t�}t�}||_||_d|_|jdd�|jdd�|j|jd�|j	�|j|j
�d�|j|jd�dS)	NsGET / HTTP/1.1

zHTTP/1.1ZFooZfooZbarrsFoo: foo
bar: bar

rJ)rr�r�rrGrr<rTrr=r�)r
r	r
rrrr�$test_header_buffering_of_send_headersszCBaseHTTPRequestHandlerTestCase.test_header_buffering_of_send_headercCs�dd�}td�}t�}||j_||j_d|j_|jj�|j||�d�||�jd�}|j|dd�|j|d	d�|j|d
d�dS)NcSs(|j�}|jd�|j�}|j|�|S)Nr)�tellrr)r��posrsrrr�_readAndReseek�s


z[BaseHTTPRequestHandlerTestCase.test_header_unbuffered_when_continue.<locals>._readAndReseeks(GET / HTTP/1.1
Expect: 100-continue

zHTTP/1.1rus
rsHTTP/1.1 100 ContinuerJr(sHTTP/1.1 200 OK)	rrrrGrrZassertNotEqualr�rT)r
r1r	r
r rrr�$test_header_unbuffered_when_continue�s
zCBaseHTTPRequestHandlerTestCase.test_header_unbuffered_when_continuecCst|j}t�|_|jd�}|j|dd�|j|dd��|j|jj�|jtdd�|dd�D��d�||_dS)	Ns(GET / HTTP/1.1
Expect: 100-continue

rs!HTTP/1.1 417 Expectation Failed
rJcss|]}|dkVqdS)sConnection: close
Nr)r�rrrrr�szMBaseHTTPRequestHandlerTestCase.test_with_continue_rejected.<locals>.<genexpr>rr)rr�rrTr�assertFalser�r)r
Z
usual_handlerr rrr�test_with_continue_rejected�s
"z:BaseHTTPRequestHandlerTestCase.test_with_continue_rejectedcCsD|jddd�}|j|dd�|j|jj�|j|jjt�dS)NsGET �xirs#HTTP/1.1 414 Request-URI Too Long
)rrTr4rr�ZassertIsInstancerr�)r
r rrr�test_request_length�sz2BaseHTTPRequestHandlerTestCase.test_request_lengthcCsH|jdddd�}|j|dd�|j|jj�|j|jjd�dS)NsGET / HTTP/1.1
X-Foo: bar�ris

rsHTTP/1.1 431 Line too long
zGET / HTTP/1.1)rrTr4rr�r)r
r rrr�test_header_length�s
z1BaseHTTPRequestHandlerTestCase.test_header_lengthcCsH|jdddd�}|j|dd�|j|jj�|j|jjd�dS)NsGET / HTTP/1.1
sX-Foo: bar
�es
rsHTTP/1.1 431 Too many headers
zGET / HTTP/1.1)rrTr4rr�r)r
r rrr�test_too_many_headers�s
z4BaseHTTPRequestHandlerTestCase.test_too_many_headerscCs8|jd�}dj|�}d}|jtj|dd�jd�|�dS)Ns*<script>alert("hello")</script> / HTTP/1.1ruz<script>alert("hello")</script>F)r�r�)rr"rr�r�rF)r
r �textrrr�test_html_escape_on_error�s

z8BaseHTTPRequestHandlerTestCase.test_html_escape_on_errorcsZ��fdd�}|�j_td���jj��jtt��td���jj��jtt��dS)Ncst���j_dS)N)�nextrZclose_connectionr)�close_valuesr
rrr�szPBaseHTTPRequestHandlerTestCase.test_close_connection.<locals>.handle_one_requestTF)T)FFT)rr�iterZhandler��
StopIterationr>)r
rr)r?r
r�test_close_connection�s

z4BaseHTTPRequestHandlerTestCase.test_close_connectionc	Csdtj�}tj|�\	}}}}}}}}	}
d|jj|||jj|||||f}|j|jj|d�|�dS)Nz#%s, %02d %3s %4d %02d:%02d:%02d GMT)Z	timestamp)�timeZgmtimerZweekdaynameZ	monthnamerTZdate_time_string)r
ZnowZyearZmonthZdayZhhZmmZssZwd�y�zr�rrr�test_date_time_string�s

z4BaseHTTPRequestHandlerTestCase.test_date_time_stringN)rrr�__doc__�re�compilerr+rrrrr!r"r#r'r+r,r-r.r2r5r7r9r;r=rBrFrrrrr�s.
	
rc@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)� SimpleHTTPRequestHandlerTestCasez Test url parsing cCs(tj�|_tjj|jd�|_t�|_dS)Nr�)r&r��
translatedrLr"r�r)r
rrrr+�s
z&SimpleHTTPRequestHandlerTestCase.setUpcCsR|jjd�}|j||j�|jjd�}|j||j�|jjd�}|j||j�dS)Nz	/filenamez/filename?foo=barz/filename?a=b&spam=eggs#zot)r�translate_pathrTrK)r
rLrrr�test_query_arguments�sz5SimpleHTTPRequestHandlerTestCase.test_query_argumentscCs8|jjd�}|j||j�|jjd�}|j||j�dS)Nz
//filenamez//filename?foo=bar)rrLrTrK)r
rLrrr�test_start_with_double_slash�sz=SimpleHTTPRequestHandlerTestCase.test_start_with_double_slashc
Cs�tjtjdt���|jjd�}|jtjtj�}|j	||j
�|jjd�}|jtjtj�}|j	||j
�|jjd�}|jtjtj�}|j	||j
�|jjd�}|jtjtj�}|j	||j
�WdQRXdS)NrLzc:c:c:foo/filenamez\c:../filenamezc:\c:..\foo/filenamezc:c:foo\c:c:bar/filename)r	Z	swap_attrrr&�ntpathrrL�replace�seprTrK)r
rLrrr�test_windows_colon�sz3SimpleHTTPRequestHandlerTestCase.test_windows_colonN)rrrrGr+rMrNrRrrrrrJ�s
rJc@seZdZdd�ZdS)�MiscTestCasecCsjg}dddh}xHtt�D]<}|jd�s||kr0qtt|�}t|dd�dkr|j|�qW|jtj|�dS)Nr�Z
nobody_uidr��_rzhttp.server)r�rr�getattrr�ZassertCountEqual�__all__)r
r�Z	blacklistr�Z
module_objectrrr�test_alls

zMiscTestCase.test_allN)rrrrWrrrrrSsrScCs4tj�}ztjtttttt	t
�Wdtj|�XdS)N)r&r�r	Zrun_unittestr�rr7r�r�rJrSr�)�verboser�rrr�	test_mains
rY�__main__)N)3rGZhttp.serverrrrrr/rrr&r�rHr�rOr�Zurllib.parser�r�Zhttp.clientr�rC�iorr�r�r	�
import_moduler
rrrZTestCaser$r7r�r�r�r�r�r��hasattrr�r�r�r�r�rrJrSrYrrrrr�<module>sT
	P$5
Ib(



Youez - 2016 - github.com/yon3zu
LinuXploit