o
    <‘ðiÁ  ã                   @   s\   G d d„ dƒZ G dd„ deƒZG dd„ deƒZG dd„ dƒZG dd	„ d	ƒZG d
d„ dƒZdS )c                   @   ó   e Zd Zddd„Zdd„ ZdS )Ú
BasePluginNc                 C   ó
   || _ d S ©N)Úsource©ÚselfÚsrc© r	   úV/root/parts/websockify/install/lib/python3.10/site-packages/websockify/auth_plugins.pyÚ__init__   ó   
zBasePlugin.__init__c                 C   s   d S r   r	   ©r   ÚheadersÚtarget_hostÚtarget_portr	   r	   r
   Úauthenticate   s   zBasePlugin.authenticater   ©Ú__name__Ú
__module__Ú__qualname__r   r   r	   r	   r	   r
   r      s    
r   c                       s&   e Zd Zddi df‡ fdd„	Z‡  ZS )ÚAuthenticationErrorNé“  c                    s8   || _ || _|| _|d u r|}tƒ  d| j |f ¡ d S )Nz%s %s)Úcoder   ÚmsgÚsuperr   )r   Úlog_msgÚresponse_codeÚresponse_headersÚresponse_msg©Ú	__class__r	   r
   r   
   s   zAuthenticationError.__init__©r   r   r   r   Ú__classcell__r	   r	   r   r
   r   	   s    r   c                       s   e Zd Z‡ fdd„Z‡  ZS )ÚInvalidOriginErrorc                    s(   || _ || _tƒ jdd||f d� d S )NzInvalid Originz3Invalid Origin Header: Expected one of %s, got '%s')r   r   )Úexpected_originÚactual_originr   r   )r   ÚexpectedÚactualr   r	   r
   r      s   ÿ
þzInvalidOriginError.__init__r!   r	   r	   r   r
   r#      s    r#   c                   @   s:   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚBasicHTTPAuthz=Verifies Basic Auth headers. Specify src as username:passwordNc                 C   r   r   ©r   r   r	   r	   r
   r   #   r   zBasicHTTPAuth.__init__c           	      C   sÊ   dd l }| d¡}|r_| d¡s|  ¡  z| |dd … ¡}W n ty,   |  ¡  Y nw z| d¡}W n tyA   |  ¡  Y nw | dd¡}t	|ƒdkrR|  ¡  | j
|Ž s]|  ¡  d S d S |  ¡  d S )	Né    ÚAuthorizationzBasic é   z
ISO-8859-1ú:é   é   )Úbase64ÚgetÚ
startswithÚ
auth_errorÚ	b64decodeÚ	TypeErrorÚdecodeÚUnicodeDecodeErrorÚsplitÚlenÚvalidate_credsÚdemand_auth)	r   r   r   r   r0   Úauth_headerÚuser_pass_rawÚuser_pass_as_textÚ	user_passr	   r	   r
   r   &   s,   

ÿÿ
ÿzBasicHTTPAuth.authenticatec                 C   s   d||f | j krdS dS )Nz%s:%sTFr)   )r   ÚusernameÚpasswordr	   r	   r
   r:   B   s   zBasicHTTPAuth.validate_credsc                 C   s
   t dd�‚)Nr   ©r   ©r   ©r   r	   r	   r
   r3   H   r   zBasicHTTPAuth.auth_errorc                 C   s   t dddid�‚)Ni‘  zWWW-AuthenticatezBasic realm="Websockify")r   r   rC   rD   r	   r	   r
   r;   K   s   ÿzBasicHTTPAuth.demand_authr   )	r   r   r   Ú__doc__r   r   r:   r3   r;   r	   r	   r	   r
   r(       s    
r(   c                   @   r   )ÚExpectOriginNc                 C   ó    |d u r	g | _ d S | ¡ | _ d S r   ©r   r8   r   r	   r	   r
   r   P   ó   
zExpectOrigin.__init__c                 C   s0   |  dd ¡}|d u s|| jvrt| j|d�‚d S )NÚOrigin)r&   r'   )r1   r   r#   )r   r   r   r   Úoriginr	   r	   r
   r   V   s   ÿzExpectOrigin.authenticater   r   r	   r	   r	   r
   rF   O   s    
rF   c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )ÚClientCertCNAuthz]Verifies client by SSL certificate. Specify src as whitespace separated list of common names.Nc                 C   rG   r   rH   r   r	   r	   r
   r   ^   rI   zClientCertCNAuth.__init__c                 C   s    |  dd ¡| jvrtdd�‚d S )NÚSSL_CLIENT_S_DN_CNr   rB   )r1   r   r   r   r	   r	   r
   r   d   s   
ÿzClientCertCNAuth.authenticater   )r   r   r   rE   r   r   r	   r	   r	   r
   rL   [   s    
rL   N)r   Ú	Exceptionr   r#   r(   rF   rL   r	   r	   r	   r
   Ú<module>   s    /