o
    h                     @   s   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 deZG d	d
 d
e	ZdS )    N)	getLogger)
SMTPServer)List)BaseCommandCommandError)setup_loggersignalcommandc                   @   s   e Zd ZdZdd ZdS )ExtensionDebuggingServerzIDuplication of smtpd.DebuggingServer, but using logging instead of print.c           	      K   sX   d}| d}td |D ]}|r|std|d   d}t| qtd dS )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line r   n/var/www/html/ictaz-jobs/venv/lib/python3.10/site-packages/django_extensions/management/commands/mail_debug.pyprocess_message   s   

z(ExtensionDebuggingServer.process_messageN)__name__
__module____qualname____doc__r   r   r   r   r   r	      s    r	   c                       sD   e Zd ZU dZdZg Zee ed<  fddZ	e
d	ddZ  ZS )
Commandz*Starts a test mail server for development.z&[optional port number or ippaddr:port]requires_system_checksc                    sD   t  | |jddd |jddd dd |jdd	d
ddd d S )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__r   r   r,   '   s   
zCommand.add_arguments c                    s   |s |d rddl m} t|dd tt|ddnd dnz	|d\ W n ty7   d| Y nw  s<d	  sFtd
 tt	t
| j|d d  fdd}z|  W d S  tyk   Y d S w )Nr(   r   )settings
EMAIL_HOSTr1   
EMAIL_PORT1025:z	127.0.0.1z%r is not a valid port number.r$   )streamfilenamec                     sB   t jdkrdpd} td | f  t fd dd t  d S )Nwin32z
CTRL-BREAKz	CONTROL-Cz-Now accepting mail at %s:%s -- use %s to quitT)decode_data)sysplatformprintr	   asyncoreloop)quit_commandaddrportr   r   	inner_runN   s   z!Command.handle.<locals>.inner_run)django.confr2   getattrstrr   
ValueErrorisdigitr   intr   r   stdoutKeyboardInterrupt)r   r!   argsoptionsr2   rD   r   rA   r   handle4   s0   zCommand.handle)r1   )r   r   r   r'   rM   r    r   rG   __annotations__r,   r   rO   __classcell__r   r   r/   r   r   !   s   
 r   )r>   r;   loggingr   smtpdr   typingr   django.core.management.baser   r   "django_extensions.management.utilsr   r   r   r   r	   r   r   r   r   r   <module>   s   