summaryrefslogtreecommitdiff
path: root/completions/ktutil
diff options
context:
space:
mode:
Diffstat (limited to 'completions/ktutil')
-rw-r--r--completions/ktutil126
1 files changed, 126 insertions, 0 deletions
diff --git a/completions/ktutil b/completions/ktutil
new file mode 100644
index 00000000..bda4ae14
--- /dev/null
+++ b/completions/ktutil
@@ -0,0 +1,126 @@
+# ktutil completion
+
+_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 options
+
+ case $prev in
+ -p|--principal)
+ _heimdal_principals
+ return 0
+ ;;
+ -e|--enctype)
+ _heimdal_encodings
+ return 0
+ ;;
+ -a|--admin-server)
+ _known_hosts_real "$cur"
+ return 0
+ ;;
+ -r|--realm)
+ _heimdal_realms
+ return 0
+ ;;
+ -s|-k|--srvtab|--keytab)
+ _filedir
+ return 0
+ ;;
+ esac
+
+ $split && return 0
+
+ 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=$(($i+1))
+ ;;
+ -*)
+ ;;
+ *)
+ 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
+
+# Local variables:
+# mode: shell-script
+# sh-basic-offset: 4
+# sh-indent-comment: t
+# indent-tabs-mode: nil
+# End:
+# ex: ts=4 sw=4 et filetype=sh