o
    /h                     @   s   d dl Z d dlZzd dlmZ W n ey   edw 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	ZG d
d de
ZdS )    N)
Controllerz<Please install 'aiosmtpd' library to use mail_debug command.)	getLogger)List)BaseCommandCommandError)setup_loggersignalcommandc                   @   s   e Zd Zdd ZdS )CustomHandlerc                    sj   |j }d}|jjd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.   utf8replace)errorsz%---------- MESSAGE FOLLOWS ----------z
X-Peer: %sr   z%------------ END MESSAGE ------------z250 OK)peercontentdecode
splitlinesloggerinfo)selfserversessionenveloper   	inheaderslinesline r   k/var/www/html/env_mimamsha/lib/python3.10/site-packages/django_extensions/management/commands/mail_debug.pyhandle_DATA   s   

zCustomHandler.handle_DATAN)__name__
__module____qualname__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_HOSTr3   
EMAIL_PORT1025:z	127.0.0.1z%r is not a valid port number.r&   )streamfilenamec                     sT   t jdkrdpd} td | f  t }t| d}|  t }|  d S )Nwin32z
CTRL-BREAKz	CONTROL-Cz-Now accepting mail at %s:%s -- use %s to quit)hostnameport)	sysplatformprintr	   r   startasyncioget_event_looprun_forever)quit_commandhandler
controllerloopaddrr=   r   r   	inner_runX   s   z!Command.handle.<locals>.inner_run)django.confr4   getattrstrsplit
ValueErrorisdigitr   intr   r   stdoutKeyboardInterrupt)r   r#   argsoptionsr4   rK   r   rI   r   handle=   s0   zCommand.handle)r3   )r   r   r    r)   rU   r"   r   rN   __annotations__r.   r   rW   __classcell__r   r   r1   r   r!   %   s   
 r!   )rB   r>   aiosmtpd.controllerr   ImportErrorloggingr   typingr   django.core.management.baser   r   "django_extensions.management.utilsr   r   r   r   r	   r!   r   r   r   r   <module>   s   