MOON
Server: Apache
System: Linux server30c.hostingraja.org 3.10.0-962.3.2.lve1.5.63.el7.x86_64 #1 SMP Fri Oct 8 12:03:35 UTC 2021 x86_64
User: jibhires (1887)
PHP: 8.1.30
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, allow_url_fopen, symlink, escapeshellcmd, pcntl_exec
Upload Files
File: //opt/alt/python35/lib64/python3.5/site-packages/aiohttp/__pycache__/http_parser.cpython-35.pyc


���Z_�@s�ddlZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZddlm
Z
ddlmZmZmZmZmZmZdd	lmZmZdd
lmZddlmZmZyddlZdZWnek
rd
ZYnXdddddfZ e!ej"�Z#ej$d�Z%ej$d�Z&ej$d�Z'ej(dddddddddddg
�Z)ej(ddd d!ddddddg	�Z*Gd"d#�d#e�Z+Gd$d%�d%e�Z,Gd&d�d�Z-Gd'd(�d(e-�Z.Gd)d*�d*e-�Z/Gd+d,�d,�Z0Gd-d.�d.�Z1e.Z2e/Z3y-dd/l4m5Z5m6Z6e
r�e5Z2e6Z3Wnek
r�YnXdS)0�N)�IntEnum)�CIMultiDict)�URL�)�hdrs)�
NO_EXTENSIONS)�
BadStatusLine�ContentEncodingError�ContentLengthError�
InvalidHeader�LineTooLong�TransferEncodingError)�HttpVersion�
HttpVersion10)�internal_logger)�
EMPTY_PAYLOAD�StreamReaderTF�
HttpParser�HttpRequestParser�HttpResponseParser�RawRequestMessage�RawResponseMessagez
[A-Z0-9$-_.]+zHTTP/(\d+).(\d+)s'[\x00-\x1F\x7F()<>@,;:\[\]={} \t\\\\\"]�method�path�version�headers�raw_headersZshould_close�compression�upgrade�chunkedZurl�code�reasonc@s(eZdZdZdZdZdZdS)�
ParseStaterr��N)�__name__�
__module__�__qualname__�
PARSE_NONE�PARSE_LENGTH�
PARSE_CHUNKED�PARSE_UNTIL_EOF�r,r,�/http_parser.pyr"/sr"c@s.eZdZdZdZdZdZdZdS)�
ChunkStaterrr#r$�N)r%r&r'�PARSE_CHUNKED_SIZE�PARSE_CHUNKED_CHUNK�PARSE_CHUNKED_CHUNK_EOF�PARSE_MAYBE_TRAILERS�PARSE_TRAILERSr,r,r,r-r.7s
r.c@seZdZddddddddddddddd�
Zdd	�Zd
dejejejdd
�Z	dd�Z
dS)rNi�i�FTcCs�||_||_||_||_||_||_||_||_|	|_|
|_	||_
||_g|_d|_
d|_d|_d|_|
|_dS)N�F)�protocol�loop�
max_line_size�max_headers�max_field_size�timerr r�readall�payload_exception�response_with_body�read_until_eof�_lines�_tail�	_upgradedZ_payload�_payload_parser�_auto_decompress)�selfr6r7r8r9r:r;r rr<r=r>r?�auto_decompressr,r,r-�__init__As$																	zHttpParser.__init__cCs�|jdk	r(|jj�d|_nu|jrD|jj|j�|jr�|jddkrp|jjd�y|j|j�SWntk
r�dSYnXdS)Nrz
����)rC�feed_eofrAr@�append�
parse_message�	Exception)rEr,r,r-rJ[s
		
zHttpParser.feed_eofs
r5c"Cs�g}|jr&|j|d}|_t|�}d}	|j}
xx|	|kr�|jdkr�|jr�|j||	�}||	kr�|jr�|d}	qD||	kr�|jj||	|��|d}	|jd|kr�z|j|j�}Wd|jj	�X|j
j|�}
|
dk	royt|
�}
Wnt
k
rVt|��YnX|
dkrot|��||j
kr�t|��|j|_t|d|j�}|
dk	r�|
dks�|jrW|jrWt|jd|jd|
�}t|d|
d	|jd|d
|jd|jd|jd
|jd|j�}|jsn||_n||kr�t|jd|jd|
�}d|_t|d|jd
|jddd|j�|_n�t|dd�dkrh|
dkrh|jrht|jd|jd|
�}t|d|
d	|jd|d
|jd|jddd
|jd|j�}|jsn||_nt}|j||f�q�||	d�|_|}PqD|jdkr�|jr�|js�t�PqD|r�|	|kr�|js�t�y&|jj ||	d��\}}Wnxt!k
r�}zX|j"dk	r^|jj#j$|j"t%|���n|jj#j$|�d}d}WYdd}~XnX|r�d}	t|�}d|_qDqDPqDW|r�|	|kr�||	d�}n|}||j|fS)Nr5rr#rrr;r7�lengthrrr r<r>rFT�d��rI)&rA�lenr7rCrB�findr@rKrL�clearr�get�int�
ValueErrorrr�getattrrrrr6r;�HttpPayloadParserrr r<r>rD�doner?r�AssertionError�	feed_data�
BaseExceptionr=�payload�
set_exception�str)rE�data�SEPZEMPTY�CONTENT_LENGTH�METH_CONNECT�SEC_WEBSOCKET_KEY1ZmessagesZdata_lenZ	start_posr7�pos�msgrNrr]Zpayload_parser�eof�excr,r,r-r[ls�		


									zHttpParser.feed_datac
Cs"t�}g}d}|d}t|�}x�|r!t|�}y|jdd�\}}	Wn!tk
rt|�d�YnX|jd�}tj|�r�t|��|d7}||}|o�|ddk}
|
r�|	g}	x�|
r�|t|�7}||jkr2t	dj
|jd	d
��|j��|	j|�|d7}||krx||}|r|ddk}
q�d}Pq�Wdj
|	�}	n6||jkr�t	dj
|jd	d
��|j��|	j�}	|jdd
�}|	jdd
�}|j||�|j||	f�q.Wd}
d}d}d}t|�}|jtj�}|r�|j�}|dkrd}
n'|dkr�d}
n|dkr�d}|jtj�}|r�|j�}|dkr�|}|jtj�}|rd|j�krd}|||
|||fS)z�Parses RFC 5322 headers from a stream.

        Line continuations are supported. Returns list of header name
        and value pairs. Header name is in upper case.
        r�:Ns 	r� �	zrequest header field {}�utf8�xmlcharrefreplacer5zutf-8�surrogateescapeF�closeTz
keep-aliver�gzip�deflate�brr)rjrk)rjrk)rprqrr)rrQ�splitrVr�strip�HDRRE�searchr:r�format�decoderK�join�add�tuplerTrZ
CONNECTION�lowerZCONTENT_ENCODINGZTRANSFER_ENCODING)rE�linesrrZ	lines_idx�lineZ
line_countZ
header_lengthZbnameZbvalueZcontinuation�name�valueZ
close_conn�encodingrr�conn�v�encZter,r,r-�
parse_headers�s�	
	


		


		zHttpParser.parse_headers)r%r&r'rGrJrrbrcrdr[r�r,r,r,r-r?s	�c@s"eZdZdZdd�ZdS)�HttpRequestParserPyz�Read request status line. Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    cCs�t|d�|jkr+td|j��|djdd�}y|jdd�\}}}Wn!tk
r�t|�d�YnX|j�}tj	|�s�t|��y_|j
d�r�|dd�jdd	�\}}tt|�t|��}nt|��Wnt
k
r*t|��YnX|j|�\}}	}
}}}
|
dkrs|tkrmd
}
nd}
t|||||	|
|||
t|��
S)NrzStatus line is too longzutf-8rnr#zHTTP/��.rTF)rQr8rrxrsrVr�upper�METHRE�match�
startswithrrUrMr�rrr)rEr}r~rrrZn1Zn2rrrorrrr,r,r-rL_s4
"
!	z!HttpRequestParserPy.parse_messageN)r%r&r'�__doc__rLr,r,r,r-r�Ysr�c@s"eZdZdZdd�ZdS)�HttpResponseParserPyz�Read response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessagec
"Cs�t|d�|jkr+td|j��|djdd�}y|jdd�\}}Wn!tk
r�t|�d�Yn8Xy|jdd�\}}Wntk
r�d}YnXtj|�}|dkr�t|��t	t
|jd��t
|jd���}yt
|�}Wn!tk
r?t|�d�YnX|dkrXt|��|j|�\}}}	}
}}|	dkr�|t
k}	t|||j�|||	|
||�	S)	NrzStatus line is too longzutf-8rnrrHr#i�)rQr8rrxrsrVr�VERSREr�rrU�groupr�rrrt)
rEr}r~r�statusr!r�rrrorrrr,r,r-rL�s8

-
!z"HttpResponseParserPy.parse_messageN)r%r&r'r�rLr,r,r,r-r��sr�c
@sReZdZdddddddddd�Zdd�Zdd	d
d�ZdS)rXNFTc

Cs[||_d|_tj|_tj|_d|_d|_	|	|_
d|_|rr|rr|j
rrt||�}|s�tj|_|j
�d|_n�|r�tj|_n�|dk	r�tj|_||_|jdkrN|j
�d|_nY|r|dkrtj|_n8|d	krNtjd�tj|_|j
�d|_||_dS)
Nrr5FT���PUT�POSTz6Content-Length or Transfer-Encoding header is required)r�r�)r]�_lengthr"r(�_typer.r0�_chunk�_chunk_size�_chunk_tailrDrY�
DeflateBufferrJr*r)r+r�warning)
rEr]rNrrr rr<r>rFr,r,r-rG�s>						
	

	zHttpPayloadParser.__init__cCse|jtjkr"|jj�n?|jtjkrCtd��n|jtjkratd��dS)Nz2Not enough data for satisfy content length header.z3Not enough data for satisfy transfer length header.)	r�r"r+r]rJr)r
r*r
)rEr,r,r-rJ�szHttpPayloadParser.feed_eofs
�;c
Cs|jtjkr�|j}t|�}||krv|||_|jj||�|jdkr�|jj�dSqd|_|jj|d|�|�|jj�d||d�fSnG|jtjkr�|j	r�|j	|}d|_	x|r�|j
tjkr)|j
|�}|dkr|j
|d|�}|dkr[|d|�}n|d|�}ytt|�d�}WnAtk
r�t|d|��}	|jj|	�|	d�YnX||dd�}|dkr�tj|_
q)tj|_
||_|jj�n
||_	dS|j
tjkr�|j}t|�}||kr�|||_|jj||�d	Sd|_|jj|d|�|�||d�}tj|_
|jj�|j
tjkr#|dd�|kr|dd�}tj|_
n
||_	d
S|j
tjkrx|dd�|krl|jj�d|dd�fStj|_
|j
tjkr�|j
|�}|dkr�||dd�}tj|_
q�||_	dSq�Wn+|jtjkr|jj|t|��dS)
NrTr5�r#F)Tr5)FN)FN)FN)FN)FN)r�r"r)r�rQr]r[rJr*r�r�r.r0rRrU�bytesrVr
r^r3r1r��begin_http_chunk_receivingr2�end_http_chunk_receivingr4r+)
rE�chunkraZ	CHUNK_EXTZrequiredZ	chunk_lenre�i�sizerhr,r,r-r[�s�	

	
	
		
			
	
	
	zHttpPayloadParser.feed_data)r%r&r'rGrJr[r,r,r,r-rX�s
	*
rXc@s^eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)r�zDDeflateStream decompress stream and feed data into specified stream.cCs�||_d|_||_d|_|dkrTtsBtd��tj�|_n8|dkrmdt	j
nt	j
}t	jd|�|_dS)NrFrrzGCan not decode content-encoding: brotli (br). Please install `brotlipy`rpr�Zwbits)�outr�r��_started_decoding�
HAS_BROTLIr	�brotliZDecompressor�decompressor�zlib�	MAX_WBITS�
decompressobj)rEr�r�Z	zlib_moder,r,r-rGas					#zDeflateBuffer.__init__cCs|jj|�dS)N)r�r^)rErhr,r,r-r^rszDeflateBuffer.set_exceptioncCs�|j|7_y|jj|�}Wn�tk
r�|jr�|jdkr�tj�|_y|jj|�}Wq�tk
r�td|j��Yq�Xntd|j��YnX|r�d|_|j	j
|t|��dS)Nrqz#Can not decode content-encoding: %sT)r�r��
decompressrMr�r�r�r�r	r�r[rQ)rEr�r�r,r,r-r[us 

	zDeflateBuffer.feed_datacCsv|jj�}|s$|jdkre|jj|t|��|jdkre|jjretd��|jj	�dS)Nrrrrq)
r��flushr�r�r[rQr�rgr	rJ)rEr�r,r,r-rJ�szDeflateBuffer.feed_eofcCs|jj�dS)N)r�r�)rEr,r,r-r��sz(DeflateBuffer.begin_http_chunk_receivingcCs|jj�dS)N)r�r�)rEr,r,r-r��sz&DeflateBuffer.end_http_chunk_receivingN)
r%r&r'r�rGr^r[rJr�r�r,r,r,r-r�^s
r�)�HttpRequestParserC�HttpResponseParserC)7�collections�re�stringr��enumrZ	multidictrZyarlrrHrZhelpersrZhttp_exceptionsrr	r
rrr
Zhttp_writerrr�logrZstreamsrrr�r��ImportError�__all__�set�	printableZASCIISET�compiler�r�ru�
namedtuplerrr"r.rr�r�rXr�rrZ_http_parserr�r�r,r,r,r-�<module>s`.

	�01�<