3 \`Z�@sFddlZddlZddlZddlmZdgZdZdZe dg�Z e dg�Z e dg�Z e dg�Z e d g�Ze dg�Ze d g�Ze d g�Ze d g�Ze d g�Ze dg�Ze dg�Ze dg�Ze dg�Ze dg�Ze dg�Ze dg�Ze dg�Ze dg�Ze dg�Ze dg�Ze dg�Ze dg�Z e dg�Z!e dg�Z"e dg�Z#e dg�Z$e dg�Z%e dg�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 dg�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�Ze d7g�Z?e d8g�Z@e d9g�ZAe d:g�ZBe d;g�ZCe dg�ZFe d?g�ZGe d@g�ZHe dAg�ZIe dBg�ZJe dCg�ZKe dDg�ZLe dEg�ZMe dFg�ZNe dGg�ZOe dg�ZPe dg�ZQeRedH��rejSZTnejUZTGdId�d�ZVdJdK�ZWeXdLk�rBeW�dS)M�N)� monotonic�Telnet������������������������������������������ � � � � ������������������ �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/�0�1���� PollSelectorc@seZdZddejfdd�Zdejfdd�Zdd�Zd d �Zd d �Z d d�Z dd�Z dd�Z dd�Z d;dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd|j�x$|j r,|j r,|j�|j�q W|j}d|_|S)NrI)rorRrSrx)rYr}rZrZr[� read_someSs zTelnet.read_somecCs6|j�x$|j r,|j�r,|j�|j�q W|j�S)N)rorS� sock_availrxry)rYrZrZr[�read_very_eagerbs  zTelnet.read_very_eagercCs>|j�x,|j r4|j r4|j�r4|j�|j�q W|j�S)N)rorRrSr�rxry)rYrZrZr[� read_eagerps  zTelnet.read_eagercCs|j�|j�S)N)rory)rYrZrZr[� read_lazy~szTelnet.read_lazycCs,|j}d|_| r(|jr(|j r(td��|S)NrIztelnet connection closed)rRrSrP�EOFError)rYr}rZrZr[ry�s zTelnet.read_very_lazycCs|j}d|_|S)NrI)rV)rYr}rZrZr[� read_sb_data�szTelnet.read_sb_datacCs ||_dS)N)rW)rY�callbackrZrZr[�set_option_negotiation_callback�sz&Telnet.set_option_negotiation_callbackc CsXddg}�y�x�|j�r |j�}|jsj|tkr0q|dkr:q|tkrZ||j|||j<qn|j|7_qt|j�dk�r(|ttt t fkr�|j|7_qd|_|tkr�||j|||j<nh|t kr�d|_d|_ n&|t kr�d|_|j |d|_ d|d<|j�r|j|j|t�n|jdt|��qt|j�dkr|jdd�}d|_|}|ttfk�r�|jd|tk�rrd�ptd t|��|j�r�|j|j||�n|jjtt |�q|t t fkr|jd|t k�r�d �p�d t|��|j�r�|j|j||�q|jjtt|�qWWn"tk �r2d|_d|_YnX|j|d|_|j |d|_ dS) NrI�rrzIAC %d not recognizedrz IAC %s %d�DO�DONT�WILL�WONT)rP� rawq_getcharrT�theNULLrirUrnr�r�r�r��SBrV�SErWrO�NOOPTrd�ordrkr�rR)rYr}�c�cmd�optrZrZr[ro�sh  zTelnet.process_rawqcCsZ|js|j�|jrt�|j|j|jd�}|jd|_|jt|j�krVd|_d|_|S)NrrIr)rPrxrSr�rQrn)rYr�rZrZr[r��s zTelnet.rawq_getcharcCsL|jt|j�krd|_d|_|jjd�}|jd|�| |_|j||_dS)NrIr�2zrecv %r)rQrnrPrOZrecvrdrS)rYr}rZrZr[rxs  zTelnet.fill_rawqc Cs.t��}|j|tj�t|jd��SQRXdS)Nr)rrrsrtru�boolrv)rYrrZrZr[r�szTelnet.sock_availcCs�tjdkr|j�dSt���}|j|tj�|jtjtj�x�x�|j�D]�\}}|j |kr�y |j �}Wnt k r�t d�dSX|r�tj j|jd��tj j�qH|j tjkrHtjj�jd�}|s�dS|j|�qHWq>WWdQRXdS)NZwin32z(*** Connection closed by remote host ***�ascii)�sys�platform� mt_interactrrrsrtru�stdinrvZfileobjr�r�rc�stdoutrm�decode�flush�readline�encode)rYr�keyZevents�text�linerZrZr[�interacts,     zTelnet.interactcCs@ddl}|j|jf�x$tjj�}|s(P|j|jd��qWdS)Nrr�)�_thread�start_new_thread�listenerr�r�r�rmr�)rYr�r�rZrZr[r�1s zTelnet.mt_interactc CsVxPy |j�}Wntk r*td�dSX|rDtjj|jd��qtjj�qWdS)Nz(*** Connection closed by remote host ***r�)r�r�rcr�r�rmr�r�)rY�datarZrZr[r�;s zTelnet.listenerc CsPd}|dd�}tt|��}x8|D]0}t||d�s"|s@ddl}|j||�||<q"W|dk rht�|}t���}|j|tj �x�|j �s|j �xP|D]H}||j |j �}|r�|j�} |j d| �} |j | d�|_ ||| fSq�W|dk �r|j|�} |t�}| �s|dkr�Pnq�|j�q�WWdQRX|j�} | �rF|j �rFt�dd| fS)N�searchrr�����)�rangern�hasattr�re�compilerqrrrsrtrurSror�rRrbrvrxryr�) rY�listrNr��indicesr|r~r�m�er�ZreadyrZrZr[�expectHsB         z Telnet.expectcCs|S)NrZ)rYrZrZr[� __enter__�szTelnet.__enter__cCs |j�dS)N)r_)rY�type�value� tracebackrZrZr[�__exit__�szTelnet.__exit__)N)N)!�__name__� __module__� __qualname__r^Z_GLOBAL_DEFAULT_TIMEOUTr\rXr`rdrfr_rgrhrmr�r�r�r�r�r�ryr�r�ror�rxr�r�r�r�r�r�r�rZrZrZr[r�s:7  %    H  8cCs�d}x0tjdd�r4tjddkr4|d}tjd=qWd}tjdd�rRtjd}d}tjdd�r�tjd}y t|�}Wn tk r�tj|d�}YnXt��(}|j|�|j||dd�|j �WdQRXdS) Nrrz-dZ localhostrZtcpg�?)rN) r��argv�int� ValueErrorr^Z getservbynamerrfrXr�)rKrLrMZportstrZtnrZrZr[�test�s$     r��__main__)Yr�r^rtZtimerrq�__all__rJr]�bytesrir�r�r�r�r�r�ZNOPZDMZBRKZIPZAOZAYTZECZELZGAr�ZBINARYZECHOZRCPZSGAZNAMSZSTATUSZTMZRCTEZNAOLZNAOPZNAOCRDZNAOHTSZNAOHTDZNAOFFDZNAOVTSZNAOVTDZNAOLFDZXASCIIZLOGOUTZBMZDETZSUPDUPZ SUPDUPOUTPUTZSNDLOCZTTYPEZEORZTUIDZOUTMRKZTTYLOCZ VT3270REGIMEZX3PADZNAWSZTSPEEDZLFLOWZLINEMODEZXDISPLOCZ OLD_ENVIRONZAUTHENTICATIONZENCRYPTZ NEW_ENVIRONZTN3270EZXAUTH�CHARSETZRSPZCOM_PORT_OPTIONZSUPPRESS_LOCAL_ECHOZTLSZKERMITZSEND_URLZ FORWARD_XZ PRAGMA_LOGONZ SSPI_LOGONZPRAGMA_HEARTBEATZEXOPLr�r�rHrrZSelectSelectorrr�r�rZrZrZr[�$s�                                                                          }