
    Fwg)                     ,   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j2                  d      Ze
j6                  j9                  e      Zej>                  Ze
j6                  jA                  ed	      Z! G d
 de      Z" G d de      Z# G d de      Z$ G d dejJ                        Z&e!edfdZ'e(dk(  rd dl)Z) e)jT                  d      Z+e+jY                  dde-dd       e+jY                  dddddd !       e+jY                  d"d#d$d%d&d'!       e+jY                  d(d)ed*d+,       e+jY                  d-d.ed*d/,       e+j]                         Z/e/j`                  e_0        e/jb                  re$Z2n;e#Z2e	jf                  r e
jh                         e2_5        n e
jl                         e2_5         ejn                  ejp                        Z9e9ju                  e!       e/jv                  re9jy                  e/jv                         e/jz                  re9j}                  e/jz                          e"d0e/j~                  fe2e9      Z@e/j`                  r eAd1j                  e/             e@j                  d2       yy)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y)HTTPSServerc                 @    t        j                  | ||       || _        y N)_HTTPServer__init__context)selfserver_addresshandler_classr   s       X/var/www/horilla/myenv/lib/python3.12/site-packages/future/backports/test/ssl_servers.pyr   zHTTPSServer.__init__   s    T>=A    c                 j    d| j                   j                  d| j                  d| j                  dS )N< :>)	__class____name__server_nameserver_portr   s    r   __str__zHTTPSServer.__str__   s+    ((!!!!# 	$r   c                    	 | j                   j                         \  }}| j                  j                  |d      }||fS # t         j                  $ r8}t
        j                  r"t        j                  j                  d|z          d }~ww xY w)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"   sz    	++-JD$ll..t.FG } || 	

  !6!:;		s   :A   B3BBN)r"   
__module____qualname__r   r&   r5    r   r   r   r      s    $
r   r   c                   $    e Zd ZdZeZdZd Zd Zy)RootedHTTPRequestHandlerzTestHTTPS/1.0   c                    t         j                  j                  |      d   }t        j                  j                  t         j                  j                  |            }|j                  d      }t        d|      }| j                  }|D ]f  }t        j                  j                  |      \  }}t        j                  j                  |      \  }}t        j                  j                  ||      }h |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-ww 4 4T :;

3tU#yy 	,D'',,T2KE4t,JD$77<<d+D	, r   c           	         t         j                  ryt        j                  j	                  d| j
                  j                  | j
                  j                  | j                  j                         | j                         ||z  fz         y y )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   sj    ??JJ@"kk88"kk55"ll113"779$Tk	++ , r   N)	r"   r6   r7   server_versionhererF   timeoutrM   rW   r8   r   r   r:   r:   .   s    
 %NDG(,r   r:   c                   (    e Zd ZdZdZddZd Zd Zy)StatsRequestHandlerzSExample HTTP request handler which returns SSL statistics on GET
    requests.
    zStatsHTTPS/1.0c                    | j                   j                  j                  }|j                  }|j	                         |j                         |j                         d}t        j                  |      }|j                  d      }| j                  d       | j                  dd       | j                  dt        t        |                   | j                          |r| j                  j!                  |       yy)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    zz~~##,,$224kkm++-
 ~~e${{7#3)DE)3s4y>:JJT" r   c                 (    | j                  d       y)zServe a HEAD request.F)rm   N)rp   r%   s    r   do_HEADzStatsRequestHandler.do_HEADp   s    e$r   c                 T    t         j                  rt        j                  | |g|  y y r   )r   r-   r   log_requestrT   s      r   rt   zStatsRequestHandler.log_requestt   s#    ??"..tVCdC r   N)T)r"   r6   r7   __doc__rX   rp   rr   rt   r8   r   r   r\   r\   W   s     &N#$%Dr   r\   c                   2    e Zd ZedfdZd ZddZd Zd Zy)HTTPSServerThreadNc                     d | _         t        |df|xs t        |      | _        | j                  j                  | _        t        j                  j                  |        d| _	        y )Nr   T)
flagr   r:   rP   r$   portr   Threadr   daemon)r   r   hostr   s       r   r   zHTTPSServerThread.__init__{   sU    	!4)"/"K3K")+ KK++	!!$'r   c                 P    d| j                   j                  d| j                  dS )Nr   r   r    )r!   r"   rP   r%   s    r   r&   zHTTPSServerThread.__str__   s     NN33T[[AAr   c                 P    || _         t        j                  j                  |        y r   )ry   r   r{   start)r   ry   s     r   r   zHTTPSServerThread.start   s    	t$r   c                     | j                   r| j                   j                          	 | j                  j                  d       | j                  j	                          y # | j                  j	                          w xY w)Ng?)ry   setrP   serve_foreverserver_closer%   s    r   runzHTTPSServerThread.run   sN    99IIMMO	'KK%%d+KK$$&DKK$$&s   A A:c                 8    | j                   j                          y 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   s!    %) B%'r   rw   c                     t        j                  t         j                        }|j                  |       t	        |||      t
        j                         }j                  |       |j                          fd}| j                  |       S )Nc                     t         j                  rt        j                  j	                  d        j                          t         j                  rt        j                  j	                  d        j                          y )Nzstopping HTTPS server
zjoining HTTPS thread
)r   r-   r.   rO   r0   r   rH   )rP   s   r   cleanupz"make_https_server.<locals>.cleanup   sI    ??JJ67??JJ5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      sl    nnS001GH%wm<F??D
LLIIK 	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      sv   R R '  	 
 
   96 6 )!G!!+.		wwx ||77<<m,+ 0&,7 &,RD0 DD	(( < &.D & z$X$$CDF hS$G  I
ii,3D  F
i.A5+2L  N
\&E  G YS@  BDllGO+099!+M!*McnnS//0GH%t/||t||,"dii-AF||7>>tDE
K r   