about summary refs log tree commit diff
path: root/Completion/Unix/Command/_telnet
blob: c7ab34f9831939ef6c312bf09235e39edf4663cb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#compdef telnet

# Parameter used:
#
#  telnet_hosts_ports_users
#    The array that contains 3-tuples `host:port:user'.

local curcontext="$curcontext" state line expl ret=1
typeset -A opt_args

if (( ! $+_telnet_args )); then
  local help="$(_call_program options 'telnet -\?' < /dev/null 2>&1)"
  local -A optionmap
  optionmap=(
    '*\[-4\]*' '-4[Force IPv4 address resolution]'
    '*\[-6\]*' '-6[Force IPv6 address resolution]'
    '*\[-8\]*' '-8[allow 8-Bit data]'
    '*\[-E\]*' '-E[disable an escape character]'
    '*\[-K\]*' '-K[no automatic login]'
    '*\[-L\]*' '-L[allow 8-Bit data on output]'
    '*\[-N\]*' '-N[suppress reverse lookup]'
    '*\[-S tos\]*' '-S+:IP type-of-service:'
    '*\[-X atype\]*' '-X+:authentication type to disable:'
    '*\[-a\]*' '-a[attempt automatic login]'
    '*\[-c\]*' '-c[disable .telnetrc]'
    '*\[-d\]*' '-d[debug mode]'
    '*\[-e char\]*' '-e+[specify escape character]:escape character:'
    '*\[-f/*' '-f'
    '*/-F\]*' '-F'
    '*\[-k realm\]*' '-k+:realm:'
    '*\[-l user\]*' '-l+[specify user]:user:->users'
    '*\[-n tracefile\]*' '-n+[specify tracefile]:tracefile:_files'
    '*\[-r\]*' '-r[rlogin like user interface]'
    '*\[-s src_addr\]*' '-s+[set source IP address]:src_addr:'
    '*\[ -b addr \]*' '-b+[set source IP address]:src_addr:'
    '*\[-x\]*' '-x'
    '*\[-t transcom\]*' '-t+:transcom:'
    '*\[-noasynch\]*' '-noasynch'
    '*\[-noasyncnet\]*' '-noasyncnet'
    '*\[-noasynctty\]*' '-noasynctty'
    '*\[-z ssl\]*' '*-z[SSL parameters]:SSL parameter:->ssl'
  )
  _telnet_args=($optionmap[(K)"$help"])
  (( $#_telnet_args )) || _telnet_args=( '-l+[specify user]:user:->users' )
fi

_arguments -C -s \
  "$_telnet_args[@]" \
  ':host:->hosts' \
  ':port:->ports' && ret=0

case "$state" in
ssl)
  _values -w 'SSL parameter' \
    'debug[Send SSL debugging info to stderr]' \
    '(nossl)ssl[Negotiate SSL connection]' \
    '(ssl)nossl[Switch off SSL negotiation]' \
    'certrequired[Require server certificate]' \
    'secure[No fallback to unencrypted mode]' \
    'verbose[Be verbose about certificates, etc.]' \
    'verify[Set SSL verify flags]:int:' \
    'cert[Specify certificate file]:certificate file:_path_files' \
    'key[Specify key file]:key file:_path_files' \
    'cipher[Set preferred cipher list]:ciphers:'
  ;;

hosts)
  _wanted hosts expl host \
      _combination -s '[@:]' '' users-hosts-ports \
          ${opt_args[-l]:+users=${opt_args[-l]:q}} \
          hosts - && ret=0
  ;;

ports)
  _wanted ports expl port \
      _combination -s '[@:]' '' users-hosts-ports \
          ${opt_args[-l]:+users=${opt_args[-l]:q}} \
          hosts="${line[1]:q}" \
          ports - && ret=0
  ;;

users)
  _wanted users expl user \
      _combination -s '[@:]' '' users-hosts-ports \
      ${line[2]:+hosts="${line[2]:q}"} \
      ${line[3]:+ports="${line[3]:q}"} \
      users - && ret=0
  ;;
esac

return ret