bash-completion/completions/ipsec

108 lines
3.2 KiB
Bash

# Linux ipsec(8) completion (for FreeS/WAN and strongSwan) -*- shell-script -*-
# Complete ipsec.conf conn entries.
#
# Reads a file from stdin in the ipsec.conf(5) format.
_ipsec_connections()
{
local keyword name
while read -r keyword name; do
if [[ $keyword == [#]* ]]; then continue; fi
[[ $keyword == conn && $name != '%default' ]] && COMPREPLY+=( "$name" )
done
COMPREPLY=( $( compgen -W '${COMPREPLY[@]}' -- "$cur" ) )
}
_ipsec_freeswan()
{
local cur prev words cword
_init_completion || return
if [[ $cword -eq 1 ]]; then
COMPREPLY=( $( compgen -W 'auto barf eroute klipsdebug look manual
pluto ranbits rsasigkey setup showdefaults showhostkey spi spigrp
tncfg whack' -- "$cur" ) )
return 0
fi
case ${words[1]} in
auto)
COMPREPLY=( $( compgen -W '--asynchronous --up --add --delete
--replace --down --route --unroute --ready --status
--rereadsecrets' -- "$cur" ) )
;;
manual)
COMPREPLY=( $( compgen -W '--up --down --route --unroute --union' \
-- "$cur" ) )
;;
ranbits)
COMPREPLY=( $( compgen -W '--quick --continuous --bytes' \
-- "$cur" ) )
;;
setup)
COMPREPLY=( $( compgen -W '--start --stop --restart' -- "$cur" ) )
;;
*)
;;
esac
return 0
}
_ipsec_strongswan()
{
local cur prev words cword
_init_completion || return
if [[ $cword -eq 1 ]]; then
COMPREPLY=( $( compgen -W 'down irdumm leases listaacerts listacerts
listalgs listall listcacerts listcainfos listcards listcerts
listcrls listgroups listocsp listocspcerts listpubkeys openac pki
pluto pool purgecerts purgecrls purgeike purgeocsp ready reload
rereadaacerts rereadacerts rereadall rereadcacerts rereadcrls
rereadgroups rereadocspcerts rereadsecrets restart route scdecrypt
scencrypt scepclient secrets start starter status statusall stop
stroke unroute uci up update version whack --confdir --copyright
--directory --help --version --versioncode' -- "$cur" ) )
return 0
fi
case ${words[1]} in
down|route|status|statusall|unroute|up)
local confdir=$( ipsec --confdir )
_ipsec_connections < "$confdir/ipsec.conf"
;;
list*)
COMPREPLY=( $( compgen -W '--utc' -- "$cur" ) )
;;
restart|start)
COMPREPLY=( $( compgen -W '--attach-gdb --auto-update --debug
--debug-all --debug-more --nofork' -- "$cur" ) )
;;
pki)
COMPREPLY=( $( compgen -W '--gen --issue --keyid --print --pub
--req --self --signcrl --verify' -- "$cur" ) )
;;
pool)
;;
irdumm)
_filedir 'rb'
;;
*)
;;
esac
return 0
}
case "$( ipsec --version 2>/dev/null )" in
*strongSwan*)
complete -F _ipsec_strongswan ipsec
;;
*)
complete -F _ipsec_freeswan ipsec
;;
esac
# ex: ts=4 sw=4 et filetype=sh