summaryrefslogtreecommitdiff
path: root/contrib/heimdal
diff options
context:
space:
mode:
authorGuillaume Rousse <guillomovitch@zarb.org>2009-05-18 23:04:09 +0200
committerGuillaume Rousse <guillomovitch@zarb.org>2009-05-18 23:04:55 +0200
commitb9109e12ba924284b312745367a14e0792c53d36 (patch)
treeeb76d84fd27f67c02a803fae502e1a4cb744662e /contrib/heimdal
parent61c1f3a52f2b610d148bd9aa88fbc587c8350e4c (diff)
downloadbash-completion-b9109e12ba924284b312745367a14e0792c53d36.tar.gz
Added heimdal completion
Diffstat (limited to 'contrib/heimdal')
-rw-r--r--contrib/heimdal158
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
+}