| OLD | NEW |
| (Empty) |
| 1 # Copyright (c) 2001-2004 Twisted Matrix Laboratories. | |
| 2 # See LICENSE for details. | |
| 3 | |
| 4 # | |
| 5 from twisted.conch.ssh.transport import SSHClientTransport, SSHCiphers | |
| 6 from twisted.python import usage | |
| 7 | |
| 8 import connect | |
| 9 | |
| 10 import sys | |
| 11 | |
| 12 class ConchOptions(usage.Options): | |
| 13 | |
| 14 optParameters = [['user', 'l', None, 'Log in using this user name.'], | |
| 15 ['identity', 'i', None], | |
| 16 ['ciphers', 'c', None], | |
| 17 ['macs', 'm', None], | |
| 18 ['connection-usage', 'K', None], | |
| 19 ['port', 'p', None, 'Connect to this port. Server must be
on the same port.'], | |
| 20 ['option', 'o', None, 'Ignored OpenSSH options'], | |
| 21 ['host-key-algorithms', '', None], | |
| 22 ['known-hosts', '', None, 'File to check for host keys'], | |
| 23 ['user-authentications', '', None, 'Types of user authentic
ations to use.'], | |
| 24 ['logfile', '', None, 'File to log to, or - for stdout'], | |
| 25 ] | |
| 26 | |
| 27 optFlags = [['version', 'V', 'Display version number only.'], | |
| 28 ['compress', 'C', 'Enable compression.'], | |
| 29 ['log', 'v', 'Enable logging (defaults to stderr)'], | |
| 30 ['nocache', 'I', 'Do not allow connection sharing over this conn
ection.'], | |
| 31 ['nox11', 'x', 'Disable X11 connection forwarding (default)'], | |
| 32 ['agent', 'A', 'Enable authentication agent forwarding'], | |
| 33 ['noagent', 'a', 'Disable authentication agent forwarding (defau
lt)'], | |
| 34 ['reconnect', 'r', 'Reconnect to the server if the connection is
lost.'], | |
| 35 ] | |
| 36 zsh_altArgDescr = {"connection-usage":"Connection types to use"} | |
| 37 #zsh_multiUse = ["foo", "bar"] | |
| 38 zsh_mutuallyExclusive = [("agent", "noagent")] | |
| 39 zsh_actions = {"user":"_users", | |
| 40 "ciphers":"_values -s , 'ciphers to choose from' %s" % | |
| 41 " ".join(SSHCiphers.cipherMap.keys()), | |
| 42 "macs":"_values -s , 'macs to choose from' %s" % | |
| 43 " ".join(SSHCiphers.macMap.keys()), | |
| 44 "host-key-algorithms":"_values -s , 'host key algorithms to c
hoose from' %s" % | |
| 45 " ".join(SSHClientTransport.supportedPublicKeys), | |
| 46 "connection-usage":"_values -s , 'connection types to choose
from' %s" % | |
| 47 " ".join(connect.connectTypes.keys()), | |
| 48 #"user-authentications":"_values -s , 'user authentication ty
pes to choose from' %s" % | |
| 49 # " ".join(???), | |
| 50 } | |
| 51 #zsh_actionDescr = {"logfile":"log file name", "random":"random seed"} | |
| 52 # user, host, or user@host completion similar to zsh's ssh completion | |
| 53 zsh_extras = ['1:host | user@host:{_ssh;if compset -P "*@"; then _wanted hos
ts expl "remote host name" _ssh_hosts && ret=0 elif compset -S "@*"; then _wante
d users expl "login name" _ssh_users -S "" && ret=0 else if (( $+opt_args[-l] ))
; then tmp=() else tmp=( "users:login name:_ssh_users -qS@" ) fi; _alternative "
hosts:remote host name:_ssh_hosts" "$tmp[@]" && ret=0 fi}'] | |
| 54 | |
| 55 def __init__(self, *args, **kw): | |
| 56 usage.Options.__init__(self, *args, **kw) | |
| 57 self.identitys = [] | |
| 58 self.conns = None | |
| 59 | |
| 60 def opt_identity(self, i): | |
| 61 """Identity for public-key authentication""" | |
| 62 self.identitys.append(i) | |
| 63 | |
| 64 def opt_ciphers(self, ciphers): | |
| 65 "Select encryption algorithms" | |
| 66 ciphers = ciphers.split(',') | |
| 67 for cipher in ciphers: | |
| 68 if not SSHCiphers.cipherMap.has_key(cipher): | |
| 69 sys.exit("Unknown cipher type '%s'" % cipher) | |
| 70 self['ciphers'] = ciphers | |
| 71 | |
| 72 | |
| 73 def opt_macs(self, macs): | |
| 74 "Specify MAC algorithms" | |
| 75 macs = macs.split(',') | |
| 76 for mac in macs: | |
| 77 if not SSHCiphers.macMap.has_key(mac): | |
| 78 sys.exit("Unknown mac type '%s'" % mac) | |
| 79 self['macs'] = macs | |
| 80 | |
| 81 def opt_host_key_algorithms(self, hkas): | |
| 82 "Select host key algorithms" | |
| 83 hkas = hkas.split(',') | |
| 84 for hka in hkas: | |
| 85 if hka not in SSHClientTransport.supportedPublicKeys: | |
| 86 sys.exit("Unknown host key type '%s'" % hka) | |
| 87 self['host-key-algorithms'] = hkas | |
| 88 | |
| 89 def opt_user_authentications(self, uas): | |
| 90 "Choose how to authenticate to the remote server" | |
| 91 self['user-authentications'] = uas.split(',') | |
| 92 | |
| 93 def opt_connection_usage(self, conns): | |
| 94 conns = conns.split(',') | |
| 95 connTypes = connect.connectTypes.keys() | |
| 96 for conn in conns: | |
| 97 if conn not in connTypes: | |
| 98 sys.exit("Unknown connection type '%s'" % conn) | |
| 99 self.conns = conns | |
| 100 | |
| 101 # def opt_compress(self): | |
| 102 # "Enable compression" | |
| 103 # self.enableCompression = 1 | |
| 104 # SSHClientTransport.supportedCompressions[0:1] = ['zlib'] | |
| OLD | NEW |