<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    A[)                 @   s>  d dl mZmZmZmZ d dlmZmZ d dlm	Z	 d dl
Z
d dlZd dlZd dlZd dlZd dlmZ d dlmZmZmZ d dlmZ edZe
jeZejZe
j ed	Z!G d
d deZ"G dd deZ#G dd deZ$G dd dej%Z&e!edfddZ'e(dkr:d dl)Z)e)j*ddZ+e+j,dde-ddd e+j,ddddd d!d" e+j,d#d$d%d&d'd(d" e+j,d)d*ed+d,d- e+j,d.d/ed+d0d- e+. Z/e/j0e_0e/j1re$Z2n"e#Z2e	j3re
4 e2_5n
e
6 e2_5e7ej8Z9e9:e! e/j;re9<e/j; e/j=re9>e/j= e"d1e/j?fe2e9Z@e/j0r0eAd2Be/ e@Cd3 dS )4    )absolute_importdivisionprint_functionunicode_literals)filterstr)utilsN)parse)
HTTPServerSimpleHTTPRequestHandlerBaseHTTPRequestHandler)support	threadingzkeycert.pemc               @   s$   e Zd Zdd Zdd Zdd ZdS )HTTPSServerc             C   s   t | || || _d S )N)_HTTPServer__init__context)selfserver_addresshandler_classr    r   R/opt/alt/python37/lib/python3.7/site-packages/future/backports/test/ssl_servers.pyr      s    zHTTPSServer.__init__c             C   s   d| j j| j| jf S )Nz
<%s %s:%s>)	__class____name__Zserver_nameserver_port)r   r   r   r   __str__   s    zHTTPSServer.__str__c          
   C   sh   y"| j  \}}| jj|dd}W n< t jk
r^ } ztjrLtj	d|   W d d }~X Y nX ||fS )NT)Zserver_sidezGot an error:
%s
)
socketacceptr   Zwrap_socketerrorr   verbosesysstderrwrite)r   sockaddrZsslconner   r   r   get_request"   s    zHTTPSServer.get_requestN)r   
__module____qualname__r   r   r&   r   r   r   r   r      s   r   c               @   s(   e Zd ZdZeZdZdd Zdd ZdS )RootedHTTPRequestHandlerzTestHTTPS/1.0   c             C   s~   t j|d }tjt j|}|d}td|}| j	}x:|D ]2}tj
|\}}tj|\}}tj||}qDW |S )zTranslate 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)urllibr	   urlparseospathnormpathunquotesplitr   root
splitdrivejoin)r   r0   wordsworddriveheadr   r   r   translate_path8   s    	


z'RootedHTTPRequestHandler.translate_pathc          	   G   s:   t jr6tjd| jj| jj| j	 | 
 || f  d S )Nz server (%s:%d %s):
   [%s] %s
)r   r   r    stdoutr"   serverr   r   ZrequestcipherZlog_date_time_string)r   formatargsr   r   r   log_messageL   s    z$RootedHTTPRequestHandler.log_messageN)	r   r'   r(   server_versionherer4   timeoutr;   rA   r   r   r   r   r)   .   s
   r)   c               @   s.   e Zd ZdZdZdddZdd Zdd	 Zd
S )StatsRequestHandlerzSExample HTTP request handler which returns SSL statistics on GET
    requests.
    zStatsHTTPS/1.0Tc             C   s   | j jj}|j}| | | d}t|}|	d}| 
d | dd | dtt| |   |r~| j| dS )zServe a GET request.)Zsession_cacher>   compressionzutf-8   zContent-typeztext/plain; charset=utf-8zContent-LengthN)Zrfileraw_sockr   Zsession_statsr>   rF   pprintpformatencodeZsend_responseZsend_headerr   lenZend_headersZwfiler"   )r   	send_bodyr#   r   Zstatsbodyr   r   r   do_GET^   s    



zStatsRequestHandler.do_GETc             C   s   | j dd dS )zServe a HEAD request.F)rN   N)rP   )r   r   r   r   do_HEADp   s    zStatsRequestHandler.do_HEADc             G   s   t jrtj| |f|  d S )N)r   r   r   log_request)r   r?   r@   r   r   r   rR   t   s    zStatsRequestHandler.log_requestN)T)r   r'   r(   __doc__rB   rP   rQ   rR   r   r   r   r   rE   W   s
   
rE   c               @   s<   e Zd ZedfddZdd ZdddZdd	 Zd
d ZdS )HTTPSServerThreadNc             C   s<   d | _ t|df|pt|| _| jj| _tj|  d| _	d S )Nr   T)
flagr   r)   r=   r   portr   Threadr   daemon)r   r   hostr   r   r   r   r   {   s    
zHTTPSServerThread.__init__c             C   s   d| j j| jf S )Nz<%s %s>)r   r   r=   )r   r   r   r   r      s    zHTTPSServerThread.__str__c             C   s   || _ tj|  d S )N)rU   r   rW   start)r   rU   r   r   r   rZ      s    zHTTPSServerThread.startc             C   s2   | j r| j   z| jd W d | j  X d S )Ng?)rU   setr=   serve_foreverZserver_close)r   r   r   r   run   s
    
zHTTPSServerThread.runc             C   s   | j   d S )N)r=   shutdown)r   r   r   r   stop   s    zHTTPSServerThread.stop)N)	r   r'   r(   HOSTr   r   rZ   r]   r_   r   r   r   r   rT   y   s
   	
rT   c                sV   t t j}|| t||| t } | |   fdd}| 	|  S )Nc                  s8   t jrtjd    t jr,tjd    d S )Nzstopping HTTPS server
zjoining HTTPS thread
)r   r   r    r<   r"   r_   r6   r   )r=   r   r   cleanup   s    z"make_https_server.<locals>.cleanup)
ssl
SSLContextZPROTOCOL_SSLv23load_cert_chainrT   r   EventrZ   waitZ
addCleanup)ZcaseZcertfilerY   r   r   rU   ra   r   )r=   r   make_https_server   s    


rg   __main__zERun a test HTTPS server. By default, the current directory is served.)descriptionz-pz--portiQ  z(port to listen on (default: %(default)s))typedefaulthelpz-qz--quietr   TZstore_falsezbe less verbose)destrk   actionrl   z-sz--statsuse_stats_handlerF
store_truezalways return stats pagez--curve-name
curve_namestorez&curve name for EC-based Diffie-Hellman)rm   rj   rn   rl   z--dhdh_filez!PEM file containing DH parameters z'Listening on https://localhost:{0.port}g?)D
__future__r   r   r   r   Zfuture.builtinsr   r   futurer   r/   r    rb   rJ   r   Zfuture.backports.urllibr	   Zurllib_parseZfuture.backports.http.serverr
   r   r   r   Zfuture.backports.testr   import_moduler   r0   dirname__file__rC   r`   r6   ZCERTFILEr   r)   rE   rW   rT   rg   r   argparseArgumentParserparseradd_argumentint
parse_argsr@   r   ro   r   PY2Zgetcwdur4   getcwdrc   ZPROTOCOL_TLSv1r   rd   rq   Zset_ecdh_curvers   Zload_dh_paramsrV   r=   printr?   r\   r   r   r   r   <module>   sh   
)"





