a
    ÆZEg¡  ã                   @   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)	ÚselfZpeerZmailfromZrcpttosÚdataÚkwargsZ	inheadersÚlinesÚline© r   úi/var/www/sistema_ama/venv/lib/python3.9/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 r6ddl m} t|ddƒ‰ tt|ddƒƒ‰qpd‰ d‰n0z| d¡\‰ ‰W n tyn   d| ‰ ‰Y n0 ˆ sxd	‰ ˆ ¡ sŽtd
ˆ ƒ‚ntˆƒ‰t	t
| j|d d� ‡ ‡fdd„}z
|ƒ  W n tyÔ   Y n0 d S )Nr$   r   )ÚsettingsZ
EMAIL_HOSTr-   Z
EMAIL_PORTZ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)Zdecode_data)ÚsysÚplatformÚprintr	   ÚasyncoreZloop)Zquit_command©ÚaddrÚportr   r   Ú	inner_runN   s    z!Command.handle.<locals>.inner_run)Zdjango.confr.   ÚgetattrÚstrr   Ú
ValueErrorÚisdigitr   Úintr   r   ÚstdoutÚKeyboardInterrupt)r   r   ÚargsÚoptionsr.   r:   r   r7   r   Úhandle4   s,    
zCommand.handle)r-   )r   r   r   r#   rB   r   r   r<   Ú__annotations__r(   r   rD   Ú__classcell__r   r   r+   r   r   !   s   
r   )r6   r3   Úloggingr   Zsmtpdr   Útypingr   Zdjango.core.management.baser   r   Z"django_extensions.management.utilsr   r   r   r   r	   r   r   r   r   r   Ú<module>   s   