o ?OgZ@sL ddlZddlZddlZddlmZdgZdZdZe dgZ e dgZ e dgZ e dgZ e d gZe dgZe d gZe d gZe d gZe d gZe dgZe dgZe dgZe dgZe dgZe dgZe dgZe dgZe dgZe dgZe dgZe dgZe dgZ e dgZ!e dgZ"e dgZ#e dgZ$e dgZ%e dgZ&e d gZ'e d!gZ(e d"gZ)e d#gZ*e d$gZ+e d%gZ,e d&gZ-e d'gZ.e d(gZ/e d)gZ0e d*gZ1e dgZ2e d+gZ3e d,gZ4e d-gZ5e d.gZ6e d/gZ7e d0gZ8e d1gZ9e d2gZ:e d3gZ;e d4gZe d7gZ?e d8gZ@e d9gZAe d:gZBe d;gZCe dgZFe d?gZGe d@gZHe dAgZIe dBgZJe dCgZKe dDgZLe dEgZMe dFgZNe dGgZOe dgZPe dgZQeRedHrejSZTnejUZTGdIddZVdJdKZWeXdLkreWdSdS)MN) monotonicTelnet  !"#$%&'()*+,-./01 PollSelectorc@seZdZ ddejfddZdejfddZddZd d Zd d Z d dZ ddZ ddZ ddZ d;ddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd;d5d6Zd7d8Zd9d:Z dS) ||js|r|||js|s |Srb)rxrS sock_availrrrer[r[r\read_very_eagerdszTelnet.read_very_eagercCsJ ||js!|js!|r!|||js!|js!|s|Srb)rxrRrSrrrrer[r[r\ read_eagerrszTelnet.read_eagercCs ||Srb)rxrrer[r[r\ read_lazyszTelnet.read_lazycCs* |j}d|_|s|jr|jstd|S)NrIztelnet connection closed)rRrSrPEOFErrorrr[r[r\rs zTelnet.read_very_lazycCs |j}d|_|Sr)rVrr[r[r\ read_sb_dataszTelnet.read_sb_datacCrlrb)rW)rZcallbackr[r[r\set_option_negotiation_callbackrpz&Telnet.set_option_negotiation_callbackcCs> ddg}z|jr|}|js1|tkrq|dkrq|tkr)||j|||j<q|j|7_nt|jdkr|ttt t fvrH|j|7_qd|_|tkrZ||j|||j<n|t kred|_d|_ n|t krxd|_|j |d|_ d|d<|jr||j|tnt|dt|njt|jdkr|jdd}d|_|}|ttfvr|d|tkrdpd t||jr||j||n6|jtt |n+|t t fvr|d|t krd pd t||jr||j||n |jtt||js Wnty d|_d|_Ynw|j|d|_|j |d|_ dS) NrIrrzIAC %d not recognizedrz IAC %s %dDODONTWILLWONT)rP rawq_getcharrTtheNULLrqrUrwrrrrSBrVSErWrONOOPTrjordrsrrR)rZrccmdoptr[r[r\rxst  8zTelnet.process_rawqcCs\ |js ||jr t|j|j|jd}|jd|_|jt|jkr,d|_d|_|S)NrrIr)rPrrSrrQrw)rZrr[r[r\rs zTelnet.rawq_getcharcCsN |jt|jkrd|_d|_|jd}|d|| |_|j||_dS)NrIr2zrecv %r)rQrwrPrOZrecvrjrSrr[r[r\rs  zTelnet.fill_rawqcCsH t}||tjt|dWdS1swYdSrv)r{r|r}r~boolr)rZrr[r[r\rs  $zTelnet.sock_availc Cs tjdkr |dStk}||tj|tjtj |D]T\}}|j |urZz| }Wnt yHt dYWddSw|rYtj |dtj q$|j tjurxtjd}|ssWddS||q$q 1s}wYdS)NZwin32T(*** Connection closed by remote host ***ascii)r_platform mt_interactr{r|r}r~stdinrZfileobjrrristdoutrudecodeflushreadlineencode)rZrkeyZeventstextliner[r[r\interacts<        zTelnet.interactcCs> ddl}||jd tj}|sdS||dq )Nrr[rr)_threadstart_new_threadlistenerr_rrrur)rZrrr[r[r\r3s zTelnet.mt_interactcCsR z|}WntytdYdSw|r#tj|dntjq)Nrrr)rrrir_rrurr)rZdatar[r[r\r=s   zTelnet.listenerc Csb d}|dd}tt|}|D]}t||ds)|s ddl}|||||<q|dur3t|}tc}||tj |j s| |D]-}|| |j }|rt|} |j d| } |j | d|_ ||| fWdSqG|dur||} |t}| s|dkrnq>||j rAWdn1swY|} | s|j rtdd| fS)Nsearchr)rangerwhasattrrecompilerzr{r|r}r~rSrxrrRrhrrrr) rZlistrNrindicesrrrmerZreadyr[r[r\expectJsN         z Telnet.expectcCs|Srbr[rer[r[r\ __enter__szTelnet.__enter__cCs |dSrbrc)rZtypevalue tracebackr[r[r\__exit__s zTelnet.__exit__rb)!__name__ __module__ __qualname__raZ_GLOBAL_DEFAULT_TIMEOUTr]rXrfrjrmrdrnrorurrrrrrrrrrxrrrrrrrrrr[r[r[r\rs@5   %    H 8 cCs d}tjddr'tjddkr'|d}tjd=tjddr'tjddksd}tjddr5tjd}d}tjddrYtjd}zt|}WntyXt|d}Ynwt}|||j||dd| WddS1sywYdS) Nrrz-dZ localhostrZtcpg?)rN) r_argvint ValueErrorraZ getservbynamerrmrXr)rKrLrMZportstrZtnr[r[r\tests,      "r__main__)Yr_rar}timerrz__all__rJr^bytesrqrrrrrrZNOPZDMZBRKZIPZAOZAYTZECZELZGArZBINARYZECHOZRCPZSGAZNAMSZSTATUSZTMZRCTEZNAOLZNAOPZNAOCRDZNAOHTSZNAOHTDZNAOFFDZNAOVTSZNAOVTDZNAOLFDZXASCIIZLOGOUTZBMZDETZSUPDUPZ SUPDUPOUTPUTZSNDLOCZTTYPEZEORZTUIDZOUTMRKZTTYLOCZ VT3270REGIMEZX3PADZNAWSZTSPEEDZLFLOWZLINEMODEZXDISPLOCZ OLD_ENVIRONZAUTHENTICATIONZENCRYPTZ NEW_ENVIRONZTN3270EZXAUTHCHARSETZRSPZCOM_PORT_OPTIONZSUPPRESS_LOCAL_ECHOZTLSZKERMITZSEND_URLZ FORWARD_XZ PRAGMA_LOGONZ SSPI_LOGONZPRAGMA_HEARTBEATZEXOPLrrrHr{ZSelectSelectorrrrr[r[r[r\s#