ó
    ¡7�jü/  ã                   ó4  • S SK r S SKrS SKrS SKrS SKrS SKrS SKr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JrJrJr  S SKJr  S SKJrJr  SSKJr  SSKJr  SSKJr  SS	KJ r   SS
K!J"r"J#r#  SSK$J%r%  SSK&J'r'J(r(J)r)J*r*  SSK+J,r,J-r-J.r.  SSK/J0r0  SSK1J2r2  SSK3J4r4  SSK5J6r6  SSK7J8r8  \Rr                  " \:5      r; " S S5      r< " S S\4\.5      r=S%S jr>S r?S\@4S jrAS\@SS4S jrBS\CS\\C\C4   4S jrDS%S jrES S!.S"\@SS4S# jjrF\:S$:X  a  \F" 5         gg)&é    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                   óœ   • \ rS rSr% \\R                     \S'   S\\	\
\\R                     4      4S jrS\
S\R                  SS4S	 jrS
rg)ÚInternalBusé4   Ú	exporteesÚexportsc           	      ót  • [         R                  " 5       u  p#[        R                  R	                  UR                  5       S9U l        [        R                  R	                  UR                  5       SS9U l        U VVs/ s H%  u  pEU R                  R                  XE" 5       5      PM'     snnU l	        g s  snnf )N)ÚfdT)r'   Úserver)
ÚsocketÚ
socketpairr   ÚBusÚnewÚdetachÚclientr(   Ú
add_objectr$   )Úselfr%   Úclient_socketÚserver_socketÚpathÚclss         Ú0/usr/lib/python3/dist-packages/cockpit/bridge.pyÚ__init__ÚInternalBus.__init__7   s�   € Ü'-×'8Ò'8Ó':Ñ$ˆÜ—g‘g—k‘k ]×%9Ñ%9Ó%;�kÐ<ˆŒÜ—g‘g—k‘k ]×%9Ñ%9Ó%;ÀD�kÐIˆŒÙOVÔWÊwÁ)À$˜$Ÿ+™+×0Ñ0°°s³uÖ=ÉwÒWˆ�ùÓWs   Á>,B4r3   ÚobjÚreturnNc                 ól   • U R                   R                  U R                  R                  X5      5        g ©N)r$   Úappendr(   r/   )r0   r3   r8   s      r5   ÚexportÚInternalBus.export=   s#   € Ø�‰×Ñ˜dŸk™k×4Ñ4°TÓ?Õ@ó    )r.   r$   r(   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   r   ÚSlotÚ__annotations__r   r   Ústrr	   Ú
BaseObjectr6   r=   Ú__static_attributes__© r?   r5   r"   r"   4   sX   ‡ Ø�C—H‘H‰~ÓðX ¨¨s°D¸¿¹Ñ4HÐ/HÑ)IÑ Jô XðA˜3ð A S§^¡^ð A¸÷ Ar?   r"   c                   óä   ^ • \ rS rSr% \\S'   \\S'   \\   \S'   \	\
   \S'   \R                  \S'   S\R                  4U 4S jjrS\4S	 jr\S\4S
 j5       rS\SS4S jrSS jrSS jrSrU =r$ )ÚBridgeéA   ÚchannelsÚinternal_busÚpackagesÚbridge_configsÚargsc                 óZ  >• [        [        5      U l        / U l        Xl        [        XR                  S9U l        U R                  R                  SU R                  5        U R                  R                  S[        5       5        U R                  R                  S[        5       5        [        U 5      U l        UR                  (       a4  U R                  R                  [        S/ SQS/S.5      45        S U l        O_UR                  (       a  S U l        OF[#        U 5      U l        U R                  R                  S	U R                   5        U R%                  5         ['        U [(        5      U l        [,        TU ]]  [1        U 5      U R                  U R*                  U R                  /5        g )
N)Ú
privilegedz
/superuserz/configz/environmentT)Úsudoz-kz-AÚpython3z-icz# cockpit-bridgeú--privilegedzSUDO_ASKPASS=ferny-askpass)rS   ÚspawnÚenvironz	/packages)r"   r   rN   rP   rQ   r   rS   Úsuperuser_ruler=   r   r   r   Ú
peers_ruleÚbeipackÚset_configsr   rO   r   Úpackages_loadedr   r   rM   Úsuperr6   r   )r0   rQ   Ú	__class__s     €r5   r6   ÚBridge.__init__H   sF  ø€ Ü'¬Ó0ˆÔØ ˆÔØŒ	ä2°4ÇOÁOÑTˆÔØ×Ñ× Ñ  ¨t×/BÑ/BÔCà×Ñ× Ñ  ¬F«HÔ5Ø×Ñ× Ñ  ´³Ô?ä*¨4Ó0ˆŒà�<�<à×Ñ×+Ñ+ÜØ"&ÚgØ <Ð=ñó ð-ô ð !ˆD�MØ�_�_Ø ˆD�Mä$ T›NˆDŒMØ×Ñ×$Ñ$ [°$·-±-Ô@Ø× Ñ Ô"ä*¨4´Ó?ˆŒä‰ÑÜ˜DÓ!Ø×ÑØ�M‰MØ�O‰Oð	
õ 	r?   r9   c                 óZ  • [         R                  " [        R                  " 5       5      n[        R
                  " UR                  5      R                  nU/n[        R                  " 5        HL  nUR                  UR                  ;   d  M  UR                  U;  d  M1  UR                  UR                  5        MN     U R                  R                  5       U R                  5       UR                  UR                  UUUR                   UR                  UR"                  UR$                  S.S.$ )N)ÚfullnameÚgidÚgroupÚgroupsÚhomeÚnameÚshellÚuid)rM   Ú
os_releaseÚuser)ÚpwdÚgetpwuidÚosÚgetuidÚgrpÚgetgrgidÚpw_gidÚgr_nameÚgetgrallÚpw_nameÚgr_memr<   rM   ÚcapabilitiesÚget_os_releaseÚpw_gecosÚpw_dirÚpw_shellÚpw_uid)r0   Úpwrd   re   Úgrs        r5   ÚinfoÚBridge.infoo   sÏ   € Ü�\Š\œ"Ÿ)š)›+Ó&ˆô —’˜RŸY™YÓ'×/Ñ/ˆØ�ˆÜ—,’,–.ˆBØ�z‰z˜RŸY™YÕ&¨2¯:©:¸VÕ+CØ—‘˜bŸj™jÖ)ñ !ð
 Ÿ™×2Ñ2Ó4Ø×-Ñ-Ó/àŸK™KØ—y‘yØØ ØŸ	™	ØŸ
™
ØŸ™Ø—y‘yñ	ñ
ð 	
r?   c                  óÒ   •  [        SSS9n [	        U R                  5       5      $ ! [         a7     [        SSS9n  N0! [         a    [        R                  S5        0 s s $ f = ff = f)Nz/etc/os-releasezutf-8)Úencodingz/usr/lib/os-releasez6Neither /etc/os-release nor /usr/lib/os-release exists)ÚopenÚFileNotFoundErrorÚloggerÚwarningÚparse_os_releaseÚread)Úfiles    r5   rx   ÚBridge.get_os_release‰   sk   € ð	ÜÐ)°GÑ<ˆDô   §	¡	£Ó,Ð,øô !ó 	ðÜÐ1¸GÑD’øÜ$ó Ü—‘ÐWÔXØ”	ðúð	ús$   ‚
% ¥
A&°
<¼!A"ÁA&Á!A"Á"A&ÚmessageNc                 óº   • [         R                  " [        5         [        US5      nU R                  R                  U5        S S S 5        g ! , (       d  f       g = f)NÚ	superuser)Ú
contextlibÚsuppressr   r   rY   Úinit)r0   r‹   r�   s      r5   Údo_initÚBridge.do_init–   s>   € ô × Ò ¤Õ+Ü  ¨+Ó6ˆIØ×Ñ×$Ñ$ YÔ/÷ ,×+Ö+ús   ›(AÁ
Ac                 óÆ   • SS0SU R                  5       SS.nU R                  b,  [        R                  U R                  R                  5      US'   U R	                  U5        g )Nzexplicit-superuserTr�   r   )rw   Úcommandz
os-releaseÚversionrO   )rx   rO   ÚdictÚfromkeysÚwrite_control)r0   Ú	init_argss     r5   Údo_send_initÚBridge.do_send_init�   sZ   € à1°4Ð8ØØ×-Ñ-Ó/Øñ	-
ˆ	ð �=‰=Ñ$Ü$(§M¡M°$·-±-×2HÑ2HÓ$IˆI�jÑ!à×Ñ˜9Õ%r?   c                 óø   • U R                   (       d   eU R                   R                  5       nU R                  U:w  a=  U R                  R	                  U5        U R
                  R	                  U5        Xl        g g r;   )rO   Úget_bridge_configsrP   rY   r\   rZ   )r0   rP   s     r5   r]   ÚBridge.packages_loaded«   s_   € Ø�}�}Ðˆ}ØŸ™×9Ñ9Ó;ˆØ×Ñ .Ó0Ø×Ñ×+Ñ+¨NÔ;Ø�O‰O×'Ñ'¨Ô7Ø"0Õð 1r?   )rQ   rP   rM   rN   rO   rZ   rY   ©r9   N)r@   rA   rB   rC   r   rE   r"   r   r   r   r   ÚargparseÚ	Namespacer6   r   r   Ústaticmethodrx   r‘   rš   r]   rH   Ú__classcell__)r_   s   @r5   rK   rK   A   s�   ø‡ Ø Ó ØÓØ�xÑ Ó Ø˜\Ñ*Ó*Ø
×
Ñ
Óð%˜X×/Ñ/÷ %ðN
�jô 
ð4 ð
-˜Jó 
-ó ð
-ð0˜zð 0¨dô 0ô&÷1ò 1r?   rK   r9   c              ƒ   ó@  #   • [         R                  S5        [        R                  " [        R
                  " 5       5      nUR                  [        R                  S'   UR                  [        R                  S'   UR                  [        R                  S'   [         R                  S5        [        U 5      n[        [        R                  " 5       U5        [         R                  S5         UR                  5       I S h  v•N   g  N! [        [         4 a     g f = f7f)NzHi. How are you today?ÚHOMEÚSHELLÚUSERzStarting the router.z/Startup done.  Looping until connection closes.)r…   Údebugrl   rm   rn   ro   rz   rX   r{   ru   rK   r    ÚasyncioÚget_running_loopÚcommunicateÚBrokenPipeErrorÚConnectionResetError)rQ   ÚmeÚrouters      r5   Úrunr°   ´   sÂ   é € Ü
‡L�LÐ)Ô*ô 
�Š”b—i’i“kÓ	"€BØŸ™„B‡J�JˆvÑØŸ+™+„B‡J�JˆwÑØŸ™„B‡J�JˆvÑä
‡L�LÐ'Ô(Ü�D‹\€FÜ”7×+Ò+Ó-¨vÔ6ä
‡L�LÐBÔCðØ× Ñ Ó"×"Ó"øÜÔ1Ð2ó áðüs<   ‚C*DÃ-D Ä DÄD ÄDÄD ÄDÄDÄDÄDc                  ó0  •  [         R                  " 5       u  pU    U   [        R                  " SSUR	                  5       /S9  S S S 5        [         R
                  " U SS5      u  p#pES S S 5         Wu  n[        R                  " SS5        [        R                  " US5        U H  n[        R                  " U5        M     g ! , (       d  f       N„= f! , (       d  f       Nr= f! [         a     g f = f! W H  n[        R                  " U5        M     f = f)Né   zcockpit.send-stderr)Úfdsr   z	ferny.end)
r)   r*   r
   r”   ÚfilenoÚrecv_fdsÚOSErrorrn   Údup2Úclose)ÚoursÚtheirsÚ_msgr³   Ú_flagsÚ_addrÚ	stderr_fdr'   s           r5   Útry_to_receive_stderrr¿   Ê   sÖ   € ðÜ×(Ò(Ó*‰ˆÚÚÜ"×*Ò*¨1Ð.CÈ&Ï-É-Ë/ÐIZÒ[÷ ä'-§¢°t¸QÀÓ'BÑ$ˆD�v÷ ð	Ø‰
ˆ	ô 	×"Ò" 1 kÔ2Ü
�Š�	˜1ÔãˆBÜ�HŠH�RŽLò ÷ •ú÷ �Tûô ó Ùðûó ˆBÜ�HŠH�RŽLò úsQ   ‚C$ ›Cž&CÁ#CÁ'C$ Á02C4 Ã
C	ÃCÃ
C!ÃC$ Ã!C$ Ã$
C1Ã0C1Ã4!Dc                  ó  • [         R                  " [        R                  " S5      R                  5      (       d  g SS Kn [        R                  R                  U R                  R                  5       5        g! [         a     gf = f)Nr²   Fr   T)ÚstatÚS_ISSOCKrn   ÚfstatÚst_modeÚsystemd.journalÚImportErrorÚloggingÚrootÚ
addHandlerÚjournalÚJournalHandler)Úsystemds    r5   Úsetup_journaldrÍ   à   sd   € ô
 �=Š=œŸš !›×,Ñ,×-Ñ-àðÛô
 ‡L�L×Ñ˜GŸO™O×:Ñ:Ó<Ô=Øøô ó áðús   ¼A8 Á8
BÂBr¨   c                 óÌ  • [         R                  " SS5      n[        5       (       d  [        R                  " SS9  U (       d  US:X  a1  [        R
                  " 5       R                  [        R                  S9  gU(       ae  UR                  S5       HO  nUR                  5       nU(       d  M  [        R
                  " U5      R                  [        R                  5        MQ     gg)	zOSetup our logger with optional filtering of modules if COCKPIT_DEBUG env is setÚCOCKPIT_DEBUGÚ z#%(name)s-%(levelname)s: %(message)s)ÚformatÚall)ÚlevelÚ,N)
rn   ÚgetenvrÍ   rÇ   ÚbasicConfigÚ	getLoggerÚsetLevelÚDEBUGÚsplitÚstrip)r¨   ÚmodulesÚmodules      r5   Úsetup_loggingrÞ   ó   sŸ   € ô �iŠi˜¨Ó,€Gô ×ÑÜ×ÒÐ#HÒIæ�˜5Ó Ü×ÒÓ×$Ñ$¬7¯=©=Ð$Ò9Þ	Ø—m‘m CÖ(ˆFØ—\‘\“^ˆFÞÙä×Ò˜fÓ%×.Ñ.¬w¯}©}Ö=ò )ð 
r?   Útextc                 óD  • 0 nU R                  5        Hb  nUR                  5       nU(       a  UR                  S5      (       a  M2   UR                  S5      u  p4[        R                  " U5      u  nXQU'   Md     U$ ! [
         a    [        R                  SU5         M‹  f = f)NÚ#Ú=z'Ignoring invalid line in os-release: %r)Ú
splitlinesrÛ   Ú
startswithrÚ   ÚshlexÚ
ValueErrorr…   r†   )rß   rj   ÚlineÚkÚvÚv_parseds         r5   r‡   r‡     sŽ   € Ø€JØ—‘Ö!ˆØ�z‰z‹|ˆÞ�t—‘ s×+Ñ+Ùð	Ø—:‘:˜c“?‰DˆAÜ Ÿ;š; q›>‰LˆXð !�1‹ñ "ð Ðøô	 ó 	Ü�N‰NÐDÀdÔKÚð	ús   Á+A;Á; BÂBc                  óH  •  [         R                  " / SQ[         R                  [         R                  SS9n U R                  c   e[        R                  " U R                  R                  5       SS9 H?  nUR                  S5      (       d  M  UR                  SSS5      [        R                  S'     g    U R                  5         U R                  5         g ! [         a    [        R                  S	5         g [         a   n[        R!                  S
U5         S nAg S nAff = f)N)z	ssh-agentÚshz-ecz)echo SSH_AUTH_SOCK=$SSH_AUTH_SOCK; read aT)ÚstdinÚstdoutÚuniversal_newlines)Úpunctuation_charszSSH_AUTH_SOCK=rÐ   r   ÚSSH_AUTH_SOCKz,Couldn't start ssh-agent (FileNotFoundError)zCould not start ssh-agent: %s)Ú
subprocessÚPopenÚPIPErî   rå   Úreadlinerä   Úreplacern   rX   Ú	terminateÚwaitr„   r…   r¨   r¶   r†   )ÚprocÚtokenÚexcs      r5   Ústart_ssh_agentrü     sß   € ð=Ü×ÒÒ gÜ&0§o¡o¼j¿o¹oÐbfñhˆà�{‰{Ñ&Ð&Ð&ô
 —[’[ §¡×!5Ñ!5Ó!7È4ÔPˆEØ×ÑÐ 0×1Ó1Ø.3¯m©mÐ<LÈbÐRSÓ.T”—
‘
˜?Ñ+Ùñ Qð
 �N‰NÔØ�I‰I�Køäó EÜ�‰ÐCÖDäó =Ü�‰Ð6¸×<Ñ<ûð=ús*   ‚BC Â%C Â4"C ÃD!Ã8	D!ÄDÄD!F)r[   r[   c                 óˆ  • [         R                  " 5         [        R                  " SS9nUR	                  SSSS9  UR	                  SSSS9  UR	                  S	SS
S9  UR	                  SSSS9  UR	                  SSSS9  UR                  5       nXl        UR                  (       a
  [        5         [        UR                  S9  UR                  (       a  [        5       R                  5         g UR                  (       a  [        S[          S35        g UR"                  (       aO  [        [$        R&                  " [        5       R)                  5        Vs/ s H  o3R*                  PM     snSS95        g S[,        R.                  ;  a  UR                  (       d
  [1        5         [3        [5        U5      UR                  S9  g s  snf )Nz@cockpit-bridge is run automatically inside of a Cockpit session.)ÚdescriptionrV   Ú
store_truezPrivileged copy of the bridge)ÚactionÚhelpz
--packagesz Show Cockpit package informationz	--bridgesz Show Cockpit bridges informationz--debugz"Enable debug output (very verbose)z	--versionz Show Cockpit version information)r¨   z	Version: z
Protocol: 1r²   )Úindentrñ   )r   Úinstallr    ÚArgumentParserÚadd_argumentÚ
parse_argsr[   rS   r¿   rÞ   r¨   rO   r   Úshowr•   Úprintr   ÚbridgesÚjsonÚdumpsr�   Ú__dict__rn   rX   rü   r   r°   )r[   ÚparserrQ   Úconfigs       r5   Úmainr  1  s`  € Ü×ÒÔä×$Ò$Ð1sÑt€FØ
×Ñ˜¨|ÐBaÐÑbØ
×Ñ˜¨\Ð@bÐÑcØ
×Ñ˜¨LÐ?aÐÑbØ
×Ñ˜	¨,Ð=aÐÑbØ
×Ñ˜¨LÐ?aÐÑbØ×ÑÓ€Dð „Lð ‡‡ÜÔä˜Ÿ
™
Ò#ð ‡}‡}Ü‹
�‰ÔØØ	��Ü�	œ+˜ mÐ4Ô5ØØ	��ÜŒd�jŠj¼»
×8UÑ8UÔ8WÓXÒ8W¨fŸ/œ/Ñ8WÑXÐabÑcÔdØð œbŸj™jÓ(°··ÜÔô Œc�$‹i˜tŸz™zÓ*ùò Ys   ÅF?Ú__main__rŸ   )Gr    r©   rŽ   rp   r
  rÇ   rn   rl   rå   r)   rÁ   rò   Útypingr   r   r   r   r   r   r	   Úcockpit._vendor.fernyr
   Úcockpit._vendor.systemd_ctypesr   r   rÐ   r   Ú_versionr   Úchannelr   rM   r   r  r   r   Úinternal_endpointsr   Újsonutilr   r   r   r   rO   r   r   r   Úpeerr   Úremoter   r¯   r   r�   r   Ú
transportsr    r×   r@   r…   r"   rK   r°   r¿   ÚboolrÍ   rÞ   rF   r‡   rü   r  rI   r?   r5   Ú<module>r     s  ðó$ Û Û Û 
Û Û Û 	Û 
Û Û Û Û ß H× HÑ Hå 4ß 9å Ý !Ý 'Ý #ß 'Ý 'ß @Ó @ß >Ñ >Ý "Ý #Ý Ý +Ý &à	×	Ò	˜8Ó	$€÷
Añ 
Aôp1ˆVÐ%ô p1ôfò,ð,˜ô ð&>˜Dð > Tô >ð(˜3ð  4¨¨S¨¡>ô ô =ð4 "ò (+�Tð (+ dõ (+ðV ˆzÓÙ…Fð r?   