You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							115 lines
						
					
					
						
							2.6 KiB
						
					
					
				
			
		
		
	
	
							115 lines
						
					
					
						
							2.6 KiB
						
					
					
				| #compdef ufw | |
| #autoload | |
|  | |
| typeset -A opt_args | |
|  | |
| function _ufw_delete_rules { | |
|   if ufw status &> /dev/null ; then | |
|     ufw status numbered \ | |
|       | perl -n -e'/\[ +(\d+)\] +([^ ].+)/ && print "\"$1\[$2\]\" "' | |
|   fi | |
| } | |
|  | |
| function _ufw_app_profiles { | |
|   grep -rhoP "(?<=\[)[^\]]+" /etc/ufw/applications.d/ \ | |
|     | awk '{ print "\""$0"\""}' \ | |
|     | tr '\n' ' ' | |
| } | |
|  | |
| local -a _1st_arguments | |
| _1st_arguments=( | |
|   'allow:add allow rule' | |
|   'app:Application profile commands' | |
|   'default:set default policy' | |
|   'delete:delete RULE' | |
|   'deny:add deny rule' | |
|   'disable:disables the firewall' | |
|   'enable:enables the firewall' | |
|   'insert:insert RULE at NUM' | |
|   'limit:add limit rule' | |
|   'logging:set logging to LEVEL' | |
|   'reject:add reject rule' | |
|   'reload:reloads firewall' | |
|   'reset:reset firewall' | |
|   'show:show firewall report' | |
|   'status:show firewall status' | |
|   'version:display version information' | |
| ) | |
|  | |
| local context state line curcontext="$curcontext" | |
|  | |
| _arguments -C \ | |
|   '(--dry-run)--dry-run[dry run]' \ | |
|   '1:: :->cmds' \ | |
|   '2:: :->subcmds' \ | |
|   '3:: :->subsubcmds' \ | |
| && return 0 | |
|  | |
| local rules | |
|  | |
| case "$state" in | |
|   (cmds) | |
|     _describe -t commands "ufw commands" _1st_arguments | |
|     return 0 | |
|     ;; | |
|   (subcmds) | |
|     case "$line[1]" in | |
|       (app) | |
|         _values 'app' \ | |
|           'list[list application profiles]' \ | |
|           'info[show information on PROFILE]' \ | |
|           'update[update PROFILE]' \ | |
|           'default[set default application policy]' \ | |
|         && ret=0 | |
|         ;; | |
|       (status) | |
|         _values 'status' \ | |
|           'numbered[show firewall status as numbered list of RULES]' \ | |
|           'verbose[show verbose firewall status]' \ | |
|         && ret=0 | |
|         ;; | |
|       (logging) | |
|         _values 'logging' \ | |
|           'on' 'off' 'low' 'medium' 'high' 'full' \ | |
|         && ret=0 | |
|         ;; | |
|       (default) | |
|         _values 'default' \ | |
|           'allow' 'deny' 'reject' \ | |
|         && ret=0 | |
|         ;; | |
|       (show) | |
|         _values 'show' \ | |
|           'raw' 'builtins' 'before-rules' 'user-rules' 'after-rules' 'logging-rules' 'listening' 'added' \ | |
|         && ret=0 | |
|         ;; | |
|       (delete) | |
|         rules="$(_ufw_delete_rules)" | |
|         if [[ -n "$rules" ]] ; then | |
|           _values 'delete' \ | |
|             ${(Q)${(z)"$(_ufw_delete_rules)"}} \ | |
|           && ret=0 | |
|         fi | |
|         ;; | |
|     esac | |
|     ;; | |
|   (subsubcmds) | |
|     case "$line[1]" in | |
|       (app) | |
|         case "$line[2]" in | |
|           (info|update) | |
|             _values 'profiles' \ | |
|               ${(Q)${(z)"$(_ufw_app_profiles)"}} \ | |
|             && ret=0 | |
|             ;; | |
|         esac | |
|         ;; | |
|       (default) | |
|         _values 'default-direction' \ | |
|           'incoming' 'outgoing' \ | |
|         && ret=0 | |
|         ;; | |
|     esac | |
| esac | |
|  | |
| return
 | |
| 
 |