
    jg                         d dl Z d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZ  ee      Z G d de      Z G d	 d
e	      Zy)    N)	getLogger)
SMTPServer)List)BaseCommandCommandError)setup_loggersignalcommandc                       e Zd ZdZd Zy)ExtensionDebuggingServerzIDuplication of smtpd.DebuggingServer, but using logging instead of print.c                     d}|j                  d      }t        j                  d       |D ]8  }|r|st        j                  d|d   z         d}t        j                  |       : t        j                  d       y)z7Output will be sent to the module logger at INFO level.   
z%---------- MESSAGE FOLLOWS ----------z
X-Peer: %sr   z%------------ END MESSAGE ------------N)splitloggerinfo)	selfpeermailfromrcpttosdatakwargs	inheaderslineslines	            k/var/www/html/Stanley/venv/lib/python3.12/site-packages/django_extensions/management/commands/mail_debug.pyprocess_messagez(ExtensionDebuggingServer.process_message   sf    	

4 ;<DL4723	KK  	;<    N)__name__
__module____qualname____doc__r    r   r   r   r      s
    S=r   r   c                   N     e Zd ZU dZdZg Zee   ed<    fdZ	e
dd       Z xZS )Commandz*Starts a test mail server for development.z&[optional port number or ippaddr:port]requires_system_checksc                     t         |   |       |j                  dd       |j                  ddd d       |j                  dd	d
dd       y )Naddrport?)nargsz--outputoutput_filezRSpecifies an output file to send a copy of all messages (not flushed immediately).)destdefaulthelpz--use-settingsuse_settings
store_trueFz3Uses EMAIL_HOST and HOST_PORT from Django settings.)r+   actionr,   r-   )superadd_argumentsadd_argument)r   parser	__class__s     r   r2   zCommand.add_arguments'   sb    f%Jc2]De 	 	
 	>F 	 	
r   c                    |s4|d   r*ddl m} t        |dd      t        t        |dd            nddn	 |j	                  d      \  sd	j                         st        d
z        t              t        t        | j                  |d          fd}	  |        y # t
        $ r d|cY kw xY w# t        $ r Y y w xY w)Nr.   r   )settings
EMAIL_HOST 
EMAIL_PORT1025:z	127.0.0.1z%r is not a valid port number.r*   )streamfilenamec            	          t         j                  dk(  xr dxs d} t        ddd| d       t        fd d	       t	        j
                          y )
Nwin32z
CTRL-BREAKz	CONTROL-CzNow accepting mail at r<   z -- use z to quitT)decode_data)sysplatformprintr   asyncoreloop)quit_commandaddrports    r   	inner_runz!Command.handle.<locals>.inner_runN   sD    LLG3ETLT4Q]^_$dD\4TJMMOr   )django.confr7   getattrstrr   
ValueErrorisdigitr   intr   r   stdoutKeyboardInterrupt)r   r'   argsoptionsr7   rJ   rH   rI   s         @@r   handlezCommand.handle4   s    ~&0xr:78\6BC*%^^C0
d D||~?$FGGt9D 	VDKK'-:PQ		K)  *
d** ! 		s#   B) !B= )B:9B:=	C	C	)r9   )r   r   r    r-   rS   r%   r   rM   __annotations__r2   r	   rU   __classcell__)r5   s   @r   r$   r$   !   s5    7D3D(*DI*
 " "r   r$   )rE   rB   loggingr   smtpdr   typingr   django.core.management.baser   r   "django_extensions.management.utilsr   r	   r   r   r   r$   r"   r   r   <module>r]      s<     
    A J	8	=z =$6k 6r   