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 |