
    i`                     4   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
mZ d dlmZmZmZmZ ddlmZ  ej&                  e      Z G d dej,                        Z G d	 d
ej,                        Z G d dej,                        ZdefdefdefgZy)    N)Path)DictOptional)Variantbusinotify	pathwatch   )configc                       e Zd ZU dZee   ed<   ddZej                  j                  dg      d        Zej                  j                  g       dd       Zy)	cockpit_LoginMessagesNmessagesc                    t         j                  j                  dd       }|t        j	                  d       y t        j	                  d|       	 t        t        |      d      5 }|j                  d       |j                         | _	        d d d        t        j	                  d| j                         y # 1 sw Y   *xY w# t        t        t        f$ r }t        j	                  d|       Y d }~y d }~ww xY w)NCOCKPIT_LOGIN_MESSAGES_MEMFDzBCOCKPIT_LOGIN_MESSAGES_MEMFD wasn't set.  No login messages today.z(Trying to read login messages from fd %srr   z$Successfully read login messages: %sz!Reading login messages failed: %s)osenvironpoploggerdebugopenintseekreadr   
ValueErrorOSErrorUnicodeDecodeError)selffdstrlogin_messagesexcs       </usr/lib/python3/dist-packages/cockpit/internal_endpoints.py__init__zcockpit_LoginMessages.__init__   s    

=tD=LL]^?G	Pc%j#& 6.##A& . 3 3 56 LL?O6 6 G%78 	C
 LL<cBB	Cs0   C %'B5C 5B>:C C5C00C5s)	out_typesc                 "    | j                   xs dS )Nz{}r   r   s    r"   getzcockpit_LoginMessages.get.   s    }}$$    c                     d | _         y Nr'   r(   s    r"   dismisszcockpit_LoginMessages.dismiss2   s	    r*   returnN)__name__
__module____qualname__r   r   str__annotations__r#   r   	InterfaceMethodr)   r-    r*   r"   r   r      sd    "Hhsm"P( 	]]SE*% +% 	]]B' (r*   r   c            	          e Zd ZU eed<   ej                  ed<   eej                     ed<   e
j                  j                  d      Zej                  deeeeef   f   fd       Ze
j                  j'                  g d      d	ed
edeeef   ddfd       ZddZdej.                  dedee   ddfdZdee   dee   ddfdZd Zy)cockpit_Machinespathwatchpending_notifyz	a{sa{sv}}r/   c                 ,   i }t        j                   | j                   d      D ]v  }	 t        |      5 }	 t        j                  |      }|j                         D ]5  \  }}|j                         D ci c]  \  }}|t        |       c}}||<   7 	 d d d        x |S # t        j
                  $ r! t        j                  d|       Y d d d        w xY wc c}}w # 1 sw Y   JxY w# t        $ r!}	t        j                  d||	       Y d }	~	d }	~	ww xY w)Nz/*.jsonz#Invalid JSON in file %s.  Ignoring.z-Unreadable machines.d file %s: %s.  Ignoring.)globr:   r   jsonloadJSONDecodeErrorr   warningitemsr   r   error)
r   resultsfilenamefpcontentshostnameattrskeyvaluer!   s
             r"   get_machineszcockpit_Machines.get_machines?   s   13		TYYKw"78 	]H](^ br!#'99R=
 ,4>>+; b%SXS^S^S`,aZS%S'%.-@,a)bb	]   // !'LhW b b!
 -bb b  ]LhX[\\]sc   C)CB )C4C
	CC) )C	C
C)C	CC&	"C))	D2DD)r$   r$   za{sv})in_typesrF   rI   rJ   Nc           	         	 | j                   j                  |      j                         5 }t        j                  |      }d d d        j                  |i       j                  |j                         D ci c]  \  }}||j                   c}}       | j                   j                  dd       t        | j                   j                  |      d      5 }t        j                  ||d	       d d d        y # 1 sw Y   xY w# t        j
                  $ r#}t        j                  dd| d| d      |d }~wt        $ r i }Y w xY wc c}}w # 1 sw Y   y xY w)
Nzcockpit.Machines.ErrorzFile z is in invalid format: .T)parentsexist_okw   )indent)r:   joinpathr   r?   r@   rA   r   BusErrorFileNotFoundError
setdefaultupdaterC   rL   mkdirdump)	r   rF   rI   rJ   rG   rH   r!   rK   rL   s	            r"   rZ   zcockpit_Machines.updateS   s.   	##H-224 )99R=) 	Hb)00UZU`U`Ub1czsE#u{{2B1cd		t4$))$$X.4 	.IIh1-	. 	.) )## 	s,,75
Jabeaffg9hiorr  	H	 2d	. 	.sF   )D C:D 7E
E:D?D ED77EEEc                 ~     d fd} j                   *t        j                         j                  d|       _         y y )Nc                  <     j                  di dg       d  _        y )Nzcockpit.MachinesMachines)properties_changedr<   r(   s   r"   _notify_nowz,cockpit_Machines.notify.<locals>._notify_nowf   s     ##$6ZLI"&Dr*   g      ?r.   )r<   asyncioget_running_loop
call_later)r   ra   s   ` r"   notifyzcockpit_Machines.notifye   s9    	'
 &")":":"<"G"G["YD 'r*   maskcookienamec                 $    | j                          y r,   re   )r   rf   rg   rh   s       r"   do_inotify_eventz!cockpit_Machines.do_inotify_evento       r*   fderrnoc                 $    | j                          y r,   rj   )r   rm   rn   s      r"   do_identity_changedz$cockpit_Machines.do_identity_changedr   rl   r*   c                     t        j                  d      | _        d| _        t	        j
                  t        | j                        |       | _        d | _        y )Nz
machines.d.)r   lookup_configr:   r<   r	   	PathWatchr3   r;   r(   s    r"   r#   zcockpit_Machines.__init__u   sB    ((6	 "((TYY>
"r*   r.   )r0   r1   r2   r   r4   r	   rs   r   rb   Handler   r5   Propertymachinesgetterr   r3   r   rM   r6   rZ   re   r   Eventr   rk   rp   r#   r7   r*   r"   r9   r9   7   s   
JW^^,, }}%%k2H__d3S'\(:#:;  & 	]]#67.s .c .$sG|:L .QU . 8."ZW]] C xPS} Y] hsm HSM d #r*   r9   c                      e Zd Zej                  j                  dd      Zej                  j                  dd      Zej                  j                  dd      Zej                  j                  dd      Z	ej                  j                  dd      Z
ej                  j                  dd      Zej                  j                  dg       Zd	dZy)
cockpit_Userr$    )rL   ir   asNc                 8   t        j                  t        j                               }|j                  | _        |j                  | _        |j                  | _	        |j                  | _        |j                  | _        |j                  | _        t!        j"                  |j                        j$                  g}t!        j&                         D ]E  }|j                  |j(                  v s|j$                  |vs+|j+                  |j$                         G || _        y r,   )pwdgetpwuidr   getuidpw_namerh   pw_gecosfullpw_uididpw_gidgidpw_dirhomepw_shellshellgrpgetgrgidgr_namegetgrallgr_memappendgroups)r   userr   grs       r"   r#   zcockpit_User.__init__   s    ||BIIK(LL	MM	++;;KK	]]
 ,,t{{+334,,. 	*B||ryy(RZZv-Ebjj)	* r*   r.   )r0   r1   r2   r   r5   ru   rh   r   r   r   r   r   r   r#   r7   r*   r"   rz   rz   ~   s    ==!!#R!0D==!!#R!0D			1		-B
--
 
 A
 
.C==!!#R!0DMM""3b"1E]]##D#3Fr*   rz   z/LoginMessagesz	/machinesz/user)rb   r>   r   r?   loggingr   r   pathlibr   typingr   r   cockpit._vendor.systemd_ctypesr   r   r   r	   r{   r   	getLoggerr0   r   Objectr   r9   rz   EXPORTSr7   r*   r"   <module>r      s      
   	 
  ! K K 			8	$CJJ @D#szz D#N3:: 8 ,-"#lr*   