o 5Ä@g# ã@sêddlZddlmZddlmZddlmZdZdZdZ da da d a d a d ad ad ad ad ad ad a d Zgd ¢Zd Zd ZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#Gdd„dej$ƒZ%dZ&dd„Z'dd„Z(d d!„Z)e*d"krse)ƒdSdS)#éN)Úreactor)ÚFactory)ÚbasicÚtestÚtwistediLTFs(+OK POP3 localhost v2003.83 server ready)sTOPsLOGIN-DELAY 180óUSERs SASL LOGINóSTLSóUIDLs-ERR Unknown requests+OK Command Completeds-ERR LOGIN faileds+OK Mailbox open, 0 messagess*-ERR server side error start TLS handshakes+OK quit completeds'-ERR Unknown AUHORIZATION state commands+OK 0 0s +OK Unique-ID listing follows .s#+OK Mailbox scan listing follows .s+OK Capability list follows:c@sfeZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dS)ÚPOP3TestServerNcCsd|_d|_d|_||_dS)NF)ÚloggedInÚcapsÚtmpUserÚctx)ÚselfÚcontextFactory©rúB/usr/lib/python3/dist-packages/twisted/mail/test/pop3testserver.pyÚ__init__6s zPOP3TestServer.__init__cCó| t¡dS©N)ÚsendLineÚSTAT©rÚreqrrrÚ sendSTATResp<ózPOP3TestServer.sendSTATRespcCrr)rÚUIDLrrrrÚ sendUIDLResp?rzPOP3TestServer.sendUIDLRespcCrr)rÚLISTrrrrÚ sendLISTRespBrzPOP3TestServer.sendLISTRespcCsj|jdur tg|_tr|j t¡tr|j t¡tD]}|j |¡qd |j¡}|d7}|  |¡dS)Ns s .) r Ú CAP_STARTÚ UIDL_SUPPORTÚappendÚCAPABILITIES_UIDLÚ SSL_SUPPORTÚCAPABILITIES_SSLÚ CAPABILITIESÚjoinr)rÚcapÚresprrrÚsendCapabilitiesEs    zPOP3TestServer.sendCapabilitiescCs2tr| ¡dStrt d|j¡dS| ¡dS)Né)ÚDENY_CONNECTIONÚ disconnectÚ SLOW_GREETINGrÚ callLaterÚ sendGreeting©rrrrÚconnectionMadeVs  zPOP3TestServer.connectionMadecCrr)rÚCONNECTION_MADEr1rrrr0arzPOP3TestServer.sendGreetingcs| ¡‰‡fdd„}trdStr| ¡dS|dƒr)tr#| t¡dS| ¡dS|dƒr5tr5|  ¡dS|dƒrct rB| t¡dSd}z |  d¡d|_ t }Wn ty[t}Ynw| |¡dS|d ƒr¢d}z&|  d¡d}|j dusz|dur}t}n|j tkrŒ|tkrŒt}d |_nt}Wn tyšt}Ynw| |¡dS|d ƒr´d |_| t¡| ¡dStr½| t¡dS|jsÇ| t¡dS|d ƒrÒ| t ¡dS|dƒrátrÚdS| t¡dS|dƒrðtrédS| t¡dS|dƒr trùdSts| t¡dS| t¡dSdS)zError Conditionscsˆ |¡dkS)Néÿÿÿÿ)Úfind)Ús©ÚulinerrÚhsz-POP3TestServer.lineReceived..NsCAPArrú ésPASSTsQUITFsNOOPsSTATsLISTr )ÚupperÚTIMEOUT_RESPONSEÚDROP_CONNECTIONr-ÚINVALID_CAPABILITY_RESPONSErÚINVALID_RESPONSEr*r$ÚstartTLSÚINVALID_LOGIN_RESPONSEÚsplitr ÚVALID_RESPONSEÚ BaseExceptionÚ AUTH_DECLINEDÚUSERÚPASSÚ AUTH_ACCEPTEDr ÚLOGOUT_COMPLETEÚINVALID_SERVER_RESPONSEÚ NOT_LOGGED_INÚTIMEOUT_DEFERREDrrr!r)rÚliner5r)Úpwdrr7rÚ lineReceivedds„      ÿ€ ÿ    ùzPOP3TestServer.lineReceivedcCsJ|jdur | ¡tr|jdur| d¡|j |j¡dS| d¡dS)Ns+OK Begin TLS negotiation nows-ERR TLS not available)rÚ getContextr$rÚ transportrAr1rrrrA»s  zPOP3TestServer.startTLScCs|j ¡dSr)rRÚloseConnectionr1rrrr-ÅrzPOP3TestServer.disconnectcCsFzddlm}Wn tyd|_YdSw| ¡|_|jj|j_dS)Nr)Ússl)Útwisted.internetrTÚ ImportErrorrÚClientContextFactoryÚSSLÚ TLSv1_METHODÚmethod)rrTrrrrQÈs  ÿ zPOP3TestServer.getContextr)Ú__name__Ú __module__Ú __qualname__rrrrr*r2r0rPrAr-rQrrrrr 5s  W r aüpopServer.py [arg] (default is Standard POP Server with no messages) no_ssl - Start with no SSL support no_uidl - Start with no UIDL support bad_resp - Send a non-RFC compliant response to the Client bad_cap_resp - send a non-RFC compliant response when the Client sends a 'CAPABILITY' request bad_login_resp - send a non-RFC compliant response when the Client sends a 'LOGIN' request deny - Deny the connection drop - Drop the connection after sending the greeting bad_tls - Send a bad response to a STARTTLS timeout - Do not return a response to a Client request to_deferred - Do not return a response on a 'Select' request. This will test Deferred callback handling slow - Wait 20 seconds after the connection is made to return a Server Greeting cCstd|ƒdS)NzServer Starting in %s mode)Úprint)ÚmsgrrrÚ printMessageâsr`cCsh| ¡dkrdatdƒdS| ¡dkrdatdƒdS| ¡dkr*datdƒdS| ¡d kr8datd ƒdS| ¡d krFdatd ƒdS| ¡d krTdatd ƒdS| ¡dkrbdatdƒdS| ¡dkrpda tdƒdS| ¡dkr~da tdƒdS| ¡dkrŒda tdƒdS| ¡dkršda tdƒdS| ¡dkrªt tƒt ¡dSt tƒt ¡dS)NÚno_sslFzNON-SSLÚno_uidlzNON-UIDLÚbad_respTzInvalid Server ResponseÚ bad_cap_respzInvalid Capability ResponseÚbad_login_respÚdenyzDeny ConnectionÚdropzDrop ConnectionÚbad_tlszBad TLS ResponseÚtimeoutzTimeout ResponseÚ to_deferredzTimeout Deferred ResponseÚslowz Slow Greetingz--help)Úlowerr$r`r!rKr?rBr,r>ÚBAD_TLS_RESPONSEr=rMr.r^ÚusageÚsysÚexit)ÚargrrrÚ processArgæsL                         rrcCs\ttjƒdkr tdƒntjdd…}|D]}t|ƒqtƒ}t|_t  t |¡t  ¡dS)NézPOP3 with no messagesr;) ÚlenroÚargvr`rrrr ÚprotocolrÚ listenTCPÚPORTÚrun)ÚargsrqÚfrrrÚmain(s    r|Ú__main__)+rorUrÚtwisted.internet.protocolrÚtwisted.protocolsrrGrHrxr$r!rKr?rBr,r>rmr=rMr.r3r&r%r#r@rDrFrIÚ TLS_ERRORrJrLrrrr Ú LineReceiverr rnr`rrr|r[rrrrÚsV   B ÿ