???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3

  \`Z                 @   sF  d dl Z d dlZd dlZd dlmZ dgZd ZdZe	dgZ
e	dgZe	dgZe	dgZe	d	gZe	d gZe	d
gZe	dgZe	dgZe	dgZe	dgZe	dgZe	dgZe	dgZe	dgZe	dgZe	dgZe	d gZe	dgZe	dgZe	dgZe	dgZe	dgZ e	dgZ!e	dgZ"e	dgZ#e	dgZ$e	dgZ%e	dgZ&e	d gZ'e	d!gZ(e	d"gZ)e	d#gZ*e	d$gZ+e	d%gZ,e	d&gZ-e	d'gZ.e	d(gZ/e	d)gZ0e	d*gZ1e	dgZ2e	d+gZ3e	d,gZ4e	d-gZ5e	d.gZ6e	d/gZ7e	d0gZ8e	d1gZ9e	d2gZ:e	d3gZ;e	d4gZ<e	d5gZ=e	d6gZ>e	d7gZ?e	d8gZ@e	d9gZAe	d:gZBe	d;gZCe	d<gZDe	d=gZEe	d>gZFe	d?gZGe	d@gZHe	dAgZIe	dBgZJe	dCgZKe	dDgZLe	dEgZMe	dFgZNe	dGgZOe	dgZPe	d gZQeRedHrejSZTnejUZTG dId dZVdJdK ZWeXdLkrBeW  dS )M    N)	monotonicTelnet                                                                           	   
                                                                   !   "   #   $   %   &   '   (   )   *   +   ,   -   .   /   0   1            PollSelectorc               @   s  e Zd ZddejfddZdejfddZdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zd;ddZdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Zd3d4 Zd<d5d6Zd7d8 Zd9d: Z dS )=r   Nr   c             C   sh   t | _|| _|| _|| _d | _d| _d| _d| _d| _	d| _
d| _d| _d | _|d k	rd| j||| d S )N    r   )
DEBUGLEVEL
debuglevelhostporttimeoutsockrawqirawqcookedqeofiacseqsbsbdataqoption_callbackopen)selfrL   rM   rN    rZ   !/usr/lib64/python3.6/telnetlib.py__init__   s    zTelnet.__init__c             C   s6   d| _ |st}|| _|| _|| _tj||f|| _d S )Nr   )rS   TELNET_PORTrL   rM   rN   socketZcreate_connectionrO   )rY   rL   rM   rN   rZ   rZ   r[   rX      s    zTelnet.openc             C   s   | j   d S )N)close)rY   rZ   rZ   r[   __del__   s    zTelnet.__del__c             G   s@   | j dkr<td| j| jf dd |r4t||  nt| d S )Nr   zTelnet(%s,%s): )end)rK   printrL   rM   )rY   msgargsrZ   rZ   r[   rd      s
    
z
Telnet.msgc             C   s
   || _ d S )N)rK   )rY   rK   rZ   rZ   r[   set_debuglevel   s    zTelnet.set_debuglevelc             C   s.   | j }d | _ d| _d| _d| _|r*|j  d S )NTrI   r   )rO   rS   rT   rU   r_   )rY   rO   rZ   rZ   r[   r_     s    zTelnet.closec             C   s   | j S )N)rO   )rY   rZ   rZ   r[   
get_socket  s    zTelnet.get_socketc             C   s
   | j j S )N)rO   fileno)rY   rZ   rZ   r[   rh     s    zTelnet.filenoc             C   s4   t |kr|jt t t  }| jd| | jj| d S )Nzsend %r)IACreplacerd   rO   sendall)rY   bufferrZ   rZ   r[   write  s    zTelnet.writec             C   s   t |}| j  | jj|}|dkrN|| }| jd | }| j|d  | _|S |d k	r`t | }t }|j| tj x| j	s|j
|rtdt | j| }| j  | j  | jj||}|dkr|| }| jd | }| j|d  | _|S |d k	rx|t  }|dk rxP qxW W d Q R X | j S )Nr   )lenprocess_rawqrR   find_time_TelnetSelectorregister	selectors
EVENT_READrS   selectmax	fill_rawqread_very_lazy)rY   matchrN   nibufdeadlineselectorrZ   rZ   r[   
read_until$  s8    



zTelnet.read_untilc             C   s4   | j   x| js"| j  | j   q
W | j}d| _|S )NrI   )ro   rS   rx   rR   )rY   r}   rZ   rZ   r[   read_allI  s    zTelnet.read_allc             C   s>   | j   x$| j r,| j r,| j  | j   q
W | j}d| _|S )NrI   )ro   rR   rS   rx   )rY   r}   rZ   rZ   r[   	read_someS  s    zTelnet.read_somec             C   s6   | j   x$| j r,| j r,| j  | j   q
W | j S )N)ro   rS   
sock_availrx   ry   )rY   rZ   rZ   r[   read_very_eagerb  s
    zTelnet.read_very_eagerc             C   s>   | j   x,| j r4| j r4| j r4| j  | j   q
W | j S )N)ro   rR   rS   r   rx   ry   )rY   rZ   rZ   r[   
read_eagerp  s
    zTelnet.read_eagerc             C   s   | j   | j S )N)ro   ry   )rY   rZ   rZ   r[   	read_lazy~  s    zTelnet.read_lazyc             C   s,   | j }d| _ | r(| jr(| j r(td|S )NrI   ztelnet connection closed)rR   rS   rP   EOFError)rY   r}   rZ   rZ   r[   ry     s
    zTelnet.read_very_lazyc             C   s   | j }d| _ |S )NrI   )rV   )rY   r}   rZ   rZ   r[   read_sb_data  s    zTelnet.read_sb_datac             C   s
   || _ d S )N)rW   )rY   callbackrZ   rZ   r[   set_option_negotiation_callback  s    z&Telnet.set_option_negotiation_callbackc             C   sX  ddg}yx| j r| j }| jsj|tkr0q|dkr:q|tkrZ|| j | || j< qn|  j|7  _qt| jdkr(|ttt	t
fkr|  j|7  _qd| _|tkr|| j | || j< nh|tkrd| _d| _n&|tkrd| _| j|d  | _d|d< | jr| j| j|t n| jdt|  qt| jdkr| jdd }d| _|}|ttfkr| jd|tkrrdptd	t| | jr| j| j|| n| jjtt
 |  q|t	t
fkr| jd|t	krd
pdt| | jr| j| j|| q| jjtt |  qW W n" tk
r2   d| _d| _Y nX | j|d  | _| j|d  | _d S )NrI      r   r   zIAC %d not recognizedr   z	IAC %s %dDODONTWILLWONT)rP   rawq_getcharrT   theNULLri   rU   rn   r   r   r   r   SBrV   SErW   rO   NOOPTrd   ordrk   r   rR   )rY   r}   ccmdoptrZ   rZ   r[   ro     sh    zTelnet.process_rawqc             C   sZ   | j s| j  | jrt| j | j| jd  }| jd | _| jt| j krVd| _ d| _|S )Nr   rI   r   )rP   rx   rS   r   rQ   rn   )rY   r   rZ   rZ   r[   r     s    zTelnet.rawq_getcharc             C   sL   | j t| jkrd| _d| _ | jjd}| jd| | | _| j| | _d S )NrI   r   2   zrecv %r)rQ   rn   rP   rO   Zrecvrd   rS   )rY   r}   rZ   rZ   r[   rx      s    zTelnet.fill_rawqc          
   C   s.   t  }|j| tj t|jdS Q R X d S )Nr   )rr   rs   rt   ru   boolrv   )rY   r   rZ   rZ   r[   r     s    zTelnet.sock_availc             C   s   t jdkr| j  d S t }|j| tj |jt jtj xx|j D ]\}}|j	| kry| j
 }W n tk
r   td d S X |rt jj|jd t jj  qH|j	t jkrHt jj jd}|sd S | j| qHW q>W W d Q R X d S )NZwin32z(*** Connection closed by remote host ***ascii)sysplatformmt_interactrr   rs   rt   ru   stdinrv   Zfileobjr   r   rc   stdoutrm   decodeflushreadlineencode)rY   r   keyZeventstextlinerZ   rZ   r[   interact  s,    

zTelnet.interactc             C   s@   dd l }|j| jf  x$tjj }|s(P | j|jd qW d S )Nr   r   )_threadstart_new_threadlistenerr   r   r   rm   r   )rY   r   r   rZ   rZ   r[   r   1  s    
zTelnet.mt_interactc             C   sV   xPy| j  }W n tk
r*   td d S X |rDtjj|jd qtjj  qW d S )Nz(*** Connection closed by remote host ***r   )r   r   rc   r   r   rm   r   r   )rY   datarZ   rZ   r[   r   ;  s    zTelnet.listenerc             C   sP  d }|d d  }t t|}x8|D ]0}t|| ds"|s@dd l}|j|| ||< q"W |d k	rht | }t }|j| tj	 x| j
s| j  xP|D ]H}|| j| j}|r|j }	| jd |	 }
| j|	d  | _|||
fS qW |d k	r|j|}|t  }|s|dk rP nq| j  qW W d Q R X | j }
|
 rF| j
rFtdd |
fS )Nsearchr   r   )rangern   hasattrrecompilerq   rr   rs   rt   ru   rS   ro   r   rR   rb   rv   rx   ry   r   )rY   listrN   r   indicesr|   r~   r   mer   ZreadyrZ   rZ   r[   expectH  sB    
 





zTelnet.expectc             C   s   | S )NrZ   )rY   rZ   rZ   r[   	__enter__  s    zTelnet.__enter__c             C   s   | j   d S )N)r_   )rY   typevalue	tracebackrZ   rZ   r[   __exit__  s    zTelnet.__exit__)N)N)!__name__
__module____qualname__r^   Z_GLOBAL_DEFAULT_TIMEOUTr\   rX   r`   rd   rf   r_   rg   rh   rm   r   r   r   r   r   r   ry   r   r   ro   r   rx   r   r   r   r   r   r   r   rZ   rZ   rZ   r[   r      s:   7

%
H

8c              C   s   d} x0t jdd  r4t jd dkr4| d } t jd= qW d}t jdd  rRt jd }d}t jdd  rt jd }yt|}W n  tk
r   tj|d}Y nX t (}|j|  |j||dd |j	  W d Q R X d S )	Nr   r   z-dZ	localhostr   Ztcpg      ?)rN   )
r   argvint
ValueErrorr^   Zgetservbynamer   rf   rX   r   )rK   rL   rM   ZportstrZtnrZ   rZ   r[   test  s$    


r   __main__)Yr   r^   rt   Ztimer   rq   __all__rJ   r]   bytesri   r   r   r   r   r   r   ZNOPZDMZBRKZIPZAOZAYTZECZELZGAr   ZBINARYZECHOZRCPZSGAZNAMSZSTATUSZTMZRCTEZNAOLZNAOPZNAOCRDZNAOHTSZNAOHTDZNAOFFDZNAOVTSZNAOVTDZNAOLFDZXASCIIZLOGOUTZBMZDETZSUPDUPZSUPDUPOUTPUTZSNDLOCZTTYPEZEORZTUIDZOUTMRKZTTYLOCZVT3270REGIMEZX3PADZNAWSZTSPEEDZLFLOWZLINEMODEZXDISPLOCZOLD_ENVIRONZAUTHENTICATIONZENCRYPTZNEW_ENVIRONZTN3270EZXAUTHCHARSETZRSPZCOM_PORT_OPTIONZSUPPRESS_LOCAL_ECHOZTLSZKERMITZSEND_URLZ	FORWARD_XZPRAGMA_LOGONZ
SSPI_LOGONZPRAGMA_HEARTBEATZEXOPLr   r   rH   rr   ZSelectSelectorr   r   r   rZ   rZ   rZ   r[   <module>$   s   







































































   }
