JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/acme/__pycache__/standalone.cpython-39.opt-1.pyc

a

}|�g�2�@spdZddlZddlZddlmZddlmZddl	Z	ddl
Z
ddlZddlZddl
mZddl
mZddl
mZddl
mZddl
mZddl
mZdd	l
mZdd
l
mZddlmZddlmZdd
lmZddlmZe	�e�ZGdd�dej�Z Gdd�d�Z!Gdd�d�Z"Gdd�de e!�Z#Gdd�dej$�Z$Gdd�de$e!�Z%Gdd�de"�Z&Gdd�dej'�Z(dS)z1Support for standalone client challenge solvers. �N)�Any)�cast)�List)�Mapping)�Optional)�Set)�Tuple)�Type)�crypto)�SSL)�
challenges)�crypto_utilcsheZdZdZeedd��fdd�Zdd�dd�Zeje	e
ejej
fd	�d
d�Zdd�dd
�Z�ZS)�	TLSServerzGeneric TLS Server.N��args�kwargs�returncsh|�dd�|_|jrtj|_ntj|_|�di�|_|�dtj�|_	|�dd�|_
t�j|i|��dS)N�ipv6F�certs�method�allow_reuse_addressT)
�popr�socket�AF_INET6�address_family�AF_INETrr
Z_DEFAULT_SSL_METHODrr�super�__init__��selfrr��	__class__��3/usr/lib/python3.9/site-packages/acme/standalone.pyrs
zTLSServer.__init__�rc	Cs.ttjtj|j|jt|dd�|jd��|_dS)N�_alpn_selection)Zcert_selectionZalpn_selectionr)rrr
Z	SSLSocket�_cert_selection�getattrr�rr"r"r#�
_wrap_sock*s


�zTLSServer._wrap_sock��
connectionrcCs|��}|r|j�|d�SdS)z.Callback selecting certificate for connection.N)�get_servernamer�get�rr+Zserver_namer"r"r#r&0szTLSServer._cert_selectioncCs|��tj�|�S�N)r)�socketserver�	TCPServer�server_bindr(r"r"r#r28szTLSServer.server_bind)�__name__�
__module__�__qualname__�__doc__rrr)r�
Connectionrrr
�PKey�X509r&r2�
__classcell__r"r"r r#rs�rc@seZdZdZdZdZdS)�ACMEServerMixinz"ACME server common settings mixin.z'ACME client standalone challenge solverTN)r3r4r5r6�server_versionrr"r"r"r#r;=sr;c@sjeZdZdZeejeee	fe
e
dd�dd�Zdd�dd�Ze
eee	fd�d	d
�Zdd�dd�ZdS)
�BaseDualNetworkedServersaBase class for a pair of IPv6 and IPv4 servers that tries to do everything
       it's asked for both servers, but where failures in one server don't
       affect the other.

       If two servers are instantiated, they will serve on the same port.
       N)�ServerClass�server_address�remaining_argsrrcOs.|d}g|_g|_d}dD]�}z`||d<|df|f|dd�}|f|}	||	i|��}
t�d|d|d|rxdnd�Wnpty�}zX|}|jr�t�d	|d|d|r�dnd�n t�d
|d|d|r�dnd�WYd}~qd}~00|j�|
�|
j��d}q|j�s*|�r"|�ntd��dS)N�)TFrr�z$Successfully bound to %s:%s using %sZIPv6ZIPv4z�Certbot wasn't able to bind to %s:%s using %s, this is often expected due to the dual stack nature of IPv6 socket implementations.z Failed to bind to %s:%s using %szCould not bind to IPv4 or IPv6.)�threads�servers�logger�debug�OSError�appendr�getsockname)rr>r?r@r�portZlast_socket_errZ
ip_versionZnew_address�new_args�server�er"r"r#rLs@	
�
��z!BaseDualNetworkedServers.__init__r$cCs2|jD]&}tj|jd�}|��|j�|�qdS)z*Wraps socketserver.TCPServer.serve_forever)�targetN)rD�	threading�Thread�
serve_forever�startrCrH�rrL�threadr"r"r#rQ~s
�z&BaseDualNetworkedServers.serve_forevercCsdd�|jD�S)z/Wraps socketserver.TCPServer.socket.getsocknamecSsg|]}|j���qSr")rrI)�.0rLr"r"r#�
<listcomp>��z9BaseDualNetworkedServers.getsocknames.<locals>.<listcomp>)rDr(r"r"r#�getsocknames�sz%BaseDualNetworkedServers.getsocknamescCs:|jD]}|��|��q|jD]}|��q"g|_dS)zpWraps socketserver.TCPServer.shutdown, socketserver.TCPServer.server_close, and
           threading.Thread.joinN)rDZshutdownZserver_closerC�joinrSr"r"r#�shutdown_and_server_close�s



z2BaseDualNetworkedServers.shutdown_and_server_close)r3r4r5r6r	r0r1r�str�intrrrQrrXrZr"r"r"r#r=Ds�2r=c@s�eZdZdZdZdeeefeee	j
e	jfee
ee	j
e	jffedd�dd�Zejeee	j
e	jfd�d	d
�Zejee
e
d�dd
�ZdS)�TLSALPN01ServerzTLSALPN01 Server.s
acme-tls/1FN)r?r�challenge_certsrrcCs tj||tj||d�||_dS)N)rr)rrr0ZBaseRequestHandlerr^)rr?rr^rr"r"r#r�s

�zTLSALPN01Server.__init__r*cCs&|��}|r"t�d|�|j|SdS)Nz)Serving challenge cert for server name %s)r,rErFr^r.r"r"r#r&�s
	
zTLSALPN01Server._cert_selection)�_connection�alpn_protosrcCsBt|�dkr.|d|jkr.t�d|j�|jSt�dt|��dS)z!Callback to select alpn protocol.rArzAgreed on %s ALPNz#Cannot agree on ALPN proto. Got: %srW)�len�ACME_TLS_1_PROTOCOLrErFr[)rr_r`r"r"r#r%�s
zTLSALPN01Server._alpn_selection)F)r3r4r5r6rbrr[r\rr
r8r9r�bytes�boolrrr7rr&r%r"r"r"r#r]�s���r]cs*eZdZdZeedd��fdd�Z�ZS)�
HTTPServerzGeneric HTTP Server.Nrcs<|�dd�|_|jrtj|_ntj|_t�j|i|��dS)NrF)rrrrrrrrrr r"r#r�s

zHTTPServer.__init__�r3r4r5r6rrr:r"r"r r#re�srecs>eZdZdZdeeefeej	e
edd��fdd�
Z�ZS)	�HTTP01ServerzHTTP01 Server.F�N)r?�	resourcesr�timeoutrcs t�j|tj||d�|d�dS)N��simple_http_resourcesrj)r)rr�HTTP01RequestHandler�partial_init)rr?rirrjr r"r#r�s��zHTTP01Server.__init__)Frh)
r3r4r5r6rr[r\rr�HTTP01rdrr:r"r"r r#rg�s
��rgcs*eZdZdZeedd��fdd�Z�ZS)�HTTP01DualNetworkedServersz`HTTP01Server Wrapper. Tries everything for both. Failures for one don't
       affect the other.Nrcst�jtg|�Ri|��dSr/)rrrgrr r"r#r�sz#HTTP01DualNetworkedServers.__init__rfr"r"r r#rp�srpcs�eZdZdZe�dd�Zeedd��fdd�Ze	e
d�d	d
��Zeedd�dd
�Z
dd�dd�Zdd�dd�Zdd�dd�Zdd�dd�Zdd�dd�Zeeeje
dd�dd��Z�ZS)rmz�HTTP01 challenge handler.

    Adheres to the stdlib's `socketserver.BaseRequestHandler` interface.

    :ivar set simple_http_resources: A set of `HTTP01Resource`
        objects. TODO: better name?

    �HTTP01Resourcezchall response validationNrcs8|�dt��|_|�dd�|_t�j|i|��|dS)Nrlrjrh)r�setrl�_timeoutrrrr r"r#r�szHTTP01RequestHandler.__init__r$cCs|jS)z�
        The default timeout this server should apply to requests.
        :return: timeout to apply
        :rtype: int
        )rsr(r"r"r#rj�szHTTP01RequestHandler.timeout)�formatrrcGst�d|jd||�dS)zLog arbitrary message.z	%s - - %srN)rErFZclient_address)rrtrr"r"r#�log_message�sz HTTP01RequestHandler.log_messagecCs|�d�tj�|�dS)zHandle request.zIncoming requestN)ru�BaseHTTPServer�BaseHTTPRequestHandler�handler(r"r"r#rxs
zHTTP01RequestHandler.handlecCs>|jdkr|��n&|j�dtjj�r2|��n|��dS)N�/)�path�handle_index�
startswithrroZ
URI_ROOT_PATH�handle_simple_http_resource�
handle_404r(r"r"r#�do_GETs



zHTTP01RequestHandler.do_GETcCs6|�d�|�dd�|��|j�|jj���dS)zHandle index page.��zContent-Type�	text/htmlN)�
send_response�send_header�end_headers�wfile�writerLr<�encoder(r"r"r#r{s
z!HTTP01RequestHandler.handle_indexcCs4|jtjdd�|�dd�|��|j�d�dS)zHandler 404 Not Found errors.z	Not Found)�messagezContent-typer�s404N)r��http_clientZ	NOT_FOUNDr�r�r�r�r(r"r"r#r~szHTTP01RequestHandler.handle_404cCsv|jD]R}|jj|jkr|�d|j�d��|�tj�|��|j	�
|j���dSq|�d�|�d|j�dS)z$Handle HTTP01 provisioned resources.zServing HTTP01 with token %r�tokenNzNo resources to servez0%s does not correspond to any resource. ignoring)rlZchallrzrur�r�r�ZOKr�r�r�Z
validation)r�resourcer"r"r#r}s

�
�z0HTTP01RequestHandler.handle_simple_http_resourcez'functools.partial[HTTP01RequestHandler])rlrjrcCstj|||d�S)z�Partially initialize this handler.

        This is useful because `socketserver.BaseServer` takes
        uninitialized handler and initializes it with the current
        request.

        rk)�	functools�partial)�clsrlrjr"r"r#rn-s
�z!HTTP01RequestHandler.partial_init)r3r4r5r6�collections�
namedtuplerqrr�propertyr\rjr[rurxrr{r~r}�classmethodrrrornr:r"r"r r#rm�s"��rm))r6r�r�Zhttp.clientZclientr�Zhttp.serverrLrvZloggingrr0rO�typingrrrrrrrr	ZOpenSSLr
rZacmerr
Z	getLoggerr3rEr1rr;r=r]rergrprwrmr"r"r"r#�<module>s:
!Q+

Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg