
    h#                         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KJrJrJrJr  SSKJrJr  SSKJrJr  \R,                  " \5      r " S S	\
R2                  5      r " S
 S\5      r " S S\5      rg)    N)DictListOptionalTuple)ferny   )
JsonObject	JsonValueget_strget_str_or_none)Peer	PeerError)RouterRoutingRulec                       \ rS rSr% \R
                  " S5      r\\   \	S'   \
\\\\\\4      \	S'   \\   \	S'   \\	S'   S\\   4S jrS\S	\S
\S\S\S\4S jrS\S\S\S\\   4S jrSrg)PasswordResponder!   z!Enter passphrase for key '(.*)': passwordhostkeys_seenerror_messagepassword_attemptsc                 :    Xl         / U l        S U l        SU l        g )Nr   )r   r   r   r   )selfr   s     0/usr/lib/python3/dist-packages/cockpit/remote.py__init__PasswordResponder.__init__*   s     !!"    reasonhost	algorithmkeyfingerprintreturnc                 H   #    U R                   R                  XX4U45        g7f)NF)r   append)r   r   r   r    r!   r"   s         r   
do_hostkeyPasswordResponder.do_hostkey1   s#     !!6"MNs    "messagesprompthintc                 b  #    [         R                  SX25        [        R                  R	                  U5      nUb2  UR                  S5      n[         R                  SU5        SU 3U l        g U R                  c   eU R                  S:X  d   eU =R                  S-  sl        U R                  $ 7f)NzGot askpass(%s): %sr   zCThis is a passphrase request for %s, but we don't do those.  Abort.zlocked identity: r   )	loggerdebugr   PASSPHRASE_RE	fullmatchgroupr   r   r   )r   r(   r)   r*   matchpaths         r   
do_askpassPasswordResponder.do_askpass5   s     *D9!//99&A ;;q>DLL^`de#4TF!;D}}(((%%***!#}}s   B-B/)r   r   r   r   N)__name__
__module____qualname____firstlineno__recompiler.   r   str__annotations__r   r   intr   boolr&   r3   __static_attributes__ r   r   r   r   !   s    JJCDMsmc3S#5677C= ## #s # # C ^a fj  c  RU r   r   c                      ^  \ rS rSr% Sr\\R                     \S'   \	\S'   \\	   \S'   \\	   \S'   \
\S'   SS	 jrSS
SS
S\SS4U 4S jjrS\SS4S jrSS jrS\S\	S\\	   S\S\
SS4U 4S jjrSrU =r$ )SshPeerH   Nsessionr   userr   privater#   c           
        #    U R                   c   e[        R                  SU R                  U R                  U R
                  5        U R                  R                  S5      u  pnU(       a#  UR                  5       (       a  Un[        U5      nOU R                  nS n[        U R                  5      nSS0nU R                  b  UR                  SS9  OUR                  SSS9   U R                   R                  X@R                  UU R
                  UUS	9I S h  vN   U R                   R?                  S/5      nU RA                  U/ 5      I S h  vN   g  N;! [        [        R                  4 a0  n[        R                  S
XH5        [!        SS[#        U5      S9UeS nAf[$        R&                   a  nUR(                  (       a!  UR(                  S   u  ppnU SU
 SU 3US.nO0 n[+        U[$        R,                  5      (       a  SnOU R
                  (       a  SnOSn[        R                  S[/        U5      XR
                  UR(                  X5        [!        XU0 S9UeS nAf[$        R0                   a  n[        R                  SXH5        [2        R5                  UR6                  S5      nSU;   a(  U R                  b  UR8                  S:X  a  SUS'   OSUS'   [!        SUR:                  =(       d    SUS9UeS nAf[$        R<                   a/  n[        R                  SXH5        [!        S[#        U5      S9UeS nAff = f GN7f)Nz1Starting ssh session user=%s, host=%s, private=%s:StrictHostKeyCheckingyes1)NumberOfPasswordPromptsno)PasswordAuthenticationKbdInteractiveAuthentication)
login_nameporthandle_host_keyoptionsinteraction_responderz connecting to host %s failed: %szno-host)errormessager    )zhost-keyzhost-fingerprintzinvalid-hostkeyzunknown-hostkeyzunknown-hostzPSshPeer got a %s %s; private %s, seen hostkeys %r; raising %s with extra args %r)rU   auth_method_resultsz$authentication to host %s failed: %sznot-providedr   z	not-trieddeniedzauthentication-failedz)unknown failure connecting to host %s: %szinternal-error)rV   zcockpit-bridge)!rD   r,   r-   rE   r   rF   
rpartitionisdigitr=   r   r   updateconnectOSErrorsocketgaierrorr   r;   r   SshHostKeyErrorr   
isinstanceSshChangedHostKeyErrortypeSshAuthenticationErrordictfromkeysmethodsr   r   SshErrorwrap_subprocess_argsspawn)r   basenamecolonportstrr   rQ   	responderrS   exc_reasonr    r!   r"   
error_argsrU   resultsargss                    r   do_connect_transportSshPeer.do_connect_transportO   s    ||'''H$))UYU^U^`d`l`lm#'99#7#7#< W__&&Dw<D99DD%dmm4	*E2==$NN3N7NN$UYNZ.	I,,&&t		7;||W=F ' H H H^ ||002B1CDjjr"""aH ) 	SLL;TGIYCIsR$$ 	]&& >G=T=TUV=W:y{-1F!I;au*E[fg

#u;;<<)) 'LLkcCy7N7NPUcEUPRSY\\++ 	BLL?KmmCKK@GW$)B..!3*5GJ'*2GJ'3"+"9"9"T=T079>AB ~~ 	ILLDdP,c#h?SH	I
 	#sn   C"M%4E EE 1MMME M1+FM3B.I!!M8BK;;M*L<<MMz
str | Noner0   rV   c                 n   > XR                   :X  a  U R                  5         g Uc  [        TU ]  XU5        g g N)r   closesuperdo_kill)r   r   r0   rV   	__class__s       r   r{   SshPeer.do_kill   s.    99JJL\GOD1 r   c                     [        US5      R                  S5      (       a7  [        US5      nU R                  SX R                  =(       d    SS9  S U l        g g )N	challengezplain1:cookie	authorize )commandr   response)r   
startswithwrite_controlr   )r   rV   r   s      r   do_authorizeSshPeer.do_authorize   sO    7K(33I>>Wh/F{6MML_]_` DM ?r   c                     S U l         g rx   )r   )r   s    r   do_superuser_init_doneSshPeer.do_superuser_init_done   s	    r   routerrS   c                   > [         TU ]  U5        X l        X0l        [	        USS 5      U l        XPl        [        R                  " 5       U l	        [        USS 5      nUS;   a  SnOSU0nU R                  X'S9  g )Nr   zinit-superuser)NnoneFid)	init_host	superuser)rz   r   r   rE   r   r   rF   r   SessionrD   r   start_in_background)	r   r   r   rE   rS   rF   init_superuserr   r|   s	           r   r   SshPeer.__init__   su     		T:}} )2BDI^+I~.I  4 Er   )r   r   rF   rD   rE   )r#   N)r5   r6   r7   r8   rD   r   r   r   r<   r;   r>   ru   r	   r{   r   r   r   r   r?   __classcell__r|   s   @r   rB   rB   H   s    '+GXemm$+
I
3-smME#N2L 2 2
 2W[ 2!J !4 !Fv FS F FPZ Fhl Fqu F Fr   rB   c                   t   ^  \ rS rSr% \\\\\   \\   4   \4   \	S'   U 4S jr
S\S\\   4S jrS rSrU =r$ )	HostRoutingRule   remotesc                 2   > [         TU ]  U5        0 U l        g rx   )rz   r   r   )r   r   r|   s     r   r   HostRoutingRule.__init__   s     r   rS   r#   c                   ^ ^ T R                   c   eT R                   R                  c   e[        UST R                   R                  5      nUT R                   R                  :X  a  g [        USS 5      nU[        R                  " 5       :X  a  S nU(       d   UR                  S5      u  n  nU=(       d    S n[        USS 5      S:X  a  [        US5      nOS n[        U[        5      (       d   eUb  [        U[        5      (       d   eUb  [        U[        5      (       d   eX#U4m[        R                  SU5        [        R                  ST5        TT R                  ;  a]  [        R                  S	TT R                  5        [        T R                   X#XS LS
9nUR                  UU 4S j5        UT R                  T'   T R                  T   $ )Nr   rE   @rD   rF   channelz!Request for channel %s is remote.zkey=%szC%s is not among the existing remotes %s.  Opening a new connection.)rF   c                  :   > TR                   R                  T 5      $ rx   )r   __delitem__)r!   r   s   r   <lambda>,HostRoutingRule.apply_rule.<locals>.<lambda>   s    4<<+C+CC+Hr   )r   r   r   getpassgetuserrZ   rb   r;   r,   r-   r   rB   add_done_callback)	r   rS   r   rE   user_from_host_noncepeerr!   s	   `       @r   
apply_ruleHostRoutingRule.apply_rule   s   {{&&&{{$$000w(=(=>4;;(((w- 7??$$D#'??3#7 NAq!)TD7It,	9GY/EE$$$$$|z$4444}
5# 6 666%8'BXs#dll"LL^`ceieqeqr4;;GRVEVWD""#HI $DLL||C  r   c                 x    [        U R                  R                  5       5       H  nUR                  5         M     g rx   )setr   valuesry   )r   r   s     r   shutdownHostRoutingRule.shutdown   s'    ++-.DJJL /r   )r   )r5   r6   r7   r8   r   r   r;   r   r   r<   r   r	   r   r   r?   r   r   s   @r   r   r      sN    %Xc]HSM9:D@AA&!* &!$ &!P r   r   )r   loggingr9   r_   typingr   r   r   r   cockpit._vendorr   jsonutilr	   r
   r   r   r   r   r   r   r   r   	getLoggerr5   r,   AskpassHandlerr   rB   r   r@   r   r   <module>r      sh   $   	  . . ! E E ! '			8	$$,, $NmFd mF`1k 1r   