ϪfddlZddlmZddlmZddlmZdZdZdZ da da d a d a d ad ad ad ad ad ad a d Zgd Zd Zd ZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#GddejHZ%dZ&dZ'dZ(dZ)e*dk(re)yy) N)reactor)Factory)basictesttwistediLTFs(+OK POP3 localhost v2003.83 server ready)sTOPsLOGIN-DELAY 180USERs SASL LOGINSTLSUIDLs-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:cJeZdZd dZdZdZdZdZdZdZ d Z d Z d Z y) POP3TestServerNc<d|_d|_d|_||_y)NF)loggedIncapstmpUserctx)selfcontextFactorys B/usr/lib/python3/dist-packages/twisted/mail/test/pop3testserver.py__init__zPOP3TestServer.__init__6s   !c.|jtyN)sendLineSTATrreqs r sendSTATRespzPOP3TestServer.sendSTATResp< drc.|jtyr)rUIDLrs r sendUIDLRespzPOP3TestServer.sendUIDLResp?rrc.|jtyr)rLISTrs r sendLISTRespzPOP3TestServer.sendLISTRespBrrcv|j tg|_tr|jjtt r|jjt tD]}|jj|dj|j}|dz }|j|y)Ns s .) r CAP_START UIDL_SUPPORTappendCAPABILITIES_UIDL SSL_SUPPORTCAPABILITIES_SSL CAPABILITIESjoinr)rcapresps rsendCapabilitieszPOP3TestServer.sendCapabilitiesEs 99 " DI  II  . /  II  - . "C II  S ! "||DII&  drctr|jytr!tjd|j y|j y)N)DENY_CONNECTION disconnect SLOW_GREETINGr callLater sendGreetingrs rconnectionMadezPOP3TestServer.connectionMadeVs9  OO      b$"3"3 4    rc.|jtyr)rCONNECTION_MADEr8s rr7zPOP3TestServer.sendGreetingas o&rc@|jfd}trytr|jy|dr-tr|j t y|jy|drtr|jy|drPtr|j t yd} |jdd|_ t}|j |y|drnd} |jdd}|j|t}n0|jt k(r|t"k(rt$}d |_nt}|j |y|d r-d |_|j t(|jyt*r|j t y|j&s|j t,y|d r|j ty|d rt.ry|j t0y|drt.ry|j t2y|dr9t.ryt4s|j t y|j t6yy#t$r t}YwxYw#t$r t}YWwxYw)zError Conditionsc,j|dk7S)N)find)sulines rz-POP3TestServer.lineReceived..hsA",rNsCAPAr r sPASSTsQUITFsNOOPsSTATsLISTr )upperTIMEOUT_RESPONSEDROP_CONNECTIONr4INVALID_CAPABILITY_RESPONSErINVALID_RESPONSEr0r*startTLSINVALID_LOGIN_RESPONSEsplitrVALID_RESPONSE BaseException AUTH_DECLINEDUSERPASS AUTH_ACCEPTEDrLOGOUT_COMPLETEINVALID_SERVER_RESPONSE NOT_LOGGED_INTIMEOUT_DEFERREDrr#r'r )rliner?r/pwdrAs @r lineReceivedzPOP3TestServer.lineReceivedds ,    OO   ']* ./%%' ']{ MMO ']% ./D %#zz#q1 % MM$  ']D %jjoa(<<'3;(D\\T)cTk(D$(DM(D MM$  ']!DM MM/ * OO  $ MM* + MM- ( '] MM. ) '] MM$  '] MM$  ']! ./ MM$ ]! %$ %"! %$ %s%0I4,AJ 4JJ JJctrC|j7|jd|jj |jy|jdy)Ns+OK Begin TLS negotiation nows-ERR TLS not available)r*rr transportrJr8s rrJzPOP3TestServer.startTLSs> 488/ MM: ; NN # #DHH - MM3 4rc8|jjyr)r[loseConnectionr8s rr4zPOP3TestServer.disconnects %%'rr) __name__ __module__ __qualname__rrr!r$r0r9r7rYrJr4rrr r 5s6" "  'U n5(rr apopServer.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 c td|zy)NzServer Starting in %s mode)print)msgs r printMessageres & ,-rc|jdk(rdatdy|jdk(rdatdy|jdk(rdatdy|jd k(rdatd y|jd k(rdatd y|jd k(rdatd y|jdk(rdatdy|jdk(rda tdy|jdk(rda tdy|jdk(rda tdy|jdk(rda tdy|jdk(r$tttj ytttj y)Nno_sslFzNON-SSLno_uidlzNON-UIDLbad_respTzInvalid Server Response bad_cap_respzInvalid Capability Responsebad_login_respdenyzDeny ConnectiondropzDrop Connectionbad_tlszBad TLS ResponsetimeoutzTimeout Response to_deferredzTimeout Deferred Responseslowz Slow Greetingz--help)lowerr*rer'rTrHrKr3rGBAD_TLS_RESPONSErFrVr5rcusagesysexit)args r processArgrxsj yy{h Y  ! Z  ""&./  &&*#23 ( (!%23  &'  &'  !'(  !'(  %01   _%   e    e   rc$ttjdkr tdn%tjdd}|D] }t |t }t |_tjt|tjy)NzPOP3 with no messagesrD) lenruargvrerxrr protocolr listenTCPPORTrun)argsrwfs rmainrsi 388}q,-xx| C sO   AAJ dA KKMr__main__)+rutwisted.internetrtwisted.internet.protocolrtwisted.protocolsrrPrQrr*r'rTrHrKr3rGrsrFrVr5r;r,r+r)rIrMrOrR TLS_ERRORrSrUrr r#r& LineReceiverr rtrerxrr^rarrrs $-#    # =C +)$ / 9 ': ,/ + N(U''N(b  .>B  zFr