ó
[³XMc           @   s¦   d  Z  d d l m Z d d l m Z d d l m Z m Z d d l Z d d l	 Z	 d d l
 Z
 d d l m Z d e j f d „  ƒ  YZ d	 e j f d
 „  ƒ  YZ d S(   s   Telnet-based shell.iÿÿÿÿ(   t   telnet(   t   protocol(   t   logt   failureN(   t   StringIOt   Shellc           B   sD   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s   A Python command-line shell.c         C   s   t  j j |  ƒ g  |  _ d  S(   N(   R    t   Telnett   connectionMadet
   lineBuffer(   t   self(    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyR      s    c         C   s   |  j  j d ƒ d  S(   Ns   >>> (   t	   transportt   write(   R	   (    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyt   loggedIn   s    c         C   s"   |  j  j | k o! | |  j  j k S(   N(   t   factoryt   usernamet   password(   R	   R   R   (    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyt   checkUserAndPass   s    c         C   s   |  j  j | ƒ d S(   s*   Write some data to the transport.
        N(   R
   R   (   R	   t   data(    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyR      s    c         C   s~   |  j  ri | sB t j |  j  d ƒ d } |  j | ƒ g  |  _  d S|  j  j | ƒ |  j j d ƒ d Sn |  j | ƒ d Sd  S(   Ns   
s   


t   Commands   ... (   R   t   stringt   joint	   doCommandt   appendR
   R   (   R	   t   cmd(    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyt   telnet_Command#   s    		c         B   s©  d } d  } z7e j } |  e _ y+ e | | d ƒ } e | |  j j ƒ } Wnó y$ e | | d ƒ } | |  j j UWqBe k
 r } |  j rÌ e	 | ƒ d  d k rÌ |  j j
 | ƒ |  j j d ƒ d  Se j ƒ  j d |  ƒ e j ƒ  |  j d ƒ d  SqBe ƒ  } e j ƒ  j d |  ƒ e j ƒ  |  j d ƒ d  SXn XWd  | e _ X| |  j j d	 <| d  k	 r•|  j j e | ƒ ƒ |  j j d
 ƒ n  |  j j d ƒ d  S(   Ns   $telnet$t   evalt   execi   s   unexpected EOFs   ... t   files   
>>> t   _s   
s   >>> (   t   Nonet   syst   stdoutt   compileR   R   t	   namespacet   SyntaxErrorR   t   strR   R
   R   R   t   Failuret   printTracebackR   t   deferrR   t   repr(   R	   R   t   fnt   resultt   outt   codet   et   io(    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyR   2   sB    		 
	

(	   t   __name__t
   __module__t   __doc__R   R   R   R   R   R   (    (    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyR      s   					t   ShellFactoryc           B   s;   e  Z d  Z d  Z e Z d Z d „  Z d „  Z	 d „  Z
 RS(   t   adminc         C   s"   i |  d 6d  d 6d  d 6|  _ d  S(   NR   t   serviceR   (   R   R!   (   R	   (    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyt   __init__c   s    c         C   s   | |  j  d <|  _ d  S(   NR3   (   R!   R3   (   R	   R3   (    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyt
   setServicej   s    c         C   sC   |  j  } t j | d ƒ } | | d <| j d ƒ r? | d =n  | S(   sA   This returns the persistent state of this shell factory.
        R!   t   __builtins__(   t   __dict__t   copyt   has_key(   R	   t   dictt   ns(    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyt   __getstate__m   s    	

N(   R.   R/   R   R   R   R   R   R3   R4   R5   R<   (    (    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyR1   ]   s   		(   R0   t   twisted.protocolsR    t   twisted.internetR   t   twisted.pythonR   R   R   R8   R   t	   cStringIOR   R   R   t   FactoryR1   (    (    (    s:   /usr/lib/python2.7/dist-packages/twisted/manhole/telnet.pyt   <module>   s   $L