Your IP : 216.73.216.60


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/ssl_servers.cpython-35.opt-2.pyc



���]W�@s+ddlZddlZddlZddlZddlZddlZddlmZ	m
Z
mZddlm
Z
e
jd�Zejje�Ze
jZejjed�ZGdd�de	�ZGdd	�d	e
�ZGd
d�de�ZGdd
�d
ej�Zdddededddd�Zedkr'ddlZejdd�Z e j!ddde"dddd�e j!ddd d!dd"d#d$dd%�e j!d&d'd d(dd)d#d*dd+�e j!d,d d-de#d#d.dd/�e j!d0d d1de#dd2�e j!d3d d4de#d#d.dd5�e j$�Z%e%j&e
_&e%j'raeZ(neZ(ej)�e(_*ej+ej,j-�Z.e.j/e�e%j0r�e.j1e%j0�e%j2r�e.j3e%j2�e%j4r�e.j5e%j4�ed6e%j6fe(e.�Z7e%j&re8d7j9e%��e7j:d8�dS)9�N)�
HTTPServer�SimpleHTTPRequestHandler�BaseHTTPRequestHandler)�support�	threadingzkeycert.pemc@s4eZdZdd�Zdd�Zdd�ZdS)�HTTPSServercCs tj|||�||_dS)N)�_HTTPServer�__init__�context)�self�server_address�
handler_classr
�r�0/opt/alt/python35/lib64/python3.5/ssl_servers.pyr	szHTTPSServer.__init__cCsd|jj|j|jfS)Nz
<%s %s:%s>)�	__class__�__name__Zserver_name�server_port)rrrr�__str__s	zHTTPSServer.__str__cCs�y1|jj�\}}|jj|dd�}WnEtk
rx}z%tjrctjj	d|��WYdd}~XnX||fS)NZserver_sideTzGot an error:
%s
)
�socket�acceptr
Zwrap_socket�OSErrorr�verbose�sys�stderr�write)r�sock�addrZsslconn�errr�get_request!s	zHTTPSServer.get_requestN)r�
__module__�__qualname__r	rrrrrrrsrc@s:eZdZdZeZdZdd�Zdd�ZdS)�RootedHTTPRequestHandlerz
TestHTTPS/1.0�cCs�tjj|�d}tjjtjj|��}|jd�}td|�}|j	}xS|D]K}tjj
|�\}}tjj|�\}}tjj||�}qbW|S)N��/)�urllib�parse�urlparse�os�path�normpath�unquote�split�filter�root�
splitdrive�join)rr)ZwordsZwordZdrive�headrrr�translate_path7s		
z'RootedHTTPRequestHandler.translate_pathcGsOtjrKtjjd|jj|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.�timeoutr2r8rrrrr!-s
r!c@s=eZdZdZddd�Zdd�Zdd�Zd	S)
�StatsRequestHandlerzStatsHTTPS/1.0TcCs�|jjj}|j}d|j�d|j�d|j�i}tj|�}|j	d�}|j
d�|jdd�|jdtt
|���|j�|r�|jj|�dS)	NZ
session_cacher5�compressionzutf-8��zContent-typeztext/plain; charset=utf-8zContent-Length)Zrfile�raw�_sockr
Z
session_statsr5r=�pprintZpformat�encodeZ
send_responseZsend_header�str�lenZend_headersZwfiler)r�	send_bodyrr
ZstatsZbodyrrr�do_GET]s	

zStatsRequestHandler.do_GETcCs|jdd�dS)NrEF)rF)rrrr�do_HEADoszStatsRequestHandler.do_HEADcGs tjrtj|||�dS)N)rrr�log_request)rr6r7rrrrHss	zStatsRequestHandler.log_requestN)rrr r9rFrGrHrrrrr<Vsr<c@sUeZdZeddd�Zdd�Zddd�Zdd	�Zd
d�ZdS)�HTTPSServerThreadNcCsVd|_t|df|pt|�|_|jj|_tjj|�d|_	dS)NrT)
�flagrr!r4r�portr�Threadr	�daemon)rr
�hostr
rrrr	zs		zHTTPSServerThread.__init__cCsd|jj|jfS)Nz<%s %s>)rrr4)rrrrr�szHTTPSServerThread.__str__cCs||_tjj|�dS)N)rJrrL�start)rrJrrrrO�s	zHTTPSServerThread.startc
Cs?|jr|jj�z|jjd�Wd|jj�XdS)Ng�������?)rJ�setr4�
serve_foreverZserver_close)rrrr�run�s
	
zHTTPSServerThread.runcCs|jj�dS)N)r4�shutdown)rrrr�stop�szHTTPSServerThread.stop)	rrr �HOSTr	rrOrRrTrrrrrIxs
	rIr
�certfilerNr
cs�|dkr!tjtjj�}|j|�t|||��tj�}�j|�|j	��fdd�}|j
|��S)NcsJtjrtjjd��j�tjr<tjjd��j�dS)Nzstopping HTTPS server
zjoining HTTPS thread
)rrrr3rrTr0r)r4rr�cleanup�s	
	z"make_https_server.<locals>.cleanup)�ssl�create_default_context�Purpose�CLIENT_AUTH�load_cert_chainrIr�EventrO�waitZ
addCleanup)Zcaser
rVrNr
rJrWr)r4r�make_https_server�s



r_�__main__�descriptionzERun a test HTTPS server. By default, the current directory is served.z-pz--port�type�defaultiQ�helpz(port to listen on (default: %(default)s)z-qz--quiet�destrT�action�store_falsezbe less verbosez-sz--stats�use_stats_handlerF�
store_truezalways return stats pagez--curve-name�
curve_name�storez&curve name for EC-based Diffie-Hellmanz	--ciphers�cipherszallowed cipher listz--dh�dh_filez!PEM file containing DH parameters�z'Listening on https://localhost:{0.port}g�������?);r(rrXrArZurllib.parser%Zhttp.serverrrrrZtestr�
import_modulerr)�dirname�__file__r:rUr0ZCERTFILErr!r<rLrIr_r�argparse�ArgumentParser�parser�add_argument�intrC�
parse_argsr7rrhr
�getcwdr.rYrZr[r
r\rjZset_ecdh_curvermZload_dh_paramsrlZset_ciphersrKr4�printr6rQrrrr�<module>sh	)"