97 lines
2.7 KiB
Bash
Executable File
97 lines
2.7 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# ufw-init: helper script to be used by ufw itself
|
|
#
|
|
# Copyright 2008-2015 Canonical Ltd.
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License version 3,
|
|
# as published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
set -e
|
|
|
|
# FIXME: this shouldn't be ordered
|
|
rootdir=
|
|
if [ "$1" = "--rootdir" ] && [ -n "$2" ]; then
|
|
rootdir="$2/" # ensure trailing slash
|
|
shift 2
|
|
fi
|
|
datadir=
|
|
if [ "$1" = "--datadir" ] && [ -n "$2" ]; then
|
|
datadir="$2/" # ensure trailing slash
|
|
shift 2
|
|
fi
|
|
export DATA_DIR="$datadir"
|
|
|
|
# Debian/Ubuntu: small boot speed improvement
|
|
. "${rootdir}/etc/ufw/ufw.conf"
|
|
if [ "$1" = "start" ] && [ "$2" = "quiet" ] && [ "$ENABLED" = "no" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [ -s "${rootdir}/lib/ufw/ufw-init-functions" ]; then
|
|
. "${rootdir}/lib/ufw/ufw-init-functions"
|
|
else
|
|
echo "Could not find ${rootdir}/lib/ufw/ufw-init-functions (aborting)"
|
|
exit 1
|
|
fi
|
|
|
|
case "$1" in
|
|
start)
|
|
# process multiple error strings
|
|
ret=0
|
|
output=`ufw_start` || ret="$?"
|
|
test -n "$output" && echo "$output" | while read line ; do
|
|
if [ "$2" = "quiet" ] || [ "$QUIET" = "yes" ]; then
|
|
echo "$line" | grep -q "Skip starting" && continue
|
|
fi
|
|
echo "$line"
|
|
done
|
|
exit "$ret"
|
|
;;
|
|
stop)
|
|
ufw_stop || exit "$?"
|
|
;;
|
|
force-stop)
|
|
ufw_stop --force || exit "$?"
|
|
;;
|
|
restart|force-reload)
|
|
ufw_reload || exit "$?"
|
|
;;
|
|
status)
|
|
ufw_status || exit "$?"
|
|
# If before.init and after.init support 'status', just display them after
|
|
# ufw_status() so it is prettier
|
|
if [ -x "$RULES_PATH/before.init" ]; then
|
|
"$RULES_PATH/before.init" status || exit "$?"
|
|
fi
|
|
if [ -x "$RULES_PATH/after.init" ]; then
|
|
"$RULES_PATH/after.init" status || exit "$?"
|
|
fi
|
|
;;
|
|
flush-all)
|
|
# Use sparingly. It flushes the built-in chains, deletes all non-builtin
|
|
# chains and resets the policy to ACCEPT
|
|
if [ -x "$RULES_PATH/before.init" ]; then
|
|
"$RULES_PATH/before.init" flush-all || exit "$?"
|
|
fi
|
|
flush_builtins || exit "$?"
|
|
if [ -x "$RULES_PATH/after.init" ]; then
|
|
"$RULES_PATH/after.init" flush-all || exit "$?"
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Usage: /lib/ufw/ufw-init {start|stop|restart|force-reload|force-stop|flush-all|status}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|