Ë
    ojv  ã                   ó’   — d Z ddlm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  G d„ dej                  ej                  «      Zd	„ Zy
)z4
Support module for making SSH servers with twistd.
é    )Ústrports)ÚcheckersÚunix)Úfactory)ÚportalÚstrcred)Úusagec                   óÜ   ‡ — e Zd ZdZdZg d¢g d¢g d¢g d¢gZ ej                   ej                  d¬«       ej                  d	¬«       ej                  «       d
œ¬«      Z
ˆ fd„Zˆ fd„Zˆ xZS )ÚOptionsz([-i <interface>] [-p <port>] [-d <dir>] zÚMakes a Conch SSH server.  If no authentication methods are specified, the default authentication methods are UNIX passwords and SSH public keys.  If --auth options are passed, only the measures specified will be used.)Ú	interfaceÚiÚ z"local interface to which we listen)ÚportÚpztcp:22zPort on which to listen)ÚdataÚdz/etcz"directory to look for host keys in)Úmodulir   Nz:directory to look for moduli in (if different from --data)zdata directory)Údescrzmoduli directory)r   r   r   )Ú
optActionsc                 ó  •— t        j                  j                  | g|¢­i |¤Ž t        ‰| �  t        j                  «       «       t        ‰| �  t        j                  t        j                  «       «      «       d| _	        y )NT)
r	   r   Ú__init__ÚsuperÚ
addCheckerÚconch_checkersÚUNIXPasswordDatabaseÚSSHPublicKeyCheckerÚUNIXAuthorizedKeysFilesÚ_usingDefaultAuth)ÚselfÚaÚkwÚ	__class__s      €ú3/usr/lib/python3/dist-packages/twisted/conch/tap.pyr   zOptions.__init__+   se   ø€ Ü�‰×Ñ˜tÐ. aÒ.¨2Ò.ô 	‰Ñœ>×>Ñ>Ó@ÔAÜ‰ÑÜ×.Ñ.¬~×/UÑ/UÓ/WÓXô	
ð "&ˆÕó    c                 ó^   •— | j                   rg | d<   i | d<   d| _         t        ‰| �	  |«       y)z»
        Add the checker specified.  If any checkers are added, the default
        checkers are automatically cleared and the only checkers will be the
        specified one(s).
        ÚcredCheckersÚcredInterfacesFN)r   r   r   )r   Úcheckerr"   s     €r#   r   zOptions.addChecker8   s8   ø€ ð ×!Ò!Ø#%ˆD�Ñ Ø%'ˆDÐ!Ñ"Ø%*ˆDÔ"Ü‰Ñ˜7Õ#r$   )Ú__name__Ú
__module__Ú__qualname__ÚsynopsisÚlongdescÚoptParametersr	   ÚCompletionsÚCompleteDirsÚCompleteNetInterfacesÚcompDatar   r   Ú__classcell__)r"   s   @r#   r   r      s‚   ø„ Ø9€Hð	<ð ò 	EÚ:ÚCò	
ð	
€Mð !ˆu× Ñ à&�E×&Ñ&Ð-=Ô>Ø(�e×(Ñ(Ð/AÔBØ4˜×4Ñ4Ó6ñ
ô€Hô&÷
$ð 
$r$   r   c                 ó4  — t        j                  «       }t        j                  «       }t	        j
                  || j                  dg «      «      |_        | d   |_        | d   xs | d   |_        | d   }| d   r|d| d   z   z  }t        j                  ||«      S )aH  
    Construct a service for operating a SSH server.

    @param config: An L{Options} instance specifying server options, including
        where server keys are stored and what authentication methods to use.

    @return: A L{twisted.application.service.IService} provider which contains
        the requested SSH server.
    r&   r   r   r   r   z:interface=)r   ÚOpenSSHFactoryr   ÚUnixSSHRealmr   ÚPortalÚgetÚdataRootÚ
moduliRootr   Úservice)ÚconfigÚtÚrr   s       r#   ÚmakeServicer?   E   s•   € ô 	×ÑÓ €Aä×ÑÓ€AÜ�}‰}˜Q §
¡
¨>¸2Ó >Ó?€A„HØ˜‘€A„JØ˜(Ñ#Ò5 v¨f¡~€A„Là�&‰>€DØˆkÒà�  {Ñ 3Ñ3Ñ3ˆÜ×Ñ˜D !Ó$Ð$r$   N)Ú__doc__Útwisted.applicationr   Útwisted.conchr   r   r   Útwisted.conch.openssh_compatr   Útwisted.credr   r   Útwisted.pythonr	   r   ÚAuthOptionMixinr?   © r$   r#   ú<module>rH      s9   ðñ
õ )ß :Ý 0ß (Ý  ô2$ˆe�m‰m˜W×4Ñ4ô 2$ój%r$   