
    \d                        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j$                  Z%dZ&d Z'd Z(d Z)e*dk    r e)             dS dS )     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                   L    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dS )POP3TestServerNc                 >    d| _         d | _        d | _        || _        d S )NF)loggedIncapstmpUserctx)selfcontextFactorys     @lib/python3.11/site-packages/twisted/mail/test/pop3testserver.py__init__zPOP3TestServer.__init__6   s"    	!    c                 :    |                      t                     d S N)sendLineSTATr   reqs     r   sendSTATRespzPOP3TestServer.sendSTATResp<       dr   c                 :    |                      t                     d S r   )r   UIDLr   s     r   sendUIDLRespzPOP3TestServer.sendUIDLResp?   r   r   c                 :    |                      t                     d S r   )r   LISTr   s     r   sendLISTRespzPOP3TestServer.sendLISTRespB   r   r   c                 v   | j         t          g| _         t          r| j                             t                     t
          r| j                             t                     t          D ]}| j                             |           d                    | j                   }|dz  }| 	                    |           d S )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"DI 	0I./// 	/I-... 	" 	"CIS!!!!||DI&&dr   c                     t           r|                                  d S t          rt          j        d| j                   d S |                                  d S )N   )DENY_CONNECTION
disconnectSLOW_GREETINGr   	callLatersendGreetingr   s    r   connectionMadezPOP3TestServer.connectionMadeV   s]     	OOF 	 b$"344444 r   c                 :    |                      t                     d S r   )r   CONNECTION_MADEr8   s    r   r7   zPOP3TestServer.sendGreetinga   s    o&&&&&r   c                 d   |                                 fd}t          rdS t          r|                                  dS  |d          r9t          r|                     t                     dS |                                  dS  |d          rt          r| 	                                 dS  |d          r|t          r|                     t                     dS d}	 |                    d          d         | _        t          }n# t          $ r
 t          }Y nw xY w|                     |           dS  |d          rd}	 |                    d          d         }| j        |t          }n1| j        t           k    r|t"          k    rt$          }d	| _        nt          }n# t          $ r
 t          }Y nw xY w|                     |           dS  |d
          r7d| _        |                     t(                     |                                  dS t*          r|                     t                     dS | j        s|                     t,                     dS  |d          r|                     t                     dS  |d          r%t.          rdS |                     t0                     dS  |d          r%t.          rdS |                     t2                     dS  |d          rHt.          rdS t4          s|                     t                     dS |                     t6                     dS dS )zError Conditionsc                 6                         |           dk    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   so    

,,,, 	F K	 OOFT']] G	 * (./////%%'''''T']] A	 { A	 MMOOOOOT']] >	 % .///D%#zz#q1%  % % %$% MM$T']] 0	 D%jjooa(<'3;(DD\T))cTkk(D$(DMM(D  % % %$% MM$T']] 	 !DMMM/***OO$ 	 MM*+++++ 	 MM-(((((T']] 	 MM.)))))T']] 	  MM$T']] 	  MM$T']] 	  ! .///MM$	  	 s%   'D DDAF   F43F4c                     t           r=| j        6|                     d           | j                            | j                   d S |                     d           d S )Ns   +OK Begin TLS negotiation nows   -ERR TLS not available)r*   r   r   	transportrJ   r8   s    r   rJ   zPOP3TestServer.startTLS   s[     	548/MM:;;;N##DH-----MM344444r   c                 8    | j                                          d S 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   s        " " " "        "	  	  	 ' ' 'U  U  U n5 5 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             d S )NzServer Starting in %s mode)print)msgs    r   printMessagere      s    	
&
,-----r   c                    |                                  dk    rdat          d           d S |                                  dk    rdat          d           d S |                                  dk    rdat          d           d S |                                  d	k    rdat          d
           d S |                                  dk    rdat          d
           d S |                                  dk    rdat          d           d S |                                  dk    rdat          d           d S |                                  dk    rda	t          d           d S |                                  dk    rda
t          d           d S |                                  dk    rdat          d           d S |                                  dk    rdat          d           d S |                                  dk    r)t          t                     t          j                     d S t          t                     t          j                     d S )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      s>   
yy{{hY			!	!Z     	
	"	""&./////		&	&&*#233333	(	(	(!%233333			&'''''			&'''''			!	!'(((((			!	!'(((((		%	%01111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                     d S )N   zPOP3 with no messagesrD   )lenru   argvre   rx   r   r   protocolr   	listenTCPPORTrun)argsrw   fs      r   mainr     s    
38}}q,----x| 	 	CsOOOO		AAJdAKMMMMMr   __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      sz   


 $ $ $ $ $ $ - - - - - - # # # # # # #      =CCC   + )$/9	':,/+	N( N( N( N( N(U' N( N( N(b	 . . .? ? ?D    zDFFFFF r   