Ë
    	š„j)  ã                   ó,  — 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(  �r¸d 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/html/GAP/venv/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   € ð	ØŸ™×+Ñ+Ó-‰JˆD�$Ø—l‘l×.Ñ.¨tÀÐ.ÓFˆGð ˜ˆ}Ðøô �|‰|ò 	ä�ŠÜ—
‘
× Ñ Ð!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 )zñTranslate 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‰w×Ñ¤§¡× 4Ñ 4°TÓ :Ó;ˆØ—
‘
˜3“ˆÜ�t˜UÓ#ˆØ�y‰yˆØò 	,ˆDÜŸ'™'×,Ñ,¨TÓ2‰KˆE�4ÜŸ™Ÿ™ tÓ,‰JˆD�$Ü—7‘7—<‘<  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   € ä�?Š?Ü�J‰J×ÑÐ@Ø"Ÿk™k×8Ñ8Ø"Ÿk™k×5Ñ5Ø"Ÿl™l×1Ñ1Ó3Ø"×7Ñ7Ó9Ø$ T™kð	+ñ+õ ,ð 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Â   € à�z‰z�~‰~×#Ñ#ˆØ—,‘,ˆà$×2Ñ2Ó4Ø—k‘k“mØ×+Ñ+Ó-ñˆô
 �~‰~˜eÓ$ˆØ�{‰{˜7Ó#ˆØ×Ñ˜3ÔØ×Ñ˜Ð)DÔEØ×ÑÐ)¬3¬s°4«y«>Ô:Ø×ÑÔÙØ�J‰J×Ñ˜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#   € Ü�?Š?Ü"×.Ñ.¨t°VÐC¸dÔ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¨ )Ø"/Ò"KÔ3KØ")ó+ˆŒð —K‘K×+Ñ+ˆŒ	Ü×Ñ×!Ñ! $Ô'Øˆ�r   c                 óP   — d| j                   j                  ›d| j                  ›d�S )Nr   r   r    )r!   r"   rP   r%   s    r   r&   zHTTPSServerThread.__str__„   s   � Ø ŸN™N×3Ó3°T·[³[Ð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   € Ø�9Š9Ø�I‰I�M‰MŒOð	'Ø�K‰K×%Ñ% dÔ+à�K‰K×$Ñ$Õ&øˆD�K‰K×$Ñ$Õ&ú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   ø€ Ü�?Š?Ü�J‰J×ÑÐ6Ô7Ø�‰ŒÜ�?Š?Ü�J‰J×ÑÐ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   ø€ ä�n‰nœS×0Ñ0Ó1€GØ×Ñ˜HÔ%Ü˜w¨¨mÓ<€FÜ�?‰?Ó€DØ
‡L�L�ÔØ‡I�I„Kôð 	‡O�O�GÔØ€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×!Ñ! +Ó.€	à	‡w�w‡��xÓ €à‡|�|€Ø�7‰7�<‰<˜˜mÓ,€ô�+ô ô0&,Ð7ô &,ôRDÐ0ô DôD˜	×(Ñ(ô ð< &.°DÈó ð& ˆzÓÛØ$ˆX×$Ñ$ðCôD€Fð ×Ñ˜˜h¨S¸$ØGð ô Ià
×Ñ˜˜i¨iÀØ,Ð3Dð ô Fà
×Ñ˜˜iÐ.AÈ5Ø+Ð2Lð ô Nà
×Ñ˜¨\ÀØ&ØEð ô Gð ×Ñ˜ Y°SÀØ@ð ô Bà×ÑÓ€Dà—l‘l€G„OØ×ÒØ+‰à0ˆØ�9Š9Ø!+ §¡£ˆMÕà!* §¡£ˆMÔØˆc�n‰n˜S×/Ñ/Ó0€GØ×Ñ˜HÔ%Ø‡‚Ø×Ñ˜tŸ™Ô/Ø‡|‚|Ø×Ñ˜tŸ|™|Ô,á˜"˜dŸi™i˜¨-¸ÓA€FØ‡|‚|ÙÐ7×>Ñ>¸tÓDÔEØ
×Ñ˜ÕðK r   