Spade
Mini Shell
�
V
�Qc@s�dZddlZddlZddlZddlZddlZddlZddlZdZd�Z dd�Zd�Zd�Z
d�Zd �Zdd
lmZe �dS(sIA multi-threaded telnet-like server that gives a
Python prompt.
This is really a prototype for the same thing in C.
Usage: pysvr.py [port]
For security reasons, it only accepts requests from the current host.
This can still be insecure, but restricts violations from people who
can log in on your machine. Use with caution!
i����Ni�cCs�yDtjtjdd�\}}t|�dkrCtjd�nWn
tjk
rf}t|�nXx|D]\}}qnW|r�ytj|d�}Wq�tk
r�}t|�q�Xnt }t
|�dS(NitsToo many
arguments.i(tgetopttsystargvtlenterrortusagetstringtatoit
ValueErrortPORTtmain_thread(toptstargstmsgtotatport((s(/usr/lib64/python2.7/Demo/pysvr/pysvr.pytmainscCs3tjt_|r|GHndGtGtjd�dS(Ns
i(Rtstderrtstdoutt__doc__texit(R((s(/usr/lib64/python2.7/Demo/pysvr/pysvr.pyR%s
cCs�tjtjtj�}|jd|f�|jd�dG|GdGHxl|j�\}}|d|j�dkr�|j�dG|dGdGHqHntj t
||f�~~qHdS(NRisListening on ports...is'Refusing
connection from non-local
hostt.(tsockettAF_INETtSOCK_STREAMtbindtlistentaccepttgetsocknametclosetthreadtstart_new_threadtservice_thread(Rtsocktconntaddr((s(/usr/lib64/python2.7/Demo/pysvr/pysvr.pyR,s
cCsl|\}}dttj��|fG|jd�}|jdd�}t||�dttj��GdS(Ns"Thread
%s has connection from %s.
trtwisThread %s is done.
(tstrR
t get_identtmakefiletrun_interpreter(R$R%tcaddrtcporttstdinR((s(/usr/lib64/python2.7/Demo/pysvr/pysvr.pyR":s
cCs{i}yttj�Wndt_nXd}x7|jtj�|j�}|d
dkrhd}n|rz|rzPn|ddkr�|d d}n||}yt|�}Wn5tk
r�}d}tjt|dd|�q3nX|s�q3nd}yt
||||�Wq3tk
rf}|rbyt|�}Wn
d}nX|jd |�nPq3Xq3|jd
�dS(Ns>>> Ris��i����s
s
tfilesExit %s
s
Goodbye.
(R(Rtps1twritetreadlinetcompile_commandtSyntaxErrort tracebacktprint_exceptiontNonetrun_commandt
SystemExit(R.Rtglobalstsourcetlinetcodeterrthow((s(/usr/lib64/python2.7/Demo/pysvr/pysvr.pyR+CsH
c Bs�ejejejf}z�|e_e_|e_y||UWnlek
rk}e|ej�d�nDej�\}}}|r�|j}nej|||�~nXWd|\e_e_e_XdS(Ni( RR.RRR9texc_infottb_nextR5R6( R=R.RR:tsaveR?ttypetvaluettb((s(/usr/lib64/python2.7/Demo/pysvr/pysvr.pyR8is (R3(RRtosRRR
RR5R
RR7RRR"R+R8R=R3(((s(/usr/lib64/python2.7/Demo/pysvr/pysvr.pyt<module>
sT &