o
    u]                     @   s  d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Zddl	m
Z
mZmZ g dZedeje
je
jaeje
jfZeje
je
jfZeje
jfZeje
je
jfZe
jeje
jfZejejedZejj !deZ!e!dd	 Z"d
d Z#dS )z
Interactive interpreter for interacting with Tor directly. This adds usability
features such as tab completion, history, and IRC-style functions (like /help).
    N)AttrColorformat)	argumentsautocompletecommandshelp>>> zsettings.cfgZstem_interpreterc                 K   s   | | jdi |S )N )getr   )messageconfigattrr
   r
   ;/usr/lib/python3/dist-packages/stem/interpreter/__init__.pymsg)   s   r   c                  C   sF  dd l } dd l}dd l}dd l}z|jjtjdd  }W n t	y9 } zt
| td W Y d }~nd }~ww |jrIt
|jj  t  |jsQtj sXd|jj_da|js|js|jjdpk|jjd}|s|jdkr|jjdst
ttdgtR   td nV|js|jst
ttdgt R   |j!d	krd
nt"|j!}z|j#j$d|ddd|jddd W n% t%y } zt
ttd|dgtR   td W Y d }~nd }~ww |j&|j!f}|j'}|jr|jsd }n|jr|jsd }|j(j)||dd}|d u rtd | |jj*+|}d}	|jrq|j, -drhdd }
|
|_.tj rM|j, /ddd }t
td| gt0R   ||j zt1  W n t2|j3fyg   Y n	w |j4|jdd n|jrzt5|j6 D ]}|j4|7 dd q}W n t8y } zt
ttd|j|dgtR   td W Y d }~nd }~ww |jj9:|}| ;d | <|j= | >d td? D ]}|-d rt0nt }t
t|g|R   qt
d! 	 z|j@rd"nt}|jAB rtC|nt1|}|j4|dd W nP |j3yL   |	r$t
td#gtR   n&td$gt0R  }|jAB r6tC|nt1|}t
d! |D d%v rHd}	nY n>Y n t2tE|j3fy]   t
d! Y n3w qW d    d S W d    d S W d    d S W d    d S W d    d S W d    d S W d    d S 1 sw   Y  d S )&Nr      Tr	   Ztorztor.realzmsg.tor_unavailablezmsg.starting_tordefaultZ905101z
reject *:*)Z	SocksPortZControlPortZCookieAuthenticationZ
ExitPolicy   )r   Ztor_cmdZcompletion_percentZtake_ownershipzmsg.unable_to_start_tor)error)control_portcontrol_socketZpassword_promptFz
SETEVENTS c                 S   s   t tt| gtR   d S )N)printr   strSTANDARD_OUTPUT)Zevent_messager
   r
   r   handle_event   s   zmain.<locals>.handle_event z/Listening to %s events. Press any key to quit.
)Zprint_responsezmsg.unable_to_read_file)pathr   ztab: complete
zmsg.startup_bannerz   z... zCUnable to run tor commands. The control connection has been closed.zOTor's control port has closed. Do you want to continue this interpreter? (y/n) )yZyes)FreadlineZstem.interpreter.argumentsZstem.interpreter.autocompleteZstem.interpreter.commandsinterpreterr   parsesysargv
ValueErrorr   exit
print_helpZget_helpZdisable_colorstdoutisattyutilZtermZDISABLE_COLOR_SUPPORTPROMPTZuser_provided_portZuser_provided_socketsystemZ
is_runningZtor_pathZis_availabler   r   ERROR_OUTPUTZrun_cmdrun_pathHEADER_OUTPUTr   r   ZprocessZlaunch_tor_with_configOSErrorZcontrol_addressr   Z
connectionZconnectr   ZControlInterpreterupper
startswithZ_handle_eventsplitHEADER_BOLD_OUTPUTZ	raw_inputKeyboardInterruptZSocketClosedZrun_commandopen	readlinesstripIOErrorr   ZAutocompleterparse_and_bindZset_completerZcompleteZset_completer_delims
splitlinesZis_multiline_contextZprereqZis_python_3inputlowerEOFError)r"   stemargsexcZis_tor_runningr   r   Z
controllerr#   Zshowed_close_confirmationr   ZeventslineZautocompleterZline_formatpromptZ
user_inputr
   r
   r   main.   s   



 

!?B$rF   )$__doc__osr%   rA   Zstem.connectionZstem.prereqZstem.processZstem.util.confZstem.util.systemZstem.util.termr   r   r   __all__ZGREENZBOLDZREADLINE_ESCAPEr-   ZBLUELINESr   ZBOLD_OUTPUTr1   r6   ZREDr/   r   joindirname__file__Zsettings_pathr,   confZuses_settingsr   rF   r
   r
   r
   r   <module>   s.   
