Ë
    ojå  ã                   ó  — d dl Z d dlmZ d dlmZ d dlmZ dZdZdZ	da
dad	ad	ad	ad	ad	ad	ad	ad	ad	a	 d
Zg d¢ZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ# G d„ dejH                  «      Z%dZ&d„ Z'd„ Z(d„ Z)e*dk(  r e)«        yy) é    N)Úreactor)ÚFactory)ÚbasicÚtestÚtwistediL  TFs(   +OK POP3 localhost v2003.83 server ready)s   TOPs   LOGIN-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                   óJ   — e Zd Zdd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
d
„ Zd„ Zy)ÚPOP3TestServerNc                 ó<   — d| _         d | _        d | _        || _        y )NF)ÚloggedInÚcapsÚtmpUserÚctx)ÚselfÚcontextFactorys     úB/usr/lib/python3/dist-packages/twisted/mail/test/pop3testserver.pyÚ__init__zPOP3TestServer.__init__6   s   € ØˆŒØˆŒ	ØˆŒØ!ˆ�ó    c                 ó.   — | j                  t        «       y ©N)ÚsendLineÚSTAT©r   Úreqs     r   ÚsendSTATRespzPOP3TestServer.sendSTATResp<   ó   € Ø�‰”dÕr   c                 ó.   — | j                  t        «       y r   )r   ÚUIDLr   s     r   ÚsendUIDLRespzPOP3TestServer.sendUIDLResp?   r   r   c                 ó.   — | j                  t        «       y r   )r   ÚLISTr   s     r   ÚsendLISTRespzPOP3TestServer.sendLISTRespB   r   r   c                 óv  — | j                   €t        g| _         t        r| j                   j                  t        «       t
        r| j                   j                  t        «       t        D ]  }| j                   j                  |«       Œ dj                  | j                   «      }|dz  }| j                  |«       y )Ns   
s   
.)
r   Ú	CAP_STARTÚUIDL_SUPPORTÚappendÚCAPABILITIES_UIDLÚSSL_SUPPORTÚCAPABILITIES_SSLÚCAPABILITIESÚjoinr   )r   ÚcapÚresps      r   ÚsendCapabilitieszPOP3TestServer.sendCapabilitiesE   sŠ   € Ø�9‰9ÐÜ"˜ˆDŒIåØ�I‰I×ÑÔ.Ô/åØ�I‰I×ÑÔ-Ô.äò 	"ˆCØ�I‰I×Ñ˜SÕ!ð	"à�|‰|˜DŸI™IÓ&ˆØ�Ñˆà�‰�dÕr   c                 ó    — t         r| j                  «        y t        r!t        j                  d| j
                  «       y | j                  «        y )Né   )ÚDENY_CONNECTIONÚ
disconnectÚSLOW_GREETINGr   Ú	callLaterÚsendGreeting©r   s    r   ÚconnectionMadezPOP3TestServer.connectionMadeV   s9   € ÝØ�O‰OÔØåÜ×Ñ˜b $×"3Ñ"3Õ4ð ×ÑÕr   c                 ó.   — | j                  t        «       y r   )r   ÚCONNECTION_MADEr8   s    r   r7   zPOP3TestServer.sendGreetinga   s   € Ø�‰”oÕ&r   c                 ó@  ‡— |j                  «       Šˆfd„}t        ryt        r| j                  «        y |d«      r-t        r| j                  t        «       y| j                  «        y |d«      rt        r| j                  «        y |d«      rPt        r| j                  t        «       yd}	 |j                  d«      d   | _        t        }| j                  |«       y |d«      rnd}	 |j                  d«      d   }| j                  �|€t        }n0| j                  t         k(  r|t"        k(  rt$        }d	| _        nt        }| j                  |«       y |d
«      r-d| _        | j                  t(        «       | j                  «        yt*        r| j                  t        «       y| j&                  s| j                  t,        «       y |d«      r| j                  t        «       y |d«      rt.        ry| j                  t0        «       y |d«      rt.        ry| j                  t2        «       y |d«      r9t.        ryt4        s| j                  t        «       y| j                  t6        «       yy# t        $ r
 t        }Y �Œ·w xY w# t        $ r
 t        }Y �ŒWw xY w)zError Conditionsc                 ó,   •— ‰j                  | «      dk7  S )Néÿÿÿÿ)Úfind)ÚsÚulines    €r   ú<lambda>z-POP3TestServer.lineReceived.<locals>.<lambda>h   s   ø€ ˜Ÿ™ A›¨"Ñ,€ r   Ns   CAPAr	   r   ú é   s   PASSTs   QUITFs   NOOPs   STATs   LISTr
   )ÚupperÚTIMEOUT_RESPONSEÚDROP_CONNECTIONr4   ÚINVALID_CAPABILITY_RESPONSEr   ÚINVALID_RESPONSEr0   r*   ÚstartTLSÚINVALID_LOGIN_RESPONSEÚsplitr   ÚVALID_RESPONSEÚBaseExceptionÚAUTH_DECLINEDÚUSERÚPASSÚAUTH_ACCEPTEDr   ÚLOGOUT_COMPLETEÚINVALID_SERVER_RESPONSEÚNOT_LOGGED_INÚTIMEOUT_DEFERREDr   r#   r'   r    )r   Úliner?   r/   ÚpwdrA   s        @r   ÚlineReceivedzPOP3TestServer.lineReceivedd   sû  ø€ ð —
‘
“ˆÛ,ˆåàåØ�O‰OÔØá�'Œ]Ý*Ø—‘Ô.Õ/à×%Ñ%Õ'á�'Œ]�{Ø�M‰M�Oá�'Œ]Ý%Ø—‘Ô.Ô/ØàˆDð%Ø#Ÿz™z¨#›¨qÑ1�”Ü%�ð �M‰M˜$Õá�'Œ]ØˆDð%Ø—j‘j “o aÑ(�à—<‘<Ð'¨3¨;Ü(‘DØ—\‘\¤TÒ)¨c´TªkÜ(�DØ$(�D•Mä(�Dð �M‰M˜$Õá�'Œ]Ø!ˆDŒMØ�M‰Mœ/Ô*Ø�O‰OÕå$Ø�M‰MÔ*Õ+à—’Ø�M‰Mœ-Õ(á�'Œ]Ø�M‰Mœ.Õ)á�'Œ]ÝØØ�M‰Mœ$Õá�'Œ]ÝØØ�M‰Mœ$Õá�'Œ]ÝØÝ!Ø—‘Ô.Ô/Øà�M‰Mœ$Õð øô] !ò %Ü$“ð%ûô" !ò %Ü$“ð%ús%   Â0I4 Ã,AJ
 É4JÊJÊ
JÊJc                 ó¸   — t         rC| j                  �7| j                  d«       | j                  j	                  | j                  «       y | j                  d«       y )Ns   +OK Begin TLS negotiation nows   -ERR TLS not available)r*   r   r   Ú	transportrJ   r8   s    r   rJ   zPOP3TestServer.startTLS»   s>   € Ý˜4Ÿ8™8Ð/Ø�M‰MÐ:Ô;Ø�N‰N×#Ñ# D§H¡HÕ-à�M‰MÐ3Õ4r   c                 ó8   — | j                   j                  «        y r   )r[   ÚloseConnectionr8   s    r   r4   zPOP3TestServer.disconnectÂ   s   € Ø�‰×%Ñ%Õ'r   r   )Ú__name__Ú
__module__Ú__qualname__r   r   r!   r$   r0   r9   r7   rY   rJ   r4   © r   r   r   r   5   s6   „ ó"òòòòò"	 ò'òU òn5ó(r   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
c                 ó    — t        d| z  «       y )NzServer Starting in %s mode)Úprint)Úmsgs    r   ÚprintMessagere   Ö   s   € Ü	Ð
&¨Ñ
,Õ-r   c                 óŽ  — | j                  «       dk(  rdat        d«       y | j                  «       dk(  rdat        d«       y | j                  «       dk(  rdat        d«       y | j                  «       d	k(  rdat        d
«       y | j                  «       dk(  rdat        d
«       y | j                  «       dk(  rdat        d«       y | j                  «       dk(  rdat        d«       y | j                  «       dk(  rda	t        d«       y | j                  «       dk(  rda
t        d«       y | j                  «       dk(  rdat        d«       y | j                  «       dk(  rdat        d«       y | j                  «       dk(  r$t        t        «       t        j                   «        y t        t        «       t        j                   «        y )NÚno_sslFzNON-SSLÚno_uidlzNON-UIDLÚbad_respTzInvalid Server ResponseÚbad_cap_respzInvalid Capability ResponseÚbad_login_respÚdenyzDeny ConnectionÚdropzDrop ConnectionÚbad_tlszBad TLS ResponseÚtimeoutzTimeout ResponseÚto_deferredzTimeout Deferred ResponseÚslowzSlow Greetingz--help)Úlowerr*   re   r'   rT   rH   rK   r3   rG   ÚBAD_TLS_RESPONSErF   rV   r5   rc   ÚusageÚsysÚexit)Úargs    r   Ú
processArgrx   Ú   sj  € Ø
‡y�yƒ{�hÒàˆÜ�YÕà	�‰‹˜	Ò	!àˆÜ�ZÕ à	�‰‹˜
Ò	"à"&ÐÜÐ.Õ/à	�‰‹˜Ò	&à&*Ð#ÜÐ2Õ3à	�‰‹Ð(Ò	(à!%ÐÜÐ2Õ3à	�‰‹˜Ò	àˆÜÐ&Õ'à	�‰‹˜Ò	àˆÜÐ&Õ'à	�‰‹˜	Ò	!àÐÜÐ'Õ(à	�‰‹˜	Ò	!àÐÜÐ'Õ(à	�‰‹˜Ò	%àÐÜÐ0Õ1à	�‰‹˜Ò	àˆÜ�_Õ%à	�‰‹˜Ò	 ÜŒeŒÜ�‰�
ô 	ŒeŒÜ�‰�
r   c                  ó$  — t        t        j                  «      dk  rt        d«       n%t        j                  dd  } | D ]  }t	        |«       Œ t        «       }t        |_        t        j                  t        |«       t        j                  «        y )Né   zPOP3 with no messagesrD   )Úlenru   Úargvre   rx   r   r   Úprotocolr   Ú	listenTCPÚPORTÚrun)Úargsrw   Úfs      r   Úmainrƒ     si   € Ü
Œ3�8‰8ƒ}�qÒÜÐ,Õ-ä�x‰x˜˜ˆ|ˆàò 	ˆCÜ�s�Oð	ô 	‹	€AÜ€A„JÜ×Ñ”d˜AÔÜ‡K�K…Mr   Ú__main__)+ru   Útwisted.internetr   Útwisted.internet.protocolr   Útwisted.protocolsr   rP   rQ   r   r*   r'   rT   rH   rK   r3   rG   rs   rF   rV   r5   r;   r,   r+   r)   rI   rM   rO   rR   Ú	TLS_ERRORrS   rU   r   r    r#   r&   ÚLineReceiverr   rt   re   rx   rƒ   r^   ra   r   r   ú<module>rŠ      sò   ðó å $Ý -Ý #à€Ø€à€à€Ø€ØÐ Ø#Ð ØÐ Ø€Ø€ØÐ ØÐ ØÐ Ø€à Ø=€âC€àÐ ØÐ ð +Ð Ø)€Ø$€Ø/€Ø9€	Ø'€Ø:€Ø€Ø,€Ø/€Ø+€	ôN(�U×'Ñ'ô N(ðb	€ò .ò>òBð ˆzÒÙ…Fð r   