summaryrefslogtreecommitdiffstats
path: root/completions/ktutil
diff options
context:
space:
mode:
Diffstat (limited to 'completions/ktutil')
-rw-r--r--completions/ktutil120
1 files changed, 120 insertions, 0 deletions
diff --git a/completions/ktutil b/completions/ktutil
new file mode 100644
index 0000000..6030a47
--- /dev/null
+++ b/completions/ktutil
@@ -0,0 +1,120 @@
+# ktutil completion -*- shell-script -*-
+
+_heimdal_principals()
+{
+ COMPREPLY=($(compgen -W "$(kadmin -l dump 2>/dev/null |
+ awk '{print $1}')" -- "$cur"))
+}
+
+_heimdal_realms()
+{
+ COMPREPLY=($(compgen -W "$(kadmin -l dump 2>/dev/null |
+ awk '{print $1}' | awk -F@ '{print $2}')" -- "$cur"))
+}
+
+_heimdal_encodings()
+{
+ COMPREPLY=($(compgen -W 'des-cbc-mcrc des-cbc-md4 des-cbc-md5
+ des3-cbc-sha1 arcfour-hmac-md5 aes128-cts-hmac-sha1-96
+ aes256-cts-hmac-sha1-96' -- "$cur"))
+}
+
+_ktutil()
+{
+ local cur prev words cword split
+ _init_completion -s || return
+
+ local command commands i options
+
+ case $prev in
+ -p | --principal)
+ _heimdal_principals
+ return
+ ;;
+ -e | --enctype)
+ _heimdal_encodings
+ return
+ ;;
+ -a | --admin-server)
+ _known_hosts_real -- "$cur"
+ return
+ ;;
+ -r | --realm)
+ _heimdal_realms
+ return
+ ;;
+ -s | -k | --srvtab | --keytab)
+ _filedir
+ return
+ ;;
+ esac
+
+ $split && return
+
+ commands='add change copy get list remove rename purge srvconvert
+ srv2keytab srvcreate key2srvtab'
+
+ for ((i = 1; i < cword; i++)); do
+ case ${words[i]} in
+ -k | --keytab)
+ ((i++))
+ ;;
+ -*) ;;
+
+ *)
+ command=${words[i]}
+ break
+ ;;
+ esac
+ done
+
+ if [[ $cur == -* ]]; then
+ case ${command-} in
+ add)
+ options='-p --principal -V -e --enctype -w --password -r
+ --random -s --no-salt -h --hex'
+ ;;
+ change)
+ options='-r --realm -a --admin-server -s --server-port'
+ ;;
+ get)
+ options='-p --principal -e --enctype -r --realm -a
+ --admin-server -s server --server-port'
+ ;;
+ list)
+ options='--keys --timestamp'
+ ;;
+ remove)
+ options='-p --principal -V --kvno -e --enctype'
+ ;;
+ purge)
+ options='--age'
+ ;;
+ srv2keytab | key2srvtab)
+ options='-s --srvtab'
+ ;;
+ *)
+ options='-k --keytab -v --verbose --version -v --help'
+ ;;
+ esac
+ COMPREPLY=($(compgen -W "$options" -- "$cur"))
+ else
+ case ${command-} in
+ copy)
+ _filedir
+ ;;
+ get)
+ _heimdal_principals
+ ;;
+ rename)
+ _heimdal_principals
+ ;;
+ *)
+ COMPREPLY=($(compgen -W "$commands" -- "$cur"))
+ ;;
+ esac
+ fi
+} &&
+ complete -F _ktutil ktutil
+
+# ex: filetype=sh