+
    üÐjÈ  ã                   óÂ   € R t ^ RIt^ RIt^ RIt^ RIHtHt ^ RIH	t	 ^ RI
HtHt ^ RIHtHt R]P                   R]P"                  /t ! R R	]P&                  4      tR
 tR# )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                   ó~   € ] tR t^tRt. RO. RO.t. R	O.t]P                  ! R]P                  ! R4      /R7      t
RtR# )
Ú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
Úfilez*.conf)Ú
optActions© N)ÚrpcÚrz/etc/rpcz$DEPRECATED. RPC procedure table file)r   Úfz/etc/inetd.confzService configuration file)Ú
nointernalÚizDon't run internal services)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚoptParametersÚoptFlagsr   ÚCompletionsÚCompleteFilesÚcompDataÚ__static_attributes__r   ó    Ú9/usr/lib/python3/dist-packages/twisted/runner/inetdtap.pyr   r      sB   † ñ	ò 	IÚFð€Mò
 CÐC€Hà× Ò ¨V°U×5HÒ5HÈÓ5RÐ,SÔT„Hr    r   c                 óò  € \         P                  ! 4       p\        P                  ! 4       p\	        V R ,          4      ;_uu_ 4       pVP                  V4       RRR4       VP                   EFÿ  pVP                  pVP                  P                  R4      '       d   \        P                  ! R4       KI  WTP                  3R9  d5   \        P                  ! RVP                  : RVP                  : 24       K�   \        VP                  4      Vn        TP$                  f.   \        P&                  ! TP                  4      ^,          Tn        M \        TP$                  4      Tn        TP,                  R
8X  d�   T R,          '       d   EK#  TP.                  \0        P2                  9  d+   \        P                  ! RTP.                  ,           4       EKl  \5        4       p\0        P2                  TP.                  ,          Tn        M\0        P6                  ! T4      pTR8X  d4   \8        P:                  ! TP<                  T4      P?                  T4       EKí  TR8X  g   EK÷  \A        R4      h	  V#   + '       g   i     EL#; i  \         dm     \        P                   ! TP                  4      ^,          Tn         EL«  \"         d.    \        P                  ! RTP                  ,           4         EKŒ  i ; ii ; i  \         dm     \(        P*                  ! TP$                  4      ^,          Tn         ELÏ  \"         d.    \        P                  ! R	TP$                  ,           4         EK  i ; ii ; i)r   Nzrpc/z/Skipping rpc service due to lack of rpc supportr	   r
   z$Skipping unsupported type/protocol: Ú/zUnknown user: zUnknown group: Úinternalr   zUnknown internal service: znot supporting UDP))r	   Ústream)r
   Údgram)!Ú
appserviceÚMultiServicer   Ú	InetdConfÚopenÚ	parseFileÚservicesÚprotocolÚ
startswithr   ÚmsgÚ
socketTypeÚintÚuserÚ
ValueErrorÚpwdÚgetpwnamÚKeyErrorÚgroupÚgetpwuidÚgrpÚgetgrnamÚprogramÚnamer   ÚinternalProtocolsr   ÚInetdFactoryr   Ú	TCPServerÚportÚsetServiceParentÚRuntimeError)ÚconfigÚsÚconfr   r   r-   Úfactorys   &      r!   ÚmakeServicerG   0   s~  € Ü×ÒÓ!€AÜ×ÒÓ €DÜ	ˆf�V�n×	Ô	 Ø�‰�qÔ÷ 
ð —=•=ˆØ×#Ñ#ˆà×Ñ×&Ñ& v×.Ò.Ü�GŠGÐEÔFÙà×(Ñ(Ð)Ð1VÔVÜ�G‹Gà×%Ô% w×'7Ó'7ð9ôñ ð	Ü˜wŸ|™|Ó,ˆGŒLð �=‰=Ò äŸLšL¨¯©Ó6°qÕ9ˆG�MðÜ # G§M¡MÓ 2�”ð �?‰?˜jÔ(Ø�l×#Ô#Úð �|‰|¤5×#:Ñ#:Ô:Ü—’Ð4°w·|±|ÕCÔDÚÜ#“oˆGÜ$×6Ñ6°w·|±|ÕDˆGÕä×(Ò(¨Ó1ˆGà�uÔÜ×Ò˜wŸ|™|¨WÓ5×FÑFÀq×IØ˜×ÜÐ3Ó4Ð4ñm !ðn €H÷u 
×	Ð	ûô( ô 	ðÜ"Ÿ|š|¨G¯L©LÓ9¸!Õ<�—øÜô Ü—’Ð(¨7¯<©<Õ7Ô8Üðúð	ûô ô ðÜ$'§L¢L°·±Ó$?ÀÕ$B�G—MøÜô Ü—G’GÐ-°·±Õ=Ô>Üðúðús`   ÁI1Ã;JÅK?É1J	ÊK<Ê,K Ë 2K8Ë2K<Ë7K8Ë8K<Ë?M6Ì,L:Ì:2M2Í,M6Í1M2Í2M6)r   r9   r4   ÚsocketÚtwisted.applicationr   r   r'   Útwisted.internet.protocolr   Útwisted.pythonr   r   Útwisted.runnerr   r   ÚIPPROTO_TCPÚIPPROTO_UDPÚprotocolDictr   rG   r   r    r!   Ú<module>rP      sT   ðñ
ó Û 
Û ç ?Ý 3ß %ß +ð �v×)Ñ)¨5°&×2DÑ2DÐE€ôUˆe�m‰mô Uô,=r    