o
     JAfZ                     @   sL  	 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rejSZTnejUZTG dId dZVdJdK ZWeXdLkreW  dS 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   sn   	 t | _|| _|| _|| _d | _d| _d| _d| _d| _	d| _
d| _d| _d | _|d ur5| ||| d S d S )N    r   )
DEBUGLEVEL
debuglevelhostporttimeoutsockrawqirawqcookedqeofiacseqsbsbdataqoption_callbackopenselfrL   rM   rN    r[    /usr/lib/python3.10/telnetlib.py__init__   s"   zTelnet.__init__c                 C   sH   	 d| _ |st}|| _|| _|| _td| || t||f|| _	d S )Nr   ztelnetlib.Telnet.open)
rS   TELNET_PORTrL   rM   rN   sysauditsocketcreate_connectionrO   rY   r[   r[   r\   rX      s   zTelnet.openc                 C   s   	 |    d S NcloserZ   r[   r[   r\   __del__   s   zTelnet.__del__c                 G   sH   	 | j dkr"td| j| jf dd |rt||  d S t| d S d S )Nr   zTelnet(%s,%s): )end)rK   printrL   rM   )rZ   msgargsr[   r[   r\   rk      s   
z
Telnet.msgc                 C      	 || _ d S rc   )rK   )rZ   rK   r[   r[   r\   set_debuglevel   s   
zTelnet.set_debuglevelc                 C   s4   	 | j }d | _ d| _d| _d| _|r|  d S d S )NTrI   r   )rO   rS   rT   rU   re   )rZ   rO   r[   r[   r\   re     s   zTelnet.closec                 C   s   	 | j S rc   )rO   rf   r[   r[   r\   
get_socket  s   zTelnet.get_socketc                 C   s   	 | j  S rc   )rO   filenorf   r[   r[   r\   rp        
zTelnet.filenoc                 C   sD   	 t |v r|t t t  }td| | | d| | j| d S )Nztelnetlib.Telnet.writezsend %r)IACreplacer_   r`   rk   rO   sendall)rZ   bufferr[   r[   r\   write  s   zTelnet.writec                 C   sp  	 t |}|   | j|}|dkr(|| }| jd | }| j|d  | _|S |d ur1t | }t x}|| tj | j	s|
|r}tdt | j| }|   |   | j||}|dkr}|| }| jd | }| j|d  | _|W  d    S |d ur|t  }|dk rn| j	r?W d    |  S W d    |  S W d    |  S 1 sw   Y  |  S Nr   )lenprocess_rawqrR   find_time_TelnetSelectorregister	selectors
EVENT_READrS   selectmax	fill_rawqread_very_lazy)rZ   matchrN   nibufdeadlineselectorr[   r[   r\   
read_until&  sP   





zTelnet.read_untilc                 C   s6   	 |    | js|   |    | jr| j}d| _|S NrI   )ry   rS   r   rR   rZ   r   r[   r[   r\   read_allK  s   zTelnet.read_allc                 C   sB   	 |    | js| js|   |    | js| jr| j}d| _|S r   )ry   rR   rS   r   r   r[   r[   r\   	read_someU  s   zTelnet.read_somec                 C   s>   	 |    | js|  r|   |    | js|  s|  S rc   )ry   rS   
sock_availr   r   rf   r[   r[   r\   read_very_eagerd  s   zTelnet.read_very_eagerc                 C   sJ   	 |    | js!| js!|  r!|   |    | js!| js!|  s|  S rc   )ry   rR   rS   r   r   r   rf   r[   r[   r\   
read_eagerr  s   zTelnet.read_eagerc                 C   s   	 |    |  S rc   )ry   r   rf   r[   r[   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   EOFErrorr   r[   r[   r\   r     s   zTelnet.read_very_lazyc                 C   s   	 | j }d| _ |S r   )rV   r   r[   r[   r\   read_sb_data  s   zTelnet.read_sb_datac                 C   rm   rc   )rW   )rZ   callbackr[   r[   r\   set_option_negotiation_callback  rq   z&Telnet.set_option_negotiation_callbackc                 C   s>  	 ddg}z| j r|  }| js1|tkrq|dkrq|tkr)|| j | || j< q|  j|7  _nt| jdkr|ttt	t
fv rH|  j|7  _qd| _|tkrZ|| j | || j< n|tkred| _d| _n|tkrxd| _| j|d  | _d|d< | jr| | j|t nt| dt|  njt| jdkr| jdd }d| _|}|ttfv r| d|tkrdpd	t| | jr| | j|| n6| jtt
 |  n+|t	t
fv r| d|t	krd
pdt| | jr| | j|| n
| jtt |  | j s	W n ty   d| _d| _Y nw | 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   theNULLrr   rU   rx   r   r   r   r   SBrV   SErW   rO   NOOPTrk   ordrt   r   rR   )rZ   r   ccmdoptr[   r[   r\   ry     st   8zTelnet.process_rawqc                 C   s\   	 | j s|   | jrt| j | j| jd  }| jd | _| jt| j kr,d| _ d| _|S )Nr   rI   r   )rP   r   rS   r   rQ   rx   )rZ   r   r[   r[   r\   r     s   zTelnet.rawq_getcharc                 C   sN   	 | j t| jkrd| _d| _ | jd}| d| | | _| j| | _d S )NrI   r   2   zrecv %r)rQ   rx   rP   rO   recvrk   rS   r   r[   r[   r\   r     s   zTelnet.fill_rawqc                 C   sH   	 t  }|| tj t|dW  d    S 1 sw   Y  d S rw   )r|   r}   r~   r   boolr   )rZ   r   r[   r[   r\   r     s
   $zTelnet.sock_availc              
   C   s  	 t jdkr|   d S t k}|| tj |t jtj 	 | D ]T\}}|j	| u rZz| 
 }W n tyH   td Y  W d    d S w |rYt j|d t j  q$|j	t ju rxt j d}|ss W d    d S | | q$q 1 s}w   Y  d S )Nwin32T(*** Connection closed by remote host ***ascii)r_   platformmt_interactr|   r}   r~   r   stdinr   fileobjr   r   rj   stdoutrv   decodeflushreadlineencode)rZ   r   keyeventstextliner[   r[   r\   interact  s<   

	

zTelnet.interactc                 C   s>   	 dd l }|| jd 	 tj }|sd S | |d q)Nr   r[   r   r   )_threadstart_new_threadlistenerr_   r   r   rv   r   )rZ   r   r   r[   r[   r\   r   3  s   
zTelnet.mt_interactc                 C   sR   	 	 z|   }W n ty   td Y d S w |r#tj|d ntj  q)Nr   r   r   )r   r   rj   r_   r   rv   r   r   )rZ   datar[   r[   r\   r   =  s   
zTelnet.listenerc                 C   sb  	 d }|d d  }t t|}|D ]}t|| ds)|s dd l}||| ||< q|d ur3t | }t c}|| tj	 | j
s|   |D ]-}|| | j}|rt| }	| jd |	 }
| j|	d  | _|||
f  W  d    S qG|d ur||}|t  }|s|dk rnq>|   | j
rAW d    n1 sw   Y  |  }
|
s| j
rtdd |
fS )Nsearchr   )rangerx   hasattrrecompiler{   r|   r}   r~   r   rS   ry   r   rR   ri   r   r   r   r   )rZ   listrN   r   indicesr   r   r   mer   readyr[   r[   r\   expectJ  sN   




zTelnet.expectc                 C   s   | S rc   r[   rf   r[   r[   r\   	__enter__  s   zTelnet.__enter__c                 C   s   |    d S rc   rd   )rZ   typevalue	tracebackr[   r[   r\   __exit__  s   zTelnet.__exit__rc   )!__name__
__module____qualname__ra   _GLOBAL_DEFAULT_TIMEOUTr]   rX   rg   rk   rn   re   ro   rp   rv   r   r   r   r   r   r   r   r   r   ry   r   r   r   r   r   r   r   r   r   r[   r[   r[   r\   r      s@    5


%
H

8c                  C   s   	 d} t jdd  r't jd dkr'| d } t jd= t jdd  r't jd dksd}t jdd  r5t jd }d}t jdd  rYt jd }zt|}W n tyX   t|d}Y nw t }||  |j||dd |	  W d    d S 1 syw   Y  d S )	Nr   r   z-d	localhostr   Ztcpg      ?)rN   )
r_   argvint
ValueErrorra   getservbynamer   rn   rX   r   )rK   rL   rM   Zportstrtnr[   r[   r\   test  s,   



"r   __main__)Yr_   ra   r~   timer   r{   __all__rJ   r^   bytesrr   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   r|   SelectSelectorr   r   r   r[   r[   r[   r\   <module>   s    #







































































   

