Your IP : 216.73.216.213


Current Path : /proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //proc/242857/root/opt/alt/python34/lib64/python3.4/test/__pycache__/ssl_servers.cpython-34.pyc

�
f f��@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#d#d.dd2�e j$�Z%e%j&e
_&e%j'rBeZ(neZ(ej)�e(_*ej+ej,�Z-e-j.e�e%j/r�e-j0e%j/�ne%j1r�e-j2e%j1�ned3e%j3fe(e-�Z4e%j&r�e5d4j6e%��ne4j7d5�ndS)6�N)�
HTTPServer�SimpleHTTPRequestHandler�BaseHTTPRequestHandler)�support�	threadingzkeycert.pemc@s4eZdZdd�Zdd�Zdd�ZdS)�HTTPSServercCs tj|||�||_dS)N)�_HTTPServer�__init__�context)�self�server_address�
handler_classr
�r�5/opt/alt/python34/lib64/python3.4/test/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�}WnHtk
r{}z(tjrftjj	d|�n�WYdd}~XnX||fS)NZserver_sideTzGot an error:
%s
)
�socketZacceptr
Zwrap_socket�OSErrorr�verbose�sys�stderr�write)r�sockZaddrZsslconn�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)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)rr&ZwordsZwordZdrive�headrrr�translate_path7s		
z'RootedHTTPRequestHandler.translate_pathcGsRtjrNtjjd|jj|jj|jj	�|j
�||f�ndS)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*Ztimeoutr.r4rrrrr-s
rc@sCeZdZdZdZddd�Zdd�Zdd	�Zd
S)�StatsRequestHandlerzSExample HTTP request handler which returns SSL statistics on GET
    requests.
    zStatsHTTPS/1.0TcCs�|jjj}|j}i|j�d6|j�d6|j�d6}tj|�}|j	d�}|j
d�|jdd�|jdtt
|���|j�|r�|jj|�nd	S)
zServe a GET request.Z
session_cacher1�compressionzutf-8��zContent-typeztext/plain; charset=utf-8zContent-LengthN)Zrfile�rawZ_sockr
Z
session_statsr1r8�pprintZpformat�encodeZ
send_responseZsend_header�str�lenZend_headersZwfiler)r�	send_bodyrr
ZstatsZbodyrrr�do_GET]s	



zStatsRequestHandler.do_GETcCs|jdd�dS)zServe a HEAD request.r?FN)r@)rrrr�do_HEADoszStatsRequestHandler.do_HEADcGs#tjrtj|||�ndS)N)rrr�log_request)rr2r3rrrrBss	zStatsRequestHandler.log_requestN)rrr�__doc__r5r@rArBrrrrr7Vs
r7c@sUeZdZeddd�Zdd�Zddd�Zdd	�Zd
d�ZdS)�HTTPSServerThreadNcCsVd|_t|df|pt|�|_|jj|_tjj|�d|_	dS)NrT)
�flagrrr0r�portr�Threadr	Zdaemon)rr
�hostr
rrrr	zs		zHTTPSServerThread.__init__cCsd|jj|jfS)Nz<%s %s>)rrr0)rrrrr�szHTTPSServerThread.__str__cCs||_tjj|�dS)N)rErrG�start)rrErrrrI�s	zHTTPSServerThread.startc
CsB|jr|jj�nz|jjd�Wd|jj�XdS)Ng�������?)rE�setr0�
serve_foreverZserver_close)rrrr�run�s
	zHTTPSServerThread.runcCs|jj�dS)N)r0Zshutdown)rrrr�stop�szHTTPSServerThread.stop)	rrr�HOSTr	rrIrLrMrrrrrDxs
	rDr
�certfilerHr
cs�|dkr!tjtj�}n|j|�t|||��tj�}�j|�|j��fdd�}|j	|��S)NcsPtjrtjjd�n�j�tjrBtjjd�n�j�dS)Nzstopping HTTPS server
zjoining HTTPS thread
)rrrr/rrMr,r)r0rr�cleanup�s	
	z"make_https_server.<locals>.cleanup)
�ssl�
SSLContextZPROTOCOL_SSLv23�load_cert_chainrDrZEventrI�waitZ
addCleanup)Zcaser
rOrHr
rErPr)r0r�make_https_server�s



rU�__main__ZdescriptionzERun 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�actionZstore_falsezbe less verbosez-sz--stats�use_stats_handlerF�
store_truezalways return stats pagez--curve-name�
curve_nameZstorez&curve name for EC-based Diffie-Hellmanz--dh�dh_filez!PEM file containing DH parameters�z'Listening on https://localhost:{0.port}g�������?)8r%rrQr;rZurllib.parser#Zhttp.serverrrrrZtestr�
import_modulerr&�dirname�__file__r6rNr,ZCERTFILErrr7rGrDrUr�argparse�ArgumentParser�parser�add_argument�intr=�
parse_argsr3rr\r
�getcwdr*rRZPROTOCOL_TLSv1r
rSr^Zset_ecdh_curver_Zload_dh_paramsrFr0�printr2rKrrrr�<module>s`	)"