???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................ó
Afc           @   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 Z d „  Z	 d d „ Z d „  Z d „  Z d „  Z d	 „  Z d d
 l m Z e	 ƒ  d S(   sI  A 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   c          C   sÒ   yD t  j  t j d d ƒ \ }  } t | ƒ d k rC t  j d ‚ n  Wn  t  j k
 rf } t | ƒ n Xx |  D] \ } } qn W| r¾ y t j | d ƒ } WqÄ t k
 rº } t | ƒ qÄ Xn t	 } t
 | ƒ d  S(   Ni   t    s   Too many arguments.i    (   t   getoptt   syst   argvt   lent   errort   usaget   stringt   atoit
   ValueErrort   PORTt   main_thread(   t   optst   argst   msgt   ot   at   port(    (    s(   /usr/lib64/python2.7/Demo/pysvr/pysvr.pyt   main   s    c         C   s3   t  j t  _ |  r |  GHn  d Gt Gt  j d ƒ d  S(   Ns   
i   (   R   t   stderrt   stdoutt   __doc__t   exit(   R   (    (    s(   /usr/lib64/python2.7/Demo/pysvr/pysvr.pyR   %   s
    c         C   s¹   t  j  t  j t  j ƒ } | j d |  f ƒ | j d ƒ d G|  Gd GHxm | j ƒ  \ } } | d | j ƒ  d k r• | j ƒ  d G| d Gd GHqH n  t j	 t
 | | f ƒ ~ ~ qH Wd  S(   NR    i   s   Listening on ports   ...i    s'   Refusing connection from non-local hostt   .(   t   sockett   AF_INETt   SOCK_STREAMt   bindt   listent   acceptt   getsocknamet   closet   threadt   start_new_threadt   service_thread(   R   t   sockt   connt   addr(    (    s(   /usr/lib64/python2.7/Demo/pysvr/pysvr.pyR   ,   s    
c         C   sl   | \ } } d t  t j ƒ  ƒ | f G|  j d ƒ } |  j d d ƒ } t | | ƒ d t  t j ƒ  ƒ Gd  S(   Ns"   Thread %s has connection from %s.
t   rt   wi    s   Thread %s is done.
(   t   strR    t	   get_identt   makefilet   run_interpreter(   R$   R%   t   caddrt   cportt   stdinR   (    (    s(   /usr/lib64/python2.7/Demo/pysvr/pysvr.pyR"   :   s    c         C   s|  i  } y t  t j ƒ Wn d t _ n Xd } x8| j t j ƒ |  j ƒ  } | d  d k rh d } n  | rz | rz Pn  | d d k r› | d  d } n  | | } y t | ƒ } Wn5 t k
 rì } d } t j t | d  d | ƒq3 n X| sù q3 n  d } y t
 | |  | | ƒ Wq3 t k
 rf} | rby t  | ƒ } Wn d } n X| j d	 | ƒ n  Pq3 Xq3 W| j d
 ƒ d  S(   Ns   >>> R    i   s   ÿìiþÿÿÿs   
s   
t   files   Exit %s
s
   
Goodbye.
(   R(   R   t   ps1t   writet   readlinet   compile_commandt   SyntaxErrort	   tracebackt   print_exceptiont   Nonet   run_commandt
   SystemExit(   R.   R   t   globalst   sourcet   linet   codet   errt   how(    (    s(   /usr/lib64/python2.7/Demo/pysvr/pysvr.pyR+   C   sH    	

	c   	      B   sÐ   e  j e  j e  j f } z˜ | e  _ e  _ | e  _ y |  | UWnl e k
 rk } e | e  j ƒ  d ‚ nD e  j ƒ  \ } } } | r• | j } n  e j | | | ƒ ~ n XWd  | \ e  _ e  _ e  _ Xd  S(   Ni   (	   R   R.   R   R   R9   t   exc_infot   tb_nextR5   R6   (	   R=   R.   R   R:   t   saveR?   t   typet   valuet   tb(    (    s(   /usr/lib64/python2.7/Demo/pysvr/pysvr.pyR8   i   s    	 (   R3   (   R   R   t   osR   R   R    R   R5   R
   R   R7   R   R   R"   R+   R8   R=   R3   (    (    (    s(   /usr/lib64/python2.7/Demo/pysvr/pysvr.pyt   <module>   s   T					&	