a h@sddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z m Z ddl m Z mZmZmZddlmZeeZGdddejZGd d d ejZGd d d ejZd efdefdefgZdS)N)Path)DictOptional)Variantbusinotify pathwatch)configc@s`eZdZUdZeeed<ddddZej j dgddd Z ej j gdddd d Z dS) cockpit_LoginMessagesNmessagesreturnc Cstjdd}|dur$tddStd|zFtt|d$}|d||_ Wdn1sj0YWn6t t t fy}ztd|WYd}~nd}~00td|j dS)NZCOCKPIT_LOGIN_MESSAGES_MEMFDzBCOCKPIT_LOGIN_MESSAGES_MEMFD wasn't set. No login messages today.z(Trying to read login messages from fd %srrz!Reading login messages failed: %sz$Successfully read login messages: %s) osenvironpoploggerdebugopenintseekreadr ValueErrorOSErrorUnicodeDecodeError)selfZfdstrZlogin_messagesexcr>/usr/lib/python3.9/site-packages/cockpit/internal_endpoints.py__init__&s   ,"zcockpit_LoginMessages.__init__s)Z out_typescCs |jpdS)Nz{}r rrrrget:szcockpit_LoginMessages.getcCs d|_dSNr"r#rrrdismiss>szcockpit_LoginMessages.dismiss) __name__ __module__ __qualname__r rstr__annotations__r r InterfaceMethodr$r&rrrrr #s   r c@seZdZUeed<ejed<eej ed<e j dZ e jeeeeeffdddZe j jgdd eeeeefd d d d Zd dddZejeeed dddZeeeed dddZddZd S)cockpit_Machinespathwatchpending_notifyz a{sa{sv}}r c Csi}t|jdD]}zt|z}zt|}Wn2tjyftd|YWdWqYn0|D]\}}dd|D||<qpWdn1s0YWqt y}zt d||WYd}~qd}~00q|S)Nz/*.jsonz#Invalid JSON in file %s. Ignoring.cSsi|]\}}|t|qSr)r.0keyvaluerrr Yz1cockpit_Machines.get_machines..z-Unreadable machines.d file %s: %s. Ignoring.) globr/rjsonloadJSONDecodeErrorrZwarningitemsrerror)rresultsfilenamefpcontentshostnameattrsrrrr get_machinesKs  :&zcockpit_Machines.get_machines)r!r!za{sv})Zin_typesN)r?rBrCrc Cs z>|j|}t|}Wdn1s20YWnVtjy}z(tdd|d|d|WYd}~nd}~0tyi}Yn0| |i dd| D|jj dddt|j|d  }tj ||d d Wdn1s0YdS) Nzcockpit.Machines.ErrorzFile z is in invalid format: .cSsi|]\}}||jqSrr5r2rrrr6kr7z+cockpit_Machines.update..T)parentsexist_okw)indent)r/joinpathrr9r:r;rZBusErrorFileNotFoundError setdefaultupdater<mkdirdump)rr?rBrCr@rArrrrrO_s,0   zcockpit_Machines.updatecs2ddfdd }jdur.td|_dS)Nr csdidgd_dS)Nzcockpit.MachinesZMachines)Zproperties_changedr1rr#rr _notify_nowrsz,cockpit_Machines.notify.._notify_nowg?)r1asyncioZget_running_loopZ call_later)rrRrr#rnotifyqs zcockpit_Machines.notify)maskcookienamercCs |dSr%rT)rrUrVrWrrrdo_inotify_event{sz!cockpit_Machines.do_inotify_event)fderrnorcCs |dSr%rX)rrZr[rrrdo_identity_changed~sz$cockpit_Machines.do_identity_changedcCs0td|_d|_tt|j||_d|_dS)Nz machines.d.)r Z lookup_configr/r1r PathWatchr*r0r#rrrr s zcockpit_Machines.__init__)r'r(r)rr+rr]rrSZHandlerr,PropertyZmachinesgetterrr*rrDr-rOrTrEventrrYr\r rrrrr.Cs     r.c@seZdZejjdddZejjdddZejjdddZejjdddZ ejjdddZ ejjdddZ ejjdgdZ ddd d Z dS) cockpit_Userr!rFirasNr cCstt}|j|_|j|_|j|_ |j |_ |j |_ |j|_t|j jg}tD]&}|j|jvrV|j|vrV||jqV||_dSr%)pwdgetpwuidrgetuidpw_namerWpw_gecosfullpw_uididpw_gidgidpw_dirhomepw_shellshellgrpgetgrgidgr_namegetgrallgr_memappendgroups)ruserryZgrrrrr s zcockpit_User.__init__)r'r(r)rr,r^rWrjrlrnrprrryr rrrrrasraz/LoginMessagesz /machinesz/user)rSr8rsr9ZloggingrrepathlibrtypingrrZcockpit._vendor.systemd_ctypesrrrrrbr Z getLoggerr'rZObjectr r.raZEXPORTSrrrrs$    G