Your IP : 216.73.216.52


Current Path : /opt/alt/python39/lib64/python3.9/test/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/__pycache__/ssl_servers.cpython-39.opt-1.pyc

a

XC?ho�@s ddlZddlZddlZddlZddlZddlZddlmZ	m
Z
mZddlm
Z
ddlmZej�e�ZejZej�ed�ZGdd�de	�ZGdd	�d	e
�ZGd
d�de�ZGdd
�d
ej�Zdeedd�dd�Zedk�rddlZejdd�Z e j!dde"ddd�e j!ddddddd�e j!d d!d"d#d$d%d�e j!d&d'e#d(d)d*�e j!d+d,e#d-d.�e j!d/d0e#d(d1d*�e �$�Z%e%j&e
_&e%j'�r�eZ(neZ(e�)�e(_*e�+ej,j-�Z.e.�/e�e%j0�r�e.�1e%j0�e%j2�r�e.�3e%j2�e%j4�r�e.�5e%j4�ed2e%j6fe(e.�Z7e%j&�re8d3�9e%��e7�:d4�dS)5�N)�
HTTPServer�SimpleHTTPRequestHandler�BaseHTTPRequestHandler)�support)�
socket_helperzkeycert.pemc@s$eZdZdd�Zdd�Zdd�ZdS)�HTTPSServercCst�|||�||_dS�N)�_HTTPServer�__init__�context)�self�server_address�
handler_classr�r�5/opt/alt/python39/lib64/python3.9/test/ssl_servers.pyr
szHTTPSServer.__init__cCsd|jj|j|jfS)Nz
<%s %s:%s>)�	__class__�__name__Zserver_name�server_port�rrrr�__str__s��zHTTPSServer.__str__c
Cshz"|j��\}}|jj|dd�}Wn<ty^}z$tjrHtj�	d|��WYd}~n
d}~00||fS)NT)Zserver_sidezGot an error:
%s
)
ZsocketZacceptrZwrap_socket�OSErrorr�verbose�sys�stderr�write)r�sockZaddrZsslconn�errr�get_request!szHTTPSServer.get_requestN)r�
__module__�__qualname__r
rrrrrrrsrc@s*eZdZdZeZejZdd�Z	dd�Z
dS)�RootedHTTPRequestHandlerz
TestHTTPS/1.0cCsztj�|�d}tj�tj�|��}|�d�}td|�}|j	}|D]2}tj�
|�\}}tj�|�\}}tj�||�}qB|S)z�Translate a /-separated PATH to the local filename syntax.

        Components that mean special things to the local file system
        (e.g. drive or directory names) are ignored.  (XXX They should
        probably be diagnosed.)

        ��/N)�urllib�parseZurlparse�os�path�normpathZunquote�split�filter�root�
splitdrive�join)rr&ZwordsZwordZdrive�headrrr�translate_path7s	

z'RootedHTTPRequestHandler.translate_pathc	Gs:tjr6tj�d|jj|jj|j�	�|�
�||f�dS)Nz server (%s:%d %s):
   [%s] %s
)rrr�stdoutr�serverr
rZrequest�cipherZlog_date_time_string�r�format�argsrrr�log_messageKs��z$RootedHTTPRequestHandler.log_messageN)rrr�server_version�herer*rZLOOPBACK_TIMEOUTZtimeoutr.r5rrrrr -s
r c@s.eZdZdZdZddd�Zdd�Zdd	�Zd
S)�StatsRequestHandlerzSExample HTTP request handler which returns SSL statistics on GET
    requests.
    zStatsHTTPS/1.0TcCs�|jjj}|j}|��|��|��d�}t�|�}|�	d�}|�
d�|�dd�|�dtt
|���|��|r~|j�|�dS)zServe a GET request.)Z
session_cacher1�compressionzutf-8��zContent-typeztext/plain; charset=utf-8zContent-LengthN)Zrfile�rawZ_sockrZ
session_statsr1r9�pprintZpformat�encodeZ
send_responseZsend_header�str�lenZend_headersZwfiler)r�	send_bodyrrZstats�bodyrrr�do_GET]s
�


zStatsRequestHandler.do_GETcCs|jdd�dS)zServe a HEAD request.F)r@N)rBrrrr�do_HEADoszStatsRequestHandler.do_HEADcGstjrtj||g|�R�dSr)rrr�log_requestr2rrrrDsszStatsRequestHandler.log_requestN)T)rrr�__doc__r6rBrCrDrrrrr8Vs

r8c@s<eZdZedfdd�Zdd�Zddd�Zdd	�Zd
d�ZdS)
�HTTPSServerThreadNcCs<d|_t|df|pt|�|_|jj|_tj�|�d|_	dS)NrT)
�flagrr r0r�port�	threading�Threadr
Zdaemon)rr�hostrrrrr
zs�
zHTTPSServerThread.__init__cCsd|jj|jfS)Nz<%s %s>)rrr0rrrrr�szHTTPSServerThread.__str__cCs||_tj�|�dSr)rGrIrJ�start)rrGrrrrL�szHTTPSServerThread.startcCs<|jr|j��z|j�d�W|j��n|j��0dS)Ng�������?)rG�setr0�
serve_foreverZserver_closerrrr�run�s

zHTTPSServerThread.runcCs|j��dSr)r0Zshutdownrrrr�stop�szHTTPSServerThread.stop)N)	rrr�HOSTr
rrLrOrPrrrrrFxs
	
rF)r�certfilerKrcs`|durt�tjj�}|�|�t|||��t��}��|�|�	��fdd�}|�
|��S)Ncs8tjrtj�d����tjr,tj�d����dS)Nzstopping HTTPS server
zjoining HTTPS thread
)rrrr/rrPr,r�r0rr�cleanup�sz"make_https_server.<locals>.cleanup)�ssl�create_default_context�Purpose�CLIENT_AUTH�load_cert_chainrFrIZEventrL�waitZ
addCleanup)ZcaserrRrKrrGrTrrSr�make_https_server�s


r[�__main__zERun a test HTTPS server. By default, the current directory is served.)Zdescriptionz-pz--portiQz(port to listen on (default: %(default)s))�type�default�helpz-qz--quietrTZstore_falsezbe less verbose)�destr^�actionr_z-sz--stats�use_stats_handlerF�
store_truezalways return stats pagez--curve-name�
curve_nameZstorez&curve name for EC-based Diffie-Hellman)r`r]rar_z	--ciphers�cipherszallowed cipher list)r`r]r_z--dh�dh_filez!PEM file containing DH parameters�z'Listening on https://localhost:{0.port}g�������?);r%rrUr<rIZurllib.parser#Zhttp.serverrr	rr�testrZtest.supportrr&�dirname�__file__r7rQr,ZCERTFILErr r8rJrFr[r�argparse�ArgumentParser�parser�add_argument�intr>�
parse_argsr4rrbr�getcwdr*rVrWrXrrYrdZset_ecdh_curverfZload_dh_paramsreZset_ciphersrHr0�printr3rNrrrr�<module>sx)"�
����
�
��