diff options
author | Guillaume Rousse <guillomovitch@zarb.org> | 2009-05-18 23:04:09 +0200 |
---|---|---|
committer | Guillaume Rousse <guillomovitch@zarb.org> | 2009-05-18 23:04:55 +0200 |
commit | b9109e12ba924284b312745367a14e0792c53d36 (patch) | |
tree | eb76d84fd27f67c02a803fae502e1a4cb744662e /contrib/heimdal | |
parent | 61c1f3a52f2b610d148bd9aa88fbc587c8350e4c (diff) | |
download | bash-completion-b9109e12ba924284b312745367a14e0792c53d36.tar.gz |
Added heimdal completion
Diffstat (limited to 'contrib/heimdal')
-rw-r--r-- | contrib/heimdal | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/contrib/heimdal b/contrib/heimdal new file mode 100644 index 00000000..f22a5866 --- /dev/null +++ b/contrib/heimdal @@ -0,0 +1,158 @@ +# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*- +# ex: ts=8 sw=8 noet filetype=sh +# +# bash completion for heimdal + +have ktutil && { +_heimdal_principals() +{ + + COMPREPLY=( $( kadmin -l dump 2>/dev/null | awk '{print $1}' | \ + grep "^$cur" ) ) +} + +_heimdal_realms() +{ + + COMPREPLY=( $( kadmin -l dump 2>/dev/null | awk '{print $1}' | \ + awk -F @ '{print $2}' | grep "^$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 command options + + COMPREPLY=() + cur=`_get_cword` + prev=${COMP_WORDS[COMP_CWORD-1]} + + case $prev in + -p) + _heimdal_principals + return 0 + ;; + -e) + _heimdal_encodings + return 0 + ;; + -a) + _known_hosts + return 0 + ;; + -r) + _heimdal_realms + return 0 + ;; + -@(s|k)) + _filedir + return 0 + ;; + esac + + if [[ "$cur" == *=* ]]; then + prev=${cur/=*/} + cur=${cur/*=/} + case "$prev" in + --principal) + _heimdal_principals + return 0 + ;; + --enctype) + _heimdal_encodings + return 0 + ;; + --admin-server) + _known_hosts + return 0 + ;; + --realm) + _heimdal_realms + return 0 + ;; + --@(srv|key)tab) + _filedir + return 0 + ;; + esac + fi + + commands='add change copy get list remove rename purge srvconvert \ + srv2keytab srvcreate key2srvtab' + + for (( i=1; i < COMP_CWORD; i++ )); do + case ${COMP_WORDS[i]} in + -@(k|-keytab)) + i=$(($i+1)) + ;; + -*) + ;; + *) + command=${COMP_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 +} |