
    4pf)                        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j        d          Ze
j                            e          Zej        Ze
j                             ed	          Z! G d
 de          Z" G d de          Z# G d de          Z$ G d dej%                  Z&e!edfdZ'e(dk    rd dl)Z) e)j*        d          Z+e+,                    dde-dd           e+,                    dddddd !           e+,                    d"d#d$d%d&d'!           e+,                    d(d)ed*d+,           e+,                    d-d.ed*d/,           e+.                                Z/e/j0        e_0        e/j1        re$Z2n2e#Z2e	j3        r e
j4                    e2_5        n e
j6                    e2_5         ej7        ej8                  Z9e9:                    e!           e/j;        re9<                    e/j;                   e/j=        re9>                    e/j=                    e"d0e/j?        fe2e9          Z@e/j0        r eAd1B                    e/                     e@C                    d2           dS dS )3    )absolute_importdivisionprint_functionunicode_literals)filterstr)utilsN)parse)
HTTPServerSimpleHTTPRequestHandlerBaseHTTPRequestHandler)support	threadingzkeycert.pemc                        e Zd Zd Zd Zd ZdS )HTTPSServerc                 @    t          j        | ||           || _        d S N)_HTTPServer__init__context)selfserver_addresshandler_classr   s       a/var/www/html/nettyfy-visnx/env/lib/python3.11/site-packages/future/backports/test/ssl_servers.pyr   zHTTPSServer.__init__   s"    T>=AAA    c                 B    d| j         j        d| j        d| j        dS )N< :>)	__class____name__server_nameserver_portr   s    r   __str__zHTTPSServer.__str__   s4     (((!!!!!!# 	$r   c                 
   	 | j                                         \  }}| j                            |d          }nF# t           j        $ r4}t
          j        r"t          j        	                    d|z              d }~ww xY w||fS )NT)server_sidezGot an error:
%s
)
socketacceptr   wrap_socketerrorr   verbosesysstderrwrite)r   sockaddrsslconnes        r   get_requestzHTTPSServer.get_request"   s    	++--JD$l..t.FFGG| 	 	 	 <
  !6!:;;;		
 }s   8; A>
/A99A>N)r"   
__module____qualname__r   r&   r5    r   r   r   r      sA          $ $ $
 
 
 
 
r   r   c                   &    e Zd ZdZeZdZd Zd ZdS )RootedHTTPRequestHandlerzTestHTTPS/1.0   c                    t           j                            |          d         }t          j                            t           j                            |                    }|                    d          }t          d|          }| j	        }|D ]f}t          j        
                    |          \  }}t          j                            |          \  }}t          j                            ||          }g|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   rB   wordsworddriveheads         r   translate_pathz'RootedHTTPRequestHandler.translate_path8   s     |$$T**1-w 4 4T : :;;

3tU##y 	, 	,D',,T22KE4t,,JD$7<<d++DDr   c           	          t           j        rit          j                            d| j        j        | j        j        | j        	                                | 
                                ||z  fz             d S d S )Nz server (%s:%d %s):
   [%s] %s
)r   r-   r.   stdoutr0   serverr   r$   requestcipherlog_date_time_stringr   formatargss      r   log_messagez$RootedHTTPRequestHandler.log_messageL   s~    ? 	,J@"k8"k5"l1133"7799$Tk	++ , , , , ,	, 	,r   N)	r"   r6   r7   server_versionhererF   timeoutrM   rW   r8   r   r   r:   r:   .   sC        
 %NDG  (, , , , ,r   r:   c                   *    e Zd ZdZdZddZd Zd ZdS )	StatsRequestHandlerzSExample HTTP request handler which returns SSL statistics on GET
    requests.
    zStatsHTTPS/1.0Tc                    | j         j        j        }|j        }|                                |                                |                                d}t          j        |          }|	                    d          }| 
                    d           |                     dd           |                     dt          t          |                               |                                  |r| j                            |           dS dS )zServe a GET request.)session_cacherR   compressionzutf-8   zContent-typeztext/plain; charset=utf-8zContent-LengthN)rfileraw_sockr   session_statsrR   r_   pprintpformatencodesend_responsesend_headerr   lenend_headerswfiler0   )r   	send_bodyr1   r   statsbodys         r   do_GETzStatsRequestHandler.do_GET^   s    z~#,$2244kkmm++-- 
 ~e$${{7##3)DEEE)3s4yy>>::: 	#JT"""""	# 	#r   c                 2    |                      d           dS )zServe a HEAD request.F)rm   N)rp   r%   s    r   do_HEADzStatsRequestHandler.do_HEADp   s    e$$$$$r   c                 H    t           j        rt          j        | |g|R   d S d S r   )r   r-   r   log_requestrT   s      r   rt   zStatsRequestHandler.log_requestt   s:    ? 	D".tVCdCCCCCC	D 	Dr   N)T)r"   r6   r7   __doc__rX   rp   rr   rt   r8   r   r   r\   r\   W   s\          &N# # # #$% % %D D D D Dr   r\   c                   4    e Zd ZedfdZd ZddZd Zd ZdS )HTTPSServerThreadNc                     d | _         t          |df|pt          |          | _        | j        j        | _        t          j                            |            d| _	        d S )Nr   T)
flagr   r:   rP   r$   portr   Threadr   daemon)r   r   hostr   s       r   r   zHTTPSServerThread.__init__{   s\    	!4)"/"K3K")+ + K+	!!$'''r   c                 2    d| j         j        d| j        dS )Nr   r   r    )r!   r"   rP   r%   s    r   r&   zHTTPSServerThread.__str__   s       N333T[[[AAr   c                 R    || _         t          j                            |            d S r   )ry   r   r{   start)r   ry   s     r   r   zHTTPSServerThread.start   s&    	t$$$$$r   c                     | j         r| j                                          	 | j                            d           | j                                         d S # | j                                         w xY w)Ng?)ry   setrP   serve_foreverserver_closer%   s    r   runzHTTPSServerThread.run   sj    9 	IMMOOO	'K%%d+++K$$&&&&&DK$$&&&&s   A A2c                 8    | j                                          d S r   )rP   shutdownr%   s    r   stopzHTTPSServerThread.stop   s    r   r   )	r"   r6   r7   HOSTr   r&   r   r   r   r8   r   r   rw   rw   y   sq        %)    B B B% % % %' ' '    r   rw   c                 H   t          j        t           j                  }|                    |           t	          |||          t
                                          }                    |           |                                 fd}| 	                    |           S )Nc                     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.   rO   r0   r   rH   )rP   s   r   cleanupz"make_https_server.<locals>.cleanup   sc    ? 	8J6777? 	7J5666r   )
ssl
SSLContextPROTOCOL_SSLv23load_cert_chainrw   r   Eventr   wait
addCleanup)casecertfiler}   r   r   ry   r   rP   s          @r   make_https_serverr      s    nS011GH%%%wm<<F??D
LLIIKKK     	OOGMr   __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-   Tstore_falsezbe less verbose)destr   actionr   z-sz--statsuse_stats_handlerF
store_truezalways return stats pagez--curve-name
curve_namestorez&curve name for EC-based Diffie-Hellman)r   r   r   r   z--dhdh_filez!PEM file containing DH parameters z'Listening on https://localhost:{0.port}g?)D
__future__r   r   r   r   future.builtinsr   r   futurer	   rA   r.   r   re   r)   future.backports.urllibr
   urllib_parsefuture.backports.http.serverr   r   r   r   future.backports.testr   import_moduler   rB   dirname__file__rY   r   rH   CERTFILEr   r:   r\   r{   rw   r   r"   argparseArgumentParserparseradd_argumentint
parse_argsrV   r-   r   r   PY2getcwdurF   getcwdr   PROTOCOL_TLSv1r   r   r   set_ecdh_curver   load_dh_paramsrz   rP   printrU   r   r8   r   r   <module>r      s2   R R R R R R R R R R R R ' ' ' ' ' ' ' '       				 



 



   9 9 9 9 9 96 6 6 6 6 6 6 6 6 6 ) ) ) ) ) )!G!+..		wx  |7<<m,,    +   0&, &, &, &, &,7 &, &, &,RD D D D D0 D D DD    	(   < &.D    & zOOO$X$CD D DF hS$G  I I I
ii,3D  F F F
i.A5+2L  N N N
\&E  G G G YS@  B B BDlGO -+09 	-!+M!*McnS/00GH%%% 0t///| -t|,,,["di-AAF| F7>>tDDEEE
K r   