B
    u9a_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|  |||¡ 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/lib/python3.7/telnetlib.pyÚ__init__Ä   s    zTelnet.__init__c             C   s6   d| _ |st}|| _|| _|| _t ||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   |   ¡  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*| ¡  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  ¡ S )N)rO   Úfileno)rY   rZ   rZ   r[   rh     s    zTelnet.filenoc             C   s4   t |kr| t t t  ¡}|  d|¡ | j |¡ d S )Nzsend %r)ÚIACÚreplacerd   rO   Úsendall)rY   ÚbufferrZ   rZ   r[   Úwrite  s    zTelnet.writec          	   C   s   t |ƒ}|  ¡  | j |¡}|dkrN|| }| jd |… }| j|d … | _|S |d k	r`tƒ | }tƒ ¬}| | tj¡ x–| j	s| 
|¡rîtdt | jƒ| ƒ}|  ¡  |  ¡  | j ||¡}|dkrî|| }| jd |… }| j|d … | _|S |d k	rx|tƒ  }|dk rxP qxW W d Q R X |  ¡ 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   |   ¡  x| js"|  ¡  |   ¡  q
W | j}d| _|S )NrI   )ro   rS   rx   rR   )rY   r}   rZ   rZ   r[   Úread_allI  s    zTelnet.read_allc             C   s:   |   ¡  x | js(| js(|  ¡  |   ¡  q
W | j}d| _|S )NrI   )ro   rR   rS   rx   )rY   r}   rZ   rZ   r[   Ú	read_someS  s    zTelnet.read_somec             C   s4   |   ¡  x"| js*|  ¡ r*|  ¡  |   ¡  q
W |  ¡ S )N)ro   rS   Ú
sock_availrx   ry   )rY   rZ   rZ   r[   Úread_very_eagerb  s
    zTelnet.read_very_eagerc             C   s:   |   ¡  x(| js0| js0|  ¡ r0|  ¡  |   ¡  q
W |  ¡ S )N)ro   rR   rS   rƒ   rx   ry   )rY   rZ   rZ   r[   Ú
read_eagerp  s
    zTelnet.read_eagerc             C   s   |   ¡  |  ¡ S )N)ro   ry   )rY   rZ   rZ   r[   Ú	read_lazy~  s    zTelnet.read_lazyc             C   s(   | j }d| _ |s$| jr$| js$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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rÔd| _d| _n&|tkrúd| _| j|d  | _d|d< | jr|  | j|t¡ n|  dt|ƒ ¡ qt| jƒdkr| jdd… }d| _|}|ttfkr®|  d|tkrrdptd	t|ƒ¡ | jr˜|  | j||¡ n| j tt
 | ¡ q|t	t
fkr|  d|t	krÐd
pÒdt|ƒ¡ | jrö|  | j||¡ q| 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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 d¡}|  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 ƒ }| | tj¡ t| 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|  ¡  d S tƒ Ä}| | tj¡ | t jtj¡ xžx˜| ¡ D ]Œ\}}|j	| kr¦y|  
¡ }W n tk
r‚   tdƒ d S X |rÔt j | d¡¡ t j ¡  qH|j	t jkrHt j ¡  d¡}|sÊd S |  |¡ qHW q>W W d Q R X d S )NÚ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d¡ x$tj ¡ }|s(P |  | d¡¡ qW d S )Nr   rZ   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|   ¡ }W n tk
r*   tdƒ d S X |rDtj | d¡¡ qt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   sN  d }|d d … }t t|ƒƒ}x8|D ]0}t|| dƒs"|s@dd l}| || ¡||< q"W |d k	rhtƒ | }tƒ ¶}| | tj	¡ x | j
s|  ¡  xP|D ]H}||  | j¡}|r–| ¡ }	| jd |	… }
| j|	d … | _|||
fS q–W |d k	r| |¡}|tƒ  }|s|dk r€P nq€|  ¡  q€W W d Q R X |  ¡ }
|
sD| j
rDt‚dd |
fS )NÚsearchr   éÿÿÿÿ)Ú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   |   ¡  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 … rœt jd }yt|ƒ}W n  tk
rš   t |d¡}Y nX tƒ (}| | ¡ |j||dd | 	¡  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portstrÚ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°   







































































   }
