+
    i.  c                   s.   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIHtHtHtHtHtHtHt ^ RIHt ^ RIHtHt ^RIHt ^RIHt ^RIHt ^RI H!t! ^R	I"H#t#H$t$ ^R
I%H&t& ^RI'H(t(H)t)H*t*H+t+ ^RI,H-t-H.t.H/t/ ^RI0H1t1 ^RI2H3t3 ^RI4H5t5 ^RI6H7t7 ^RI8H9t9 ]Pt                  ! ];4      t< ! R R4      t= ! R R]5]/4      t>R R lt?R R lt@R R ltAR R ltBR R ltCR  R! ltDR"R#/R$ R% lltE];R&8X  d
   ]E! 4        R# R# )'i    N)DictIterableListOptionalSequenceTupleType)interaction_client)bus	run_async)	polyfills)__version__)ChannelRoutingRule)CHANNEL_TYPES)ConfigEnvironment)EXPORTS)	JsonError
JsonObject	JsonValueget_dict)BridgeConfigPackagesPackagesListener)PeersRoutingRule)HostRoutingRule)Router)SuperuserRoutingRule)StdioTransportc                   sP   a  ] tR t^)t o V 3R lR ltV 3R lR ltV 3R ltRtV tR# )InternalBusc                sj   < V ^8  d   QhRS[ S[S[S[S[P
                  ,          3,          ,          /# )   exports)r   r   strr   r   
BaseObjectformat__classdict__   "3/usr/lib/python3.14/site-packages/cockpit/bridge.py__annotate__InternalBus.__annotate__,   s/     X XsD4H/H)I J X    c           	     s   \         P                  ! 4       w  r#\        P                  P	                  VP                  4       R 7      V n        \        P                  P	                  VP                  4       RR7      V n        V UUu. uF%  w  rEV P                  P                  WE! 4       4      NK'  	  uppV n	        R# u uppi ))fdT)r*   serverN)
socket
socketpairr   ZBusZnewZdetachclientr+   
add_object	exportees)selfr   Zclient_socketZserver_socketpathZclss   &&    r&   __init__ZInternalBus.__init__,   s    '-'8'8':$ggkk]%9%9%;k<ggkk]%9%9%;DkIOVWw)$$++00su=wWWs   +B:c                s>   < V ^8  d   QhRS[ RS[P                  RR/# )r   r2   objreturnN)r    r   r!   r"   r%   r&   r'   r(   2   s+     A A3 AS^^ A Ar)   c                sn    V P                   P                  V P                  P                  W4      4       R # N)r0   appendr+   r/   )r1   r2   r4   s   &&&r&   exportZInternalBus.export2   s#    dkk44T?@r)   c                sJ   < V ^8  d   Qh/ S[ S[P                  ,          ;R&   # )r   r0   )r   r   ZSlotr"   r%   r&   r'   r(   )   s     CHH~ r)   )r.   r0   r+   N)	__name__
__module____qualname____firstlineno__r3   r8   __annotate_func____static_attributes____classdictcell__)r$   s   @r&   r   r   )   s$     X XA A  r)   r   c                   s   a a ] tR t^6t oV3R lV 3R lltV3R lR lt]V3R lR l4       tV3R lR ltV3R	 lR
 lt	V3R lR lt
V3R ltRtVtV ;t# )Bridgec                s4   < V ^8  d   QhRS[ P                  /# )r   args)argparse	Namespacer"   r%   r&   r'   Bridge.__annotate__=   s     + +X// +r)   c                s  < \        \        4      V n        . V n        Wn        \        WP                  R 7      V n        V P                  P                  RV P                  4       V P                  P                  R\        4       4       V P                  P                  R\        4       4       \        V 4      V n        VP                  '       d[   V P                  P                  \        RRR. ROR
R./4      \        RRRRRRR\         P"                  RRR	./4      34       RV n        M`VP                  '       d	   RV n        MF\'        V 4      V n        V P                  P                  RV P$                  4       V P)                  4        \+        V \,        4      V n        \0        SV `e  \5        V 4      V P                  V P.                  V P                  .4       R# ))
privilegedz
/superuserz/configz/environmentrE   TZspawn-ic# cockpit-bridge--privilegedenvironzSUDO_ASKPASS=ferny-askpassZpolkitZmethodZStartTransientUnitNz	/packages)Zsudoz-kz-AZpython3rF   rG   rH   )r   r   internal_busbridge_configsrA   r   rE   superuser_ruler8   r   r   r   
peers_rulebeipackset_configsr   sysZ
executablepackagesr   packages_loadedr   r   channelsZsuperr3   r   )r1   rA   	__class__s   &&r&   r3   ZBridge.__init__=   s   '0 	24OOT  t/B/BC  FH5  ?*40<<<++ $g <= 
  $d2cnne5GX	 -  !DM___ DM$TNDM$$[$--@  "*4?D!MMOO	
 	r)   c                    < V ^8  d   QhRS[ /# r   r5   r   r"   r%   r&   r'   rD   j   s     
 
j 
r)   c                sp   \         P                  ! \        P                  ! 4       4      p\        P
                  ! VP                  4      P                  pV.p\        P                  ! 4        FN  pVP                  VP                  9   g   K   VP                  V9  g   K3  VP                  VP                  4       KP  	  R V P                  P                  4       RV P                  4       RRVP                  RVP                  RVRVRVP                   RVP                  R	VP"                  R
VP$                  //# )rS   
os_releaseZuserZfullnameZgidgroupgroupsZhomeZnameZshellZuid)pwdgetpwuidosgetuidgrpZgetgrgidZpw_gidZgr_nameZgetgrallpw_nameZgr_memr7   rS   capabilitiesget_os_releaseZpw_gecospw_dirpw_shellZpw_uid)r1   ZpwrY   rZ   Zgrs   &    r&   infoZBridge.infoj   s    \\"))+& RYY'//,,.BzzRYY&2::V+Cbjj) !
 224$--/BKKryy&		

ryy	
 	
r)   c                rU   rV   rW   r"   r%   r&   r'   rD      s     1 1J 1r)   c                 s4    \        R RR7      p T ;_uu_ 4        \	        T P                  4       4      uuRRR4       #   \         d<     \        RRR7      p  LI  \         d    \        P                  R4       / u u # i ; ii ; i  + '       g   i     R# ; i)z/etc/os-releasezutf-8)Zencodingz/usr/lib/os-releasez6Neither /etc/os-release nor /usr/lib/os-release existsN)ZopenFileNotFoundErrorloggerwarningparse_os_releaseZread)Zfile    r&   rb   ZBridge.get_os_release   s~    	)G<D T#DIIK0 T ! 	1GD$ WX		 TTs2   = BB	A"A?:B>A??BB	c                s$   < V ^8  d   QhRS[ RR/# )r   messager5   NrW   r"   r%   r&   r'   rD      s     0 0z 0d 0r)   c                s    \         P                  ! \        4      ;_uu_ 4        \        VR 4      pV P                  P                  V4       RRR4       R#   + '       g   i     R# ; i)	superuserN)
contextlibZsuppressr   r   rL   init)r1   rk   rl   s   && r&   do_initZBridge.do_init   sD       ++ +6I$$Y/ ,+++s   (AA&	c                   < V ^8  d   QhRR/# r   r5   N r"   r%   r&   r'   rD      s     & &d &r)   c                s    R RR/RRRV P                  4       R^/pV P                  e-   \        P                  V P                  P                  4      VR&   V P	                  V4       R# )	ra   zexplicit-superuserTcommandrn   z
os-releaseversionNrQ   )rb   rQ   ZdictZfromkeysZwrite_control)r1   Z	init_args   & r&   do_send_initZBridge.do_send_init   sc    148v$--/q	-
	 ==$$(MM$--2H2H$IIj!9%r)   c                rp   rq   rr   r"   r%   r&   r'   rD      s     1 1 1r)   c                s    V P                   '       g   Q hV P                   P                  4       pV P                  V8w  d?   V P                  P	                  V4       V P
                  P	                  V4       Wn        R # R # r6   )rQ   get_bridge_configsrK   rL   rO   rM   )r1   rK   ru   r&   rR   ZBridge.packages_loaded   sa    }}}}99;.0++N;OO''7"0 1r)   c                s   < V ^8  d   Qh/ S[ ;R&   S[;R&   S[S[,          ;R&   S[S[,          ;R&   S[P                  ;R&   # )r   rS   rJ   rQ   rK   rA   )r   r   r   r   r   r   rB   rC   r"   r%   r&   r'   rD   6   sR          x    \**	 
 

 r)   )rA   rK   rS   rJ   rQ   rM   rL   )r9   r:   r;   r<   r3   re   Zstaticmethodrb   ro   rv   rR   r=   r>   r?   Z__classcell__)rT   r$   s   @@r&   r@   r@   6   sT     + +Z
 
4 1 10 0& &1 1c  r)   r@   c                    V ^8  d   QhRR/# rq   rr   r#      "r&   r'   r'      s      t r)   c                 sF  "   \         P                  R 4       \        P                  ! \        P
                  ! 4       4      pVP                  \        P                  R&   VP                  \        P                  R&   VP                  \        P                  R&   \         P                  R4       \        V 4      p\        \        P                  ! 4       V4       \         P                  R4        VP                  4       G Rj  xL
  R#  L  \        \         3 d     R# i ; i5i)zHi. How are you today?ZHOMEZSHELLZUSERzStarting the router.z/Startup done.  Looping until connection closes.N)rg   debugr[   r\   r]   r^   rc   rI   rd   r`   r@   r   asyncioZget_running_loopZcommunicateZBrokenPipeErrorZConnectionResetError)rA   Zmerouters   &  r&   runr~      s     
LL)* 
biik	"BBJJv++BJJwBJJv
LL'(D\F7++-v6
LLBC  """12 s<   C*D!-D	  DD	 D!D	 	DD!DD!c                rx   rq   rr   ry   rz   r&   r'   r'      s      t r)   c            
      sd    \         P                  ! 4       w  rT ;_uu_ 4        V;_uu_ 4        \        P                  ! ^RVP	                  4       .R7       RRR4       \         P
                  ! V ^^4      w  r#rERRR4        Xw  p\        P                  ! ^R4       \        P                  ! T^4       T F  p\        P                  ! T4       K  	  R#   + '       g   i     L; i  + '       g   i     Lw; i  \         d     R# i ; i  X F  p\        P                  ! T4       K  	  i ; i)r   zcockpit.send-stderr)fdsNz	ferny.end)
r,   r-   r   rs   ZfilenoZrecv_fdsOSErrorr]   Zdup2Zclose)ZoursZtheirsZ_msgr   Z_flagsZ_addrZ	stderr_fdr*   s           r&   try_to_receive_stderrr      s    ((*T"**1.C&--/IZ[ '-tQ'B$Dv 	
	 	""1k2
	1BHHRL   T   BHHRL sQ   !C< C))C	#C):C< 2D C&!C))C9	4C< 9C< <D
D!D/c                s$    V ^8  d   QhR\         /# rV   Zboolry   rz   r&   r'   r'      s       r)   c                  s   \         P                  ! \        P                  ! ^4      P                  4      '       g   R#  ^ RIp \        P                  P                  T P                  P                  4       4       R#   \         d     R# i ; i)r   FNT)statZS_ISSOCKr]   ZfstatZst_modeZsystemd.journalZImportErrorloggingZrootZ
addHandlerZjournalZJournalHandler)Zsystemdrj   r&   setup_journaldr      sd    
 ==!,,--
 LLGOO::<=  s   A; ;B
	B
c                (    V ^8  d   QhR\         RR/# )r   r{   r5   Nr   ry   rz   r&   r'   r'      s     > >D >T >r)   c                s   \         P                  ! RR4      p\        4       '       g   \        P                  ! RR7       V '       g   VR8X  d6   \        P
                  ! 4       P                  \        P                  R7       R# V'       dh   VP                  R4       FP  pVP                  4       pV'       g   K  \        P
                  ! V4      P                  \        P                  4       KR  	  R# R# )	zOSetup our logger with optional filtering of modules if COCKPIT_DEBUG env is setZCOCKPIT_DEBUG z#%(name)s-%(levelname)s: %(message)sry   Zall)ZlevelZ,N)
r]   Zgetenvr   r   ZbasicConfig	getLoggerZsetLevelZDEBUGsplitstrip)r{   ZmodulesZmodules   $  r&   setup_loggingr      s     ii,G #HI5 $$7==$9	mmC(F\\^Ff%..w}}= ) 
r)   c                sR    V ^8  d   QhR\         R\        \         \         3,          /# )r   textr5   )r    r    ry   rz   r&   r'   r'     s"      3 4S> r)   c                 sJ   / pV P                  4        Fd  pVP                  4       pV'       d   VP                  R 4      '       d   K4   VP                  R4      w  r4\        P                  ! V4      w  pYQT&   Kf  	  V#   \
         d    \        P                  RT4        K  i ; i)Z#Z=z'Ignoring invalid line in os-release: %r)Z
splitlinesr   
startswithr   shlexZ
ValueErrorrg   rh   )r   rX   ZlineZkZvZv_parseds   &     r&   ri   ri     s    J!zz|ts++	::c?DA ;;q>LX !1 " 	  	NNDdK	s   +A==!B"!B"c                rx   rq   rr   ry   rz   r&   r'   r'     s     = = =r)   c                  sd    \         P                  ! . R
O\         P                  \         P                  RR7      p V P                  f   Q h\        P                  ! V P                  P                  4       RR7       FA  pVP                  R4      '       g   K  VP                  RR^4      \        P                  R&    R# 	  V P                  4        V P                  4        R#   \         d    \        P                  R4        R# \         d"   p\        P!                  R	T4        Rp?R# Rp?ii ; i)	ssh-agentT)ZstdinstdoutZuniversal_newlinesN)Zpunctuation_charszSSH_AUTH_SOCK=r   SSH_AUTH_SOCKz,Couldn't start ssh-agent (FileNotFoundError)zCould not start ssh-agent: %s)r   Zshz-ecz)echo SSH_AUTH_SOCK=$SSH_AUTH_SOCK; read a)
subprocessZPopenZPIPEr   r   Zreadliner   Zreplacer]   rI   Z	terminateZwaitrf   rg   r{   r   rh   )ZprocZtokenZexcs      r&   start_ssh_agentr     s    = g&0oojoobfh{{&&&
 [[!5!5!74PE 011.3mm<LbRS.T

?+ Q
 NNIIK ECD =6<<=s0   BC! %C! ="C! ! D/D/D/D**D/rN   Fc                r   )r   rN   r5   Nr   ry   rz   r&   r'   r'   -  s     (+ (+T (+d (+r)   c                 s   \         P                  ! 4        \        P                  ! R R7      pVP	                  RRRR7       VP	                  RRRR7       VP	                  RRR	R7       VP	                  R
RRR7       VP	                  RRRR7       VP                  4       pWn        VP                  '       d   \        4        \        VP                  R7       VP                  '       d   \        4       P                  4        R# VP                  '       d   \        R\          R24       R# VP"                  '       dS   \        \$        P&                  ! \        4       P)                  4        Uu. uF  q3P*                  NK  	  up^R7      4       R# R\,        P.                  9  d   VP                  '       g   \1        4        \3        \5        V4      VP                  R7       R# u upi )z@cockpit-bridge is run automatically inside of a Cockpit session.)ZdescriptionrH   Z
store_truezPrivileged copy of the bridge)ZactionZhelpz
--packagesz Show Cockpit package informationz	--bridgesz Show Cockpit bridges informationz--debugz"Enable debug output (very verbose)z	--versionz Show Cockpit version information)r{   Nz	Version: z
Protocol: 1)Zindentr   )r
   ZinstallrB   ZArgumentParserZadd_argumentZ
parse_argsrN   rE   r   r   r{   rQ   r   Zshowrt   Zprintr   ZbridgesjsonZdumpsrw   Z__dict__r]   rI   r   r	   r~   )rN   ZparserrA   configs   $   r&   mainr   -  sj   $$1stF
|Bab
\@bc
L?ab
	,=ab
L?abD L 

# }}}
		+m45	djj
8U8U8WX8Wf//8WXabcd bjj( c$itzz* Ys   -G#Z__main__)FrB   r|   rm   r_   r   r   r]   r[   r   r,   r   r   rP   Ztypingr    r   r   r   r   r   r   Zcockpit._vendor.fernyr   Zcockpit._vendor.systemd_ctypesr   r	   r   r
   Z_versionr   Zchannelr   rS   r   r   r   r   Zinternal_endpointsr   Zjsonutilr   r   r   r   rQ   r   r   r   Zpeerr   Zremoter   r}   r   rl   r   Z
transportsr   r   r9   rg   r   r@   r~   r   r   r   ri   r   r   rr   r)   r&   <module>r      s       
   	 
     
 H H H 4 9  ! ' # ' ' @ @ > > " #  + &			8	$
A 
Aw1V% w1t,,&>( =4(+E (+V zF r)   