
    kj3                        d dl mZ d dlmZ d dlmZ d dlZd dlZd dl	m
Z
 d dl	mZ d dl	mZ d dl	mZ d d	l	mZ d d
lmZ d dlmZ e	 	 	 	 	 	 dd       Z G d dej(                        Z G d dej(                        Zy)    )annotations)Callable)	lru_cacheN)commandexecutor)common)flowlist)	quickhelp)signals)	commander)humanc                   t        | t              r| \  }}n,t        | t              r| }d}nt        dt	        |              d}d}|j                  d      }|d   }t        |      dkD  rt        |      t        |      z   }nt        |      }||kD  r-t        d|t        |      z
  t        |      z
        }	|d|	 |z   }nt        |      dk(  rd}||fd	|fgS )
zN
    Shorten message so that it fits into a single line in the statusbar.
     zUnexpected message type: u   …z(more in eventlog)
r      Nwarn)
isinstancetuplestrAssertionErrortypesplitlenmax)
msg	max_width	disp_attrmsg_textmsg_endprompt	msg_lines
first_lineline_lengthshortening_indexs
             j/home/ubuntu/.cache/pipx/cdb5059130eadca/lib/python3.12/site-packages/mitmproxy/tools/console/statusbar.pyshorten_messager%      s     #u!	8	C		8cDEEG!Ft$I1J
9~*oF3*oYq)c&k"9CL"HI 1!12W<
y>QF
#ff%566    c                       e Zd Zd fdZddZdddZddZ	 d	 	 	 	 	 ddZ	 	 	 	 	 	 	 	 ddZdddZ	ddZ
	 	 	 	 	 	 	 	 dd	Zdd
Zd ZddZddZddZ xZS )	ActionBarc                ,   || _         t        j                  t        j                  d            | _        t        j                  t        j                  d            | _        t        |   t        j                  | j                  | j
                  g             | j                          t        j                  j                  | j                         t        j                  j                  | j                         t        j                   j                  | j"                         t        j$                  j                  | j&                         t        j(                  j                  | j*                         |j,                  j.                  j0                  j                  | j*                         |j,                  j2                  j                  | j*                         |j4                  j7                  | j8                  dg       d | _        d | _        y )Nr   console_quickhelp_visible)masterurwid
WidgetWrapTexttopbottomsuper__init__Pileshow_quickhelpr
   status_messageconnectsig_messagestatus_prompt
sig_promptstatus_prompt_onekeysig_prompt_onekeystatus_prompt_commandsig_prompt_commandwindow_refresh
sig_updateviewfocus
sig_changesig_view_updateoptions	subscribesig_options_update	promptingonekeyselfr+   	__class__s     r$   r2   zActionBar.__init__6   sU   ##EJJrN3&&uzz"~6TXXt{{$;<=&&t'7'78%%doo6$$,,T-C-CD%%--d.E.EF&&t7$$,,T__=##++DOO<  !8!8;V:WX7;'+r&   c                    | j                   }|j                  D cg c]  \  }}|	 }}}|| j                  | j                  gk7  r1t	        j
                  | j                  | j                  g      | _         y y c c}}w N)_wcontentsr/   r0   r,   r3   )rJ   pilew_current_widgetss        r$   ensure_bottom_bar_is_visiblez&ActionBar.ensure_bottom_bar_is_visibleI   sb    77)-7A177txx55jj$((DKK!89DG 6 8s   A8c                    | j                   sA|-|| j                  j                  j                  j                  k(  r| j                          y y y rM   )rG   r+   r@   rA   flowr4   )rJ   rV   s     r$   r?   zActionBar.sig_updateO   s>    ~~4<44;;;K;K;Q;Q;V;V3V! 4W~r&   c                $    | j                          y rM   )r4   )rJ   rD   updateds      r$   rF   zActionBar.sig_options_updateS   s    r&   c                     j                   ry  j                           j                  j                  j	                         \  }}t        j                  t        ||             j                  _	        t        j                  d       j                  _	        |r( fd}t        j                  j                  ||       y y )Nr   c                 Z     j                   j                  k(  r j                          y y rM   )r/   rN   r4   )rJ   rQ   s   r$   cbz!ActionBar.sig_message.<locals>.cbc   s$    #'') $r&   secondscallback)rG   rT   r+   uiget_cols_rowsr,   r.   r%   r/   rN   r0   r
   call_insend)rJ   messageexpirecolsrR   r[   rQ   s   `     @r$   r7   zActionBar.sig_messageV   s     >>))+++....0aJJw56B* OO  " = r&   c                .   | j                          t        j                  j                  d       t	        j
                  |j                          d|xs d      | j                  _        t	        j                  d      | j                  _        || _        y )Nfootersectionz: r   )rT   r
   rA   rb   r,   Editstripr/   rN   r.   r0   rG   )rJ   r   textr^   s       r$   r9   zActionBar.sig_prompti   sg     	))+8,jjFLLN#32!6
CB!r&   c                z   | j                          t        j                  j                  d       t	        j
                  | j                  |      | j                  _        |%|| j                  j                  j                  _
        t        j                  d      | j                  _        | j                  | _        y )Nrg   rh   r   )rT   r
   rA   rb   r   CommandEditr+   r/   rN   cbufcursorr,   r.   r0   execute_commandrG   )rJ   partialrp   s      r$   r=   zActionBar.sig_prompt_commandr   s    ))+8,++KK
 &,DHHKK#B--r&   c                    |j                         r&| j                  j                  j                  d|       t	        j
                  | j                        } ||       y )Nzcommands.history.add)rk   r+   commandscallr   CommandExecutor)rJ   txtexecutes      r$   rq   zActionBar.execute_command~   sA    99;KK  %%&<cB!11$++>r&   c                P   | j                          t        j                  j                  d       |dg}g }t	        |      D ]S  \  }}|j                  t        j                  |d   |d                |t        |      dz
  k  sC|j                  d       U |j                  |       |j                  d       |D ch c]  }|d   	 c}| _
        t        j                  |d      | j                  _        t        j                  d      | j                   _        || _        y	c c}w )
zo
        Keys are a set of (word, key) tuples. The appropriate key in the
        word is highlighted.
        rg   rh   z (r   r   ,z)? r   N)rT   r
   rA   rb   	enumerateextendr   highlight_keyr   appendrH   r,   rj   r/   rN   r.   r0   rG   )rJ   r   keysr^   partsmkupies           r$   r;   zActionBar.sig_prompt_onekey   s     	))+8,dO 	!DAqKK,,QqT1Q4893t9q= C 	! 	TU%)*qt*jj+B! +s   >D#c                     yNT rJ   s    r$   
selectablezActionBar.selectable       r&   c                   | j                   r|dk(  r| j                          y | j                  r7|dk(  r| j                          y || j                  v r| j                  |       y y |dk(  r6| j                  j
                  j                         }| j                  |       y t        j                  |      r'| j                  j
                  j                  ||       y |S y )Nescenter)
rG   prompt_donerH   prompt_executer/   rN   get_edit_textr   is_keypresskeypress)rJ   sizekrl   s       r$   r   zActionBar.keypress   s    >>Ez  "<$$&$++%''* &gxx{{002##D)%%a(HHKK((q1H r&   c                   | j                   j                  j                  st        j                  g       | _        y | j                          | j                   j                  x}rB|j                         }t        |j                               }t        |j                        dk(  }nt        j                  }d}| j                   j                  j                   j"                  }t%        j&                  |||      }|j)                  | j                   j*                        \  | j,                  _        | j.                  _        y )Nr   T)r+   rD   r*   r,   r3   rN   rT   windowfocus_stackr   
top_widgetr   stackr   FlowListBoxr@   rA   rV   r	   make	make_rowskeymapr/   r0   )rJ   rQ   sfocused_widgetis_top_widgetfocused_flowqhs          r$   r4   zActionBar.show_quickhelp   s    {{""<<jjnDG))+"""1"A!!,,.1NLA-M%11N M{{''--22^^NL-H&(ll4;;3E3E&F#T[[^r&   c                    d | _         d | _        | j                          t        j                  j                  d       y )Nbodyrh   )rG   rH   r4   r
   rA   rb   r   s    r$   r   zActionBar.prompt_done   s1    6*r&   c                    | j                   }|J | j                           ||      }|r"t        j                  j	                  |d       y y )Nr   )rc   rd   )rG   r   r
   r5   rb   )rJ   rw   r^   r   s       r$   r   zActionBar.prompt_execute   sM    >>###sm""''A'> r&   r+   z,mitmproxy.tools.console.master.ConsoleMasterreturnNoner   r   rM   )r   )rc   tuple[str, str] | strrd   
int | Noner   r   )r   r   rl   z
str | Noner^   Callable[[str], None]r   r   )r   N)rr   r   rp   r   r   r   )rw   r   r   r   )r   r   r   list[tuple[str, str]]r^   r   r   r   r   bool)__name__
__module____qualname__r2   rT   r?   rF   r7   r9   r=   rq   r;   r   r   r4   r   r   __classcell__rK   s   @r$   r(   r(   5   s    ,&:" DE>,>6@>	>&""!+"7L"	"
.""!6"BW"	",$G +?r&   r(   c                  V     e Zd ZdZdZd
 fdZddZddZd ZddZ	ddZ
dd	Z xZS )	StatusBarg      ?r   c                   || _         t        j                  t        j                  d            | _        t        | j                         | _        t        | !  t        j                  | j                  | j                  g             t        j                  j                  | j                         t        j                  j                  | j                         |j                  j                   j                  | j                         |j"                  j$                  j&                  j                  | j                         |j"                  j(                  j                  | j                         | j+                          y )Nr   )r+   r,   r-   r.   ibr(   abr1   r2   r3   r
   flow_changer6   r?   update_settingsrD   changedr@   rA   rB   sig_view_addrefreshrI   s     r$   r2   zStatusBar.__init__   s    ""5::b>2DKK(TWWdgg$678##DOO4''8&&t7$$,,T__=  ((9r&   c                    | j                          t        j                  j                  | j                  | j
                         y )Nr\   )redrawr
   ra   rb   REFRESHTIMEr   r   s    r$   r   zStatusBar.refresh   s,    T%5%5Mr&   c                $    | j                          y rM   )r   rJ   argskwargss      r$   r?   zStatusBar.sig_update   s    r&   c                :     | j                   j                  |i |S rM   )r   r   r   s      r$   r   zStatusBar.keypress   s    tww000r&   c                   g }| j                   j                  j                  d      }| j                   j                  j                  d      }t        | j                   j                  j
                        r3|j                  d       |j                  d       |j                  d       t        | j                   j                  j                        r;|j                  dt        | j                   j                  j                        z         |r6|j                  d       |j                  d       |j                  d|z         |r6|j                  d       |j                  d	       |j                  d|z         | j                   j                  j                  r^|j                  d       |j                  d
       |j                  dt        | j                   j                  j                        z         n}| j                   j                  j                  r]|j                  d       |j                  d       |j                  dt        | j                   j                  j                        z         | j                   j                  j                  r]|j                  d       |j                  d       |j                  dt        | j                   j                  j                        z         | j                   j                  j                  r|j                  d       | j                   j                  j                  s|j                  d       |j                  d       |j                  d| j                   j                  j                  z         | j                   j                  j                  rT|j                  d       |j                  d       |j                  d| j                   j                  j                  z         | j                   j                  j                  rT|j                  d       |j                  d       |j                  d| j                   j                  j                  z         | j                   j                  j                  rT|j                  d       |j                  d       |j                  d| j                   j                  j                  z         | j                   j                  j                   dk7  r2|j                  d| j                   j                  j                   z         | j                   j                  j#                  d      rT|j                  d       |j                  d       |j                  d| j                   j                  j$                  z         g }| j                   j                  j&                  r|j                  d       | j                   j                  j(                  r|j                  d       | j                   j                  j*                  r|j                  d       | j                   j                  j,                  s|j                  d       | j                   j                  j.                  s|j                  d       | j                   j                  j0                  r|j                  d       | j                   j                  j2                  r/|j                  | j                   j                  j2                         |r#|j                  dd j5                  |      z         | j                   j                  j6                  d!gk7  rt        | j                   j                  j6                        d"k(  r7|j                  d| j                   j                  j6                  d#    d$       n<|j                  d%t        | j                   j                  j6                         d$       | j                   j                  j8                  r;|j                  d&t        | j                   j                  j8                        z         | j                   j                  j:                  r2|j                  d'| j                   j                  j:                  z         |S )(Nzreplay.server.countzreplay.client.count[)heading_keyHzeaders]z[%d body modifications])r   	cplaybackz:%s])r   	splayback)r   Iz	gnore:%d])r   Azllow:%d])r   TzCP:%d]X)r   r   )r   f)r   t)r   uautoz[contentview:%s]
view_order)r   o	anticacheanticompshowhost	norefreshzno-upstream-cert	followingz[%s]:regularr   r   ]z[modes:z[scripts:%s]z[W:%s])r+   rt   ru   r   rD   modify_headersr~   modify_bodyignore_hostsallow_hosts	tcp_hosts	interceptintercept_activeview_filterstickycookie
stickyauthconsole_default_contentviewhas_changedr   r   r   r   server_replay_refreshupstream_certconsole_focus_followstream_large_bodiesjoinmodescriptssave_stream_file)rJ   rsreplaycreplayoptss        r$   
get_statuszStatusBar.get_status   s   )+++&&++,AB++&&++,ABt{{""112HHSMHH)*HHYt{{""../HH.T[[5H5H5T5T1UUVHHSMHH12HHVg%&HHSMHH12HHVg%&;;++HHSMHH)*HH[3t{{':':'G'G#HHI[[  ,,HHSMHH)*HHZ#dkk&9&9&E&E"FFG;;((HHSMHH)*HHXDKK$7$7$A$A BBC;;((HHSM;;&&77HH)*HHVdkk11;;;<;;**HHSMHH)*HHVdkk11===>;;++HHSMHH)*HHVdkk11>>>?;;))HHSMHH)*HHVdkk11<<<=;;::fDHH"dkk&9&9&U&UV ;;**<8HHSMHH)*HHVdkk11<<<=;;((KK$;;''KK
#;;''KK
#{{""88KK${{""00KK*+;;33KK$;;22KK++??@HHVsxx~./;;##	{24;;&&++,11T[[0055a89;<73t{{':':'?'?#@"ACD;;&&HH^c$++*=*=*E*E&FFG;;//HHX 3 3 D DDEr&   c           	        | j                   j                  j                  d      }| j                   j                  j                  j
                  d}n-| j                   j                  j                  j
                  dz   }| j                   j                  j                  rt        j                  }nt        j                  }d}| j                   j                  j                  d      rd}d| d| d	| d
| dj                  d      fg}t        t        j                  d | j                   j                  j!                  d      j#                         D                    }|rddj%                  |       d}nd}|j'                  | j)                                t+        j,                  t+        j.                  t+        j0                  |      t+        j0                  |d      g      d      }|| j2                  _        y )Nzview.properties.lengthr   r   r   zview.properties.markedMheading z [/r      c              3  F   K   | ]  }t        j                  |        y wrM   )r   format_address).0as     r$   	<genexpr>z#StatusBar.redraw.<locals>.<genexpr>X  s#       $$Q's   !proxyserverr   z, right)align)r+   rt   rx   r@   rA   indexrD   view_order_reversedr   	SYMBOL_UPSYMBOL_DOWNljustlistdictfromkeysaddonsgetlisten_addrsr   r|   r   r,   AttrMapColumnsr.   r   rN   )	rJ   fcoffsetarrowmarkedr   r  	boundaddrstatuss	            r$   r   zStatusBar.redrawC  s   [[!!))*BC;;!!''/F[[%%++11A5F;;22$$E&&E;;''(@AF 5'6("VHAbT;AA"EF*
 #'MM ++//>KKM #
 DIIl34A6II	"#MMJJqMJJy8 
 
r&   c                     yr   r   r   s    r$   r   zStatusBar.selectablem  r   r&   r   r   )r   zlist[tuple[str, str] | str]r   )r   r   r   r   keyctxr2   r   r?   r   r   r   r   r   r   s   @r$   r   r      s4    KF
N1Yv(Tr&   r   )r   r   r   intr   r   )
__future__r   collections.abcr   	functoolsr   r,   mitmproxy.tools.console.master	mitmproxymitmproxy.tools.consoler   r   r   r	   r
   !mitmproxy.tools.console.commanderr   mitmproxy.utilsr   r%   r-   r(   r   r   r&   r$   <module>r#     s    " $   % 3 * , - + 7 ! 7	7+.77 7DV?   V?r`   `r&   