
    9i)              	       >   S SK JrJrJrJr  S SKJrJr  S SKJ	r	  S SK
r
S SKrS SKrS SKrS SKrS SKJr  S SKJrJrJr  S SKJr  \R2                  " S5      r\
R6                  R9                  \5      r\R>                  r\
R6                  RA                  \S	5      r! " S
 S\5      r" " S S\5      r# " S S\5      r$ " S S\RJ                  5      r&\!\S4S jr'\(S:X  Ga  S SK)r)\)RT                  " SS9r+\+RY                  SS\-SSS9  \+RY                  SSSSSS S!9  \+RY                  S"S#S$S%S&S'S!9  \+RY                  S(S)\S*S+S,9  \+RY                  S-S.\S*S/S,9  \+R]                  5       r/\/R`                  \l0        \/Rb                  (       a  \$r2O@\#r2\	Rf                  (       a  \
Rh                  " 5       \2l5        O\
Rl                  " 5       \2l5        \Rn                  " \Rp                  5      r9\9Ru                  \!5        \/Rv                  (       a  \9Ry                  \/Rv                  5        \/Rz                  (       a  \9R}                  \/Rz                  5        \"" S0\/R~                  4\2\95      r@\/R`                  (       a  \A" S1R                  \/5      5        \@R                  S25        gg)3    )absolute_importdivisionprint_functionunicode_literals)filterstr)utilsN)parse)
HTTPServerSimpleHTTPRequestHandlerBaseHTTPRequestHandler)support	threadingzkeycert.pemc                   &    \ rS rSrS rS rS rSrg)HTTPSServer   c                 >    [         R                  " XU5        X0l        g N)_HTTPServer__init__context)selfserver_addresshandler_classr   s       a/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/future/backports/test/ssl_servers.pyr   HTTPSServer.__init__   s    T=A    c                 p    SU R                   R                  < SU R                  < SU R                  < S3$ )N< :>)	__class____name__server_nameserver_portr   s    r   __str__HTTPSServer.__str__   s+    ((!!!!# 	$r   c                     U R                   R                  5       u  pU R                  R                  USS9nX24$ ! [         R                   a=  n[
        R                  (       a"  [        R                  R                  SU-  5        e S nAff = f)NT)server_sidezGot an error:
%s
)
socketacceptr   wrap_socketerrorr   verbosesysstderrwrite)r   sockaddrsslconnes        r   get_requestHTTPSServer.get_request"   sv    	++-JDll..t.FG } || 	

  !6!:;		s   6; B8BB)r   N)r$   
__module____qualname____firstlineno__r   r(   r8   __static_attributes__ r   r   r   r      s    $
r   r   c                   ,    \ rS rSrSr\rSrS rS r	Sr
g)RootedHTTPRequestHandler.   zTestHTTPS/1.0   c                    [         R                  R                  U5      S   n[        R                  R                  [         R                  R                  U5      5      nUR                  S5      n[        SU5      nU R                  nU Hd  n[        R                  R                  U5      u  pC[        R                  R                  U5      u  pS[        R                  R                  X5      nMf     U$ )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   rI   wordsworddriveheads         r   translate_path'RootedHTTPRequestHandler.translate_path8   s     ||$$T*1-ww 4 4T :;

3tU#yyD'',,T2KEt,JD77<<+D  r   c           	         [         R                  (       ax  [        R                  R	                  SU R
                  R                  U R
                  R                  U R                  R                  5       U R                  5       X-  4-  5        g g )Nz server (%s:%d %s):
   [%s] %s
)r   r0   r1   stdoutr3   serverr   r&   requestcipherlog_date_time_stringr   formatargss      r   log_message$RootedHTTPRequestHandler.log_messageL   sh    ??JJ@"kk88"kk55"ll113"779$k	++ , r   r>   N)r$   r:   r;   r<   server_versionhererM   timeoutrT   r_   r=   r>   r   r   r@   r@   .   s    
 %NDG(,r   r@   c                   2    \ rS rSrSrSrS	S jrS rS rSr	g)
StatsRequestHandlerW   zKExample HTTP request handler which returns SSL statistics on GET
requests.
zStatsHTTPS/1.0c                    U R                   R                  R                  nUR                  nUR	                  5       UR                  5       UR                  5       S.n[        R                  " U5      nUR                  S5      nU R                  S5        U R                  SS5        U R                  S[        [        U5      5      5        U R                  5         U(       a  U R                  R!                  U5        gg)zServe a GET request.)session_cacherZ   compressionzutf-8   zContent-typeztext/plain; charset=utf-8zContent-LengthN)rfileraw_sockr   session_statsrZ   ri   pprintpformatencodesend_responsesend_headerr   lenend_headerswfiler3   )r   	send_bodyr4   r   statsbodys         r   do_GETStatsRequestHandler.do_GET^   s    zz~~##,,$224kkm++-
 ~~e${{7#3)DE)3s4y>:JJT" r   c                 "    U R                  SS9  g)zServe a HEAD request.F)rw   N)rz   r'   s    r   do_HEADStatsRequestHandler.do_HEADp   s    e$r   c                 ^    [         R                  (       a  [        R                  " X/UQ76   g g r   )r   r0   r   log_requestr\   s      r   r   StatsRequestHandler.log_requestt   s!    ??"..tCdC r   r>   N)T)
r$   r:   r;   r<   __doc__ra   rz   r}   r   r=   r>   r   r   re   re   W   s     &N#$%Dr   re   c                   >    \ rS rSr\S4S jrS rS	S jrS rS r	Sr
g)
HTTPSServerThready   Nc                     S U l         [        US4U=(       d    [        U5      U l        U R                  R                  U l        [        R                  R                  U 5        SU l	        g )Nr   T)
flagr   r@   rX   r&   portr   Threadr   daemon)r   r   hostr   s       r   r   HTTPSServerThread.__init__{   sU    	!4)"/"K3K")+ KK++	!!$'r   c                 T    SU R                   R                  < SU R                  < S3$ )Nr   r    r"   )r#   r$   rX   r'   s    r   r(   HTTPSServerThread.__str__   s     NN33T[[AAr   c                 N    Xl         [        R                  R                  U 5        g r   )r   r   r   start)r   r   s     r   r   HTTPSServerThread.start   s    	t$r   c                    U R                   (       a  U R                   R                  5          U R                  R                  S5        U R                  R	                  5         g ! U R                  R	                  5         f = f)Ng?)r   setrX   serve_foreverserver_closer'   s    r   runHTTPSServerThread.run   sN    99IIMMO	'KK%%d+KK$$&DKK$$&s   A# #A?c                 8    U R                   R                  5         g r   )rX   shutdownr'   s    r   stopHTTPSServerThread.stop   s    r   )r   r   r   rX   r   )r$   r:   r;   r<   HOSTr   r(   r   r   r   r=   r>   r   r   r   r   y   s!    %) B%'r   r   c                 "  ^ [         R                  " [         R                  5      nUR                  U5        [	        XBU5      m[
        R                  5       nTR                  U5        UR                  5         U4S jnU R                  U5        T$ )Nc                    > [         R                  (       a  [        R                  R	                  S5        T R                  5         [         R                  (       a  [        R                  R	                  S5        T R                  5         g )Nzstopping HTTPS server
zjoining HTTPS thread
)r   r0   r1   rW   r3   r   rO   )rX   s   r   cleanup"make_https_server.<locals>.cleanup   sI    ??JJ67??JJ56r   )
ssl
SSLContextPROTOCOL_SSLv23load_cert_chainr   r   Eventr   wait
addCleanup)casecertfiler   r   r   r   r   rX   s          @r   make_https_serverr      sj    nnS001GH%wm<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--quietr0   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	   rH   r1   r   ro   r,   future.backports.urllibr
   urllib_parsefuture.backports.http.serverr   r   r   r   future.backports.testr   import_moduler   rI   dirname__file__rb   r   rO   CERTFILEr   r@   re   r   r   r   r$   argparseArgumentParserparseradd_argumentint
parse_argsr^   r0   r   r   PY2getcwdurM   getcwdr   PROTOCOL_TLSv1r   r   r   set_ecdh_curver   load_dh_paramsr   rX   printr]   r   r>   r   r   <module>r      sl   R R '  	 
 
   96 6 )!!+.		wwx ||77<<m,+ 0&,7 &,RD0 DD	(( < &.D & z$$CDF hS$G  I
ii,3D  F
i.A5+2L  N
\&E  G YS@  BDllGO+099!#M!#MnnS//0GH%t/||t||,"dii-AF||7>>tDE
K r   