U
     T‚gá  ã                   @   sN   d dl Z d dlmZmZmZ d dlmZmZ d dlm	Z	 G dd„ de	j
ƒZdS )é    N)ÚListÚOptionalÚUnion)Ú
SSHCiphersÚSSHClientTransport)Úusagec                   @   s|  e Zd ZU ddddgdddgdddgd	d
dgddddgddddgdddgddddgddddgddddgg
Zeeeeeef    e	d< dddgdddgd d!d"gd#d$d%gd&d'd(gd)d*d+gd,d-d.ggZ
ejd/ge ¡ ejd0d1„ ej ¡ D ƒd2d3�ejd4d1„ ej ¡ D ƒd5d3�ejd6d1„ ejD ƒd7d3�d8œe ¡ ejd9d3�ejd:d;d<�gd=�Zd>d?„ Zd@dA„ ZdBdC„ ZdDdE„ ZdFdG„ ZdHdI„ ZdS )JÚConchOptionsÚuserÚlNzLog in using this user name.ÚidentityÚiÚciphersÚcÚmacsÚmÚportÚpz7Connect to this port.  Server must be on the same port.ÚoptionÚozIgnored OpenSSH optionsúhost-key-algorithmsÚ zknown-hostszFile to check for host keysúuser-authenticationsz%Types of user authentications to use.ÚlogfilezFile to log to, or - for stdoutÚoptParametersÚversionÚVzDisplay version number only.ÚcompressÚCzEnable compression.ÚlogÚvz#Enable logging (defaults to stderr)Znox11Úxz+Disable X11 connection forwarding (default)ÚagentÚAz&Enable authentication agent forwardingÚnoagentÚaz1Disable authentication agent forwarding (default)Z	reconnectÚrz2Reconnect to the server if the connection is lost.)r!   r#   c                 C   s   g | ]}|  ¡ ‘qS © ©Údecode©Ú.0r   r&   r&   ú@/tmp/pip-unpacked-wheel-1_7di8ic/twisted/conch/client/options.pyÚ
<listcomp>)   s     zConchOptions.<listcomp>zciphers to choose from)Údescrc                 C   s   g | ]}|  ¡ ‘qS r&   r'   r)   r&   r&   r+   r,   -   s     zmacs to choose fromc                 C   s   g | ]}|  ¡ ‘qS r&   r'   r)   r&   r&   r+   r,   1   s     z"host key algorithms to choose from)r	   r   r   r   ÚcommandÚargumentT)r-   Úrepeat)ZmutuallyExclusiveZ
optActionsZextraActionsc                 O   s$   t jj| f|ž|Ž g | _d | _d S )N)r   ÚOptionsÚ__init__Ú	identitysZconns)ÚselfÚargsÚkwr&   r&   r+   r2   >   s    zConchOptions.__init__c                 C   s   | j  |¡ dS )z&Identity for public-key authenticationN)r3   Úappend)r4   r   r&   r&   r+   Úopt_identityC   s    zConchOptions.opt_identityc                 C   s8   |  d¡}|D ]}|tjkrt d| ¡ q|| d< dS )zSelect encryption algorithmsú,zUnknown cipher type '%s'r   N)Úsplitr   Ú	cipherMapÚsysÚexit)r4   r   Úcipherr&   r&   r+   Úopt_ciphersG   s
    

zConchOptions.opt_ciphersc                 C   sL   t |tƒr| d¡}| d¡}|D ]}|tjkr"t d| ¡ q"|| d< dS )zSpecify MAC algorithmsúutf-8ó   ,zUnknown mac type '%r'r   N)Ú
isinstanceÚstrÚencoder:   r   ÚmacMapr<   r=   )r4   r   Úmacr&   r&   r+   Úopt_macsO   s    



zConchOptions.opt_macsc                 C   sL   t |tƒr| d¡}| d¡}|D ]}|tjkr"t d| ¡ q"|| d< dS )zSelect host key algorithmsr@   rA   zUnknown host key type '%r'r   N)rB   rC   rD   r:   r   ÚsupportedPublicKeysr<   r=   )r4   ZhkasZhkar&   r&   r+   Úopt_host_key_algorithmsY   s    



z$ConchOptions.opt_host_key_algorithmsc                 C   s&   t |tƒr| d¡}| d¡| d< dS )z/Choose how to authenticate to the remote serverr@   rA   r   N)rB   rC   rD   r:   )r4   Zuasr&   r&   r+   Úopt_user_authenticationsc   s    

z%ConchOptions.opt_user_authentications)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   rC   ÚintÚ__annotations__ZoptFlagsr   ZCompletionsZCompleteUsernamesZCompleteMultiListr   r;   ÚkeysrE   r   rH   ZCompleteUserAtHostZ	CompleterZcompDatar2   r8   r?   rG   rI   rJ   r&   r&   r&   r+   r      s\   






ö ù
þþþö
ýí

r   )r<   Útypingr   r   r   Ztwisted.conch.ssh.transportr   r   Ztwisted.pythonr   r1   r   r&   r&   r&   r+   Ú<module>   s   