
    h                         S SK r S SKrS SKrS SKrS SKrS SKJrJrJrJ	r	  S SK
Jr  S SKJrJr  SrSr\R"                  " \5      r\	\\\\4   4   r " S S\R,                  5      r " S	 S
5      rg)    N)DictListSequenceTuple)AskpassHandler)Variantbusz'/usr/lib/polkit-1/polkit-agent-helper-1z/PolkitAgentc                      ^  \ rS rSrS\4U 4S jjr\R                  R                  S/ SQ5      S\	S\	S\	S	\
\	\	4   S
\	S\\   SS4S j5       rS\R                  R                   SS4S jrSrU =r$ ).org_freedesktop_PolicyKit1_AuthenticationAgent-   	responderc                 .   > [         TU ]  5         Xl        g N)super__init__r   )selfr   	__class__s     0/usr/lib/python3/dist-packages/cockpit/polkit.pyr   7org_freedesktop_PolicyKit1_AuthenticationAgent.__init__.   s    "     )sr   r   za{ss}r   z	a(sa{sv})	action_idmessage	icon_namedetailscookie
identitiesreturnNc           	        #    [         R                  SXX4XV5        [        R                  " 5       nU H@  u  pUS:X  d  M  SU	;   d  M  U	S   R                  U:X  d  M*  [         R                  SX5          O   [         R                  SU5        g [        R                  " U5      R                  n
[        R                  " [        X[        R                  R                  [        R                  R                  S9I S h  vN n U R                  U5      I S h  vN   UR#                  5       I S h  vN n[         R                  SU5        g  NM N5! [        R                   a(    [         R                  S5        UR!                  5          Nnf = f N^! UR#                  5       I S h  vN  n[         R                  SU5        f = f7f)	Nz[BeginAuthentication: action %s, message "%s", icon %s, details %s, cookie %s, identities %rz	unix-useruidz,Authentication subject %s matches our uid %dz*Not supporting authentication as any of %s)stdinstdoutzCancelled authenticationzhelper exited with code %i)loggerdebugosgeteuidvaluewarningpwdgetpwuidpw_nameasynciocreate_subprocess_execHELPER_PATH
subprocessPIPE_communicateCancelledError	terminatewait)r   r   r   r   r   r   r   my_uid	auth_typesubject	user_nameprocessress                r   begin_authenticationCorg_freedesktop_PolicyKit1_AuthenticationAgent.begin_authentication3   sb     	rV	Q $. YK'EW,<AUAUY_A_KW] %/
 NNGTLL(00	66{I=D=O=O=T=T>E>P>P>U>UW W	<##G,,,
  &CLL5s;W -%% 	 LL34	  '&&CLL5s;s   9GGGBG;E	<GE EE G-F.GE 9F	F F		F GF?"F%#F??Gr:   c                   #    UR                   (       d   eUR                  (       d   e/ nUR                    S h  vN n[        R                  SU5        UR	                  5       R                  5       R                  S5      u  pEnUR                  S5      (       Ga   UR                  S5      (       a  SnU R                  R                  SR                  U5      US5      I S h  vN nUR                  5         Uc,  [        R                  SU5        [        R                  " S5      e[        R                  S	U5        UR                   R                  UR                  5       5        UR                   R                  S
5        AUR                   R!                  5       I S h  vN   [        R                  S5        GM  US;   a  UR#                  U5        GM  US:X  a  [        R                  S5          g US:X  a  [        R%                  S5          g [        R%                  SU5        UR'                  5           g  GN GNX N
 g 7f)NzRead line from helper: %s 
PAM_PROMPTPasswordr   
z/got PAM_PROMPT %s, but do_askpass returned Nonezno password givenz1got PAM_PROMPT %s, do_askpass returned a password   
z(got PAM_PROMPT, wrote password to helper)PAM_TEXT_INFO	PAM_ERRORSUCCESSzAuthentication succeededFAILUREzAuthentication failedz&Unknown line from helper, aborting: %s)r"   r#   r$   r%   stripdecode	partition
startswithr   
do_askpassjoinclearr-   r3   writeencodedrainappendr)   r4   )r   r:   messageslinecommand_r(   passwds           r   r2   ;org_freedesktop_PolicyKit1_AuthenticationAgent._communicateP   s    }}}~~~ !.. "	$LL4d; $

 3 3 5 ? ? DG !!,// ##J//E  $~~8889LeUWXX >LL!RTYZ!001DEEPRWX##FMMO4##E*mm))+++GH::&I%78I%67GN!!#E"	 Y ,+ )sL   5IIH9IB%I$H<%B;I H?!BI9I<I?II)r   )__name__
__module____qualname____firstlineno__r   r   r	   	InterfaceMethodstrr   r   Identityr<   r-   r0   Processr2   __static_attributes____classcell__)r   s   @r   r   r   -   s    #. #
 	]]"HI<C <# <RU <,0cN<DG<U]^fUg<lp< J<8('*<*<*D*D ( ( (r   r   c                   2    \ rS rSrSrS\4S jrS rS rSr	g)	PolkitAgent{   zuRegister polkit agent when required

Use this as a context manager to ensure that the agent gets unregistered again.
r   c                     Xl         S U l        g r   )r   
agent_slot)r   r   s     r   r   PolkitAgent.__init__   s    "r   c           
        #     [         R                  R                  5       U l         SS[        [        R                  S   S5      04U l
        [        U R                  5      nU R                  R                  [         U5      U l        [$        R&                  " [$        R(                  S 5      nU R                  R+                  SSS	S
SU R                  U[         5      I S h  vN   [
        R                  SU R                  U5        U $ ! [         a"  n[
        R                  SU5        U s S nA$ S nAff = f! [         a    [
        R                  S5        U s $ f = f N}7f)Nz>cannot connect to system bus, not registering polkit agent: %szunix-sessionz
session-idXDG_SESSION_IDr   z4XDG_SESSION_ID not set, not registering polkit agentorg.freedesktop.PolicyKit1%/org/freedesktop/PolicyKit1/Authority$org.freedesktop.PolicyKit1.AuthorityRegisterAuthenticationAgentz
(sa{sv})ssz%Registered agent for %r and locale %s)r	   Busdefault_system
system_busOSErrorr$   r)   r   r&   environr8   KeyErrorr%   r   r   
add_objectAGENT_DBUS_PATHrh   locale	setlocaleLC_MESSAGEScall_method_async)r   eagent_objectlocale_names       r   
__aenter__PolkitAgent.__aenter__   s)    	!gg446DO
	*\72::N^C_ad;e,fgDL
 FdnnU//44_lS &&v'9'94@oo//(32)LL+8 	8 	8 	<dllKX1  	NN[]^_K	  	LLOPK		8s^   E #D &D7 BE  E!'E 
D4D/)D4*E /D44E 7!EE EE c           	        #    U R                   (       ar  U R                  R                  SSSSSU R                  [        5      I S h  vN   U R                   R                  5         [        R                  SU R                  5        g g  N@7f)Nrl   rm   rn   UnregisterAuthenticationAgentz	(sa{sv})szUnregistered agent for %r)rh   rr   r{   r8   rw   cancelr$   r%   )r   	_exc_type
_exc_value
_tracebacks       r   	__aexit__PolkitAgent.__aexit__   so     ??//33,76/o/ / / OO""$LL4dllC /s   AB	BAB	)rh   r   r8   rr   N)
rY   rZ   r[   r\   __doc__r   r   r   r   rb    r   r   re   re   {   s    . :
Dr   re   )r-   rx   loggingr&   r*   typingr   r   r   r   cockpit._vendor.fernyr   cockpit._vendor.systemd_ctypesr   r	   r/   rw   	getLoggerrY   r$   r_   r`   Objectr   re   r   r   r   <module>r      su   $    	 
 . . 0 7 8 			8	$d3<(()KSZZ K\0D 0Dr   