o
    ¯bÁ	  ã                   @   sÄ   d Z ddlZddlZddlmZ ddlmZmZ G dd„ dejƒZ	G dd„ dejƒZ
eejƒG d	d
„ d
ejƒƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZg d¢ZdS )zzImplement standard (and unused) TCP protocols.

These protocols are either provided by inetd, or are not provided at all.
é    N)Úimplementer)Ú
interfacesÚprotocolc                   @   ó   e Zd ZdZdd„ ZdS )ÚEchozC
    As soon as any data is received, write it back (RFC 862).
    c                 C   s   | j  |¡ d S ©N)Ú	transportÚwrite©ÚselfÚdata© r   ú8/usr/lib/python3/dist-packages/twisted/protocols/wire.pyÚdataReceived   s   zEcho.dataReceivedN©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r      ó    r   c                   @   r   )ÚDiscardz.
    Discard any received data (RFC 863).
    c                 C   ó   d S r   r   r
   r   r   r   r       s   zDiscard.dataReceivedNr   r   r   r   r   r      r   r   c                   @   s4   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚChargenz-
    Generate repeating noise (RFC 864).
    sG   @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&?c                 C   s   | j  | d¡ d S )Nr   )r   ÚregisterProducer©r   r   r   r   ÚconnectionMade-   ó   zChargen.connectionMadec                 C   s   | j  | j¡ d S r   )r   r	   Únoiser   r   r   r   ÚresumeProducing0   r   zChargen.resumeProducingc                 C   r   r   r   r   r   r   r   ÚpauseProducing3   ó   zChargen.pauseProducingc                 C   r   r   r   r   r   r   r   ÚstopProducing6   r    zChargen.stopProducingN)	r   r   r   r   r   r   r   r   r!   r   r   r   r   r   %   s    r   c                   @   ó    e Zd ZdZdd„ Zdd„ ZdS )ÚQOTDz.
    Return a quote of the day (RFC 865).
    c                 C   ó   | j  |  ¡ ¡ | j  ¡  d S r   )r   r	   ÚgetQuoteÚloseConnectionr   r   r   r   r   ?   ó   zQOTD.connectionMadec                 C   ó   dS )zB
        Return a quote. May be overrriden in subclasses.
        s'   An apple a day keeps the doctor away.
r   r   r   r   r   r%   C   ó   zQOTD.getQuoteN)r   r   r   r   r   r%   r   r   r   r   r#   :   ó    r#   c                   @   r"   )ÚWhoz/
    Return list of active users (RFC 866)
    c                 C   r$   r   )r   r	   ÚgetUsersr&   r   r   r   r   r   O   r'   zWho.connectionMadec                 C   r(   )z>
        Return active users. Override in subclasses.
        s   root
r   r   r   r   r   r,   S   r)   zWho.getUsersN)r   r   r   r   r   r,   r   r   r   r   r+   J   r*   r+   c                   @   r   )ÚDaytimez8
    Send back the daytime in ASCII form (RFC 867).
    c                 C   s.   | j  t t t ¡ ¡¡d ¡ | j  ¡  d S )Ns   
)r   r	   ÚtimeÚasctimeÚgmtimer&   r   r   r   r   r   _   s    zDaytime.connectionMadeN©r   r   r   r   r   r   r   r   r   r-   Z   r   r-   c                   @   r   )ÚTimez@
    Send back the time in machine readable form (RFC 868).
    c                 C   s.   t  dtt ¡ ƒ¡}| j |¡ | j ¡  d S )Nz!i)ÚstructÚpackÚintr.   r   r	   r&   )r   Úresultr   r   r   r   i   s   zTime.connectionMadeNr1   r   r   r   r   r2   d   r   r2   )r   r   r   r#   r+   r-   r2   )r   r3   r.   Úzope.interfacer   Útwisted.internetr   r   ÚProtocolr   r   Ú	IProducerr   r#   r+   r-   r2   Ú__all__r   r   r   r   Ú<module>   s   	

