+
    ]f  c                   s     ! R  R4      t  ! R R]4      t ! R R]4      t ! R R4      t ! R R	4      t ! R
 R4      tR# )c                   s0   a  ] tR t^t o RR ltR tRtV tR# )
BasePluginNc                    Wn         R # Nsourceselfsrc   &&</usr/lib/python3.14/site-packages/websockify/auth_plugins.py__init__ZBasePlugin.__init__   s        c                s    R # r    r   headerstarget_hosttarget_port   &&&&r	   authenticateZBasePlugin.authenticate   s    r   r   r   __name__
__module____qualname____firstlineno__r
   r   __static_attributes____classdictcell____classdict__   @r	   r    r       s      r   r    c                   s>   a a ] tR t^	t oRR/ R3V 3R lltRtVtV ;t# )AuthenticationErrorN  c                sx   < W n         W0n        W@n        Vf   Tp\        SV `  V P                   : RV: 24       R # )NZ )coder   msgsuperr
   )r   log_msgresponse_coderesponse_headersresponse_msg	__class__s   &&&&&r	   r
   ZAuthenticationError.__init__
   s2    !	'?"GDIIw78r   )r   r   r    r   r   r   r   r
   r   r   Z__classcell__r&   r      @@r	   r   r   	   s     #3Z^ 9 9r   r   c                   s2   a a ] tR t^t oV 3R ltRtVtV ;t# )InvalidOriginErrorc                sT   < Wn         W n        \        SV `  R RV: RV: R2R7       R# )zInvalid Originz'Invalid Origin Header: Expected one of z, got 'Z')r%   r"   N)expected_originactual_originr!   r
   )r   expectedactualr&   s   &&&r	   r
   ZInvalidOriginError.__init__   s.    '#)&.8 	 	9r   )r,   r+   r'   r(   r)   r	   r*   r*      s     9 9r   r*   c                   sF   a  ] tR t^ t o RtR	R ltR tR tR tR t	Rt
V tR# )
BasicHTTPAuthz=Verifies Basic Auth headers. Specify src as username:passwordNc                r   r   r   r   r   r	   r
   ZBasicHTTPAuth.__init__#   s    r   c                s@   ^ RI pVP                  R4      pV'       d   VP                  R4      '       g   V P                  4         VP	                  VR,          4      p XP                  R4      pXP                  R^4      p\        V4      ^8w  d   V P                  4        V P                  ! V!  '       g   V P                  4        R# R# V P                  4        R#   \
         d    T P                  4         Li ; i  \         d    T P                  4         Li ; i)i    NZAuthorizationzBasic :i   NNz
ISO-8859-1:)base64getZ
startswith
auth_errorZ	b64decodeZ	TypeErrorZdecodeZUnicodeDecodeErrorsplitZlenvalidate_credsdemand_auth)	r   r   r   r   r2   Zauth_headerZuser_pass_rawZuser_pass_as_textZ	user_passs	   &&&&     r	   r   ZBasicHTTPAuth.authenticate&   s    kk/2))(33!" & 0 0R A"$1$8$8$F! *//Q7I9~"!&&	22  " 3 #  "!" & "!"s$   C C? C<;C<?DDc                s:    V: R V: 2V P                   8X  d   R# R# )r1   TFr0   )r   ZusernameZpasswords   &&&r	   r6   ZBasicHTTPAuth.validate_credsB   s    )TXX5r   c                s    \        R R7      h)r   r#   r   r      &r	   r4   ZBasicHTTPAuth.auth_errorH   s    !44r   c                s     \        R RR/R7      h)i  zWWW-AuthenticatezBasic realm="Websockify")r#   r$   r9   r:   r;   r	   r7   ZBasicHTTPAuth.demand_authK   s    !4FHb3ce 	er   r0   r   )r   r   r   r   __doc__r
   r   r6   r4   r7   r   r   r   r   r	   r/   r/       s(     G85e er   r/   c                   s0   a  ] tR t^Ot o RR ltR tRtV tR# )ExpectOriginNc                J    Vf
   . V n         R # VP                  4       V n         R # r   r   r5   r   r   r	   r
   ZExpectOrigin.__init__P       ;DK))+DKr   c                s    VP                  R R4      pVe   W@P                  9  d   \        V P                  VR7      hR# )ZOriginN)r-   r.   )r3   r   r*   )r   r   r   r   Zorigins   &&&& r	   r   ZExpectOrigin.authenticateV   s6    Xt,>V;;6$dkk&II 7r   r   r   r   r   r   r	   r=   r=   O   s     &J Jr   r=   c                   s4   a  ] tR t^[t o RtRR ltR tRtV tR# )ClientCertCNAuthz]Verifies client by SSL certificate. Specify src as whitespace separated list of common names.Nc                r>   r   r?   r   r   r	   r
   ZClientCertCNAuth.__init__^   r@   r   c                s`    VP                  R R4      V P                  9  d   \        RR7      hR# )ZSSL_CLIENT_S_DN_CNNr   r8   )r3   r   r   r   r   r	   r   ZClientCertCNAuth.authenticated   s+    ;;+T2$++E%C88 Fr   r   r   )	r   r   r   r   r<   r
   r   r   r   r   r   r	   rA   rA   [   s     g&9 9r   rA   N)r    Z	Exceptionr   r*   r/   r=   rA   r   r   r	   <module>rB      sK    	9) 	99, 9-e -e^
J 
J9 9r   