Ϫfv dZddlmZddlmZmZddlmZddl m Z m Z ddl m Z Gdde je jZd Zy ) z4 Support module for making SSH servers with twistd. )strports)checkersunix)factory)portalstrcred)usageceZdZdZdZgdgdgdgdgZejejdejd ejd  Z fd Z fd Z xZ S)Optionsz([-i ] [-p ] [-d ] 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.) interfaceiz"local interface to which we listen)portpztcp:22zPort on which to listen)datadz/etcz"directory to look for host keys in)modulirNz:directory to look for moduli in (if different from --data)zdata directory)descrzmoduli directory)rrr ) optActionsctjj|g|i|t|t j t|t jt jd|_ y)NT) r r __init__super addCheckerconch_checkersUNIXPasswordDatabaseSSHPublicKeyCheckerUNIXAuthorizedKeysFiles_usingDefaultAuth)selfakw __class__s 3/usr/lib/python3/dist-packages/twisted/conch/tap.pyrzOptions.__init__+se t.a.2. >>>@A   . .~/U/U/W X "&c^|jrg|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). credCheckerscredInterfacesFN)rrr)rcheckerr"s r#rzOptions.addChecker8s8  ! !#%D %'D! "%*D " 7#r$)__name__ __module__ __qualname__synopsislongdesc optParametersr Completions CompleteDirsCompleteNetInterfacescompDatarr __classcell__)r"s@r#r r s9H <  E:C M!u  &E&&-=>(e((/AB4446 H & $ $r$r c4tj}tj}t j ||j dg|_|d|_|dxs|d|_|d}|dr |d|dzz }tj||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&rrrr z :interface=) rOpenSSHFactoryr UnixSSHRealmrPortalgetdataRoot moduliRootrservice)configtrrs r# makeServicer?Es  A A}}Q >2 >?AHAJ(#5vf~AL &>D k { 333   D! $$r$N)__doc__twisted.applicationr twisted.conchrrrtwisted.conch.openssh_compatr twisted.credrrtwisted.pythonr r AuthOptionMixinr?r$r#rHs9 ):0( 2$emmW442$j%r$