
    qiz	                         S r SSKrSSKJr  SSKJr  Sr\R                  " \5      r	 SSK
r
 " S S\5      rg! \ a    \	R                  S5        e f = f)	a  
Implementation of a domain controller that allows users to authenticate against
a Pluggable Authentication Module ('PAM').

Used by HTTPAuthenticator. Only available on linux and macOS.

See https://wsgidav.readthedocs.io/en/latest/user_guide_configure.html
    N)util)BaseDomainControllerreStructuredTextzHpam_dc requires the `python-pam` module. Try `pip install wsgidav[pam]`.c                   F   ^  \ rS rSrU 4S jrS rS rS rS rS r	Sr
U =r$ )	PAMDomainController   c                 B  > [         TU ]  X5        [        R                  " 5       U l        [
        R
                  " 5       U l        [        R                  " USSS9nUR                  SS5      U l	        UR                  SS5      U l
        UR                  SS5      U l        g )	Npam_dcT)as_dictserviceloginencodingzutf-8
resetcreds)super__init__	threadingRLocklockpamr   get_dict_valuegetpam_servicepam_encodingpam_resetcreds)selfwsgidav_appconfigdc_conf	__class__s       F/home/kali/flask_env/lib/python3.13/site-packages/wsgidav/dc/pam_dc.pyr   PAMDomainController.__init__   sx    -OO%	779%%fhE";;y':#KK
G<%kk,=    c                 P    U R                   R                   SU R                  < S3$ )N())r   __name__r   r   s    r    __str__PAMDomainController.__str__)   s'    ..))*!D,<,<+?qAAr"   c                 "    SU R                    S3$ )NzPAM(r%   )r   )r   	path_infoenvirons      r    get_domain_realm$PAMDomainController.get_domain_realm,   s    d&&'q))r"   c                     g)NT )r   realmr,   s      r    require_authentication*PAMDomainController.require_authentication/   s    r"   c                    U R                      U R                  R                  UUU R                  U R                  U R
                  S9nU(       d_  [        R                  SU< SU R                  < SU R                  R                   SU R                  R                   35         S S S 5        g S S S 5        [        R                  SU< S35        g	! , (       d  f       N)= f)
N)r   r   r   zpam.authenticate(z, '<redacted>', z) failed with code z: FzUser z logged on.T)r   r   authenticater   r   r   _loggerwarningcodereasondebug)r   r1   	user_namepasswordr,   is_oks         r    basic_auth_user#PAMDomainController.basic_auth_user2   s    YYHH))((..** * E '	}4DTEUEUDXXklpltltlylykzz|  ~B  ~F  ~F  ~M  ~M  }N  O  Y   	i]+67 Ys   BC
C!c                     g)NFr0   r'   s    r    supports_http_digest_auth-PAMDomainController.supports_http_digest_authE   s    r"   )r   r   r   r   r   )r&   
__module____qualname____firstlineno__r   r(   r-   r2   r>   rA   __static_attributes____classcell__)r   s   @r    r   r      s'    
>B*& r"   r   )__doc__r   wsgidavr   wsgidav.dc.base_dcr   __docformat__get_module_loggerr&   r6   r   ImportErrorerrorr   r0   r"   r    <module>rO      sd      3"

 
 
*
+. +  
MMR 
	
s	   8 A