403Webshell
Server IP : 217.160.0.135  /  Your IP : 216.73.217.85
Web Server : Apache
System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64
User : sws1074145052 ( 1074145052)
PHP Version : 8.3.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /lib/python3/dist-packages/flup/server/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /lib/python3/dist-packages/flup/server/__pycache__/ajp_base.cpython-311.pyc
�

#H\a�w���dZdZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZdgZ
Gd�de��ZdZdZd	Zd
ZdZdZd
ZdZdZdZdZgd�Zgd�Zgd�Zgd�ZdZej ��Z!e!�"ej#��e!�$ej%dd����ej&e���'e!��[!Gd�de(��Z)d)d�Z*d)d�Z+d)d�Z,d�Z-d�Z.Gd �d!e��Z/Gd"�d#e��Z0Gd$�d%e��Z1Gd&�d'e��Z2Gd(�de��Z3dS)*zAllan Saddi <allan@saddi.com>z
$Revision$�N�
BaseAJPServerc��eZdZdS)�	NoDefaultN)�__name__�
__module__�__qualname__���6/usr/lib/python3/dist-packages/flup/server/ajp_base.pyrr.s�������Dr
rz4�AB����
�����	)N�OPTIONS�GET�HEAD�POST�PUT�DELETE�TRACE�PROPFIND�	PROPPATCH�MKCOL�COPY�MOVE�LOCK�UNLOCK�ACL�REPORTzVERSION-CONTROL�CHECKIN�CHECKOUT�
UNCHECKOUT�SEARCH�MKWORKSPACE�UPDATE�LABEL�MERGE�BASELINE_CONTROL�
MKACTIVITY)N�AcceptzAccept-CharsetzAccept-EncodingzAccept-Language�
Authorization�
Connection�Content-Type�Content-Length�Cookie�Cookie2�Host�Pragma�Refererz
User-Agent)N�CONTEXT�SERVLET_PATH�REMOTE_USER�	AUTH_TYPE�QUERY_STRING�	JVM_ROUTE�SSL_CERT�
SSL_CIPHER�SSL_SESSIONN�SSL_KEY_SIZE)Nzcontent-typezcontent-language�content-length�datez
last-modified�locationz
set-cookiezset-cookie2zservlet-engine�statuszwww-authenticatezajp-wsgiz%(asctime)s : %(message)sz%Y-%m-%d %H:%M:%Sc��eZdZdZdS)�
ProtocolErrorz�
    Exception raised when the server does something unexpected or
    sends garbled data. Usually leads to a Connection closing.
    N)rrr�__doc__r	r
rrIrI�s��������	�Dr
rIc��	tjd|||dz���d}|dz
}|dkrd|fS||||z�}|||zdzfS#t$r$}tdt	|��z���d}~wwxYw)	zDecode a string.�>H�r���zdecodeString: N)�struct�unpack�	ExceptionrI�str)�data�pos�length�s�es     r�decodeStringrZ�s���5���t�T�#�c�!�e�)�_�5�5�a�8���q����V����s�7�N���S��Z�� ���#�f�*�Q�,�����5�5�5��,�S��V�V�3�4�4�4�����5���s�4A�A�
A<�A7�7A<c�L�	||dkr<t||dz��}t|}|�td���|dz
}nt||��\}}t||��\}}|||fS#t$r$}tdt
|��z���d}~wwxYw)z#Decode a request header/value pair.� rPNzbad request header coderMzdecodeRequestHeader: )�ord�requestHeaderTable�
ValueErrorrZrSrIrT�rUrV�i�name�valuerYs      r�decodeRequestHeaderrd�s���
<���9�����D��Q��K� � �A�%�a�(�D��|� �!:�;�;�;��1�H�C�C�$�T�3�/�/�I�D�#�!�$��,�,�
��s��U�C�����<�<�<��3�C��F�F�:�;�;�;�����<���s�A2A5�5
B#�?B�B#c���	t||��}|dz
}|dkrdd|fS|dkrt||��\}}nl|dkrHt|}tjd|||dz���d}|t|��|dzfSt|}|�t
d	���t||��\}}|||fS#t$r$}td
t|��z���d}~wwxYw)zDecode a request attribute.rP�N�
�rLrMrzbad attribute codezdecodeAttribute: )	r]rZ�attributeTablerQrRrTr_rSrIr`s      r�decodeAttributerj�s��8���S�	�N�N���q�����9�9���s�?�"�
�$�Y�Y�$�T�3�/�/�I�D�#�#�
�$�Y�Y�!�!�$�D��M�$��S��Q��Y��8�8��;�E���U���S��U�*�*�!�!�$�D��|� �!5�6�6�6�!�$��,�,�
��s��U�C�����8�8�8��/��A���6�7�7�7�����8���s#�$C�A'C�5C�
C3�C.�.C3c�R�tjdt|����|zdzS)zEncode a string.rL�)rQ�pack�len)rXs r�encodeStringro�s$���;�t�S��V�V�$�$�q�(�6�1�1r
c���|���}|tvr-t�|��}dt|��z}nt	|��}|t	|��z
}|S)z$Encode a response header/value pair.r\)�lower�responseHeaderTable�index�chrro)rbrc�lnamera�outs     r�encodeResponseHeaderrw�sc���J�J�L�L�E��#�#�#��%�%�e�,�,���s�1�v�v�o����4� � ���<�����C��Jr
c�\�eZdZdZd�Zd�Zee��Zd�Zd�Zee��Zd�Z	dS)�PacketzAn AJP message packet.c�"�d|_d|_dS�NrOr)rUrW��selfs r�__init__zPacket.__init__�s����	�����r
c�b�g}d}|r�	|�|��}nI#tj$r7}|jtjkrtj|ggg��Yd}~�Y�d}~wwxYw|sn0|�|��t|��}||z
}||z}|��d�|��|fS)z�
        Attempts to receive length bytes from a socket, blocking if necessary.
        (Socket may be blocking or non-blocking.)
        rNrO)	�recv�socket�error�errno�EAGAIN�select�appendrn�join)�sockrW�dataList�recvLenrUrY�dataLens       r�_recvallzPacket._recvall�s���
�����	�
��y�y��(�(�����<�
�
�
��7�e�l�*�*��M�4�&�"�b�1�1�1��H�H�H�H������
�����
���O�O�D�!�!�!��$�i�i�G��w��G��g��F��	��w�w�x� � �'�)�)s��A$�,A�A�A$c���	|�|d��\}}n#tj$rt�wxYw|dkrt�|dd�tkrtd���t
jd|dd���d|_|jrQ	|�||j��\|_	}n#tj$rt�wxYw||jkr	t�dSdS)z)Attempt to read a packet from the server.�NrMzinvalid headerrLr)
r�r�r��EOFError�
SERVER_PREFIXrIrQrRrWrU)r}r��headerrWs    r�readzPacket.reads	��	�!�]�]�4��3�3�N�F�F�F���|�	�	�	��N�	�����A�:�:��N��"�1�"�:��&�&�� 0�1�1�1��m�D�&��1��+�6�6�q�9����;�	�
�$(�M�M�$���$D�$D�!��	�6�6���<�
�
�
���
�������#�#���	�	�$�#s��3�#B9�9Cc��t|��}|rt	|�|��}nJ#tj$r8}|dtjkrt
jg|gg��Yd}~�Z�d}~wwxYw||d�}||z}|�rdSdS)zY
        Writes data to a socket and does not return until all the data is sent.
        rN)rn�sendr�r�r�r�r�)r�rUrW�sentrYs     r�_sendallzPacket._sendall#s����T�����
	�
��y�y��������<�
�
�
��Q�4�5�<�'�'��M�"�t�f�b�1�1�1��H�H�H�H������
��������;�D��d�N�F��
	�
	�
	�
	�
	s�)�A0�-A+�*A+�+A0c���t|j��|_|�|ttjd|j��z��|jr|�||j��dSdS)zSend a packet to the server.rLN)rnrUrWr��CONTAINER_PREFIXrQrm�r}r�s  r�writezPacket.write5si���$�)�n�n����
�
�d�,�v�{�4���/M�/M�M�N�N�N��;�	+��M�M�$��	�*�*�*�*�*�	+�	+r
N)
rrrrJr~r��staticmethodr�r�r�r	r
rryry�s������� � ����
*�*�*�.�|�H�%�%�H����0��� �|�H�%�%�H�+�+�+�+�+r
ryc�Z�eZdZdZd�Zd�Zd�Zd�Zdd�Zdd	�Z	dd�Z
d�Zd
�Zd�Z
d�ZdS)�InputStreamz�
    File-like object that represents the request body (if any). Supports
    the bare mininum methods required by the WSGI spec. Thanks to
    StringIO for ideas.
    c��||_|jj|_d|_g|_d|_d|_d|_tj
t��|_dSr{)
�_conn�server�inputStreamShrinkThreshold�_shrinkThreshold�_buf�_bufList�_pos�_avail�_length�logging�	getLogger�
LoggerName�logger�r}�conns  rr~zInputStream.__init__BsQ����
�!%�� F�����	���
���	��������'�
�3�3����r
c� �|j|jz
S�N)r�r�r|s r�bytesAvailForAddzInputStream.bytesAvailForAddPs���|�d�k�)�)r
c���|j|jkrb|j|jd�|_|xj|jzc_|xj|jzc_d|_|jdkr|jdksJ�dSdS)z6Gets rid of already read data (since we can't rewind).Nr)r�r�r�r�r�r|s r�
_shrinkBufferzInputStream._shrinkBufferSs����9��-�-�-��	�$�)�*�*�-�D�I��K�K�4�9�$�K�K��L�L�D�I�%�L�L��D�I��;�!�#�#����(9�(9�(9�(9�
.�-�):�(9r
c� �t|���d��}|dksJ�t��}tt	jd|��z|_|j�|��|j�	��dS)NrNrrL)
�minr�ry�PKTTYPE_GET_BODYrQrmrUr��writePacket�processInput)r}�toAdd�pkts   r�_waitForDatazInputStream._waitForData]s~���D�)�)�+�+�V�4�4���q�y�y�y�y��h�h��#��;�t�U�+�+�,����
���s�#�#�#��
���!�!�!�!�!r
���c��|j|jkrdS	|dks|j|jz
|kr1|���s|j}n |����K|j|z}	|jr/|xjd�|j��z
c_g|_|j|j|�}||_|���|S)NrOTr)	r�r�r�r�r�r�r�r�r�)r}�n�newPos�rs    rr�zInputStream.readfs����9���$�$��2�
	��1�u�u���t�y�0�A�5�5��,�,�.�.��!�[�F���%�%�'�'�'����Q�����=�	��I�I������/�/�/�I�I��D�M��I�d�i��&�'����	��������r
Nc�
�|j|jkrdS	|jr/|xjd�|j��z
c_g|_|j�d|j��}|dkr^|���s|j}nH|�+t|j��||jzkr|j|z}n|�	����|dz}	|j|j|�}||_|�
��|S)NrOTrrrP)r�r�r�r�r��findr�r�rnr�r�)r}rWrar�r�s     r�readlinezInputStream.readline�s���9���$�$��2�	��}�
#��	�	�R�W�W�T�]�3�3�3�	�	� "��
��	���t�T�Y�/�/�A��1�u�u��,�,�.�.�
�!�[�F���)�c�$�)�n�n����@R�.R�.R�!%��V�!3����%�%�'�'�'���Q�����I�d�i��&�'����	��������r
rc���d}g}|���}|rN|�|��|t|��z
}d|cxkr|krnnn|���}|�N|S)Nr)r�r�rn)r}�sizehint�total�lines�lines     r�	readlineszInputStream.readlines�s��������}�}�����	#��L�L������S��Y�Y��E��8�$�$�$�$�u�$�$�$�$�$���=�=�?�?�D��	#��r
c��|Sr�r	r|s r�__iter__zInputStream.__iter__�s���r
c�@�|���}|st�|Sr�)r��
StopIteration)r}r�s  r�nextzInputStream.next�s"���M�M�O�O���	 ����r
c��||_dS)zT
        Once Content-Length is known, Request calls this method to set it.
        N)r�)r}rWs  r�
setDataLengthzInputStream.setDataLength�s������r
c���|std���|j�|��t|��}|xj|z
c_|j|jkrtd���dS)z�
        Adds data from the server to this InputStream. Note that we never ask
        the server for data beyond the Content-Length, so the server should
        never send us an EOF (empty string argument).
        z
short dataz
too much dataN)rIr�r�rnr�r�)r}rUrWs   r�addDatazInputStream.addData�sp���	.���-�-�-��
���T�"�"�"��T�������v�����;���%�%���0�0�0�&�%r
)r�r��r)rrrrJr~r�r�r�r�r�r�r�r�r�r�r	r
rr�r�<s���������
4�4�4�*�*�*�:�:�:�"�"�"�����4����>
�
�
�
����������1�1�1�1�1r
r�c�j�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�ZdS)�Requesta}
    A Request object. A more fitting name would probably be Transaction, but
    it's named Request to mirror my FastCGI driver. :) This object
    encapsulates all the data about the HTTP request and allows the handler
    to send a response.

    The only attributes/methods that the handler should concern itself
    with are: environ, input, startResponse(), and write().
    i�c��||_i|_t|��|_d|_tjt��|_dS)NF)	r��environr��input�_headersSentr�r�r�r�r�s  rr~zRequest.__init__�s=����
���� ��&�&��
�!����'�
�3�3����r
c��|j�d|jd|jd��tj���}	|jj�|��nG#|j�d��|j	s|jj�
|��YnxYwtj���}t��}tdz|_
|j�|��||z
}|j�d|jd|jd|j|jdzz��dS)Nz%s %s�REQUEST_METHOD�REQUEST_URIzException caught from handler�z%s %s done (%.3f secs)g��.A)r��infor��datetime�nowr�r��handler�	exceptionr�r�ry�PKTTYPE_END_RESPONSErUr��debug�seconds�microseconds)r}�start�endr��handlerTimes     r�runzRequest.run�sQ���������&6�7���m�4�	6�	6�	6��!�%�%�'�'��	.��J��%�%�d�+�+�+�+��	.��K�!�!�"A�B�B�B��$�
.��
�!�'�'��-�-�-��������#�#�%�%���h�h��'�&�0����
���s�#�#�#��E�k������2��,�'7�8��,�}�5�%�-�%�2�Y�>�?�	@�	@�	@�	@�	@s
�A2�2AB6c��||jd<dS)Nr��r��r}rcs  r�	setMethodzRequest.setMethod�s��).���%�&�&�&r
c��||jd<dS)N�SERVER_PROTOCOLr�r�s  r�setProtocolzRequest.setProtocols��*/���&�'�'�'r
c��||jd<dS)Nr�r�r�s  r�
setRequestURIzRequest.setRequestURI���&+���]�#�#�#r
c��||jd<dS)N�REMOTE_ADDRr�r�s  r�
setRemoteAddrzRequest.setRemoteAddrr�r
c��||jd<dS)N�REMOTE_HOSTr�r�s  r�
setRemoteHostzRequest.setRemoteHost
r�r
c��||jd<dS)N�SERVER_NAMEr�r�s  r�
setServerNamezRequest.setServerName
r�r
c�4�t|��|jd<dS)N�SERVER_PORT)rTr�r�s  r�
setServerPortzRequest.setServerPorts��&)�%�j�j���]�#�#�#r
c�"�|rd|jd<dSdS)N�on�HTTPSr�r�s  r�setIsSSLzRequest.setIsSSLs&���	)�$(�D�L��!�!�!�	)�	)r
c���|�dd�����}|dvr=||j|<|dkr+t|��}|j�|��dSdS||jd|z<dS)N�-�_)�CONTENT_TYPE�CONTENT_LENGTHr�HTTP_)�replace�upperr��intr�r�)r}rbrcrWs    r�	addHeaderzRequest.addHeaders����|�|�C��%�%�+�+�-�-���5�5�5�!&�D�L����'�'�'��U�����
�(�(��0�0�0�0�0�(�'�*/�D�L����&�&�&r
c��||j|<dSr�r�)r}rbrcs   r�addAttributezRequest.addAttribute!s��"���T���r
c�p�|jr
Jd���t��}ttjd|��zt|��ztjdt
|����zd�d�|D����z|_|j	�
|��d|_dS)at
        Begin the HTTP response. This must only be called once and it
        must be called before any calls to write().

        statusCode is the integer status code (e.g. 200). statusMsg
        is the associated reason message (e.g.'OK'). headers is a list
        of 2-tuples - header name/value pairs. (Both header name and value
        must be strings.)
        zHeaders already sent!rLrOc�4�g|]\}}t||����Sr	)rw)�.0rbrcs   r�
<listcomp>z)Request.startResponse.<locals>.<listcomp>7s6��7�7�7� *��U�1��u�=�=�7�7�7r
TN)r�ry�PKTTYPE_SEND_HEADERSrQrmrornr�rUr�r�)r}�
statusCode�	statusMsg�headersr�s     r�
startResponsezRequest.startResponse&s����$�=�=�&=�=�=�=��h�h��'��;�t�Z�0�0�1��	�*�*�+��;�t�S��\�\�2�2�3��7�7�7�7�.5�7�7�7�8�8�	8���	
�
���s�#�#�#� ����r
c�J�|js
Jd���t|��}|r�t||j��}t	��}t
t
jd|��z|d|�zdz|_|j	�
|��||d�}||z}|�~dSdS)z�
        Write data (which comprises the response body). Note that due to
        restrictions on AJP packet size, we limit our writes to 8185 bytes
        each packet.
        zHeaders must be sent first!rLNrl)r�rnr��	_maxWritery�PKTTYPE_SEND_BODYrQrmrUr�r�)r}rU�	bytesLeft�toWriter�s     rr�z
Request.write>s���� �?�?�"?�?�?�?���I�I�	��
	!��)�T�^�4�4�G��(�(�C�(��{�4��1�1�2��H�W�H�~�&�(.�/�C�H�
�J�"�"�3�'�'�'�����>�D��� �I��
	!�
	!�
	!�
	!�
	!r
N)rrrrJrr~r�r�r�r�r�r�r�r�rr
rrr�r	r
rr�r��s���������!�I�4�4�4�@�@�@�>/�/�/�0�0�0�,�,�,�,�,�,�,�,�,�,�,�,�1�1�1�)�)�)�/�/�/�#�#�#�
!�!�!�0!�!�!�!�!r
r�c�H�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)r2z�
    A single Connection with the server. Requests are not multiplexed over the
    same connection, so at any given time, the Connection is either
    waiting for a request, or processing a single request.
    c�z�||_||_||_d|_t	jt��|_dSr�)r��_sock�_addr�_requestr�r�r�r�)r}r��addrr�s    rr~zConnection.__init__Ys4�������
���
���
��'�
�3�3����r
c�
�|j�d|jd|jd��		|���nm#t$r2}|j�dt
|����Yd}~n7d}~wttf$rYn!|j�	d��YnxYw��|j�d|jd|jd��|j
���dS)NzConnection starting up (%s:%d)rrPTzProtocol error '%s'zException caught in Connectionz Connection shutting down (%s:%d))r�r�r!r�rIr�rTr��KeyboardInterruptr�r �close)r}rYs  rr�zConnection.runbs"������:��*�Q�-���A��	8�	8�	8�

	�	
��!�!�#�#�#�#�� �
�
�
���!�!�"7��Q���@�@�@�����������/�0�
�
�
���
���%�%�&F�G�G�G������
	�	
����<��*�Q�-���A��	8�	8�	8�	
�
�������s�A
�

B4�(B�B4�B4c�:�t��}tj|jggg��|�|j��|j�|�|��dS|jstd���|jd}|tkr|�
|��dS|tkr|�|��dS|tkr|�|��dS|tkr|�|��dStd���)z%Wait for and process a single packet.Nzunexpected empty packetrzunknown packet type)ryr�r r�r"�_processBodyrWrIrU�PKTTYPE_FWD_REQ�_forwardRequest�PKTTYPE_SHUTDOWN�	_shutdown�PKTTYPE_PING�_ping�
PKTTYPE_CPING�_cping)r}r��pkttypes   rr�zConnection.processInputys���h�h���
�t�z�l�B��+�+�+����������=�$����c�"�"�"��F��z�	;�� 9�:�:�:��(�1�+���o�%�%�� � ��%�%�%�%�%�
�(�
(�
(��N�N�3������
��
$�
$��J�J�s�O�O�O�O�O�
�
�
%�
%��K�K�������� 5�6�6�6r
c��|j�J�|j�|��}t|jd��}t
|}|�t
d���|�|��t|jd��\}}|�	|��t|j|��\}}|�
|��t|j|��\}}|�|��t|j|��\}}|�|��t|j|��\}}|�
|��tjd|j||dz���d}|�|��t|j|dz��}|�|dk��tjd|j|dz|dz���d}|dz
}t%|��D]1}t'|j|��\}}}|�||���2	t+|j|��\}}}|�n|�||���3||_|j���r|���|���d|_dS)	zV
        Creates a Request object, fills it in from the packet, then runs it.
        NrPzbad method fieldrMrLr��)r"r��requestClassr]rU�methodTabler_r�rZr�r�r�r�r�rQrRr�r�rangerdr
rjrr�r�r�r�)	r}r��reqra�methodrcrV�
numHeadersrbs	         rr*zConnection._forwardRequest�s����}�$�$�$��k�&�&�t�,�,�����������Q����>��/�0�0�0��
�
�f����!�#�(�A�.�.�
��s��������!�#�(�C�0�0�
��s����%� � � �!�#�(�C�0�0�
��s����%� � � �!�#�(�C�0�0�
��s����%� � � �!�#�(�C�0�0�
��s����%� � � ��
�d�C�H�S��Q��Y�$7�8�8��;�����%� � � �����Q��� � �����Q�!�V�����]�4���#�a�%��A��+�)>�?�?��B�
��q����z�"�"�	'�	'�A�2�3�8�S�A�A��D�%���M�M�$��&�&�&�&�	*�.�s�x��=�=��D�%���|�����T�5�)�)�)�		*���
��9�%�%�'�'�	 �������	���	�	�	���
�
�
r
c�:�|j�d��dS)z"Not sure what to do with this yet.z%Received shutdown request from serverN)r�r��r}r�s  rr,zConnection._shutdown�s������@�A�A�A�A�Ar
c�:�|j�d��dS)z&I have no idea what this packet means.z
Received pingN)r�r�r<s  rr.zConnection._ping�s������/�*�*�*�*�*r
c��|j�d��t��}t|_|�|��dS)z!Respond to a PING (CPING) packet.zReceived PING, sending PONGN)r�r�ry�
PKTTYPE_CPONGrUr�r<s  rr0zConnection._cping�sC������7�8�8�8��h�h�� �����������r
c��|jrYtjd|jdd���d}|jj�|jdd|z���dS|jj�d��dS)zb
        Handles a body chunk from the server by appending it to the
        InputStream.
        rLNrMrrO)rWrQrRrUr"r�r�)r}r�rWs   rr(zConnection._processBody�s}��
�:�	,��]�4���"�1�"��6�6�q�9�F��M��'�'����1�V�8��(<�=�=�=�=�=�
�M��'�'��+�+�+�+�+r
c�:�|�|j��dS)zSends a Packet to the server.N)r�r r<s  rr�zConnection.writePacket�s���	�	�$�*�����r
N)
rrrrJr~r�r�r*r,r.r0r(r�r	r
rr2r2Ss���������
4�4�4����.7�7�7�42�2�2�hB�B�B�+�+�+����
,�
,�
,�����r
r2c�\�eZdZeZdZdddddeejdfd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�ZdS)riprONTF)�	localhostiIc
�6�|�i}||_||_||_||_||_|	|_||_|turdg}||_tj
��|_tj
t��|_|j�|��dS)a�
        scriptName is the initial portion of the URL path that "belongs"
        to your application. It is used to determine PATH_INFO (which doesn't
        seem to be passed in). An empty scriptName means your application
        is mounted at the root of your virtual host.

        environ, which must be a dictionary, can contain any additional
        environment variables you want to pass to your application.

        Set multithreaded to False if your application is not thread-safe.

        Set multiprocess to True to explicitly set wsgi.multiprocess to
        True. (Only makes sense with threaded servers.)

        bindAddress is the address to bind to, which must be a tuple of
        length 2. The first element is a string, which is the host name
        or IPv4 address of a local interface. The 2nd element is the port
        number.

        allowedServers must be None or a list of strings representing the
        IPv4 addresses of servers allowed to connect. None means accept
        connections from anywhere. By default, it is a list containing
        the single item '127.0.0.1'.

        loggingLevel sets the logging level of the module-level logger.
        Nz	127.0.0.1)�application�
scriptNamer��
multithreaded�multiprocessr��_bindAddressr�_allowedServers�thread�
allocate_lock�_appLockr�r�r�r��setLevel)
r}rErFr�rGrH�bindAddress�allowedServers�loggingLevelr�s
          rr~zBaseAJPServer.__init__�s���<�?��G�&���$������*���(�����
�'����Y�&�&�)�]�N�-����,�.�.��
��'�
�3�3�������\�*�*�*�*�*r
c���tj��}|�tjtjd��|�|j��|�tj��|S)z?Creates and binds the socket for communication with the server.rP)r��
setsockopt�
SOL_SOCKET�SO_REUSEADDR�bindrI�listen�	SOMAXCONNr�s  r�_setupSocketzBaseAJPServer._setupSocket"sX���}��������)�6�+>��B�B�B��	�	�$�#�$�$�$����F�$�%�%�%��r
c�.�|���dS)zCloses the main socket.N)r&r�s  r�_cleanupSocketzBaseAJPServer._cleanupSocket*s���
�
�����r
c�|�|jdup|d|jv}|s!|j�d|d��|S)Nrz$Server connection from %s disallowed)rJr��warning)r}r#�rets   r�_isClientAllowedzBaseAJPServer._isClientAllowed.sQ���"�d�*�M�d�1�g��9M�.M���	)��K��� F� $�Q��
)�
)�
)��
r
c������	��j}|�|j��d|d<�j|d<tj|d<|j|d<|j|d<d|d<|�d	d
��dvrd|d
<nd|d
<|�|��g�g�d�����fd��	d���	fd�	}|js|j	�
��		|�||���	�D]}|r�	|����s�	d��t�d��r��
��n*#t�d��r��
��wwxYwn2#tj$r }|jt jkr�Yd}~nd}~wwxYw|js|j	���dSdS#|js|j	���wwxYw)z~
        WSGI handler. Sets up WSGI environment, calls the application,
        and sends the application's response.
        )rPrzwsgi.versionz
wsgi.inputzwsgi.errorszwsgi.multithreadzwsgi.multiprocessFz
wsgi.run_oncer�off)r�1�httpszwsgi.url_scheme�httpNc���t|��tus
Jd����	s
Jd����s��	x\}}�dd�<t|dd���}|dd�}d}|D]!\}}|���dkrd}n�"|sO��M	t	���dkr1|�d	tt	|����f��n#YnxYw�
�|||���
�|��dS)
Nzwrite() argument must be stringzwrite() before start_response()r3r�FrDTrPr4)�typerTrrqrnr�rr�)rUrG�responseHeadersrr�foundr�rc�headers_sent�headers_set�request�results        ����rr�z$BaseAJPServer.handler.<locals>.writeOsJ�����:�:��$�$�$�&G�$�$�$��A�A� A�A�A�A��
N�<G�G�'���,�q�q�q�/� ������_�_�
�"�1�2�2�J�	���$3���L�F�5��|�|�~�~�)9�9�9� $����:����!3���v�;�;�!�+�+�+�2�2�4D�47��D�	�	�N�N�4D�E�E�E����������%�%�j�)�_�M�M�M��M�M�$�����s
�AC
�
Cc�x��|r>	�r0|d|d���|d���	d}n#d}wxYw�r
Jd���t|��tus
Jd���t|��dks
Jd���t	|dd���s
Jd	���|dd
ks
Jd���t|��t
us
Jd���	|D]K\}}t|��tus
Jd|z���t|��tus
Jd|z����L||g�dd�<�S)NrrPrMzHeaders already set!zStatus must be a stringr�z$Status must be at least 4 charactersr3z#Status must begin with 3-digit code� z#Status must have a space after codezHeaders must be a listTz!Header name "%s" must be a stringz%Value of header "%s" must be a string)�with_tracebackrfrTrnr�list)rG�response_headers�exc_inforb�valrirjr�s     ���r�start_responsez-BaseAJPServer.handler.<locals>.start_responsegs�����
?�$�#�S�)�h�q�k�(�1�+�6�6�E�E�h�q�k�R�R�R�S� $�H�H��t�H�O�O�O�O�&�>�>�(>�>�>�>���<�<�3�&�&�&�(A�&�&�&��v�;�;�!�#�#�#�%K�#�#�#��v�b�q�b�z�?�?�I�I�$I�I�I�I��!�9��#�#�#�%J�#�#�#��(�)�)�T�1�1�1�3K�1�1�1�
\� 0�\�\�H�D����:�:��,�,�,�.Q�TX�.X�,�,�,���9�9��+�+�+�-T�W[�-[�+�+�+�+�$�&6�7�K����N��Ls�2;�?rOr&r�)r��updater��sys�stderrrGrH�get�_sanitizeEnvrM�acquirerE�hasattrr&r�r�r��EPIPE�release)
r}rkr�rtrUrYrirjrlr�s
 `    @@@@rr�zBaseAJPServer.handler5s|�������
�/�����t�|�$�$�$�"'���� '�
����!$���
��&*�&8��"�#�'+�'8��#�$�#(��� ��;�;�w��&�&�+�5�5�)0�G�%�&�&�)/�G�%�&����'�"�"�"�������	 �	 �	 �	 �	 �	 �	 �	 �0	�	�	�	�	�	�	�	�0�!�	$��M�!�!�#�#�#�	(�

��)�)�'�>�B�B��'� &�(�(���(�!�E�$�K�K�K��'�"���b�	�	�	��v�w�/�/�'����������v�w�/�/�'��������'�������<�
�
�
��7�e�k�)�)��*�)�)�)�)�����
�����%�
(��
�%�%�'�'�'�'�'�
(�
(��4�%�
(��
�%�%�'�'�'�'�
(���sH�E�%D)�%E�)'E�E�F*�F�#E>�9F*�>F�F*�*#G
c��|d}|�d|j��}|�|��s|j�d��|t|��d�|d<||d<d}d|vr|d�dd��}d	|vs|d	s)|� t|��dkr
|d|d	<dSd
|d	<dSdS)z)Fill-in/deduce missing values in environ.r��WSGI_SCRIPT_NAMEz%scriptName does not match request URIN�	PATH_INFO�SCRIPT_NAME�?rPr>rO)rxrF�
startswithr�r]rn�split)r}r�rcrF�reqUris     rryzBaseAJPServer._sanitizeEnv�s����
�&���[�[�!3�T�_�E�E�
����
�+�+�	I��K��� G�H�H�H�$�S��_�_�%5�%5�6����!+��
�����G�#�#��]�+�1�1�#�q�9�9�F���(�(���0G�(��!�c�&�k�k�A�o�o�*0��)���'�'�'�*,���'�'�'�	)�(r
c� �|jrW|�dddg��ddl}|�|�tj������dSd}|�dddg��|�|��dS)z�
        Override to provide custom error handling. Ideally, however,
        all errors should be caught at the application level.
        ���OK)r3z	text/htmlrNz�<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>Unhandled Exception</title>
</head><body>
<h1>Unhandled Exception</h1>
<p>An unhandled exception was thrown by the application.</p>
</body></html>
)r�r�cgitbr��htmlrvrr)r}rkr��	errorpages    rr�zBaseAJPServer.error�s���
�:�	%��!�!�#�t�.K�-L�M�M�M��L�L�L��M�M�%�*�*�S�\�^�^�4�4�5�5�5�5�5��I�
�!�!�#�t�.K�-L�M�M�M��M�M�)�$�$�$�$�$r
)rrrr�r5r�rr��INFOr~rYr[r_r�ryr�r	r
rrr�s��������L�"/��/1�4�#�%�0��%�l�$�0+�0+�0+�0+�d���������](�](�](�~-�-�-�*%�%�%�%�%r
r�)4�
__author__�__version__rvr�r�rQ�signalr�r�r��timerK�	threading�__all__�objectrr�r�r)r+r-r/rrr�r�r?r6r^rirrr��
StreamHandler�consolerN�DEBUG�setFormatter�	Formatterr��
addHandlerrSrIrZrdrjrorwryr�r�r2rr	r
r�<module>r�sE��6-�
���
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
������������������
�
�
������
��	�	�	�	�	��	�	�	��
����������
����������
�����>����$
�
�
��
�
�
�� �
� �'�
�
!�
!�������������&�W�&�'B�':�<�<�=�=�=����*���(�(��1�1�1��	�	�	�	�	�I�	�	�	�
5�
5�
5�
5�<�<�<�<�"8�8�8�8�42�2�2�
�
�
�O+�O+�O+�O+�O+�V�O+�O+�O+�bJ1�J1�J1�J1�J1�&�J1�J1�J1�XI!�I!�I!�I!�I!�f�I!�I!�I!�VQ�Q�Q�Q�Q��Q�Q�Q�fV%�V%�V%�V%�V%�F�V%�V%�V%�V%�V%r

Youez - 2016 - github.com/yon3zu
LinuXploit