
    hv                         S r SSKJr  SSKJrJr  SSKJr  SSK	J
r
Jr  SSKJr   " S S\R                  \R                  5      rS	 rg
)z4
Support module for making SSH servers with twistd.
    )strports)checkersunix)factory)portalstrcred)usagec                      ^  \ rS rSrSrSr/ SQ/ SQ/ SQ/ SQ/r\R                  " \R                  " SS	9\R                  " S
S	9\R                  " 5       S.S9rU 4S jrU 4S jrSrU =r$ )Options   z([-i <interface>] [-p <port>] [-d <dir>] zMakes 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                   > [         R                  R                  " U /UQ70 UD6  [        TU ]  [
        R                  " 5       5        [        TU ]  [
        R                  " [
        R                  " 5       5      5        SU l	        g )NT)
r	   r   __init__super
addCheckerconch_checkersUNIXPasswordDatabaseSSHPublicKeyCheckerUNIXAuthorizedKeysFiles_usingDefaultAuth)selfakw	__class__s      X/root/1688_scrapy/alibaba-scraper/venv/lib/python3.13/site-packages/twisted/conch/tap.pyr   Options.__init__+   se    t.a.2. 	>>>@A..~/U/U/WX	
 "&    c                 h   > U R                   (       a  / U S'   0 U S'   SU l         [        TU ]	  U5        g)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   Options.addChecker8   s8     !!#%D %'D!"%*D"7#r&   )r   )__name__
__module____qualname____firstlineno__synopsislongdescoptParametersr	   CompletionsCompleteDirsCompleteNetInterfacescompDatar   r   __static_attributes____classcell__)r#   s   @r$   r   r      sz    9H	<  	E:C	
	
M   &&-=>((/AB446
H&
$ 
$r&   r   c                 L   [         R                  " 5       n[        R                  " 5       n[        R
                  " X R                  S/ 5      5      Ul        U S   Ul        U S   =(       d    U S   Ul        U S   nU S   (       a  USU S   -   -  n[        R                  " X15      $ )a0  
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$   makeServicerD   E   s     	 AA}}Q

>2 >?AHAJ(#5vf~AL&>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   AuthOptionMixinrD    r&   r$   <module>rM      s9   
 ) : 0 (  2$emmW44 2$j%r&   