File: //usr/local/lib/python3.7/test/__pycache__/ssl_servers.cpython-37.opt-2.pyc
B
��g+ � @ s d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ m
Z
mZ d dlm
Z
e j�e�Ze
jZe j�ed�ZG dd� de �ZG dd� de
�ZG d d
� d
e�ZG dd� dej�Zdeedd
�dd�Zedk�rd dlZejdd�Zejdde ddd� ejddddddd� ejdd d!d"d#d$d� ejd%d&e!d'd(d)� ejd*d+e!d,d-� ejd.d/e!d'd0d)� e�"� Z#e#j$e
_$e#j%�r|eZ&neZ&e �'� e&_(e�)ej*j+�Z,e,�-e� e#j.�r�e,�/e#j.� e#j0�r�e,�1e#j0� e#j2�r�e,�3e#j2� ed1e#j4fe&e,�Z5e#j$�re6d2�7e#�� e5�8d3� dS )4� N)�
HTTPServer�SimpleHTTPRequestHandler�BaseHTTPRequestHandler)�supportzkeycert.pemc @ s$ e Zd Zdd� Zdd� Zdd� ZdS )�HTTPSServerc C s t �| ||� || _d S )N)�_HTTPServer�__init__�context)�self�server_address�
handler_classr � r
�,/usr/local/lib/python3.7/test/ssl_servers.pyr s zHTTPSServer.__init__c C s d| j j| j| jf S )Nz
<%s %s:%s>)� __class__�__name__Zserver_name�server_port)r
r
r
r �__str__ s zHTTPSServer.__str__c
C sf y"| j �� \}}| jj|dd�}W n: tk
r\ } ztjrJtj� d| � � W d d }~X Y nX ||fS )NT)Zserver_sidezGot an error:
%s
)
ZsocketZacceptr Zwrap_socket�OSErrorr �verbose�sys�stderr�write)r
�sockZaddrZsslconn�er
r
r �get_request s zHTTPSServer.get_requestN)r �
__module__�__qualname__r r r r
r
r
r r s r c @ s( e Zd ZdZeZdZdd� Zdd� ZdS )�RootedHTTPRequestHandlerz
TestHTTPS/1.0� c C s~ t j�|�d }tj�t j�|��}|�d�}td |�}| j }x:|D ]2}tj�
|�\}}tj�|�\}}tj�||�}qDW |S )N� �/)�urllib�parseZurlparse�os�path�normpathZunquote�split�filter�root�
splitdrive�join)r
r$ ZwordsZwordZdrive�headr
r
r �translate_path6 s
z'RootedHTTPRequestHandler.translate_pathc G s: t jr6tj�d| jj| jj| j� � | �
� || f � d S )Nz server (%s:%d %s):
[%s] %s
)r r r �stdoutr �serverr r Zrequest�cipherZlog_date_time_string)r
�format�argsr
r
r �log_messageJ s z$RootedHTTPRequestHandler.log_messageN) r r r �server_version�herer( Ztimeoutr, r2 r
r
r
r r , s
r c @ s* e Zd ZdZd
dd�Zdd� Zdd� Zd S )�StatsRequestHandlerzStatsHTTPS/1.0Tc C s� | j jj}|j}|�� |�� |�� d�}t�|�}|� d�}| �
d� | �dd� | �dtt
|��� | �� |r~| j�|� d S )N)Z
session_cacher/ �compressionzutf-8�� zContent-typeztext/plain; charset=utf-8zContent-Length)Zrfile�rawZ_sockr Z
session_statsr/ r6 �pprintZpformat�encodeZ
send_responseZsend_header�str�lenZend_headersZwfiler )r
� send_bodyr r ZstatsZbodyr
r
r �do_GET\ s
zStatsRequestHandler.do_GETc C s | j dd� d S )NF)r= )r>