From 9b471ede6894a3cd3288d43c622cee228cfd5c73 Mon Sep 17 00:00:00 2001 From: Jindrich Pilar Date: Tue, 23 Feb 2016 20:11:30 +0100 Subject: [PATCH] Completion for ufw added --- src/_ufw | 143 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 src/_ufw diff --git a/src/_ufw b/src/_ufw new file mode 100644 index 0000000..b4cf0f1 --- /dev/null +++ b/src/_ufw @@ -0,0 +1,143 @@ +#compdef ufw +# ------------------------------------------------------------------------------ +# Copyright (c) 2016 Github zsh-users - http://github.com/zsh-users +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# * Neither the name of the zsh-users nor the +# names of its contributors may be used to endorse or promote products +# derived from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY +# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# Completion script for The Uncomplicated Firewall (ufw). (https://launchpad.net/ufw). +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +# * Jindřich Pilař (https://github.com/JindrichPilar) +# +# ------------------------------------------------------------------------------ + + +_ufw_logging() { + + local main additional second + second=$words[2] + + if [ ! -z $second ]; then + return + fi + + params=( + "on" + "off" + ) + + additional=( + "low" + "medium" + "high" + "full" + ) + + _describe -t params 'On/Off' params + _describe -t additional 'Level' additional +} + + +_ufw_delete() { + local rules complrules second + + second=$words[2] + + if [ ! -z $second ]; then + return + fi + + complrules=() + rules=("${(f)$(ufw status | tr -s ' ' | tail -n +5 | tr -s '\n')}") + + for ((i=1; i<=${#rules[@]}; i++)); do + complrules+=("$i:$rules[i]"); + done + + _describe -t complrules 'Rules' complrules +} + +_ufw() { + local -a commands + + commands=( + "enable:Enables the firewall" + "disable:Disables the firewall" + "default:Set default policy" + "logging:Set logging to LEVEL" + "allow:Add allow rule" + "deny:Add deny rule" + "reject:Add reject rule" + "limit:Add limit rule" + "delete:Delete RULE" + "insert:Insert RULE at NUM" + "route:Add route RULE" + "reload:Reload firewall" + "reset:Reset firewall" + "status:Show firewall status" + "show:Show firewall report" + "version:Display version information" + ) + + + + _arguments -C -s -S -n \ + '(- 1 *)'--version"[Show program\'s version number and exit]: :->full" \ + '(- 1 *)'{-h,--help}'[Show help message and exit]: :->full' \ + '(- 1 *)'--dry-run"[Don\'t modify anything, just show the changes]: :->cmds" \ + '1:cmd:->cmds' \ + '*:: :->args' \ + + case "$state" in + (cmds) + _describe -t commands 'commands' commands + ;; + (args) + local cmd + cmd=$words[1] + case "$cmd" in + (logging) + _ufw_logging + ;; + (delete) + _ufw_delete + ;; + (*) + return + ;; + esac + ;; + (*) + ;; + esac +} + +_ufw +