o
    Óó·iÈ  ã                   @   s„   d Z ddlZddlZddlZddlmZmZ ddlm	Z	 ddl
mZmZ ddlmZmZ ejejdœZG dd	„ d	ejƒZd
d„ ZdS )zë
Twisted inetd TAP support

The purpose of inetdtap is to provide an inetd-like server, to allow Twisted to
invoke other programs to handle incoming sockets.
This is a useful thing as a "networking swiss army knife" tool, like netcat.
é    N)ÚinternetÚservice)ÚServerFactory)ÚlogÚusage)ÚinetdÚ	inetdconf)ÚtcpÚudpc                   @   s@   e Zd ZdZg d¢g d¢gZg d¢gZejde d¡id�Z	dS )	ÚOptionszù
    To use it, create a file named `sample-inetd.conf` with:

    8123 stream tcp wait some_user /bin/cat -

    You can then run it as in the following example and port 8123 became an
    echo server.

    twistd -n inetd -f sample-inetd.conf
    )ZrpcÚrz/etc/rpcz$DEPRECATED. RPC procedure table file)ÚfileÚfz/etc/inetd.confzService configuration file)Ú
nointernalÚizDon't run internal servicesr   z*.conf)Z
optActionsN)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ZoptParametersZoptFlagsr   ZCompletionsZCompleteFilesZcompData© r   r   ú]C:\Users\psant\Downloads\PAF backend\school\venv\Lib\site-packages\twisted/runner/inetdtap.pyr      s    þ
r   c                 C   sø  t  ¡ }t ¡ }t| d ƒ�}| |¡ W d   ƒ n1 sw   Y  |jD ]Ó}|j}|j d¡r7t	 
d¡ q&||jfdvrJt	 
d|j|jf ¡ q&zt|jƒ|_W n' tyy   zt |j¡d |_W n tyv   t	 
d|j ¡ Y Y q&w Y nw |jd u r‰t |j¡d |_n0zt|jƒ|_W n' ty¸   zt |j¡d |_W n tyµ   t	 
d	|j ¡ Y Y q&w Y nw |jd
krÝ| d rÃq&|jtjvrÒt	 
d|j ¡ q&tƒ }tj|j |_nt |¡}|dkrñt |j|¡ |¡ q&|dkrùt dƒ‚q&|S )Nr   zrpc/z/Skipping rpc service due to lack of rpc support))r	   Ústream)r
   Zdgramz)Skipping unsupported type/protocol: %s/%sé   zUnknown user: é   zUnknown group: Zinternalr   zUnknown internal service: r	   r
   znot supporting UDP)!Ú
appserviceZMultiServicer   Z	InetdConfÚopenÚ	parseFileZservicesÚprotocolÚ
startswithr   ÚmsgZ
socketTypeÚintÚuserÚ
ValueErrorÚpwdÚgetpwnamÚKeyErrorÚgroupÚgetpwuidÚgrpÚgetgrnamÚprogramÚnamer   ZinternalProtocolsr   ZInetdFactoryr   Ú	TCPServerÚportZsetServiceParentÚRuntimeError)ÚconfigÚsÚconfr   r   r   Úfactoryr   r   r   ÚmakeService0   sp   ÿ


ÿÿþÿþ
þÿþ

ÿr3   )r   r(   r#   ÚsocketZtwisted.applicationr   r   r   Ztwisted.internet.protocolr   Ztwisted.pythonr   r   Ztwisted.runnerr   r   ÚIPPROTO_TCPÚIPPROTO_UDPZprotocolDictr   r3   r   r   r   r   Ú<module>   s   