
    h'              
       v   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  SSKJr     SS\S\S\S	\
\   4S
 jjrSS.S\S\S	\
\   4S jjrSS.S\S\S	\
\   4S jjrSSS.S\S\S\S	\
\   4S jjrS\S\\   S	S4S jrS\
\   S\S	S4S jrS\
\   S\S	S4S jrSS jr\S:X  a  \" 5         gg)    N)IOListSequenceTuple   )make_bootloaderFlocalttyshreturnc                     U (       a  [         R                  OSnU(       a  US4nOUSS4nU(       a  SR                  S U 5       5      4nU$ )Npython3z-iqz-icz8" - beiboot - "; import sys; sys.ps1 = ''; sys.ps2 = ''; c              3   N   #    U  H  n[         R                  " U5      v   M     g 7f)N)shlexquote).0args     =/usr/lib/python3/dist-packages/cockpit/_vendor/bei/beiboot.py	<genexpr>%get_python_command.<locals>.<genexpr>.   s     @EKK,,s   #%)sys
executablejoin)r	   r
   r   interpretercommands        r   get_python_commandr      sR     %*#..yK & J
 
88@@@BN    r
   argsc                 :    S/U (       a  S/OSQUQ[        U SS9Q7$ )Nsshz-t Tr
   r   r   r
   r    s     r   get_ssh_commandr'   3   s6     3tf33  CD13 3r   c                 <    SSS/U (       a  S/OSQUQ[        U S9Q7$ )Npodmanexecz--interactivez--ttyr#   r   r%   r&   s     r   get_container_commandr+   :   s8    fo *wiB**  C(* *r   r$   c                      / UQ[        SXS9Q7$ )NT)r	   r
   r   r%   )r
   r   r    s      r   get_commandr-   A   s    CTC&TsBCCr   srcdstc                 `   ^ ^ SUU 4S jjn[         R                  " USS9R                  5         g )Nc                     > T   Sn  [         R                  " TU 5      nU(       d  O#TR                  U5        TR                  5         MB  S S S 5        g ! , (       d  f       g = f)Ni   )osreadwriteflush)
block_sizedatar/   r.   s     r   _thread!splice_in_thread.<locals>._threadF   sG     JwwsJ/		$		  SSs   AA
A!T)targetdaemonr   N)	threadingThreadstart)r.   r/   r8   s   `` r   splice_in_threadr@   E   s(    	 	 GD1779r   r   scriptc                 F   [         R                  " U [         R                  S9 nUR                  c   eUR                  R	                  U5        [        SUR                  5        [        R                  " UR                  5       5        S S S 5        g ! , (       d  f       g = f)N)stdinr   )	
subprocessPopenPIPErC   r4   r@   r   exitwait)r   rA   procs      r   send_and_splicerJ   T   sf    			'	9Tzz%%%

 DJJ' 
:	9	9s   A%B
B c           
        ^^ SS K n " UU4S jSUR                  5      nUR                  U" 5       5      n[        R                  " U [        R
                  US9 mTR                  c   eTR                  R                  [        SS[        T5      / S44/UR                  S9R                  5       5        TR                  R                  5         [        R                  " UR                  5       5        [!        STR                  5        ["        R$                  " TR'                  5       5        S S S 5        g ! , (       d  f       g = f)	Nr   c            
       B   > \ rS rSrS\S\S\\   S\SS4
U U4S jjrS	r	g)
%send_xz_and_splice.<locals>.Responder`   r   r    fdsstderrr   Nc                    >#    TR                   c   eUS:X  a6  TR                   R                  T5        TR                   R                  5         g g 7f)Nzbeiboot.provide)rC   r4   r5   )selfr   r    rO   rP   rI   rA   s        r   do_custom_command7send_xz_and_splice.<locals>.Responder.do_custom_commanda   sH     
 ::)))++

  (

  " ,s   AAr#   )
__name__
__module____qualname____firstlineno__strr   r   intrS   __static_attributes__)rI   rA   s   r   	ResponderrM   `   s?    	#-0	#*/	# *.c	# -0		# 59		# 	#r   r\   )rC   rP   boot_xzzscript.py.xzT)gadgets)fernyInteractionResponderInteractionAgentrD   rE   rF   rC   r4   r   lenBEIBOOT_GADGETSencoder5   asyncioruncommunicater@   r   rG   rH   )r   rA   r_   r\   agentrI   s    `   @r   send_xz_and_spliceri   ]   s    	# 	#E.. 	# ""9;/E			'	G4zz%%%

Vb$?@*
((**0&(	4 	

E%%'(DJJ' 
H	G	Gs   CD66
Ec                     [         R                  " 5       n U R                  SSSS9  U R                  SSS9  U R                  SS	S9  U R                  S
SS9  U R                  5       nUR                  (       + =(       a    [
        R                  " S5      nUR                  / :X  a
  [        US9nOwUR                  S   S:X  a  [        UR                  SS  SU06nOKUR                  S   S:X  a  [        UR                  SS  SU06nO[        UR                  X!R                  S.6nUR                  (       a<  [        UR                  S5       nUR                  5       nS S S 5        [        UW5        g UR                   (       a<  [        UR                   S5       nUR                  5       nS S S 5        [#        UW5        g [
        R$                  " US   /UQ76   g ! , (       d  f       N= f! , (       d  f       NG= f)Nz--sh
store_truez/Pass Python interpreter command as shell-script)actionhelpz--xzzthe xz to run remotely)rm   z--scriptz2the script to run remotely (must be repl-friendly)r   *)nargsr   r   r"   r   r
   	containerr$   rb)argparseArgumentParseradd_argument
parse_argsrA   r2   isattyr   r   r'   r+   r-   r   openr3   rJ   xzri   execlp)parserr    r
   r   filerA   s         r   mainr|   x   s   $$&F
|N  P
%=>

Q  S
	-Dkk/
*biilC||r$-	aE	!!4<<#3==	aK	''ab)9CsCt||A{{$++t$YY[F % 	(	$''4 DYY[F ! 	7F+ 			'!*'w' %$ ! s   GG,
G),
G:__main__)FFFr<   )rr   re   r2   r   rD   r   r=   typingr   r   r   r   
bootloaderr   boolrY   r   r'   r+   r-   rZ   bytesr@   rJ   ri   r|   rU   r#   r   r   <module>r      sC  $   	   
  , , ' &+#("'d  ,4SM* -2 33 3T 3hsm 3 38 * *4 *HSM * ).% Ds D D4 DHSM D:# :BuI :$ :Xc] E d  u  6#(N zF r   