forked from extern/shorewall_code
Compare commits
3 Commits
5.1.7-Beta
...
4.6.4-base
Author | SHA1 | Date | |
---|---|---|---|
|
478e72451a | ||
|
54da615be0 | ||
|
2d948246c3 |
@@ -1,4 +1,4 @@
|
|||||||
Shoreline Firewall (Shorewall) Version 5
|
Shoreline Firewall (Shorewall) Version 4
|
||||||
----- ----
|
----- ----
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
44
Shorewall-core/configure
vendored
44
Shorewall-core/configure
vendored
@@ -28,7 +28,7 @@
|
|||||||
#
|
#
|
||||||
# Build updates this
|
# Build updates this
|
||||||
#
|
#
|
||||||
VERSION=4.6.12
|
VERSION=4.5.2.1
|
||||||
|
|
||||||
case "$BASH_VERSION" in
|
case "$BASH_VERSION" in
|
||||||
[4-9].*)
|
[4-9].*)
|
||||||
@@ -91,8 +91,6 @@ for p in $@; do
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
cd $(dirname $0)
|
|
||||||
|
|
||||||
vendor=${params[HOST]}
|
vendor=${params[HOST]}
|
||||||
|
|
||||||
if [ -z "$vendor" ]; then
|
if [ -z "$vendor" ]; then
|
||||||
@@ -124,6 +122,7 @@ if [ -z "$vendor" ]; then
|
|||||||
params[HOST]=apple
|
params[HOST]=apple
|
||||||
rcfile=shorewallrc.apple
|
rcfile=shorewallrc.apple
|
||||||
;;
|
;;
|
||||||
|
|
||||||
cygwin*|CYGWIN*)
|
cygwin*|CYGWIN*)
|
||||||
params[HOST]=cygwin
|
params[HOST]=cygwin
|
||||||
rcfile=shorewallrc.cygwin
|
rcfile=shorewallrc.cygwin
|
||||||
@@ -131,7 +130,7 @@ if [ -z "$vendor" ]; then
|
|||||||
*)
|
*)
|
||||||
if [ -f /etc/debian_version ]; then
|
if [ -f /etc/debian_version ]; then
|
||||||
params[HOST]=debian
|
params[HOST]=debian
|
||||||
ls -l /sbin/init | fgrep -q systemd && rcfile=shorewallrc.debian.systemd || rcfile=shorewallrc.debian.sysvinit
|
rcfile=shorewallrc.debian
|
||||||
elif [ -f /etc/redhat-release ]; then
|
elif [ -f /etc/redhat-release ]; then
|
||||||
params[HOST]=redhat
|
params[HOST]=redhat
|
||||||
rcfile=shorewallrc.redhat
|
rcfile=shorewallrc.redhat
|
||||||
@@ -144,41 +143,28 @@ if [ -z "$vendor" ]; then
|
|||||||
elif [ -f /etc/arch-release ] ; then
|
elif [ -f /etc/arch-release ] ; then
|
||||||
params[HOST]=archlinux
|
params[HOST]=archlinux
|
||||||
rcfile=shorewallrc.archlinux
|
rcfile=shorewallrc.archlinux
|
||||||
elif [ -f /etc/openwrt_release ]; then
|
|
||||||
params[HOST]=openwrt
|
|
||||||
rcfile=shorewallrc.openwrt
|
|
||||||
else
|
else
|
||||||
params[HOST]=linux
|
params[HOST]=linux
|
||||||
rcfile=shorewallrc.default
|
rcfile=shorewallrc.default
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
vendor=${params[HOST]}
|
|
||||||
else
|
|
||||||
if [ $vendor = linux ]; then
|
|
||||||
rcfile=shorewallrc.default;
|
|
||||||
elif [ $vendor = debian -a -f /etc/debian_version ]; then
|
|
||||||
ls -l /sbin/init | fgrep -q systemd && rcfile=shorewallrc.debian.systemd || rcfile=shorewallrc.debian.sysvinit
|
|
||||||
else
|
|
||||||
rcfile=shorewallrc.$vendor
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
vendor=${params[HOST]}
|
||||||
|
elif [ $vendor = linux ]; then
|
||||||
|
rcfile=shorewallrc.default;
|
||||||
|
else
|
||||||
|
rcfile=shorewallrc.$vendor
|
||||||
if [ ! -f $rcfile ]; then
|
if [ ! -f $rcfile ]; then
|
||||||
echo "ERROR: $vendor is not a recognized host type" >&2
|
echo "ERROR: $vendor is not a recognized host type" >&2
|
||||||
exit 1
|
exit 1
|
||||||
elif [ $vendor = default ]; then
|
|
||||||
params[HOST]=linux
|
|
||||||
vendor=linux
|
|
||||||
elif [[ $vendor == debian.* ]]; then
|
|
||||||
params[HOST]=debian
|
|
||||||
vendor=debian
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $vendor = linux ]; then
|
if [ $vendor = linux ]; then
|
||||||
echo "INFO: Creating a generic Linux installation - " `date`;
|
echo "INFO: Creating a generic Linux installation - " `date`;
|
||||||
else
|
else
|
||||||
echo "INFO: Creating a ${params[HOST]}-specific installation - " `date`;
|
echo "INFO: Creating a ${vendor}-specific installation - " `date`;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
@@ -190,8 +176,7 @@ for p in ${!params[@]}; do
|
|||||||
done
|
done
|
||||||
|
|
||||||
echo '#' > shorewallrc
|
echo '#' > shorewallrc
|
||||||
echo "# Created by Shorewall Core version $VERSION configure - " `date --utc --date="@${SOURCE_DATE_EPOCH:-$(date +%s)}"` >> shorewallrc
|
echo "# Created by Shorewall Core version $VERSION configure - " `date` >> shorewallrc
|
||||||
echo "# rc file: $rcfile" >> shorewallrc
|
|
||||||
echo '#' >> shorewallrc
|
echo '#' >> shorewallrc
|
||||||
|
|
||||||
if [ $# -gt 0 ]; then
|
if [ $# -gt 0 ]; then
|
||||||
@@ -210,10 +195,6 @@ elif [ -n "${options[VARDIR]}" ]; then
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -z "${options[SERVICEDIR]}" ]; then
|
|
||||||
options[SERVICEDIR]="${options[SYSTEMD]}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for on in \
|
for on in \
|
||||||
HOST \
|
HOST \
|
||||||
PREFIX \
|
PREFIX \
|
||||||
@@ -228,15 +209,14 @@ for on in \
|
|||||||
INITFILE \
|
INITFILE \
|
||||||
AUXINITSOURCE \
|
AUXINITSOURCE \
|
||||||
AUXINITFILE \
|
AUXINITFILE \
|
||||||
SERVICEDIR \
|
SYSTEMD \
|
||||||
SERVICEFILE \
|
SERVICEFILE \
|
||||||
SYSCONFFILE \
|
SYSCONFFILE \
|
||||||
SYSCONFDIR \
|
SYSCONFDIR \
|
||||||
SPARSE \
|
SPARSE \
|
||||||
ANNOTATED \
|
ANNOTATED \
|
||||||
VARLIB \
|
VARLIB \
|
||||||
VARDIR \
|
VARDIR
|
||||||
DEFAULT_PAGER
|
|
||||||
do
|
do
|
||||||
echo "$on=${options[${on}]}"
|
echo "$on=${options[${on}]}"
|
||||||
echo "$on=${options[${on}]}" >> shorewallrc
|
echo "$on=${options[${on}]}" >> shorewallrc
|
||||||
|
@@ -31,7 +31,7 @@ use strict;
|
|||||||
# Build updates this
|
# Build updates this
|
||||||
#
|
#
|
||||||
use constant {
|
use constant {
|
||||||
VERSION => '4.6.12'
|
VERSION => '4.5.2.1'
|
||||||
};
|
};
|
||||||
|
|
||||||
my %params;
|
my %params;
|
||||||
@@ -52,9 +52,6 @@ for ( @ARGV ) {
|
|||||||
$params{$pn} = $pv;
|
$params{$pn} = $pv;
|
||||||
}
|
}
|
||||||
|
|
||||||
use File::Basename;
|
|
||||||
chdir dirname($0);
|
|
||||||
|
|
||||||
my $vendor = $params{HOST};
|
my $vendor = $params{HOST};
|
||||||
my $rcfile;
|
my $rcfile;
|
||||||
my $rcfilename;
|
my $rcfilename;
|
||||||
@@ -71,52 +68,23 @@ unless ( defined $vendor ) {
|
|||||||
$vendor = 'redhat';
|
$vendor = 'redhat';
|
||||||
} elsif ( $id eq 'opensuse' ) {
|
} elsif ( $id eq 'opensuse' ) {
|
||||||
$vendor = 'suse';
|
$vendor = 'suse';
|
||||||
} elsif ( $id eq 'ubuntu' || $id eq 'debian' ) {
|
} elsif ( $id eq 'ubuntu' ) {
|
||||||
my $init = `ls -l /sbin/init`;
|
$vendor = 'debian';
|
||||||
$vendor = $init =~ /systemd/ ? 'debian.systemd' : 'debian.sysvinit';
|
|
||||||
} else {
|
} else {
|
||||||
$vendor = $id;
|
$vendor = $id;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$params{HOST} = $vendor;
|
$params{HOST} = $vendor;
|
||||||
$params{HOST} =~ s/\..*//;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( defined $vendor ) {
|
if ( defined $vendor ) {
|
||||||
if ( $vendor eq 'debian' && -f '/etc/debian_version' ) {
|
$rcfilename = $vendor eq 'linux' ? 'shorewallrc.default' : 'shorewallrc.' . $vendor;
|
||||||
if ( -l '/sbin/init' ) {
|
die qq("ERROR: $vendor" is not a recognized host type) unless -f $rcfilename;
|
||||||
if ( readlink('/sbin/init') =~ /systemd/ ) {
|
|
||||||
$rcfilename = 'shorewallrc.debian.systemd';
|
|
||||||
} else {
|
|
||||||
$rcfilename = 'shorewallrc.debian.sysvinit';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$rcfilename = 'shorewallrc.debian.sysvinit';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$rcfilename = $vendor eq 'linux' ? 'shorewallrc.default' : 'shorewallrc.' . $vendor;
|
|
||||||
}
|
|
||||||
|
|
||||||
unless ( -f $rcfilename ) {
|
|
||||||
die qq("ERROR: $vendor" is not a recognized host type);
|
|
||||||
} elsif ( $vendor eq 'default' ) {
|
|
||||||
$params{HOST} = $vendor = 'linux';
|
|
||||||
} elsif ( $vendor =~ /^debian\./ ) {
|
|
||||||
$params{HOST} = $vendor = 'debian';
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if ( -f '/etc/debian_version' ) {
|
if ( -f '/etc/debian_version' ) {
|
||||||
$vendor = 'debian';
|
$vendor = 'debian';
|
||||||
if ( -l '/sbin/init' ) {
|
$rcfilename = 'shorewallrc.debian';
|
||||||
if ( readlink( '/sbin/init' ) =~ /systemd/ ) {
|
|
||||||
$rcfilename = 'shorewallrc.debian.systemd';
|
|
||||||
} else {
|
|
||||||
$rcfilename = 'shorewallrc.debian.sysvinit';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$rcfilename = 'shorewallrc.debian.sysvinit';
|
|
||||||
}
|
|
||||||
} elsif ( -f '/etc/redhat-release' ){
|
} elsif ( -f '/etc/redhat-release' ){
|
||||||
$vendor = 'redhat';
|
$vendor = 'redhat';
|
||||||
$rcfilename = 'shorewallrc.redhat';
|
$rcfilename = 'shorewallrc.redhat';
|
||||||
@@ -149,7 +117,7 @@ my @abbr = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
|
|||||||
if ( $vendor eq 'linux' ) {
|
if ( $vendor eq 'linux' ) {
|
||||||
printf "INFO: Creating a generic Linux installation - %s %2d %04d %02d:%02d:%02d\n\n", $abbr[$localtime[4]], $localtime[3], 1900 + $localtime[5] , @localtime[2,1,0];;
|
printf "INFO: Creating a generic Linux installation - %s %2d %04d %02d:%02d:%02d\n\n", $abbr[$localtime[4]], $localtime[3], 1900 + $localtime[5] , @localtime[2,1,0];;
|
||||||
} else {
|
} else {
|
||||||
printf "INFO: Creating a %s-specific installation - %s %2d %04d %02d:%02d:%02d\n\n", $params{HOST}, $abbr[$localtime[4]], $localtime[3], 1900 + $localtime[5] , @localtime[2,1,0];;
|
printf "INFO: Creating a %s-specific installation - %s %2d %04d %02d:%02d:%02d\n\n", $vendor, $abbr[$localtime[4]], $localtime[3], 1900 + $localtime[5] , @localtime[2,1,0];;
|
||||||
}
|
}
|
||||||
|
|
||||||
open $rcfile, '<', $rcfilename or die "Unable to open $rcfilename for input: $!";
|
open $rcfile, '<', $rcfilename or die "Unable to open $rcfilename for input: $!";
|
||||||
@@ -173,13 +141,7 @@ my $outfile;
|
|||||||
|
|
||||||
open $outfile, '>', 'shorewallrc' or die "Can't open 'shorewallrc' for output: $!";
|
open $outfile, '>', 'shorewallrc' or die "Can't open 'shorewallrc' for output: $!";
|
||||||
|
|
||||||
if ( $ENV{SOURCE_DATE_EPOCH} ) {
|
printf $outfile "#\n# Created by Shorewall Core version %s configure.pl - %s %2d %04d %02d:%02d:%02d\n#\n", VERSION, $abbr[$localtime[4]], $localtime[3], 1900 + $localtime[5] , @localtime[2,1,0];
|
||||||
printf $outfile "#\n# Created by Shorewall Core version %s configure.pl - %s\n", VERSION, `date --utc --date=\"\@$ENV{SOURCE_DATE_EPOCH}\"`;
|
|
||||||
} else {
|
|
||||||
printf $outfile "#\n# Created by Shorewall Core version %s configure.pl - %s %2d %04d %02d:%02d:%02d\n", VERSION, $abbr[$localtime[4]], $localtime[3], 1900 + $localtime[5] , @localtime[2,1,0];
|
|
||||||
}
|
|
||||||
|
|
||||||
print $outfile "# rc file: $rcfilename\n#\n";
|
|
||||||
|
|
||||||
print $outfile "# Input: @ARGV\n#\n" if @ARGV;
|
print $outfile "# Input: @ARGV\n#\n" if @ARGV;
|
||||||
|
|
||||||
@@ -192,8 +154,6 @@ if ( $options{VARLIB} ) {
|
|||||||
$options{VARDIR} = '${VARLIB}/${PRODUCT}';
|
$options{VARDIR} = '${VARLIB}/${PRODUCT}';
|
||||||
}
|
}
|
||||||
|
|
||||||
$options{SERVICEDIR}=$options{SYSTEMD} unless $options{SERVICEDIR};
|
|
||||||
|
|
||||||
for ( qw/ HOST
|
for ( qw/ HOST
|
||||||
PREFIX
|
PREFIX
|
||||||
SHAREDIR
|
SHAREDIR
|
||||||
@@ -207,15 +167,14 @@ for ( qw/ HOST
|
|||||||
INITFILE
|
INITFILE
|
||||||
AUXINITSOURCE
|
AUXINITSOURCE
|
||||||
AUXINITFILE
|
AUXINITFILE
|
||||||
SERVICEDIR
|
SYSTEMD
|
||||||
SERVICEFILE
|
SERVICEFILE
|
||||||
SYSCONFFILE
|
SYSCONFFILE
|
||||||
SYSCONFDIR
|
SYSCONFDIR
|
||||||
SPARSE
|
SPARSE
|
||||||
ANNOTATED
|
ANNOTATED
|
||||||
VARLIB
|
VARLIB
|
||||||
VARDIR
|
VARDIR / ) {
|
||||||
DEFAULT_PAGER / ) {
|
|
||||||
|
|
||||||
my $val = $options{$_} || '';
|
my $val = $options{$_} || '';
|
||||||
|
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Script to install Shoreline Firewall Core Modules
|
# Script to install Shoreline Firewall Core Modules
|
||||||
#
|
#
|
||||||
# (c) 2000-2016 - Tom Eastep (teastep@shorewall.net)
|
# (c) 2000-2011,2014 - Tom Eastep (teastep@shorewall.net)
|
||||||
#
|
#
|
||||||
# Shorewall documentation is available at http://shorewall.net
|
# Shorewall documentation is available at http://shorewall.net
|
||||||
#
|
#
|
||||||
@@ -22,47 +22,81 @@
|
|||||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
VERSION=xxx # The Build script inserts the actual version
|
VERSION=xxx #The Build script inserts the actual version
|
||||||
PRODUCT=shorewall-core
|
|
||||||
Product="Shorewall Core"
|
|
||||||
|
|
||||||
usage() # $1 = exit status
|
usage() # $1 = exit status
|
||||||
{
|
{
|
||||||
ME=$(basename $0)
|
ME=$(basename $0)
|
||||||
echo "usage: $ME [ <option> ] [ <shorewallrc file> ]"
|
echo "usage: $ME [ <configuration-file> ] "
|
||||||
echo "where <option> is one of"
|
echo " $ME -v"
|
||||||
echo " -h"
|
echo " $ME -h"
|
||||||
echo " -v"
|
|
||||||
exit $1
|
exit $1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fatal_error()
|
||||||
|
{
|
||||||
|
echo " ERROR: $@" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
split() {
|
||||||
|
local ifs
|
||||||
|
ifs=$IFS
|
||||||
|
IFS=:
|
||||||
|
set -- $1
|
||||||
|
echo $*
|
||||||
|
IFS=$ifs
|
||||||
|
}
|
||||||
|
|
||||||
|
qt()
|
||||||
|
{
|
||||||
|
"$@" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
mywhich() {
|
||||||
|
local dir
|
||||||
|
|
||||||
|
for dir in $(split $PATH); do
|
||||||
|
if [ -x $dir/$1 ]; then
|
||||||
|
echo $dir/$1
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
run_install()
|
||||||
|
{
|
||||||
|
if ! install $*; then
|
||||||
|
echo
|
||||||
|
echo "ERROR: Failed to install $*" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
cant_autostart()
|
||||||
|
{
|
||||||
|
echo
|
||||||
|
echo "WARNING: Unable to configure shorewall to start automatically at boot" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
delete_file() # $1 = file to delete
|
||||||
|
{
|
||||||
|
rm -f $1
|
||||||
|
}
|
||||||
|
|
||||||
install_file() # $1 = source $2 = target $3 = mode
|
install_file() # $1 = source $2 = target $3 = mode
|
||||||
{
|
{
|
||||||
if cp -f $1 $2; then
|
run_install $T $OWNERSHIP -m $3 $1 ${2}
|
||||||
if chmod $3 $2; then
|
|
||||||
if [ -n "$OWNER" ]; then
|
|
||||||
if chown $OWNER:$GROUP $2; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "ERROR: Failed to install $2" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
require()
|
||||||
# Change to the directory containing this script
|
{
|
||||||
#
|
eval [ -n "\$$1" ] || fatal_error "Required option $1 not set"
|
||||||
cd "$(dirname $0)"
|
}
|
||||||
|
|
||||||
#
|
cd "$(dirname $0)"
|
||||||
# Source common functions
|
|
||||||
#
|
|
||||||
. ./lib.installer || { echo "ERROR: Can not load common functions." >&2; exit 1; }
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parse the run line
|
# Parse the run line
|
||||||
@@ -82,7 +116,7 @@ while [ $finished -eq 0 ]; do
|
|||||||
usage 0
|
usage 0
|
||||||
;;
|
;;
|
||||||
v)
|
v)
|
||||||
echo "$Product Firewall Installer Version $VERSION"
|
echo "Shorewall Firewall Installer Version $VERSION"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
@@ -104,14 +138,14 @@ done
|
|||||||
#
|
#
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
if [ -f ./shorewallrc ]; then
|
if [ -f ./shorewallrc ]; then
|
||||||
|
. ./shorewallrc
|
||||||
file=./shorewallrc
|
file=./shorewallrc
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
|
||||||
elif [ -f ~/.shorewallrc ]; then
|
elif [ -f ~/.shorewallrc ]; then
|
||||||
|
. ~/.shorewallrc || exit 1
|
||||||
file=~/.shorewallrc
|
file=~/.shorewallrc
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
|
||||||
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
||||||
|
. /usr/share/shorewall/shorewallrc
|
||||||
file=/usr/share/shorewall/shorewallrc
|
file=/usr/share/shorewall/shorewallrc
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
|
||||||
else
|
else
|
||||||
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
||||||
fi
|
fi
|
||||||
@@ -125,7 +159,7 @@ elif [ $# -eq 1 ]; then
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
. $file
|
||||||
else
|
else
|
||||||
usage 1
|
usage 1
|
||||||
fi
|
fi
|
||||||
@@ -147,6 +181,10 @@ done
|
|||||||
|
|
||||||
[ "${INITFILE}" != 'none/' ] && require INITSOURCE && require INITDIR
|
[ "${INITFILE}" != 'none/' ] && require INITSOURCE && require INITDIR
|
||||||
|
|
||||||
|
T="-T"
|
||||||
|
|
||||||
|
INSTALLD='-D'
|
||||||
|
|
||||||
if [ -z "$BUILD" ]; then
|
if [ -z "$BUILD" ]; then
|
||||||
case $(uname) in
|
case $(uname) in
|
||||||
cygwin*|CYGWIN*)
|
cygwin*|CYGWIN*)
|
||||||
@@ -188,8 +226,6 @@ if [ -z "$BUILD" ]; then
|
|||||||
BUILD=suse
|
BUILD=suse
|
||||||
elif [ -f /etc/arch-release ] ; then
|
elif [ -f /etc/arch-release ] ; then
|
||||||
BUILD=archlinux
|
BUILD=archlinux
|
||||||
elif [ -f ${CONFDIR}/openwrt_release ] ; then
|
|
||||||
BUILD=openwrt
|
|
||||||
else
|
else
|
||||||
BUILD=linux
|
BUILD=linux
|
||||||
fi
|
fi
|
||||||
@@ -216,15 +252,17 @@ case $BUILD in
|
|||||||
|
|
||||||
[ -z "$OWNER" ] && OWNER=root
|
[ -z "$OWNER" ] && OWNER=root
|
||||||
[ -z "$GROUP" ] && GROUP=wheel
|
[ -z "$GROUP" ] && GROUP=wheel
|
||||||
|
INSTALLD=
|
||||||
|
T=
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if [ $(id -u) -eq 0 ]; then
|
[ -z "$OWNER" ] && OWNER=root
|
||||||
[ -z "$OWNER" ] && OWNER=root
|
[ -z "$GROUP" ] && GROUP=root
|
||||||
[ -z "$GROUP" ] && GROUP=root
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
OWNERSHIP="-o $OWNER -g $GROUP"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Determine where to install the firewall script
|
# Determine where to install the firewall script
|
||||||
#
|
#
|
||||||
@@ -238,15 +276,16 @@ case "$HOST" in
|
|||||||
apple)
|
apple)
|
||||||
echo "Installing Mac-specific configuration...";
|
echo "Installing Mac-specific configuration...";
|
||||||
;;
|
;;
|
||||||
debian|gentoo|redhat|slackware|archlinux|linux|suse|openwrt)
|
debian|gentoo|redhat|slackware|archlinux|linux|suse)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
fatal_error "Unknown HOST \"$HOST\""
|
echo "ERROR: Unknown HOST \"$HOST\"" >&2
|
||||||
|
exit 1;
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ -z "$file" ]; then
|
if [ -z "$file" ]; then
|
||||||
if [ $HOST = linux ]; then
|
if $HOST = linux; then
|
||||||
file=shorewallrc.default
|
file=shorewallrc.default
|
||||||
else
|
else
|
||||||
file=shorewallrc.${HOST}
|
file=shorewallrc.${HOST}
|
||||||
@@ -259,43 +298,51 @@ if [ -z "$file" ]; then
|
|||||||
echo "" >&2
|
echo "" >&2
|
||||||
echo "Example:" >&2
|
echo "Example:" >&2
|
||||||
echo "" >&2
|
echo "" >&2
|
||||||
echo " ./install.sh $file" >&2
|
echo " ./install.sh $file" &>2
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$DESTDIR" ]; then
|
if [ -n "$DESTDIR" ]; then
|
||||||
if [ $BUILD != cygwin ]; then
|
if [ $BUILD != cygwin ]; then
|
||||||
if [ `id -u` != 0 ] ; then
|
if [ `id -u` != 0 ] ; then
|
||||||
echo "Not setting file owner/group permissions, not running as root."
|
echo "Not setting file owner/group permissions, not running as root."
|
||||||
|
OWNERSHIP=""
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Installing $Product Version $VERSION"
|
echo "Installing Shorewall Core Version $VERSION"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Create directories
|
# Create directories
|
||||||
#
|
#
|
||||||
make_parent_directory ${DESTDIR}${LIBEXECDIR}/shorewall 0755
|
mkdir -p ${DESTDIR}${LIBEXECDIR}/shorewall
|
||||||
|
chmod 755 ${DESTDIR}${LIBEXECDIR}/shorewall
|
||||||
|
|
||||||
make_parent_directory ${DESTDIR}${SHAREDIR}/shorewall 0755
|
mkdir -p ${DESTDIR}${SHAREDIR}/shorewall
|
||||||
|
chmod 755 ${DESTDIR}${SHAREDIR}/shorewall
|
||||||
|
|
||||||
make_parent_directory ${DESTDIR}${CONFDIR} 0755
|
mkdir -p ${DESTDIR}${CONFDIR}
|
||||||
|
chmod 755 ${DESTDIR}${CONFDIR}
|
||||||
|
|
||||||
[ -n "${SYSCONFDIR}" ] && make_parent_directory ${DESTDIR}${SYSCONFDIR} 0755
|
if [ -n "${SYSCONFDIR}" ]; then
|
||||||
|
mkdir -p ${DESTDIR}${SYSCONFDIR}
|
||||||
if [ -z "${SERVICEDIR}" ]; then
|
chmod 755 ${DESTDIR}${SYSCONFDIR}
|
||||||
SERVICEDIR="$SYSTEMD"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "${SERVICEDIR}" ] && make_parent_directory ${DESTDIR}${SERVICEDIR} 0755
|
if [ -n "${SYSTEMD}" ]; then
|
||||||
|
mkdir -p ${DESTDIR}${SYSTEMD}
|
||||||
|
chmod 755 ${DESTDIR}${SYSTEMD}
|
||||||
|
fi
|
||||||
|
|
||||||
make_parent_directory ${DESTDIR}${SBINDIR} 0755
|
mkdir -p ${DESTDIR}${SBINDIR}
|
||||||
|
chmod 755 ${DESTDIR}${SBINDIR}
|
||||||
|
|
||||||
[ -n "${MANDIR}" ] && make_parent_directory ${DESTDIR}${MANDIR} 0755
|
mkdir -p ${DESTDIR}${MANDIR}
|
||||||
|
chmod 755 ${DESTDIR}${MANDIR}
|
||||||
|
|
||||||
if [ -n "${INITFILE}" ]; then
|
if [ -n "${INITFILE}" ]; then
|
||||||
make_parent_directory ${DESTDIR}${INITDIR} 0755
|
mkdir -p ${DESTDIR}${INITDIR}
|
||||||
|
chmod 755 ${DESTDIR}${INITDIR}
|
||||||
|
|
||||||
if [ -n "$AUXINITSOURCE" -a -f "$AUXINITSOURCE" ]; then
|
if [ -n "$AUXINITSOURCE" -a -f "$AUXINITSOURCE" ]; then
|
||||||
install_file $AUXINITSOURCE ${DESTDIR}${INITDIR}/$AUXINITFILE 0544
|
install_file $AUXINITSOURCE ${DESTDIR}${INITDIR}/$AUXINITFILE 0544
|
||||||
@@ -307,12 +354,6 @@ fi
|
|||||||
# Note: ${VARDIR} is created at run-time since it has always been
|
# Note: ${VARDIR} is created at run-time since it has always been
|
||||||
# a relocatable directory on a per-product basis
|
# a relocatable directory on a per-product basis
|
||||||
#
|
#
|
||||||
# Install the CLI
|
|
||||||
#
|
|
||||||
install_file shorewall ${DESTDIR}${SBINDIR}/shorewall 0755
|
|
||||||
[ $SHAREDIR = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${SBINDIR}/shorewall
|
|
||||||
echo "Shorewall CLI program installed in ${DESTDIR}${SBINDIR}/shorewall"
|
|
||||||
#
|
|
||||||
# Install wait4ifup
|
# Install wait4ifup
|
||||||
#
|
#
|
||||||
install_file wait4ifup ${DESTDIR}${LIBEXECDIR}/shorewall/wait4ifup 0755
|
install_file wait4ifup ${DESTDIR}${LIBEXECDIR}/shorewall/wait4ifup 0755
|
||||||
@@ -324,41 +365,10 @@ echo "wait4ifup installed in ${DESTDIR}${LIBEXECDIR}/shorewall/wait4ifup"
|
|||||||
# Install the libraries
|
# Install the libraries
|
||||||
#
|
#
|
||||||
for f in lib.* ; do
|
for f in lib.* ; do
|
||||||
case $f in
|
install_file $f ${DESTDIR}${SHAREDIR}/shorewall/$f 0644
|
||||||
*installer)
|
echo "Library ${f#*.} file installed as ${DESTDIR}${SHAREDIR}/shorewall/$f"
|
||||||
;;
|
|
||||||
*)
|
|
||||||
install_file $f ${DESTDIR}${SHAREDIR}/shorewall/$f 0644
|
|
||||||
echo "Library ${f#*.} file installed as ${DESTDIR}${SHAREDIR}/shorewall/$f"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
done
|
||||||
|
|
||||||
if [ $SHAREDIR != /usr/share ]; then
|
|
||||||
eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${SHAREDIR}/${PRODUCT}/lib.base
|
|
||||||
eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${SHAREDIR}/${PRODUCT}/lib.core
|
|
||||||
eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${SHAREDIR}/${PRODUCT}/lib.cli
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
|
||||||
# Install the Man Pages
|
|
||||||
#
|
|
||||||
if [ -n "$MANDIR" ]; then
|
|
||||||
cd manpages
|
|
||||||
|
|
||||||
[ -n "$INSTALLD" ] || make_parent_directory ${DESTDIR}${MANDIR}/man8 0755
|
|
||||||
|
|
||||||
for f in *.8; do
|
|
||||||
gzip -9c $f > $f.gz
|
|
||||||
install_file $f.gz ${DESTDIR}${MANDIR}/man8/$f.gz 0644
|
|
||||||
echo "Man page $f.gz installed to ${DESTDIR}${MANDIR}/man8/$f.gz"
|
|
||||||
done
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
|
|
||||||
echo "Man Pages Installed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Symbolically link 'functions' to lib.base
|
# Symbolically link 'functions' to lib.base
|
||||||
#
|
#
|
||||||
@@ -367,7 +377,7 @@ ln -sf lib.base ${DESTDIR}${SHAREDIR}/shorewall/functions
|
|||||||
# Create the version file
|
# Create the version file
|
||||||
#
|
#
|
||||||
echo "$VERSION" > ${DESTDIR}${SHAREDIR}/shorewall/coreversion
|
echo "$VERSION" > ${DESTDIR}${SHAREDIR}/shorewall/coreversion
|
||||||
chmod 0644 ${DESTDIR}${SHAREDIR}/shorewall/coreversion
|
chmod 644 ${DESTDIR}${SHAREDIR}/shorewall/coreversion
|
||||||
|
|
||||||
if [ -z "${DESTDIR}" ]; then
|
if [ -z "${DESTDIR}" ]; then
|
||||||
if [ $update -ne 0 ]; then
|
if [ $update -ne 0 ]; then
|
||||||
@@ -392,20 +402,14 @@ fi
|
|||||||
|
|
||||||
if [ ${SHAREDIR} != /usr/share ]; then
|
if [ ${SHAREDIR} != /usr/share ]; then
|
||||||
for f in lib.*; do
|
for f in lib.*; do
|
||||||
case $f in
|
if [ $BUILD != apple ]; then
|
||||||
*installer)
|
eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}/${SHAREDIR}/shorewall/$f
|
||||||
;;
|
else
|
||||||
*)
|
eval sed -i \'\' -e \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}/${SHAREDIR}/shorewall/$f
|
||||||
if [ $BUILD != apple ]; then
|
fi
|
||||||
eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${SHAREDIR}/shorewall/$f
|
|
||||||
else
|
|
||||||
eval sed -i \'\' -e \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${SHAREDIR}/shorewall/$f
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
#
|
#
|
||||||
# Report Success
|
# Report Success
|
||||||
#
|
#
|
||||||
echo "$Product Version $VERSION Installed"
|
echo "Shorewall Core Version $VERSION Installed"
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# Shorewall 5.0 -- /usr/share/shorewall/lib.base
|
# Shorewall 4.5 -- /usr/share/shorewall/lib.base
|
||||||
#
|
#
|
||||||
# (c) 1999-2015 - Tom Eastep (teastep@shorewall.net)
|
# (c) 1999-2014 - Tom Eastep (teastep@shorewall.net)
|
||||||
#
|
#
|
||||||
# Complete documentation is available at http://shorewall.net
|
# Complete documentation is available at http://shorewall.net
|
||||||
#
|
#
|
||||||
@@ -20,22 +20,394 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
# This library is a compatibility wrapper around lib.core.
|
# This library contains the code common to all Shorewall components except the
|
||||||
|
# generated scripts.
|
||||||
#
|
#
|
||||||
|
|
||||||
if [ -z "$PRODUCT" ]; then
|
SHOREWALL_LIBVERSION=40509
|
||||||
|
|
||||||
|
[ -n "${g_program:=shorewall}" ]
|
||||||
|
|
||||||
|
if [ -z "$g_readrc" ]; then
|
||||||
#
|
#
|
||||||
# This is modified by the installer when ${SHAREDIR} != /usr/share
|
# This is modified by the installer when ${SHAREDIR} != /usr/share
|
||||||
#
|
#
|
||||||
. /usr/share/shorewall/shorewallrc
|
. /usr/share/shorewall/shorewallrc
|
||||||
|
|
||||||
g_basedir=${SHAREDIR}/shorewall
|
g_sharedir="$SHAREDIR"/$g_program
|
||||||
|
g_confdir="$CONFDIR"/$g_program
|
||||||
|
g_readrc=1
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "$SHOREWALL_LIBVERSION" ]; then
|
g_basedir=${SHAREDIR}/shorewall
|
||||||
. ${g_basedir}/lib.core
|
|
||||||
|
case $g_program in
|
||||||
|
shorewall)
|
||||||
|
g_product="Shorewall"
|
||||||
|
g_family=4
|
||||||
|
g_tool=iptables
|
||||||
|
g_lite=
|
||||||
|
;;
|
||||||
|
shorewall6)
|
||||||
|
g_product="Shorewall6"
|
||||||
|
g_family=6
|
||||||
|
g_tool=ip6tables
|
||||||
|
g_lite=
|
||||||
|
;;
|
||||||
|
shorewall-lite)
|
||||||
|
g_product="Shorewall Lite"
|
||||||
|
g_family=4
|
||||||
|
g_tool=iptables
|
||||||
|
g_lite=Yes
|
||||||
|
;;
|
||||||
|
shorewall6-lite)
|
||||||
|
g_product="Shorewall6 Lite"
|
||||||
|
g_family=6
|
||||||
|
g_tool=ip6tables
|
||||||
|
g_lite=Yes
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "${VARLIB}" ]; then
|
||||||
|
VARLIB=${VARDIR}
|
||||||
|
VARDIR=${VARLIB}/$g_program
|
||||||
|
elif [ -z "${VARDIR}" ]; then
|
||||||
|
VARDIR="${VARLIB}/${PRODUCT}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Conditionally produce message
|
||||||
|
#
|
||||||
|
progress_message() # $* = Message
|
||||||
|
{
|
||||||
|
local timestamp
|
||||||
|
timestamp=
|
||||||
|
|
||||||
|
if [ $VERBOSITY -gt 1 ]; then
|
||||||
|
[ -n "$g_timestamp" ] && timestamp="$(date +%H:%M:%S) "
|
||||||
|
echo "${timestamp}$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
progress_message2() # $* = Message
|
||||||
|
{
|
||||||
|
local timestamp
|
||||||
|
timestamp=
|
||||||
|
|
||||||
|
if [ $VERBOSITY -gt 0 ]; then
|
||||||
|
[ -n "$g_timestamp" ] && timestamp="$(date +%H:%M:%S) "
|
||||||
|
echo "${timestamp}$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
progress_message3() # $* = Message
|
||||||
|
{
|
||||||
|
local timestamp
|
||||||
|
timestamp=
|
||||||
|
|
||||||
|
if [ $VERBOSITY -ge 0 ]; then
|
||||||
|
[ -n "$g_timestamp" ] && timestamp="$(date +%H:%M:%S) "
|
||||||
|
echo "${timestamp}$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Undo the effect of 'separate_list()'
|
||||||
|
#
|
||||||
|
combine_list()
|
||||||
|
{
|
||||||
|
local f
|
||||||
|
local o
|
||||||
|
o=
|
||||||
|
|
||||||
|
for f in $* ; do
|
||||||
|
o="${o:+$o,}$f"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo $o
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Validate an IP address
|
||||||
|
#
|
||||||
|
valid_address() {
|
||||||
|
local x
|
||||||
|
local y
|
||||||
|
local ifs
|
||||||
|
ifs=$IFS
|
||||||
|
|
||||||
|
IFS=.
|
||||||
|
|
||||||
|
for x in $1; do
|
||||||
|
case $x in
|
||||||
|
[0-9]|[0-9][0-9]|[1-2][0-9][0-9])
|
||||||
|
[ $x -lt 256 ] || { IFS=$ifs; return 2; }
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
IFS=$ifs
|
||||||
|
return 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
IFS=$ifs
|
||||||
|
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Miserable Hack to work around broken BusyBox ash in OpenWRT
|
||||||
|
#
|
||||||
|
addr_comp() {
|
||||||
|
test $(bc <<EOF
|
||||||
|
$1 > $2
|
||||||
|
EOF
|
||||||
|
) -eq 1
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enumerate the members of an IP range -- When using a shell supporting only
|
||||||
|
# 32-bit signed arithmetic, the range cannot span 128.0.0.0.
|
||||||
|
#
|
||||||
|
# Comes in two flavors:
|
||||||
|
#
|
||||||
|
# ip_range() - produces a mimimal list of network/host addresses that spans
|
||||||
|
# the range.
|
||||||
|
#
|
||||||
|
# ip_range_explicit() - explicitly enumerates the range.
|
||||||
|
#
|
||||||
|
ip_range() {
|
||||||
|
local first
|
||||||
|
local last
|
||||||
|
local l
|
||||||
|
local x
|
||||||
|
local y
|
||||||
|
local z
|
||||||
|
local vlsm
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
!*)
|
||||||
|
#
|
||||||
|
# Let iptables complain if it's a range
|
||||||
|
#
|
||||||
|
echo $1
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
[0-9]*.*.*.*-*.*.*.*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo $1
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
first=$(decodeaddr ${1%-*})
|
||||||
|
last=$(decodeaddr ${1#*-})
|
||||||
|
|
||||||
|
if addr_comp $first $last; then
|
||||||
|
fatal_error "Invalid IP address range: $1"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
set_default_product
|
l=$(( $last + 1 ))
|
||||||
|
|
||||||
setup_product_environment
|
while addr_comp $l $first; do
|
||||||
fi
|
vlsm=
|
||||||
|
x=31
|
||||||
|
y=2
|
||||||
|
z=1
|
||||||
|
|
||||||
|
while [ $(( $first % $y )) -eq 0 ] && ! addr_comp $(( $first + $y )) $l; do
|
||||||
|
vlsm=/$x
|
||||||
|
x=$(( $x - 1 ))
|
||||||
|
z=$y
|
||||||
|
y=$(( $y * 2 ))
|
||||||
|
done
|
||||||
|
|
||||||
|
echo $(encodeaddr $first)$vlsm
|
||||||
|
first=$(($first + $z))
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
ip_range_explicit() {
|
||||||
|
local first
|
||||||
|
local last
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
[0-9]*.*.*.*-*.*.*.*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo $1
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
first=$(decodeaddr ${1%-*})
|
||||||
|
last=$(decodeaddr ${1#*-})
|
||||||
|
|
||||||
|
if addr_comp $first $last; then
|
||||||
|
fatal_error "Invalid IP address range: $1"
|
||||||
|
fi
|
||||||
|
|
||||||
|
while ! addr_comp $first $last; do
|
||||||
|
echo $(encodeaddr $first)
|
||||||
|
first=$(($first + 1))
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
[ -z "$LEFTSHIFT" ] && . ${g_basedir}/lib.common
|
||||||
|
|
||||||
|
#
|
||||||
|
# Netmask to VLSM
|
||||||
|
#
|
||||||
|
ip_vlsm() {
|
||||||
|
local mask
|
||||||
|
mask=$(decodeaddr $1)
|
||||||
|
local vlsm
|
||||||
|
vlsm=0
|
||||||
|
local x
|
||||||
|
x=$(( 128 << 24 )) # 0x80000000
|
||||||
|
|
||||||
|
while [ $(( $x & $mask )) -ne 0 ]; do
|
||||||
|
[ $mask -eq $x ] && mask=0 || mask=$(( $mask $LEFTSHIFT 1 )) # Not all shells shift 0x80000000 left properly.
|
||||||
|
vlsm=$(($vlsm + 1))
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $(( $mask & 2147483647 )) -ne 0 ]; then # 2147483647 = 0x7fffffff
|
||||||
|
echo "Invalid net mask: $1" >&2
|
||||||
|
else
|
||||||
|
echo $vlsm
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Set default config path
|
||||||
|
#
|
||||||
|
ensure_config_path() {
|
||||||
|
local F
|
||||||
|
F=${g_sharedir}/configpath
|
||||||
|
if [ -z "$CONFIG_PATH" ]; then
|
||||||
|
[ -f $F ] || { echo " ERROR: $F does not exist"; exit 2; }
|
||||||
|
. $F
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -n "$g_shorewalldir" ]; then
|
||||||
|
[ "${CONFIG_PATH%%:*}" = "$g_shorewalldir" ] || CONFIG_PATH=$g_shorewalldir:$CONFIG_PATH
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Get fully-qualified name of file
|
||||||
|
#
|
||||||
|
resolve_file() # $1 = file name
|
||||||
|
{
|
||||||
|
local pwd
|
||||||
|
pwd=$PWD
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
/*)
|
||||||
|
echo $1
|
||||||
|
;;
|
||||||
|
.)
|
||||||
|
echo $pwd
|
||||||
|
;;
|
||||||
|
./*)
|
||||||
|
echo ${pwd}${1#.}
|
||||||
|
;;
|
||||||
|
..)
|
||||||
|
cd ..
|
||||||
|
echo $PWD
|
||||||
|
cd $pwd
|
||||||
|
;;
|
||||||
|
../*)
|
||||||
|
cd ..
|
||||||
|
resolve_file ${1#../}
|
||||||
|
cd $pwd
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo $pwd/$1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Determine how to do "echo -e"
|
||||||
|
#
|
||||||
|
|
||||||
|
find_echo() {
|
||||||
|
local result
|
||||||
|
|
||||||
|
result=$(echo "a\tb")
|
||||||
|
[ ${#result} -eq 3 ] && { echo echo; return; }
|
||||||
|
|
||||||
|
result=$(echo -e "a\tb")
|
||||||
|
[ ${#result} -eq 3 ] && { echo "echo -e"; return; }
|
||||||
|
|
||||||
|
result=$(which echo)
|
||||||
|
[ -n "$result" ] && { echo "$result -e"; return; }
|
||||||
|
|
||||||
|
echo echo
|
||||||
|
}
|
||||||
|
|
||||||
|
# Determine which version of mktemp is present (if any) and set MKTEMP accortingly:
|
||||||
|
#
|
||||||
|
# None - No mktemp
|
||||||
|
# BSD - BSD mktemp (Mandrake)
|
||||||
|
# STD - mktemp.org mktemp
|
||||||
|
#
|
||||||
|
find_mktemp() {
|
||||||
|
local mktemp
|
||||||
|
mktemp=`mywhich mktemp 2> /dev/null`
|
||||||
|
|
||||||
|
if [ -n "$mktemp" ]; then
|
||||||
|
if qt mktemp -V ; then
|
||||||
|
MKTEMP=STD
|
||||||
|
else
|
||||||
|
MKTEMP=BSD
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
MKTEMP=None
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# create a temporary file. If a directory name is passed, the file will be created in
|
||||||
|
# that directory. Otherwise, it will be created in a temporary directory.
|
||||||
|
#
|
||||||
|
mktempfile() {
|
||||||
|
|
||||||
|
[ -z "$MKTEMP" ] && find_mktemp
|
||||||
|
|
||||||
|
if [ $# -gt 0 ]; then
|
||||||
|
case "$MKTEMP" in
|
||||||
|
BSD)
|
||||||
|
mktemp $1/shorewall.XXXXXX
|
||||||
|
;;
|
||||||
|
STD)
|
||||||
|
mktemp -p $1 shorewall.XXXXXX
|
||||||
|
;;
|
||||||
|
None)
|
||||||
|
> $1/shorewall-$$ && echo $1/shorewall-$$
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error_message "ERROR:Internal error in mktempfile"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
case "$MKTEMP" in
|
||||||
|
BSD)
|
||||||
|
mktemp ${TMPDIR:-/tmp}/shorewall.XXXXXX
|
||||||
|
;;
|
||||||
|
STD)
|
||||||
|
mktemp -t shorewall.XXXXXX
|
||||||
|
;;
|
||||||
|
None)
|
||||||
|
rm -f ${TMPDIR:-/tmp}/shorewall-$$
|
||||||
|
> ${TMPDIR:-}/shorewall-$$ && echo ${TMPDIR:-/tmp}/shorewall-$$
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
error_message "ERROR:Internal error in mktempfile"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# Shorewall 5.0 -- /usr/share/shorewall/lib.common.
|
# Shorewall 4.5 -- /usr/share/shorewall/lib.common.
|
||||||
#
|
#
|
||||||
# (c) 2010-2015 - Tom Eastep (teastep@shorewall.net)
|
# (c) 2010-2014 - Tom Eastep (teastep@shorewall.net)
|
||||||
#
|
#
|
||||||
# Complete documentation is available at http://shorewall.net
|
# Complete documentation is available at http://shorewall.net
|
||||||
#
|
#
|
||||||
@@ -25,22 +25,6 @@
|
|||||||
# scripts rather than loaded at run-time.
|
# scripts rather than loaded at run-time.
|
||||||
#
|
#
|
||||||
#########################################################################################
|
#########################################################################################
|
||||||
#
|
|
||||||
# Wrapper around logger that sets the tag according to $SW_LOGGERTAG
|
|
||||||
#
|
|
||||||
mylogger() {
|
|
||||||
local level
|
|
||||||
|
|
||||||
level=$1
|
|
||||||
shift
|
|
||||||
|
|
||||||
if [ -n "$SW_LOGGERTAG" ]; then
|
|
||||||
logger -p $level -t "$SW_LOGGERTAG" $*
|
|
||||||
else
|
|
||||||
logger -p $level $*
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Issue a message and stop
|
# Issue a message and stop
|
||||||
#
|
#
|
||||||
@@ -49,24 +33,24 @@ startup_error() # $* = Error Message
|
|||||||
echo " ERROR: $@: Firewall state not changed" >&2
|
echo " ERROR: $@: Firewall state not changed" >&2
|
||||||
|
|
||||||
if [ $LOG_VERBOSITY -ge 0 ]; then
|
if [ $LOG_VERBOSITY -ge 0 ]; then
|
||||||
timestamp="$(date +'%b %e %T') "
|
timestamp="$(date +'%_b %d %T') "
|
||||||
echo "${timestamp} ERROR: $@" >> $STARTUP_LOG
|
echo "${timestamp} ERROR: $@" >> $STARTUP_LOG
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case $COMMAND in
|
case $COMMAND in
|
||||||
start)
|
start)
|
||||||
mylogger kern.err "ERROR:$g_product start failed:Firewall state not changed"
|
logger -p kern.err "ERROR:$g_product start failed:Firewall state not changed"
|
||||||
;;
|
;;
|
||||||
restart)
|
restart)
|
||||||
mylogger kern.err "ERROR:$g_product restart failed:Firewall state not changed"
|
logger -p kern.err "ERROR:$g_product restart failed:Firewall state not changed"
|
||||||
;;
|
;;
|
||||||
restore)
|
restore)
|
||||||
mylogger kern.err "ERROR:$g_product restore failed:Firewall state not changed"
|
logger -p kern.err "ERROR:$g_product restore failed:Firewall state not changed"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ $LOG_VERBOSITY -ge 0 ]; then
|
if [ $LOG_VERBOSITY -ge 0 ]; then
|
||||||
timestamp="$(date +'%b %e %T') "
|
timestamp="$(date +'%_b %d %T') "
|
||||||
|
|
||||||
case $COMMAND in
|
case $COMMAND in
|
||||||
start)
|
start)
|
||||||
@@ -87,35 +71,98 @@ startup_error() # $* = Error Message
|
|||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Create the required option string and run the passed script using
|
# Get the Shorewall version of the passed script
|
||||||
|
#
|
||||||
|
get_script_version() { # $1 = script
|
||||||
|
local temp
|
||||||
|
local version
|
||||||
|
local ifs
|
||||||
|
local digits
|
||||||
|
local verbosity
|
||||||
|
|
||||||
|
verbosity="$VERBOSITY"
|
||||||
|
VERBOSITY=0
|
||||||
|
|
||||||
|
temp=$( $SHOREWALL_SHELL $1 version | tail -n 1 | sed 's/-.*//' )
|
||||||
|
|
||||||
|
if [ -z "$temp" ]; then
|
||||||
|
version=0
|
||||||
|
else
|
||||||
|
ifs=$IFS
|
||||||
|
IFS=.
|
||||||
|
temp=$(echo $temp)
|
||||||
|
IFS=$ifs
|
||||||
|
digits=0
|
||||||
|
|
||||||
|
for temp in $temp; do
|
||||||
|
version=${version}$(printf '%02d' $temp)
|
||||||
|
digits=$(($digits + 1))
|
||||||
|
[ $digits -eq 3 ] && break
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo $version
|
||||||
|
|
||||||
|
VERBOSITY="$verbosity"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Do required exports or create the required option string and run the passed script using
|
||||||
# $SHOREWALL_SHELL
|
# $SHOREWALL_SHELL
|
||||||
#
|
#
|
||||||
run_it() {
|
run_it() {
|
||||||
local script
|
local script
|
||||||
local options
|
local options
|
||||||
|
local version
|
||||||
|
|
||||||
export VARDIR
|
export VARDIR
|
||||||
|
|
||||||
script=$1
|
script=$1
|
||||||
shift
|
shift
|
||||||
|
|
||||||
if [ x$1 = xtrace -o x$1 = xdebug ]; then
|
version=$(get_script_version $script)
|
||||||
options="$1 -"
|
|
||||||
shift;
|
if [ $version -lt 040408 ]; then
|
||||||
|
#
|
||||||
|
# Old script that doesn't understand 4.4.8 script options
|
||||||
|
#
|
||||||
|
export RESTOREFILE
|
||||||
|
export VERBOSITY
|
||||||
|
export NOROUTES=$g_noroutes
|
||||||
|
export PURGE=$g_purge
|
||||||
|
export TIMESTAMP=$g_timestamp
|
||||||
|
export RECOVERING=$g_recovering
|
||||||
|
|
||||||
|
case "$g_program" in
|
||||||
|
*-lite)
|
||||||
|
#
|
||||||
|
# Shorewall Lite
|
||||||
|
#
|
||||||
|
export LOGFORMAT
|
||||||
|
export IPTABLES
|
||||||
|
;;
|
||||||
|
esac
|
||||||
else
|
else
|
||||||
options='-'
|
#
|
||||||
|
# 4.4.8 or later -- no additional exports required
|
||||||
|
#
|
||||||
|
if [ x$1 = xtrace -o x$1 = xdebug ]; then
|
||||||
|
options="$1 -"
|
||||||
|
shift;
|
||||||
|
else
|
||||||
|
options='-'
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ -n "$g_noroutes" ] && options=${options}n
|
||||||
|
[ -n "$g_timestamp" ] && options=${options}t
|
||||||
|
[ -n "$g_purge" ] && options=${options}p
|
||||||
|
[ -n "$g_recovering" ] && options=${options}r
|
||||||
|
|
||||||
|
options="${options}V $VERBOSITY"
|
||||||
|
|
||||||
|
[ -n "$RESTOREFILE" ] && options="${options} -R $RESTOREFILE"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$g_noroutes" ] && options=${options}n
|
|
||||||
[ -n "$g_timestamp" ] && options=${options}t
|
|
||||||
[ -n "$g_purge" ] && options=${options}p
|
|
||||||
[ -n "$g_recovering" ] && options=${options}r
|
|
||||||
[ -n "$g_counters" ] && options=${options}c
|
|
||||||
|
|
||||||
options="${options}V $VERBOSITY"
|
|
||||||
|
|
||||||
[ -n "$RESTOREFILE" ] && options="${options} -R $RESTOREFILE"
|
|
||||||
|
|
||||||
$SHOREWALL_SHELL $script $options $@
|
$SHOREWALL_SHELL $script $options $@
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,17 +210,6 @@ split() {
|
|||||||
IFS=$ifs
|
IFS=$ifs
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
|
||||||
# Split a comma-separated list into a space-separated list
|
|
||||||
#
|
|
||||||
split_list() {
|
|
||||||
local ifs
|
|
||||||
ifs=$IFS
|
|
||||||
IFS=,
|
|
||||||
echo $*
|
|
||||||
IFS=$ifs
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Search a list looking for a match -- returns zero if a match found
|
# Search a list looking for a match -- returns zero if a match found
|
||||||
# 1 otherwise
|
# 1 otherwise
|
||||||
@@ -269,48 +305,53 @@ loadmodule() # $1 = module name, $2 - * arguments
|
|||||||
{
|
{
|
||||||
local modulename
|
local modulename
|
||||||
modulename=$1
|
modulename=$1
|
||||||
shift
|
|
||||||
local moduleoptions
|
|
||||||
moduleoptions=$*
|
|
||||||
local modulefile
|
local modulefile
|
||||||
local suffix
|
local suffix
|
||||||
|
|
||||||
if [ -d /sys/module/ ]; then
|
if [ -d /sys/module/ ]; then
|
||||||
if ! list_search $modulename $DONT_LOAD; then
|
if ! list_search $modulename $DONT_LOAD; then
|
||||||
if [ ! -d /sys/module/$modulename ]; then
|
if [ ! -d /sys/module/$modulename ]; then
|
||||||
case $moduleloader in
|
shift
|
||||||
insmod)
|
|
||||||
for directory in $moduledirectories; do
|
for suffix in $MODULE_SUFFIX ; do
|
||||||
for modulefile in $directory/${modulename}.*; do
|
for directory in $moduledirectories; do
|
||||||
if [ -f $modulefile ]; then
|
modulefile=$directory/${modulename}.${suffix}
|
||||||
insmod $modulefile $moduleoptions
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
done
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
modprobe -q $modulename $moduleoptions
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
elif ! list_search $modulename $DONT_LOAD $MODULES; then
|
|
||||||
case $moduleloader in
|
|
||||||
insmod)
|
|
||||||
for directory in $moduledirectories; do
|
|
||||||
for modulefile in $directory/${modulename}.*; do
|
|
||||||
if [ -f $modulefile ]; then
|
if [ -f $modulefile ]; then
|
||||||
insmod $modulefile $moduleoptions
|
case $moduleloader in
|
||||||
return
|
insmod)
|
||||||
|
insmod $modulefile $*
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
modprobe $modulename $*
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
break 2
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
;;
|
fi
|
||||||
*)
|
fi
|
||||||
modprobe -q $modulename $moduleoptions
|
elif ! list_search $modulename $DONT_LOAD $MODULES; then
|
||||||
;;
|
shift
|
||||||
esac
|
|
||||||
|
for suffix in $MODULE_SUFFIX ; do
|
||||||
|
for directory in $moduledirectories; do
|
||||||
|
modulefile=$directory/${modulename}.${suffix}
|
||||||
|
|
||||||
|
if [ -f $modulefile ]; then
|
||||||
|
case $moduleloader in
|
||||||
|
insmod)
|
||||||
|
insmod $modulefile $*
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
modprobe $modulename $*
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
break 2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -327,31 +368,16 @@ reload_kernel_modules() {
|
|||||||
local moduleloader
|
local moduleloader
|
||||||
moduleloader=modprobe
|
moduleloader=modprobe
|
||||||
local uname
|
local uname
|
||||||
local extras
|
|
||||||
|
|
||||||
if ! qt mywhich modprobe; then
|
if ! qt mywhich modprobe; then
|
||||||
moduleloader=insmod
|
moduleloader=insmod
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$MODULESDIR" ]; then
|
[ -n "${MODULE_SUFFIX:=ko ko.gz o o.gz gz}" ]
|
||||||
case "$MODULESDIR" in
|
|
||||||
+*)
|
|
||||||
extras="$MODULESDIR"
|
|
||||||
extras=${extras#+}
|
|
||||||
MODULESDIR=
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$MODULESDIR" ]; then
|
[ -z "$MODULESDIR" ] && \
|
||||||
uname=$(uname -r)
|
uname=$(uname -r) && \
|
||||||
MODULESDIR=/lib/modules/$uname/kernel/net/ipv${g_family}/netfilter:/lib/modules/$uname/kernel/net/netfilter:/lib/modules/$uname/kernel/net/sched:/lib/modules/$uname/extra:/lib/modules/$uname/extra/ipset
|
MODULESDIR=/lib/modules/$uname/kernel/net/ipv${g_family}/netfilter:/lib/modules/$uname/kernel/net/netfilter:/lib/modules/$uname/kernel/net/sched:/lib/modules/$uname/extra:/lib/modules/$uname/extra/ipset
|
||||||
if [ -n "$extras" ]; then
|
|
||||||
for directory in $(split "$extras"); do
|
|
||||||
MODULESDIR="$MODULESDIR:/lib/modules/$uname/$directory"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -d /sys/module/ ] || MODULES=$(lsmod | cut -d ' ' -f1)
|
[ -d /sys/module/ ] || MODULES=$(lsmod | cut -d ' ' -f1)
|
||||||
|
|
||||||
@@ -381,31 +407,16 @@ load_kernel_modules() # $1 = Yes, if we are to save moduleinfo in $VARDIR
|
|||||||
local savemoduleinfo
|
local savemoduleinfo
|
||||||
savemoduleinfo=${1:-Yes} # So old compiled scripts still work
|
savemoduleinfo=${1:-Yes} # So old compiled scripts still work
|
||||||
local uname
|
local uname
|
||||||
local extras
|
|
||||||
|
|
||||||
if ! qt mywhich modprobe; then
|
if ! qt mywhich modprobe; then
|
||||||
moduleloader=insmod
|
moduleloader=insmod
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$MODULESDIR" ]; then
|
[ -n "${MODULE_SUFFIX:=o gz ko o.gz ko.gz}" ]
|
||||||
case "$MODULESDIR" in
|
|
||||||
+*)
|
|
||||||
extras="$MODULESDIR"
|
|
||||||
extras=${extras#+}
|
|
||||||
MODULESDIR=
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$MODULESDIR" ]; then
|
[ -z "$MODULESDIR" ] && \
|
||||||
uname=$(uname -r)
|
uname=$(uname -r) && \
|
||||||
MODULESDIR=/lib/modules/$uname/kernel/net/ipv${g_family}/netfilter:/lib/modules/$uname/kernel/net/netfilter:/lib/modules/$uname/kernel/net/sched:/lib/modules/$uname/extra:/lib/modules/$uname/extra/ipset
|
MODULESDIR=/lib/modules/$uname/kernel/net/ipv${g_family}/netfilter:/lib/modules/$uname/kernel/net/netfilter:/lib/modules/$uname/kernel/net/sched:/lib/modules/$uname/extra:/lib/modules/$uname/extra/ipset
|
||||||
if [ -n "$extras" ]; then
|
|
||||||
for directory in $(split "$extras"); do
|
|
||||||
MODULESDIR="$MODULESDIR:/lib/modules/$uname/$directory"
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
for directory in $(split $MODULESDIR); do
|
for directory in $(split $MODULESDIR); do
|
||||||
[ -d $directory ] && moduledirectories="$moduledirectories $directory"
|
[ -d $directory ] && moduledirectories="$moduledirectories $directory"
|
||||||
@@ -540,9 +551,9 @@ in_network() # $1 = IP address, $2 = CIDR network
|
|||||||
#
|
#
|
||||||
# Query NetFilter about the existence of a filter chain
|
# Query NetFilter about the existence of a filter chain
|
||||||
#
|
#
|
||||||
chain_exists() # $1 = chain name, $2 = table name (optional)
|
chain_exists() # $1 = chain name
|
||||||
{
|
{
|
||||||
qt1 $g_tool -t ${2:-filter} -L $1 -n
|
qt1 $g_tool -L $1 -n
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -633,24 +644,6 @@ find_first_interface_address_if_any() # $1 = interface
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
|
||||||
#Determines if the passed interface is a loopback interface
|
|
||||||
#
|
|
||||||
loopback_interface() { #$1 = Interface name
|
|
||||||
[ "$1" = lo ] || $IP link show $1 | fgrep -q LOOPBACK
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Find Loopback Interfaces
|
|
||||||
#
|
|
||||||
find_loopback_interfaces() {
|
|
||||||
local interfaces
|
|
||||||
|
|
||||||
[ -x "$IP" ] && interfaces=$($IP link show | fgrep LOOPBACK | sed 's/://g' | cut -d ' ' -f 2)
|
|
||||||
|
|
||||||
[ -n "$interfaces" ] && echo $interfaces || echo lo
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Internal version of 'which'
|
# Internal version of 'which'
|
||||||
#
|
#
|
||||||
@@ -703,9 +696,9 @@ find_file()
|
|||||||
set_state () # $1 = state
|
set_state () # $1 = state
|
||||||
{
|
{
|
||||||
if [ $# -gt 1 ]; then
|
if [ $# -gt 1 ]; then
|
||||||
echo "$1 $(date) from $2" > ${VARDIR}/state
|
echo "$1 ($(date)) from $2" > ${VARDIR}/state
|
||||||
else
|
else
|
||||||
echo "$1 $(date)" > ${VARDIR}/state
|
echo "$1 ($(date))" > ${VARDIR}/state
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -750,15 +743,12 @@ mutex_on()
|
|||||||
local lockf
|
local lockf
|
||||||
lockf=${LOCKFILE:=${VARDIR}/lock}
|
lockf=${LOCKFILE:=${VARDIR}/lock}
|
||||||
local lockpid
|
local lockpid
|
||||||
local lockd
|
|
||||||
|
|
||||||
MUTEX_TIMEOUT=${MUTEX_TIMEOUT:-60}
|
MUTEX_TIMEOUT=${MUTEX_TIMEOUT:-60}
|
||||||
|
|
||||||
if [ $MUTEX_TIMEOUT -gt 0 ]; then
|
if [ $MUTEX_TIMEOUT -gt 0 ]; then
|
||||||
|
|
||||||
lockd=$(dirname $LOCKFILE)
|
[ -d ${VARDIR} ] || mkdir -p ${VARDIR}
|
||||||
|
|
||||||
[ -d "$lockd" ] || mkdir -p "$lockd"
|
|
||||||
|
|
||||||
if [ -f $lockf ]; then
|
if [ -f $lockf ]; then
|
||||||
lockpid=`cat ${lockf} 2> /dev/null`
|
lockpid=`cat ${lockf} 2> /dev/null`
|
||||||
@@ -767,7 +757,7 @@ mutex_on()
|
|||||||
error_message "WARNING: Stale lockfile ${lockf} removed"
|
error_message "WARNING: Stale lockfile ${lockf} removed"
|
||||||
elif [ $lockpid -eq $$ ]; then
|
elif [ $lockpid -eq $$ ]; then
|
||||||
return 0
|
return 0
|
||||||
elif ! ps | grep -v grep | qt grep ${lockpid}; then
|
elif ! qt ps p ${lockpid}; then
|
||||||
rm -f ${lockf}
|
rm -f ${lockf}
|
||||||
error_message "WARNING: Stale lockfile ${lockf} from pid ${lockpid} removed"
|
error_message "WARNING: Stale lockfile ${lockf} from pid ${lockpid} removed"
|
||||||
fi
|
fi
|
||||||
@@ -778,9 +768,6 @@ mutex_on()
|
|||||||
chmod u+w ${lockf}
|
chmod u+w ${lockf}
|
||||||
echo $$ > ${lockf}
|
echo $$ > ${lockf}
|
||||||
chmod u-w ${lockf}
|
chmod u-w ${lockf}
|
||||||
elif qt mywhich lock; then
|
|
||||||
lock ${lockf}
|
|
||||||
chmod u=r ${lockf}
|
|
||||||
else
|
else
|
||||||
while [ -f ${lockf} -a ${try} -lt ${MUTEX_TIMEOUT} ] ; do
|
while [ -f ${lockf} -a ${try} -lt ${MUTEX_TIMEOUT} ] ; do
|
||||||
sleep 1
|
sleep 1
|
||||||
@@ -802,7 +789,6 @@ mutex_on()
|
|||||||
#
|
#
|
||||||
mutex_off()
|
mutex_off()
|
||||||
{
|
{
|
||||||
[ -f ${CONFDIR}/rc.common ] && lock -u ${LOCKFILE:=${VARDIR}/lock}
|
|
||||||
rm -f ${LOCKFILE:=${VARDIR}/lock}
|
rm -f ${LOCKFILE:=${VARDIR}/lock}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,440 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall 5.0 -- /usr/share/shorewall/lib.core
|
|
||||||
#
|
|
||||||
# (c) 1999-2015 - Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is part of Shorewall.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by the
|
|
||||||
# Free Software Foundation, either version 2 of the license or, at your
|
|
||||||
# option, any later version.
|
|
||||||
#
|
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# This library contains the code common to all Shorewall components except the
|
|
||||||
# generated scripts.
|
|
||||||
#
|
|
||||||
|
|
||||||
SHOREWALL_LIBVERSION=50100
|
|
||||||
|
|
||||||
#
|
|
||||||
# Fatal Error
|
|
||||||
#
|
|
||||||
fatal_error() # $@ = Message
|
|
||||||
{
|
|
||||||
echo " ERROR: $@" >&2
|
|
||||||
exit 2
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_product_environment() { # $1 = if non-empty, source shorewallrc again now that we have the correct product
|
|
||||||
g_basedir=${SHAREDIR}/shorewall
|
|
||||||
|
|
||||||
g_sharedir="$SHAREDIR"/$PRODUCT
|
|
||||||
g_confdir="$CONFDIR"/$PRODUCT
|
|
||||||
|
|
||||||
case $PRODUCT in
|
|
||||||
shorewall)
|
|
||||||
g_product="Shorewall"
|
|
||||||
g_family=4
|
|
||||||
g_tool=iptables
|
|
||||||
g_lite=
|
|
||||||
;;
|
|
||||||
shorewall6)
|
|
||||||
g_product="Shorewall6"
|
|
||||||
g_family=6
|
|
||||||
g_tool=ip6tables
|
|
||||||
g_lite=
|
|
||||||
;;
|
|
||||||
shorewall-lite)
|
|
||||||
g_product="Shorewall Lite"
|
|
||||||
g_family=4
|
|
||||||
g_tool=iptables
|
|
||||||
g_lite=Yes
|
|
||||||
;;
|
|
||||||
shorewall6-lite)
|
|
||||||
g_product="Shorewall6 Lite"
|
|
||||||
g_family=6
|
|
||||||
g_tool=ip6tables
|
|
||||||
g_lite=Yes
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
fatal_error "Unknown PRODUCT ($PRODUCT)"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
[ -f ${SHAREDIR}/${PRODUCT}/version ] || fatal_error "$g_product does not appear to be installed on this system"
|
|
||||||
#
|
|
||||||
# We need to do this again, now that we have the correct product
|
|
||||||
#
|
|
||||||
[ -n "$1" ] && . ${g_basedir}/shorewallrc
|
|
||||||
|
|
||||||
if [ -z "${VARLIB}" ]; then
|
|
||||||
VARLIB=${VARDIR}
|
|
||||||
VARDIR=${VARLIB}/${PRODUCT}
|
|
||||||
elif [ -z "${VARDIR}" ]; then
|
|
||||||
VARDIR="${VARLIB}/${PRODUCT}"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
set_default_product() {
|
|
||||||
case $(basename $0) in
|
|
||||||
shorewall6)
|
|
||||||
PRODUCT=shorewall6
|
|
||||||
;;
|
|
||||||
shorewall4)
|
|
||||||
PRODUCT=shorewall
|
|
||||||
;;
|
|
||||||
shorewall-lite)
|
|
||||||
PRODUCT=shorewall-lite
|
|
||||||
;;
|
|
||||||
shorewall6-lite)
|
|
||||||
PRODUCT=shorewall6-lite
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
if [ -f ${g_basedir}/version ]; then
|
|
||||||
PRODUCT=shorewall
|
|
||||||
elif [ -f ${SHAREDIR}/shorewall-lite/version ]; then
|
|
||||||
PRODUCT=shorewall-lite
|
|
||||||
elif [ -f ${SHAREDIR}/shorewall6-lite/version ]; then
|
|
||||||
PRODUCT=shorewall6-lite
|
|
||||||
else
|
|
||||||
fatal_error "No Shorewall firewall product is installed"
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# Not configured Error
|
|
||||||
#
|
|
||||||
not_configured_error() # $@ = Message
|
|
||||||
{
|
|
||||||
echo " ERROR: $@" >&2
|
|
||||||
exit 6
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Conditionally produce message
|
|
||||||
#
|
|
||||||
progress_message() # $* = Message
|
|
||||||
{
|
|
||||||
local timestamp
|
|
||||||
timestamp=
|
|
||||||
|
|
||||||
if [ $VERBOSITY -gt 1 ]; then
|
|
||||||
[ -n "$g_timestamp" ] && timestamp="$(date +%H:%M:%S) "
|
|
||||||
echo "${timestamp}$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
progress_message2() # $* = Message
|
|
||||||
{
|
|
||||||
local timestamp
|
|
||||||
timestamp=
|
|
||||||
|
|
||||||
if [ $VERBOSITY -gt 0 ]; then
|
|
||||||
[ -n "$g_timestamp" ] && timestamp="$(date +%H:%M:%S) "
|
|
||||||
echo "${timestamp}$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
progress_message3() # $* = Message
|
|
||||||
{
|
|
||||||
local timestamp
|
|
||||||
timestamp=
|
|
||||||
|
|
||||||
if [ $VERBOSITY -ge 0 ]; then
|
|
||||||
[ -n "$g_timestamp" ] && timestamp="$(date +%H:%M:%S) "
|
|
||||||
echo "${timestamp}$@"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Undo the effect of 'separate_list()'
|
|
||||||
#
|
|
||||||
combine_list()
|
|
||||||
{
|
|
||||||
local f
|
|
||||||
local o
|
|
||||||
o=
|
|
||||||
|
|
||||||
for f in $* ; do
|
|
||||||
o="${o:+$o,}$f"
|
|
||||||
done
|
|
||||||
|
|
||||||
echo $o
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Validate an IP address
|
|
||||||
#
|
|
||||||
valid_address() {
|
|
||||||
local x
|
|
||||||
local y
|
|
||||||
local ifs
|
|
||||||
ifs=$IFS
|
|
||||||
|
|
||||||
IFS=.
|
|
||||||
|
|
||||||
for x in $1; do
|
|
||||||
case $x in
|
|
||||||
[0-9]|[0-9][0-9]|[1-2][0-9][0-9])
|
|
||||||
[ $x -lt 256 ] || { IFS=$ifs; return 2; }
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
IFS=$ifs
|
|
||||||
return 2
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
IFS=$ifs
|
|
||||||
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Miserable Hack to work around broken BusyBox ash in OpenWRT
|
|
||||||
#
|
|
||||||
addr_comp() {
|
|
||||||
test $(bc <<EOF
|
|
||||||
$1 > $2
|
|
||||||
EOF
|
|
||||||
) -eq 1
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Enumerate the members of an IP range -- When using a shell supporting only
|
|
||||||
# 32-bit signed arithmetic, the range cannot span 128.0.0.0.
|
|
||||||
#
|
|
||||||
# Comes in two flavors:
|
|
||||||
#
|
|
||||||
# ip_range() - produces a mimimal list of network/host addresses that spans
|
|
||||||
# the range.
|
|
||||||
#
|
|
||||||
# ip_range_explicit() - explicitly enumerates the range.
|
|
||||||
#
|
|
||||||
ip_range() {
|
|
||||||
local first
|
|
||||||
local last
|
|
||||||
local l
|
|
||||||
local x
|
|
||||||
local y
|
|
||||||
local z
|
|
||||||
local vlsm
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
!*)
|
|
||||||
#
|
|
||||||
# Let iptables complain if it's a range
|
|
||||||
#
|
|
||||||
echo $1
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
[0-9]*.*.*.*-*.*.*.*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo $1
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
first=$(decodeaddr ${1%-*})
|
|
||||||
last=$(decodeaddr ${1#*-})
|
|
||||||
|
|
||||||
if addr_comp $first $last; then
|
|
||||||
fatal_error "Invalid IP address range: $1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
l=$(( $last + 1 ))
|
|
||||||
|
|
||||||
while addr_comp $l $first; do
|
|
||||||
vlsm=
|
|
||||||
x=31
|
|
||||||
y=2
|
|
||||||
z=1
|
|
||||||
|
|
||||||
while [ $(( $first % $y )) -eq 0 ] && ! addr_comp $(( $first + $y )) $l; do
|
|
||||||
vlsm=/$x
|
|
||||||
x=$(( $x - 1 ))
|
|
||||||
z=$y
|
|
||||||
y=$(( $y * 2 ))
|
|
||||||
done
|
|
||||||
|
|
||||||
echo $(encodeaddr $first)$vlsm
|
|
||||||
first=$(($first + $z))
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
ip_range_explicit() {
|
|
||||||
local first
|
|
||||||
local last
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
[0-9]*.*.*.*-*.*.*.*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo $1
|
|
||||||
return
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
first=$(decodeaddr ${1%-*})
|
|
||||||
last=$(decodeaddr ${1#*-})
|
|
||||||
|
|
||||||
if addr_comp $first $last; then
|
|
||||||
fatal_error "Invalid IP address range: $1"
|
|
||||||
fi
|
|
||||||
|
|
||||||
while ! addr_comp $first $last; do
|
|
||||||
echo $(encodeaddr $first)
|
|
||||||
first=$(($first + 1))
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
[ -z "$LEFTSHIFT" ] && . ${g_basedir}/lib.common
|
|
||||||
|
|
||||||
#
|
|
||||||
# Netmask to VLSM
|
|
||||||
#
|
|
||||||
ip_vlsm() {
|
|
||||||
local mask
|
|
||||||
mask=$(decodeaddr $1)
|
|
||||||
local vlsm
|
|
||||||
vlsm=0
|
|
||||||
local x
|
|
||||||
x=$(( 128 << 24 )) # 0x80000000
|
|
||||||
|
|
||||||
while [ $(( $x & $mask )) -ne 0 ]; do
|
|
||||||
[ $mask -eq $x ] && mask=0 || mask=$(( $mask $LEFTSHIFT 1 )) # Not all shells shift 0x80000000 left properly.
|
|
||||||
vlsm=$(($vlsm + 1))
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ $(( $mask & 2147483647 )) -ne 0 ]; then # 2147483647 = 0x7fffffff
|
|
||||||
echo "Invalid net mask: $1" >&2
|
|
||||||
else
|
|
||||||
echo $vlsm
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Set default config path
|
|
||||||
#
|
|
||||||
ensure_config_path() {
|
|
||||||
local F
|
|
||||||
F=${g_sharedir}/configpath
|
|
||||||
if [ -z "$CONFIG_PATH" ]; then
|
|
||||||
[ -f $F ] || { echo " ERROR: $F does not exist"; exit 2; }
|
|
||||||
. $F
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$g_shorewalldir" ]; then
|
|
||||||
[ "${CONFIG_PATH%%:*}" = "$g_shorewalldir" ] || CONFIG_PATH=$g_shorewalldir:$CONFIG_PATH
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# Get fully-qualified name of file
|
|
||||||
#
|
|
||||||
resolve_file() # $1 = file name
|
|
||||||
{
|
|
||||||
local pwd
|
|
||||||
pwd=$PWD
|
|
||||||
|
|
||||||
case $1 in
|
|
||||||
/*)
|
|
||||||
echo $1
|
|
||||||
;;
|
|
||||||
.)
|
|
||||||
echo $pwd
|
|
||||||
;;
|
|
||||||
./*)
|
|
||||||
echo ${pwd}${1#.}
|
|
||||||
;;
|
|
||||||
..)
|
|
||||||
cd ..
|
|
||||||
echo $PWD
|
|
||||||
cd $pwd
|
|
||||||
;;
|
|
||||||
../*)
|
|
||||||
cd ..
|
|
||||||
resolve_file ${1#../}
|
|
||||||
cd $pwd
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo $pwd/$1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
# Determine which version of mktemp is present (if any) and set MKTEMP accortingly:
|
|
||||||
#
|
|
||||||
# None - No mktemp
|
|
||||||
# BSD - BSD mktemp (Mandrake)
|
|
||||||
# STD - mktemp.org mktemp
|
|
||||||
#
|
|
||||||
find_mktemp() {
|
|
||||||
local mktemp
|
|
||||||
mktemp=`mywhich mktemp 2> /dev/null`
|
|
||||||
|
|
||||||
if [ -n "$mktemp" ]; then
|
|
||||||
if qt mktemp -V ; then
|
|
||||||
MKTEMP=STD
|
|
||||||
else
|
|
||||||
MKTEMP=BSD
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
MKTEMP=None
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
#
|
|
||||||
# create a temporary file. If a directory name is passed, the file will be created in
|
|
||||||
# that directory. Otherwise, it will be created in a temporary directory.
|
|
||||||
#
|
|
||||||
mktempfile() {
|
|
||||||
|
|
||||||
[ -z "$MKTEMP" ] && find_mktemp
|
|
||||||
|
|
||||||
if [ $# -gt 0 ]; then
|
|
||||||
case "$MKTEMP" in
|
|
||||||
BSD)
|
|
||||||
mktemp $1/shorewall.XXXXXX
|
|
||||||
;;
|
|
||||||
STD)
|
|
||||||
mktemp -p $1 shorewall.XXXXXX
|
|
||||||
;;
|
|
||||||
None)
|
|
||||||
> $1/shorewall-$$ && echo $1/shorewall-$$
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
error_message "ERROR:Internal error in mktempfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
case "$MKTEMP" in
|
|
||||||
BSD)
|
|
||||||
mktemp ${TMPDIR:-/tmp}/shorewall.XXXXXX
|
|
||||||
;;
|
|
||||||
STD)
|
|
||||||
mktemp -t shorewall.XXXXXX
|
|
||||||
;;
|
|
||||||
None)
|
|
||||||
rm -f ${TMPDIR:-/tmp}/shorewall-$$
|
|
||||||
> ${TMPDIR:-}/shorewall-$$ && echo ${TMPDIR:-/tmp}/shorewall-$$
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
error_message "ERROR:Internal error in mktempfile"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
}
|
|
@@ -1,89 +0,0 @@
|
|||||||
#
|
|
||||||
#
|
|
||||||
# Shorewall 5.0 -- /usr/share/shorewall/lib.installer.
|
|
||||||
#
|
|
||||||
# (c) 2017 - Tom Eastep (teastep@shorewall.net)
|
|
||||||
# (c) 2017 - Matt Darfeuille (matdarf@gmail.com)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is part of Shorewall.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by the
|
|
||||||
# Free Software Foundation, either version 2 of the license or, at your
|
|
||||||
# option, any later version.
|
|
||||||
#
|
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# The purpose of this library is to hold those functions used by the products installer.
|
|
||||||
#
|
|
||||||
#########################################################################################
|
|
||||||
|
|
||||||
fatal_error()
|
|
||||||
{
|
|
||||||
echo " ERROR: $@" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
split() {
|
|
||||||
local ifs
|
|
||||||
ifs=$IFS
|
|
||||||
IFS=:
|
|
||||||
set -- $1
|
|
||||||
echo $*
|
|
||||||
IFS=$ifs
|
|
||||||
}
|
|
||||||
|
|
||||||
qt()
|
|
||||||
{
|
|
||||||
"$@" >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
mywhich() {
|
|
||||||
local dir
|
|
||||||
|
|
||||||
for dir in $(split $PATH); do
|
|
||||||
if [ -x $dir/$1 ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
return 2
|
|
||||||
}
|
|
||||||
|
|
||||||
delete_file() # $1 = file to delete
|
|
||||||
{
|
|
||||||
rm -f $1
|
|
||||||
}
|
|
||||||
|
|
||||||
require()
|
|
||||||
{
|
|
||||||
eval [ -n "\$$1" ] || fatal_error "Required option $1 not set"
|
|
||||||
}
|
|
||||||
|
|
||||||
make_directory() # $1 = directory , $2 = mode
|
|
||||||
{
|
|
||||||
mkdir $1
|
|
||||||
chmod $2 $1
|
|
||||||
[ -n "$OWNERSHIP" ] && chown $OWNERSHIP $1
|
|
||||||
}
|
|
||||||
|
|
||||||
make_parent_directory() # $1 = directory , $2 = mode
|
|
||||||
{
|
|
||||||
mkdir -p $1
|
|
||||||
chmod $2 $1
|
|
||||||
[ -n "$OWNERSHIP" ] && chown $OWNER:$GROUP $1
|
|
||||||
}
|
|
||||||
|
|
||||||
cant_autostart()
|
|
||||||
{
|
|
||||||
echo
|
|
||||||
echo "WARNING: Unable to configure $Product to start automatically at boot" >&2
|
|
||||||
}
|
|
@@ -1,106 +0,0 @@
|
|||||||
#
|
|
||||||
#
|
|
||||||
# Shorewall 5.0 -- /usr/share/shorewall/lib.installer.
|
|
||||||
#
|
|
||||||
# (c) 2017 - Tom Eastep (teastep@shorewall.net)
|
|
||||||
# (c) 2017 - Matt Darfeuille (matdarf@gmail.com)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is part of Shorewall.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by the
|
|
||||||
# Free Software Foundation, either version 2 of the license or, at your
|
|
||||||
# option, any later version.
|
|
||||||
#
|
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# The purpose of this library is to hold those functions used by the products uninstaller.
|
|
||||||
#
|
|
||||||
#########################################################################################
|
|
||||||
|
|
||||||
fatal_error()
|
|
||||||
{
|
|
||||||
echo " ERROR: $@" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
split() {
|
|
||||||
local ifs
|
|
||||||
ifs=$IFS
|
|
||||||
IFS=:
|
|
||||||
set -- $1
|
|
||||||
echo $*
|
|
||||||
IFS=$ifs
|
|
||||||
}
|
|
||||||
|
|
||||||
qt()
|
|
||||||
{
|
|
||||||
"$@" >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
mywhich() {
|
|
||||||
local dir
|
|
||||||
|
|
||||||
for dir in $(split $PATH); do
|
|
||||||
if [ -x $dir/$1 ]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
return 2
|
|
||||||
}
|
|
||||||
|
|
||||||
remove_file() # $1 = file to remove
|
|
||||||
{
|
|
||||||
if [ -n "$1" ] ; then
|
|
||||||
if [ -f $1 -o -L $1 ] ; then
|
|
||||||
rm -f $1
|
|
||||||
echo "$1 Removed"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
remove_directory() # $1 = directory to remove
|
|
||||||
{
|
|
||||||
if [ -n "$1" ] ; then
|
|
||||||
if [ -d $1 ] ; then
|
|
||||||
rm -rf $1
|
|
||||||
echo "$1 Removed"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
remove_file_with_wildcard() # $1 = file with wildcard to remove
|
|
||||||
{
|
|
||||||
if [ -n "$1" ] ; then
|
|
||||||
for f in $1; do
|
|
||||||
if [ -d $f ] ; then
|
|
||||||
rm -rf $f
|
|
||||||
echo "$f Removed"
|
|
||||||
elif [ -f $f -o -L $f ] ; then
|
|
||||||
rm -f $f
|
|
||||||
echo "$f Removed"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
restore_file() # $1 = file to restore
|
|
||||||
{
|
|
||||||
if [ -f ${1}-shorewall.bkout ]; then
|
|
||||||
if (mv -f ${1}-shorewall.bkout $1); then
|
|
||||||
echo
|
|
||||||
echo "$1 restored"
|
|
||||||
else
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Apple OS X Shorewall 5.0 rc file
|
# Apple OS X Shorewall 4.5 rc file
|
||||||
#
|
#
|
||||||
BUILD=apple
|
BUILD=apple
|
||||||
HOST=apple
|
HOST=apple
|
||||||
@@ -14,9 +14,8 @@ INITDIR= #Unused on OS X
|
|||||||
INITFILE= #Unused on OS X
|
INITFILE= #Unused on OS X
|
||||||
INITSOURCE= #Unused on OS X
|
INITSOURCE= #Unused on OS X
|
||||||
ANNOTATED= #Unused on OS X
|
ANNOTATED= #Unused on OS X
|
||||||
SERVICEDIR= #Unused on OS X
|
SYSTEMD= #Unused on OS X
|
||||||
SERVICEFILE= #Unused on OS X
|
SERVICEFILE= #Unused on OS X
|
||||||
SYSCONFDIR= #Unused on OS X
|
SYSCONFDIR= #Unused on OS X
|
||||||
SPARSE=Yes #Only install $PRODUCT/$PRODUCT.conf in $CONFDIR.
|
SPARSE=Yes #Only install $PRODUCT/$PRODUCT.conf in $CONFDIR.
|
||||||
VARLIB=/var/lib #Unused on OS X
|
VARLIB=/var/lib #Unused on OS X
|
||||||
DEFAULT_PAGER= #Pager to use if none specified in shorewall[6].conf
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Arch Linux Shorewall 5.0 rc file
|
# Arch Linux Shorewall 4.5 rc file
|
||||||
#
|
#
|
||||||
BUILD= #Default is to detect the build system
|
BUILD= #Default is to detect the build system
|
||||||
HOST=archlinux
|
HOST=archlinux
|
||||||
@@ -8,16 +8,15 @@ SHAREDIR=${PREFIX}/share #Directory for arch-neutral files.
|
|||||||
LIBEXECDIR=${PREFIX}/share #Directory for executable scripts.
|
LIBEXECDIR=${PREFIX}/share #Directory for executable scripts.
|
||||||
PERLLIBDIR=${PREFIX}/share/shorewall #Directory to install Shorewall Perl module directory
|
PERLLIBDIR=${PREFIX}/share/shorewall #Directory to install Shorewall Perl module directory
|
||||||
CONFDIR=/etc #Directory where subsystem configurations are installed
|
CONFDIR=/etc #Directory where subsystem configurations are installed
|
||||||
SBINDIR=/usr/bin #Directory where system administration programs are installed
|
SBINDIR=/usr/sbin #Directory where system administration programs are installed
|
||||||
MANDIR=${SHAREDIR}/man #Directory where manpages are installed.
|
MANDIR=${SHAREDIR}/man #Directory where manpages are installed.
|
||||||
INITDIR= #Directory where SysV init scripts are installed.
|
INITDIR= #Directory where SysV init scripts are installed.
|
||||||
INITFILE= #Name of the product's installed SysV init script
|
INITFILE= #Name of the product's installed SysV init script
|
||||||
INITSOURCE= #Name of the distributed file to be installed as the SysV init script
|
INITSOURCE= #Name of the distributed file to be installed as the SysV init script
|
||||||
ANNOTATED= #If non-zero, annotated configuration files are installed
|
ANNOTATED= #If non-zero, annotated configuration files are installed
|
||||||
SYSCONFDIR= #Directory where SysV init parameter files are installed
|
SYSCONFDIR= #Directory where SysV init parameter files are installed
|
||||||
SERVICEDIR=/usr/lib/systemd/system #Directory where .service files are installed (systems running systemd only)
|
SYSTEMD=/usr/lib/systemd/system #Directory where .service files are installed (systems running systemd only)
|
||||||
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
||||||
SPARSE= #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
SPARSE= #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
||||||
VARLIB=/var/lib #Directory where product variable data is stored.
|
VARLIB=/var/lib #Directory where product variable data is stored.
|
||||||
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
||||||
DEFAULT_PAGER= #Pager to use if none specified in shorewall[6].conf
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Cygwin Shorewall 5.0 rc file
|
# Cygwin Shorewall 4.5 rc file
|
||||||
#
|
#
|
||||||
BUILD=cygwin
|
BUILD=cygwin
|
||||||
HOST=cygwin
|
HOST=cygwin
|
||||||
@@ -14,9 +14,8 @@ INITDIR=/etc/init.d #Unused on Cygwin
|
|||||||
INITFILE= #Unused on Cygwin
|
INITFILE= #Unused on Cygwin
|
||||||
INITSOURCE= #Unused on Cygwin
|
INITSOURCE= #Unused on Cygwin
|
||||||
ANNOTATED= #Unused on Cygwin
|
ANNOTATED= #Unused on Cygwin
|
||||||
SERVICEDIR= #Unused on Cygwin
|
SYSTEMD= #Unused on Cygwin
|
||||||
SERVICEFILE= #Unused on Cygwin
|
SERVICEFILE= #Unused on Cygwin
|
||||||
SYSCONFDIR= #Unused on Cygwin
|
SYSCONFDIR= #Unused on Cygwin
|
||||||
SPARSE=Yes #Only install $PRODUCT/$PRODUCT.conf in $CONFDIR.
|
SPARSE=Yes #Only install $PRODUCT/$PRODUCT.conf in $CONFDIR.
|
||||||
VARLIB=/var/lib #Unused on Cygwin
|
VARLIB=/var/lib #Unused on Cygwin
|
||||||
DEFAULT_PAGER= #Pager to use if none specified in shorewall[6].conf
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Debian Shorewall 5.0 rc file
|
# Debian Shorewall 4.5 rc file
|
||||||
#
|
#
|
||||||
BUILD= #Default is to detect the build system
|
BUILD= #Default is to detect the build system
|
||||||
HOST=debian
|
HOST=debian
|
||||||
@@ -14,11 +14,10 @@ INITDIR=/etc/init.d #Directory where SysV init scripts are i
|
|||||||
INITFILE=$PRODUCT #Name of the product's installed SysV init script
|
INITFILE=$PRODUCT #Name of the product's installed SysV init script
|
||||||
INITSOURCE=init.debian.sh #Name of the distributed file to be installed as the SysV init script
|
INITSOURCE=init.debian.sh #Name of the distributed file to be installed as the SysV init script
|
||||||
ANNOTATED= #If non-zero, annotated configuration files are installed
|
ANNOTATED= #If non-zero, annotated configuration files are installed
|
||||||
SYSCONFFILE=default.debian.sysvinit #Name of the distributed file to be installed in $SYSCONFDIR
|
SYSCONFFILE=default.debian #Name of the distributed file to be installed in $SYSCONFDIR
|
||||||
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
||||||
SYSCONFDIR=/etc/default #Directory where SysV init parameter files are installed
|
SYSCONFDIR=/etc/default #Directory where SysV init parameter files are installed
|
||||||
SERVICEDIR= #Directory where .service files are installed (systems running systemd only)
|
SYSTEMD= #Directory where .service files are installed (systems running systemd only)
|
||||||
SPARSE=Yes #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
SPARSE=Yes #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
||||||
VARLIB=/var/lib #Directory where product variable data is stored.
|
VARLIB=/var/lib #Directory where product variable data is stored.
|
||||||
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
||||||
DEFAULT_PAGER=/usr/bin/less #Pager to use if none specified in shorewall[6].conf
|
|
@@ -1,24 +0,0 @@
|
|||||||
#
|
|
||||||
# Debian Shorewall 5.0 rc file
|
|
||||||
#
|
|
||||||
BUILD= #Default is to detect the build system
|
|
||||||
HOST=debian
|
|
||||||
PREFIX=/usr #Top-level directory for shared files, libraries, etc.
|
|
||||||
SHAREDIR=${PREFIX}/share #Directory for arch-neutral files.
|
|
||||||
LIBEXECDIR=${PREFIX}/share #Directory for executable scripts.
|
|
||||||
PERLLIBDIR=${PREFIX}/share/shorewall #Directory to install Shorewall Perl module directory
|
|
||||||
CONFDIR=/etc #Directory where subsystem configurations are installed
|
|
||||||
SBINDIR=/sbin #Directory where system administration programs are installed
|
|
||||||
MANDIR=${PREFIX}/share/man #Directory where manpages are installed.
|
|
||||||
INITDIR= #Directory where SysV init scripts are installed.
|
|
||||||
INITFILE= #Name of the product's installed SysV init script
|
|
||||||
INITSOURCE=init.debian.sh #Name of the distributed file to be installed as the SysV init script
|
|
||||||
ANNOTATED= #If non-zero, annotated configuration files are installed
|
|
||||||
SYSCONFFILE=default.debian.systemd #Name of the distributed file to be installed in $SYSCONFDIR
|
|
||||||
SERVICEFILE=$PRODUCT.service.debian #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
|
||||||
SYSCONFDIR=/etc/default #Directory where SysV init parameter files are installed
|
|
||||||
SERVICEDIR=/lib/systemd/system #Directory where .service files are installed (systems running systemd only)
|
|
||||||
SPARSE=Yes #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
|
||||||
VARLIB=/var/lib #Directory where product variable data is stored.
|
|
||||||
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
|
||||||
DEFAULT_PAGER=/usr/bin/less #Pager to use if none specified in shorewall[6].conf
|
|
@@ -1,8 +1,8 @@
|
|||||||
#
|
#
|
||||||
# Default Shorewall 5.0 rc file
|
# Default Shorewall 4.5 rc file
|
||||||
#
|
#
|
||||||
BUILD= #Default is to detect the build system
|
|
||||||
HOST=linux #Generic Linux
|
HOST=linux #Generic Linux
|
||||||
|
BUILD= #Default is to detect the build system
|
||||||
PREFIX=/usr #Top-level directory for shared files, libraries, etc.
|
PREFIX=/usr #Top-level directory for shared files, libraries, etc.
|
||||||
SHAREDIR=${PREFIX}/share #Directory for arch-neutral files.
|
SHAREDIR=${PREFIX}/share #Directory for arch-neutral files.
|
||||||
LIBEXECDIR=${PREFIX}/share #Directory for executable scripts.
|
LIBEXECDIR=${PREFIX}/share #Directory for executable scripts.
|
||||||
@@ -14,11 +14,10 @@ INITDIR=/etc/init.d #Directory where SysV init scripts are i
|
|||||||
INITFILE=$PRODUCT #Name of the product's installed SysV init script
|
INITFILE=$PRODUCT #Name of the product's installed SysV init script
|
||||||
INITSOURCE=init.sh #Name of the distributed file to be installed as the SysV init script
|
INITSOURCE=init.sh #Name of the distributed file to be installed as the SysV init script
|
||||||
ANNOTATED= #If non-zero, annotated configuration files are installed
|
ANNOTATED= #If non-zero, annotated configuration files are installed
|
||||||
SERVICEDIR= #Directory where .service files are installed (systems running systemd only)
|
SYSTEMD= #Directory where .service files are installed (systems running systemd only)
|
||||||
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
||||||
SYSCONFFILE= #Name of the distributed file to be installed in $SYSCONFDIR
|
SYSCONFFILE= #Name of the distributed file to be installed in $SYSCONFDIR
|
||||||
SYSCONFDIR= #Directory where SysV init parameter files are installed
|
SYSCONFDIR= #Directory where SysV init parameter files are installed
|
||||||
SPARSE= #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
SPARSE= #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
||||||
VARLIB=/var/lib #Directory where product variable data is stored.
|
VARLIB=/var/lib #Directory where product variable data is stored.
|
||||||
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
||||||
DEFAULT_PAGER= #Pager to use if none specified in shorewall[6].conf
|
|
||||||
|
@@ -1,24 +0,0 @@
|
|||||||
#
|
|
||||||
# OpenWRT Shorewall 5.0 rc file
|
|
||||||
#
|
|
||||||
BUILD= #Default is to detect the build system
|
|
||||||
HOST=openwrt
|
|
||||||
PREFIX=/usr #Top-level directory for shared files, libraries, etc.
|
|
||||||
SHAREDIR=${PREFIX}/share #Directory for arch-neutral files.
|
|
||||||
LIBEXECDIR=${PREFIX}/share #Directory for executable scripts.
|
|
||||||
PERLLIBDIR=${PREFIX}/share/shorewall #Directory to install Shorewall Perl module directory
|
|
||||||
CONFDIR=/etc #Directory where subsystem configurations are installed
|
|
||||||
SBINDIR=/sbin #Directory where system administration programs are installed
|
|
||||||
MANDIR= #Directory where manpages are installed.
|
|
||||||
INITDIR=/etc/init.d #Directory where SysV init scripts are installed.
|
|
||||||
INITFILE=$PRODUCT #Name of the product's installed SysV init script
|
|
||||||
INITSOURCE=init.openwrt.sh #Name of the distributed file to be installed as the SysV init script
|
|
||||||
ANNOTATED= #If non-zero, annotated configuration files are installed
|
|
||||||
SYSCONFDIR=${CONFDIR}/sysconfig #Directory where SysV init parameter files are installed
|
|
||||||
SYSCONFFILE=sysconfig #Name of the distributed file to be installed in $SYSCONFDIR
|
|
||||||
SERVICEDIR= #Directory where .service files are installed (systems running systemd only)
|
|
||||||
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
|
||||||
SPARSE= #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
|
||||||
VARLIB=/lib #Directory where product variable data is stored.
|
|
||||||
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
|
||||||
DEFAULT_PAGER= #Pager to use if none specified in shorewall[6].conf
|
|
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# RedHat/FedoraShorewall 5.0 rc file
|
# RedHat/FedoraShorewall 4.5 rc file
|
||||||
#
|
#
|
||||||
BUILD= #Default is to detect the build system
|
BUILD= #Default is to detect the build system
|
||||||
HOST=redhat
|
HOST=redhat
|
||||||
@@ -14,11 +14,10 @@ INITDIR=/etc/rc.d/init.d #Directory where SysV init scripts are i
|
|||||||
INITFILE=$PRODUCT #Name of the product's installed SysV init script
|
INITFILE=$PRODUCT #Name of the product's installed SysV init script
|
||||||
INITSOURCE=init.fedora.sh #Name of the distributed file to be installed as the SysV init script
|
INITSOURCE=init.fedora.sh #Name of the distributed file to be installed as the SysV init script
|
||||||
ANNOTATED= #If non-zero, annotated configuration files are installed
|
ANNOTATED= #If non-zero, annotated configuration files are installed
|
||||||
SERVICEDIR=/lib/systemd/system #Directory where .service files are installed (systems running systemd only)
|
SYSTEMD=/lib/systemd/system #Directory where .service files are installed (systems running systemd only)
|
||||||
SYSCONFFILE=sysconfig #Name of the distributed file to be installed as $SYSCONFDIR/$PRODUCT
|
SYSCONFFILE=sysconfig #Name of the distributed file to be installed as $SYSCONFDIR/$PRODUCT
|
||||||
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
||||||
SYSCONFDIR=/etc/sysconfig/ #Directory where SysV init parameter files are installed
|
SYSCONFDIR=/etc/sysconfig/ #Directory where SysV init parameter files are installed
|
||||||
SPARSE= #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
SPARSE= #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
||||||
VARLIB=/var/lib #Directory where product variable data is stored.
|
VARLIB=/var/lib #Directory where product variable data is stored.
|
||||||
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
||||||
DEFAULT_PAGER= #Pager to use if none specified in shorewall[6].conf
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Slackware Shorewall 5.0 rc file
|
# Slackware Shorewall 4.5 rc file
|
||||||
#
|
#
|
||||||
BUILD=slackware
|
BUILD=slackware
|
||||||
HOST=slackware
|
HOST=slackware
|
||||||
@@ -15,11 +15,10 @@ AUXINITSOURCE=init.slackware.firewall.sh #Name of the distributed file to be i
|
|||||||
AUXINITFILE=rc.firewall #Name of the product's installed SysV init script
|
AUXINITFILE=rc.firewall #Name of the product's installed SysV init script
|
||||||
INITSOURCE=init.slackware.$PRODUCT.sh #Name of the distributed file to be installed as a second SysV init script
|
INITSOURCE=init.slackware.$PRODUCT.sh #Name of the distributed file to be installed as a second SysV init script
|
||||||
INITFILE=rc.$PRODUCT #Name of the product's installed second init script
|
INITFILE=rc.$PRODUCT #Name of the product's installed second init script
|
||||||
SERVICEDIR= #Name of the directory where .service files are installed (systems running systemd only)
|
SYSTEMD= #Name of the directory where .service files are installed (systems running systemd only)
|
||||||
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
||||||
SYSCONFFILE= #Name of the distributed file to be installed in $SYSCONFDIR
|
SYSCONFFILE= #Name of the distributed file to be installed in $SYSCONFDIR
|
||||||
SYSCONFDIR= #Name of the directory where SysV init parameter files are installed.
|
SYSCONFDIR= #Name of the directory where SysV init parameter files are installed.
|
||||||
ANNOTATED= #If non-empty, install annotated configuration files
|
ANNOTATED= #If non-empty, install annotated configuration files
|
||||||
VARLIB=/var/lib #Directory where product variable data is stored.
|
VARLIB=/var/lib #Directory where product variable data is stored.
|
||||||
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
||||||
DEFAULT_PAGER= #Pager to use if none specified in shorewall[6].conf
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# SuSE Shorewall 5.0 rc file
|
# SuSE Shorewall 4.5 rc file
|
||||||
#
|
#
|
||||||
BUILD= #Default is to detect the build system
|
BUILD= #Default is to detect the build system
|
||||||
HOST=suse
|
HOST=suse
|
||||||
@@ -7,18 +7,17 @@ PREFIX=/usr #Top-level directory for s
|
|||||||
CONFDIR=/etc #Directory where subsystem configurations are installed
|
CONFDIR=/etc #Directory where subsystem configurations are installed
|
||||||
SHAREDIR=${PREFIX}/share #Directory for arch-neutral files.
|
SHAREDIR=${PREFIX}/share #Directory for arch-neutral files.
|
||||||
LIBEXECDIR=${PREFIX}/lib #Directory for executable scripts.
|
LIBEXECDIR=${PREFIX}/lib #Directory for executable scripts.
|
||||||
PERLLIBDIR=${PREFIX}/lib/perl5/site-perl #Directory to install Shorewall Perl module directory
|
PERLLIBDIR=${PREFIX}/lib/perl5/vendor_perl/5.14.2 #Directory to install Shorewall Perl module directory
|
||||||
SBINDIR=/usr/sbin #Directory where system administration programs are installed
|
SBINDIR=/usr/sbin #Directory where system administration programs are installed
|
||||||
MANDIR=${SHAREDIR}/man/ #Directory where manpages are installed.
|
MANDIR=${SHAREDIR}/man/ #Directory where manpages are installed.
|
||||||
INITDIR=/etc/init.d #Directory where SysV init scripts are installed.
|
INITDIR=/etc/init.d #Directory where SysV init scripts are installed.
|
||||||
INITFILE= #Name of the product's SysV init script
|
INITFILE=$PRODUCT #Name of the product's SysV init script
|
||||||
INITSOURCE=init.suse.sh #Name of the distributed file to be installed as the SysV init script
|
INITSOURCE=init.suse.sh #Name of the distributed file to be installed as the SysV init script
|
||||||
ANNOTATED= #If non-zero, annotated configuration files are installed
|
ANNOTATED= #If non-zero, annotated configuration files are installed
|
||||||
SERVICEDIR=/usr/lib/systemd/system #Directory where .service files are installed (systems running systemd only)
|
SYSTEMD= #Directory where .service files are installed (systems running systemd only)
|
||||||
SERVICEFILE=$PRODUCT.service #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
SERVICEFILE= #Name of the file to install in $SYSTEMD. Default is $PRODUCT.service
|
||||||
SYSCONFFILE=sysconfig #Name of the distributed file to be installed in $SYSCONFDIR
|
SYSCONFFILE=sysconfig #Name of the distributed file to be installed in $SYSCONFDIR
|
||||||
SYSCONFDIR=/etc/sysconfig/ #Directory where SysV init parameter files are installed
|
SYSCONFDIR=/etc/sysconfig/ #Directory where SysV init parameter files are installed
|
||||||
SPARSE= #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
SPARSE= #If non-empty, only install $PRODUCT/$PRODUCT.conf in $CONFDIR
|
||||||
VARLIB=/var/lib #Directory where persistent product data is stored.
|
VARLIB=/var/lib #Directory where persistent product data is stored.
|
||||||
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
VARDIR=${VARLIB}/$PRODUCT #Directory where product variable data is stored.
|
||||||
DEFAULT_PAGER= #Pager to use if none specified in shorewall[6].conf
|
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Script to back uninstall Shoreline Firewall Core Modules
|
# Script to back uninstall Shoreline Firewall
|
||||||
#
|
#
|
||||||
# (c) 2000-2016 - Tom Eastep (teastep@shorewall.net)
|
# (c) 2000-2014 - Tom Eastep (teastep@shorewall.net)
|
||||||
#
|
#
|
||||||
# Shorewall documentation is available at http://www.shorewall.net
|
# Shorewall documentation is available at http://www.shorewall.net
|
||||||
#
|
#
|
||||||
@@ -26,75 +26,51 @@
|
|||||||
# You may only use this script to uninstall the version
|
# You may only use this script to uninstall the version
|
||||||
# shown below. Simply run this script to remove Shorewall Firewall
|
# shown below. Simply run this script to remove Shorewall Firewall
|
||||||
|
|
||||||
VERSION=xxx # The Build script inserts the actual version
|
VERSION=xxx #The Build script inserts the actual version
|
||||||
PRODUCT=shorewall-core
|
|
||||||
Product="Shorewall Core"
|
|
||||||
|
|
||||||
usage() # $1 = exit status
|
usage() # $1 = exit status
|
||||||
{
|
{
|
||||||
ME=$(basename $0)
|
ME=$(basename $0)
|
||||||
echo "usage: $ME [ <option> ] [ <shorewallrc file> ]"
|
echo "usage: $ME [ <shorewallrc file> ]"
|
||||||
echo "where <option> is one of"
|
|
||||||
echo " -h"
|
|
||||||
echo " -v"
|
|
||||||
exit $1
|
exit $1
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
qt()
|
||||||
# Change to the directory containing this script
|
{
|
||||||
#
|
"$@" >/dev/null 2>&1
|
||||||
cd "$(dirname $0)"
|
}
|
||||||
|
|
||||||
#
|
restore_file() # $1 = file to restore
|
||||||
# Source common functions
|
{
|
||||||
#
|
if [ -f ${1}-shorewall.bkout ]; then
|
||||||
. ./lib.uninstaller || { echo "ERROR: Can not load common functions." >&2; exit 1; }
|
if (mv -f ${1}-shorewall.bkout $1); then
|
||||||
|
echo
|
||||||
|
echo "$1 restored"
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#
|
remove_file() # $1 = file to restore
|
||||||
# Parse the run line
|
{
|
||||||
#
|
if [ -f $1 -o -L $1 ] ; then
|
||||||
finished=0
|
rm -f $1
|
||||||
|
echo "$1 Removed"
|
||||||
while [ $finished -eq 0 ]; do
|
fi
|
||||||
option=$1
|
}
|
||||||
|
|
||||||
case "$option" in
|
|
||||||
-*)
|
|
||||||
option=${option#-}
|
|
||||||
|
|
||||||
while [ -n "$option" ]; do
|
|
||||||
case $option in
|
|
||||||
h)
|
|
||||||
usage 0
|
|
||||||
;;
|
|
||||||
v)
|
|
||||||
echo "$Product Firewall Uninstaller Version $VERSION"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
usage 1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
finished=1
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Read the RC file
|
# Read the RC file
|
||||||
#
|
#
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
if [ -f ./shorewallrc ]; then
|
if [ -f ./shorewallrc ]; then
|
||||||
. ./shorewallrc || fatal_error "Can not load the RC file: ./shorewallrc"
|
. ./shorewallrc
|
||||||
elif [ -f ~/.shorewallrc ]; then
|
elif [ -f ~/.shorewallrc ]; then
|
||||||
. ~/.shorewallrc || fatal_error "Can not load the RC file: ~/.shorewallrc"
|
. ~/.shorewallrc || exit 1
|
||||||
|
file=./.shorewallrc
|
||||||
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
||||||
. /usr/share/shorewall/shorewallrc || fatal_error "Can not load the RC file: /usr/share/shorewall/shorewallrc"
|
. /usr/share/shorewall/shorewallrc
|
||||||
else
|
else
|
||||||
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
||||||
fi
|
fi
|
||||||
@@ -104,11 +80,11 @@ elif [ $# -eq 1 ]; then
|
|||||||
/*|.*)
|
/*|.*)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
file=./$file || exit 1
|
file=./$file
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
. $file
|
||||||
else
|
else
|
||||||
usage 1
|
usage 1
|
||||||
fi
|
fi
|
||||||
@@ -116,26 +92,19 @@ fi
|
|||||||
if [ -f ${SHAREDIR}/shorewall/coreversion ]; then
|
if [ -f ${SHAREDIR}/shorewall/coreversion ]; then
|
||||||
INSTALLED_VERSION="$(cat ${SHAREDIR}/shorewall/coreversion)"
|
INSTALLED_VERSION="$(cat ${SHAREDIR}/shorewall/coreversion)"
|
||||||
if [ "$INSTALLED_VERSION" != "$VERSION" ]; then
|
if [ "$INSTALLED_VERSION" != "$VERSION" ]; then
|
||||||
echo "WARNING: $Product Version $INSTALLED_VERSION is installed"
|
echo "WARNING: Shorewall Core Version $INSTALLED_VERSION is installed"
|
||||||
echo " and this is the $VERSION uninstaller."
|
echo " and this is the $VERSION uninstaller."
|
||||||
VERSION="$INSTALLED_VERSION"
|
VERSION="$INSTALLED_VERSION"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "WARNING: $Product Version $VERSION is not installed"
|
echo "WARNING: Shorewall Core Version $VERSION is not installed"
|
||||||
VERSION=""
|
VERSION=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Uninstalling $Product $VERSION"
|
echo "Uninstalling Shorewall Core $VERSION"
|
||||||
|
|
||||||
if [ -n "${MANDIR}" ]; then
|
rm -rf ${SHAREDIR}/shorewall
|
||||||
remove_file_with_wildcard ${MANDIR}/man5/shorewall\*
|
|
||||||
remove_file_with_wildcard ${MANDIR}/man8/shorewall\*
|
echo "Shorewall Core Uninstalled"
|
||||||
fi
|
|
||||||
|
|
||||||
remove_directory ${SHAREDIR}/shorewall
|
|
||||||
remove_file ~/.shorewallrc
|
|
||||||
|
|
||||||
#
|
|
||||||
# Report Success
|
|
||||||
#
|
|
||||||
echo "$Product $VERSION Uninstalled"
|
|
||||||
|
1
Shorewall-init/README.txt
Normal file
1
Shorewall-init/README.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
This is the Shorewall-init stable 4.4 branch of Git.
|
@@ -1,21 +0,0 @@
|
|||||||
# List the Shorewall products that Shorewall-init is to
|
|
||||||
# initialize (space-separated list).
|
|
||||||
#
|
|
||||||
# Sample: PRODUCTS="shorewall shorewall6"
|
|
||||||
#
|
|
||||||
PRODUCTS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Set this to 1 if you want Shorewall-init to react to
|
|
||||||
# ifup/ifdown and NetworkManager events
|
|
||||||
#
|
|
||||||
IFUPDOWN=0
|
|
||||||
#
|
|
||||||
# Where Up/Down events get logged
|
|
||||||
#
|
|
||||||
LOGFILE=/var/log/shorewall-ifupdown.log
|
|
||||||
|
|
||||||
# Startup options - set verbosity to 0 (minimal reporting)
|
|
||||||
OPTIONS="-V0"
|
|
||||||
|
|
||||||
# IOF
|
|
@@ -1,27 +0,0 @@
|
|||||||
# List the Shorewall products that Shorewall-init is to
|
|
||||||
# initialize (space-separated list).
|
|
||||||
#
|
|
||||||
# Sample: PRODUCTS="shorewall shorewall6"
|
|
||||||
#
|
|
||||||
PRODUCTS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Set this to 1 if you want Shorewall-init to react to
|
|
||||||
# ifup/ifdown and NetworkManager events
|
|
||||||
#
|
|
||||||
IFUPDOWN=0
|
|
||||||
#
|
|
||||||
# Set this to the name of the file that is to hold
|
|
||||||
# ipset contents. Shorewall-init will load those ipsets
|
|
||||||
# during 'start' and will save them there during 'stop'.
|
|
||||||
#
|
|
||||||
SAVE_IPSETS=""
|
|
||||||
#
|
|
||||||
# Where Up/Down events get logged
|
|
||||||
#
|
|
||||||
LOGFILE=/var/log/shorewall-ifupdown.log
|
|
||||||
|
|
||||||
# Startup options - set verbosity to 0 (minimal reporting)
|
|
||||||
OPTIONS="-V0"
|
|
||||||
|
|
||||||
# IOF
|
|
@@ -28,13 +28,11 @@ setstatedir() {
|
|||||||
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARLIB}/${PRODUCT}
|
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARDIR}/${PRODUCT}
|
||||||
|
|
||||||
if [ ! -x $STATEDIR/firewall ]; then
|
if [ ! -x $STATEDIR/firewall ]; then
|
||||||
if [ $PRODUCT = shorewall ]; then
|
if [ $PRODUCT = shorewall -o $PRODUCT = shorewall6 ]; then
|
||||||
${SBINDIR}/shorewall compile
|
${SBINDIR}/$PRODUCT compile
|
||||||
elif [ $PRODUCT = shorewall6 ]; then
|
|
||||||
${SBINDIR}/shorewall -6 compile
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -130,7 +128,7 @@ for PRODUCT in $PRODUCTS; do
|
|||||||
setstatedir
|
setstatedir
|
||||||
|
|
||||||
if [ -x $VARLIB/$PRODUCT/firewall ]; then
|
if [ -x $VARLIB/$PRODUCT/firewall ]; then
|
||||||
( ${VARLIB}/$PRODUCT/firewall -V0 $COMMAND $INTERFACE >> $LOGFILE 2>&1 ) || true
|
( ${VARLIB}/$PRODUCT/firewall -V0 $COMMAND $INTERFACE >> $LOGFILE 2>&1 ) || true
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@@ -31,13 +31,11 @@ setstatedir() {
|
|||||||
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARLIB}/${PRODUCT}
|
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARDIR}/${PRODUCT}
|
||||||
|
|
||||||
if [ ! -x $STATEDIR/firewall ]; then
|
if [ ! -x "$STATEDIR/firewall" ]; then
|
||||||
if [ $PRODUCT = shorewall ]; then
|
if [ $PRODUCT == shorewall -o $PRODUCT == shorewall6 ]; then
|
||||||
${SBINDIR}/shorewall compile
|
${SBINDIR}/$PRODUCT $OPTIONS compile
|
||||||
elif [ $PRODUCT = shorewall6 ]; then
|
|
||||||
${SBINDIR}/shorewall -6 compile
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@@ -28,13 +28,11 @@ setstatedir() {
|
|||||||
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARLIB}/${PRODUCT}
|
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARDIR}/${PRODUCT}
|
||||||
|
|
||||||
if [ ! -x $STATEDIR/firewall ]; then
|
if [ ! -x $STATEDIR/firewall ]; then
|
||||||
if [ $PRODUCT = shorewall ]; then
|
if [ $PRODUCT = shorewall -o $PRODUCT = shorewall6 ]; then
|
||||||
${SBINDIR}/shorewall compile
|
${SBINDIR}/$PRODUCT compile
|
||||||
elif [ $PRODUCT = shorewall6 ]; then
|
|
||||||
${SBINDIR}/shorewall -6 compile
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall - V5.0
|
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall - V4.5
|
||||||
#
|
#
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
||||||
#
|
#
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
# Required-Stop: $local_fs
|
# Required-Stop: $local_fs
|
||||||
# X-Stop-After: $network
|
# X-Stop-After: $network
|
||||||
# Default-Start: S
|
# Default-Start: S
|
||||||
# Default-Stop: 0 1 6
|
# Default-Stop: 0 6
|
||||||
# Short-Description: Initialize the firewall at boot time
|
# Short-Description: Initialize the firewall at boot time
|
||||||
# Description: Place the firewall in a safe state at boot time prior to
|
# Description: Place the firewall in a safe state at boot time prior to
|
||||||
# bringing up the network
|
# bringing up the network
|
||||||
@@ -71,14 +71,10 @@ setstatedir() {
|
|||||||
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARLIB}/${PRODUCT}
|
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARDIR}/${PRODUCT}
|
||||||
|
|
||||||
if [ $PRODUCT = shorewall ]; then
|
if [ $PRODUCT = shorewall -o $PRODUCT = shorewall6 ]; then
|
||||||
${SBINDIR}/shorewall compile
|
${SBINDIR}/$PRODUCT ${OPTIONS} compile -c || echo_notdone
|
||||||
elif [ $PRODUCT = shorewall6 ]; then
|
|
||||||
${SBINDIR}/shorewall -6 compile
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -104,20 +100,24 @@ shorewall_start () {
|
|||||||
local PRODUCT
|
local PRODUCT
|
||||||
local STATEDIR
|
local STATEDIR
|
||||||
|
|
||||||
printf "Initializing \"Shorewall-based firewalls\": "
|
echo -n "Initializing \"Shorewall-based firewalls\": "
|
||||||
|
|
||||||
for PRODUCT in $PRODUCTS; do
|
for PRODUCT in $PRODUCTS; do
|
||||||
if setstatedir; then
|
setstatedir
|
||||||
if [ -x ${STATEDIR}/firewall ]; then
|
|
||||||
#
|
if [ -x ${STATEDIR}/firewall ]; then
|
||||||
# Run in a sub-shell to avoid name collisions
|
#
|
||||||
#
|
# Run in a sub-shell to avoid name collisions
|
||||||
(
|
#
|
||||||
if ! ${STATEDIR}/firewall status > /dev/null 2>&1; then
|
(
|
||||||
${STATEDIR}/firewall ${OPTIONS} stop
|
if ! ${STATEDIR}/firewall status > /dev/null 2>&1; then
|
||||||
fi
|
${STATEDIR}/firewall ${OPTIONS} stop || echo_notdone
|
||||||
)
|
else
|
||||||
fi
|
echo_notdone
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
else
|
||||||
|
echo_notdone
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ shorewall_start () {
|
|||||||
|
|
||||||
if [ -n "$SAVE_IPSETS" -a -f "$SAVE_IPSETS" ]; then
|
if [ -n "$SAVE_IPSETS" -a -f "$SAVE_IPSETS" ]; then
|
||||||
|
|
||||||
printf "Restoring ipsets: "
|
echo -n "Restoring ipsets: "
|
||||||
|
|
||||||
if ! ipset -R < "$SAVE_IPSETS"; then
|
if ! ipset -R < "$SAVE_IPSETS"; then
|
||||||
echo_notdone
|
echo_notdone
|
||||||
@@ -142,12 +142,12 @@ shorewall_stop () {
|
|||||||
local PRODUCT
|
local PRODUCT
|
||||||
local STATEDIR
|
local STATEDIR
|
||||||
|
|
||||||
printf "Clearing \"Shorewall-based firewalls\": "
|
echo -n "Clearing \"Shorewall-based firewalls\": "
|
||||||
for PRODUCT in $PRODUCTS; do
|
for PRODUCT in $PRODUCTS; do
|
||||||
if setstatedir; then
|
setstatedir
|
||||||
if [ -x ${STATEDIR}/firewall ]; then
|
|
||||||
${STATEDIR}/firewall ${OPTIONS} clear
|
if [ -x ${STATEDIR}/firewall ]; then
|
||||||
fi
|
${STATEDIR}/firewall ${OPTIONS} clear || echo_notdone
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@@ -42,12 +42,10 @@ setstatedir() {
|
|||||||
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARLIB}/${PRODUCT}
|
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARDIR}/${PRODUCT}
|
||||||
|
|
||||||
if [ $PRODUCT = shorewall ]; then
|
if [ $PRODUCT == shorewall -o $PRODUCT == shorewall6 ]; then
|
||||||
${SBINDIR}/shorewall compile
|
${SBINDIR}/$PRODUCT $OPTIONS compile -c
|
||||||
elif [ $PRODUCT = shorewall6 ]; then
|
|
||||||
${SBINDIR}/shorewall -6 compile
|
|
||||||
else
|
else
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
@@ -64,7 +62,7 @@ start () {
|
|||||||
return 6 #Not configured
|
return 6 #Not configured
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "Initializing \"Shorewall-based firewalls\": "
|
echo -n "Initializing \"Shorewall-based firewalls\": "
|
||||||
|
|
||||||
for PRODUCT in $PRODUCTS; do
|
for PRODUCT in $PRODUCTS; do
|
||||||
setstatedir
|
setstatedir
|
||||||
@@ -99,7 +97,7 @@ stop () {
|
|||||||
local PRODUCT
|
local PRODUCT
|
||||||
local STATEDIR
|
local STATEDIR
|
||||||
|
|
||||||
printf "Clearing \"Shorewall-based firewalls\": "
|
echo -n "Clearing \"Shorewall-based firewalls\": "
|
||||||
|
|
||||||
for PRODUCT in $PRODUCTS; do
|
for PRODUCT in $PRODUCTS; do
|
||||||
setstatedir
|
setstatedir
|
||||||
|
@@ -1,133 +0,0 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
|
||||||
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall - V5.0
|
|
||||||
#
|
|
||||||
# (c) 2010,2012-2014 - Tom Eastep (teastep@shorewall.net)
|
|
||||||
# (c) 2016 - Matt Darfeuille (matdarf@gmail.com)
|
|
||||||
#
|
|
||||||
# On most distributions, this file should be called /etc/init.d/shorewall-init.
|
|
||||||
#
|
|
||||||
# This program is part of Shorewall.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by the
|
|
||||||
# Free Software Foundation, either version 2 of the license or, at your
|
|
||||||
# option, any later version.
|
|
||||||
#
|
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program; if not, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
|
|
||||||
# arg1 of init script is arg2 when rc.common is sourced
|
|
||||||
|
|
||||||
case "$action" in
|
|
||||||
start|stop|boot)
|
|
||||||
if [ "$(id -u)" != "0" ]
|
|
||||||
then
|
|
||||||
echo "You must be root to start, stop or restart \"Shorewall \"."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# check if shorewall-init is configured or not
|
|
||||||
if [ -f "/etc/sysconfig/shorewall-init" ]
|
|
||||||
then
|
|
||||||
. /etc/sysconfig/shorewall-init
|
|
||||||
if [ -z "$PRODUCTS" ]
|
|
||||||
then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
;;
|
|
||||||
enable|disable|enabled)
|
|
||||||
# Openwrt related
|
|
||||||
# start and stop runlevel variable
|
|
||||||
START=19
|
|
||||||
STOP=91
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Usage: /etc/init.d/shorewall-init {start|stop}"
|
|
||||||
exit 1
|
|
||||||
esac
|
|
||||||
|
|
||||||
#
|
|
||||||
# The installer may alter this
|
|
||||||
#
|
|
||||||
. /usr/share/shorewall/shorewallrc
|
|
||||||
|
|
||||||
# Locate the current PRODUCT's statedir
|
|
||||||
setstatedir() {
|
|
||||||
local statedir
|
|
||||||
if [ -f ${CONFDIR}/${PRODUCT}/vardir ]; then
|
|
||||||
statedir=$( . ${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARLIB}/${PRODUCT}
|
|
||||||
|
|
||||||
if [ $PRODUCT = shorewall ]; then
|
|
||||||
${SBINDIR}/shorewall compile
|
|
||||||
elif [ $PRODUCT = shorewall6 ]; then
|
|
||||||
${SBINDIR}/shorewall -6 compile
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Initialize the firewall
|
|
||||||
start () {
|
|
||||||
local PRODUCT
|
|
||||||
local STATEDIR
|
|
||||||
|
|
||||||
printf "Initializing \"Shorewall-based firewalls\": "
|
|
||||||
for PRODUCT in $PRODUCTS; do
|
|
||||||
if setstatedir; then
|
|
||||||
if [ -x ${STATEDIR}/firewall ]; then
|
|
||||||
if ! ${SBIN}/$PRODUCT status > /dev/null 2>&1; then
|
|
||||||
${STATEDIR}/firewall ${OPTIONS} stop
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -n "$SAVE_IPSETS" -a -f "$SAVE_IPSETS" ]; then
|
|
||||||
ipset -R < "$SAVE_IPSETS"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
boot () {
|
|
||||||
start
|
|
||||||
}
|
|
||||||
|
|
||||||
# Clear the firewall
|
|
||||||
stop () {
|
|
||||||
local PRODUCT
|
|
||||||
local STATEDIR
|
|
||||||
|
|
||||||
printf "Clearing \"Shorewall-based firewalls\": "
|
|
||||||
for PRODUCT in $PRODUCTS; do
|
|
||||||
if setstatedir; then
|
|
||||||
if [ -x ${STATEDIR}/firewall ]; then
|
|
||||||
${STATEDIR}/firewall ${OPTIONS} clear
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -n "$SAVE_IPSETS" ]; then
|
|
||||||
mkdir -p $(dirname "$SAVE_IPSETS")
|
|
||||||
if ipset -S > "${SAVE_IPSETS}.tmp"; then
|
|
||||||
grep -qE -- '^(-N|create )' "${SAVE_IPSETS}.tmp" && mv -f "${SAVE_IPSETS}.tmp" "$SAVE_IPSETS"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
@@ -1,5 +1,5 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall - V5.0
|
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall - V4.5
|
||||||
#
|
#
|
||||||
# (c) 2010,2012-2014 - Tom Eastep (teastep@shorewall.net)
|
# (c) 2010,2012-2014 - Tom Eastep (teastep@shorewall.net)
|
||||||
#
|
#
|
||||||
@@ -67,12 +67,12 @@ setstatedir() {
|
|||||||
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARLIB}/${PRODUCT}
|
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARDIR}/${PRODUCT}
|
||||||
|
|
||||||
if [ $PRODUCT = shorewall -o $PRODUCT = shorewall6 ]; then
|
if [ ! -x $STATEDIR/firewall ]; then
|
||||||
${SBINDIR}/$PRODUCT ${OPTIONS} compile $STATEDIR/firewall
|
if [ $PRODUCT = shorewall -o $PRODUCT = shorewall6 ]; then
|
||||||
else
|
${SBINDIR}/$PRODUCT ${OPTIONS} compile $STATEDIR/firewall
|
||||||
return 0
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,13 +81,13 @@ shorewall_start () {
|
|||||||
local PRODUCT
|
local PRODUCT
|
||||||
local STATEDIR
|
local STATEDIR
|
||||||
|
|
||||||
printf "Initializing \"Shorewall-based firewalls\": "
|
echo -n "Initializing \"Shorewall-based firewalls\": "
|
||||||
for PRODUCT in $PRODUCTS; do
|
for PRODUCT in $PRODUCTS; do
|
||||||
if setstatedir; then
|
setstatedir
|
||||||
if [ -x ${STATEDIR}/firewall ]; then
|
|
||||||
if ! ${SBIN}/$PRODUCT status > /dev/null 2>&1; then
|
if [ -x ${STATEDIR}/firewall ]; then
|
||||||
${STATEDIR}/firewall ${OPTIONS} stop
|
if ! ${SBIN}/$PRODUCT status > /dev/null 2>&1; then
|
||||||
fi
|
${STATEDIR}/firewall ${OPTIONS} stop || exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -104,12 +104,12 @@ shorewall_stop () {
|
|||||||
local PRODUCT
|
local PRODUCT
|
||||||
local STATEDIR
|
local STATEDIR
|
||||||
|
|
||||||
printf "Clearing \"Shorewall-based firewalls\": "
|
echo -n "Clearing \"Shorewall-based firewalls\": "
|
||||||
for PRODUCT in $PRODUCTS; do
|
for PRODUCT in $PRODUCTS; do
|
||||||
if setstatedir; then
|
setstatedir
|
||||||
if [ -x ${STATEDIR}/firewall ]; then
|
|
||||||
${STATEDIR}/firewall ${OPTIONS} clear
|
if [ -x ${STATEDIR}/firewall ]; then
|
||||||
fi
|
${STATEDIR}/firewall ${OPTIONS} clear || exit 1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
#! /bin/bash
|
#! /bin/bash
|
||||||
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall - V5.0
|
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall - V4.5
|
||||||
#
|
#
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
||||||
#
|
#
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
# 0 - success
|
# 0 - success
|
||||||
# 1 - generic or unspecified error
|
# 1 - generic or unspecified error
|
||||||
# 2 - invalid or excess argument(s)
|
# 2 - invalid or excess argument(s)
|
||||||
# 3 - unimplemented feature
|
# 3 - unimplemented feature (e.g. "reload")
|
||||||
# 4 - insufficient privilege
|
# 4 - insufficient privilege
|
||||||
# 5 - program is not installed
|
# 5 - program is not installed
|
||||||
# 6 - program is not configured
|
# 6 - program is not configured
|
||||||
@@ -77,14 +77,10 @@ setstatedir() {
|
|||||||
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARLIB}/${PRODUCT}
|
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARDIR}/${PRODUCT}
|
||||||
|
|
||||||
if [ $PRODUCT = shorewall ]; then
|
if [ $PRODUCT = shorewall -o $PRODUCT = shorewall6 ]; then
|
||||||
${SBINDIR}/shorewall compile
|
${SBINDIR}/$PRODUCT ${OPTIONS} compile -c || exit
|
||||||
elif [ $PRODUCT = shorewall6 ]; then
|
|
||||||
${SBINDIR}/shorewall -6 compile
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,14 +89,16 @@ shorewall_start () {
|
|||||||
local PRODUCT
|
local PRODUCT
|
||||||
local STATEDIR
|
local STATEDIR
|
||||||
|
|
||||||
printf "Initializing \"Shorewall-based firewalls\": "
|
echo -n "Initializing \"Shorewall-based firewalls\": "
|
||||||
for PRODUCT in $PRODUCTS; do
|
for PRODUCT in $PRODUCTS; do
|
||||||
if setstatedir; then
|
setstatedir
|
||||||
if [ -x $STATEDIR/firewall ]; then
|
|
||||||
if ! ${SBIN}/$PRODUCT status > /dev/null 2>&1; then
|
if [ -x $STATEDIR/firewall ]; then
|
||||||
$STATEDIR/$PRODUCT/firewall ${OPTIONS} stop
|
if ! ${SBIN}/$PRODUCT status > /dev/null 2>&1; then
|
||||||
fi
|
$STATEDIR/$PRODUCT/firewall ${OPTIONS} stop || exit
|
||||||
fi
|
fi
|
||||||
|
else
|
||||||
|
exit 6
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -114,12 +112,14 @@ shorewall_stop () {
|
|||||||
local PRODUCT
|
local PRODUCT
|
||||||
local STATEDIR
|
local STATEDIR
|
||||||
|
|
||||||
printf "Clearing \"Shorewall-based firewalls\": "
|
echo -n "Clearing \"Shorewall-based firewalls\": "
|
||||||
for PRODUCT in $PRODUCTS; do
|
for PRODUCT in $PRODUCTS; do
|
||||||
if setstatedir; then
|
setstatedir
|
||||||
if [ -x ${STATEDIR}/firewall ]; then
|
|
||||||
${STATEDIR}/firewall ${OPTIONS} clear
|
if [ -x ${STATEDIR}/firewall ]; then
|
||||||
fi
|
${STATEDIR}/firewall ${OPTIONS} clear || exit
|
||||||
|
else
|
||||||
|
exit 6
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Script to install Shoreline Firewall Init
|
# Script to install Shoreline Firewall Init
|
||||||
#
|
#
|
||||||
# (c) 2000-2016 - Tom Eastep (teastep@shorewall.net)
|
# (c) 2000-20114 - Tom Eastep (teastep@shorewall.net)
|
||||||
# (c) 2010 - Roberto C. Sanchez (roberto@connexer.com)
|
# (c) 2010 - Roberto C. Sanchez (roberto@connexer.com)
|
||||||
#
|
#
|
||||||
# Shorewall documentation is available at http://shorewall.net
|
# Shorewall documentation is available at http://shorewall.net
|
||||||
@@ -27,52 +27,83 @@
|
|||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
#
|
#
|
||||||
|
|
||||||
VERSION=xxx # The Build script inserts the actual version
|
VERSION=xxx #The Build script inserts the actual version.
|
||||||
PRODUCT=shorewall-init
|
|
||||||
Product="Shorewall Init"
|
|
||||||
|
|
||||||
usage() # $1 = exit status
|
usage() # $1 = exit status
|
||||||
{
|
{
|
||||||
ME=$(basename $0)
|
ME=$(basename $0)
|
||||||
echo "usage: $ME [ <option> ] [ <shorewallrc file> ]"
|
echo "usage: $ME [ <configuration-file> ]"
|
||||||
echo "where <option> is one of"
|
echo " $ME -v"
|
||||||
echo " -h"
|
echo " $ME -h"
|
||||||
echo " -v"
|
echo " $ME -n"
|
||||||
echo " -n"
|
|
||||||
exit $1
|
exit $1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fatal_error()
|
||||||
|
{
|
||||||
|
echo " ERROR: $@" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
split() {
|
||||||
|
local ifs
|
||||||
|
ifs=$IFS
|
||||||
|
IFS=:
|
||||||
|
set -- $1
|
||||||
|
echo $*
|
||||||
|
IFS=$ifs
|
||||||
|
}
|
||||||
|
|
||||||
|
qt()
|
||||||
|
{
|
||||||
|
"$@" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
mywhich() {
|
||||||
|
local dir
|
||||||
|
|
||||||
|
for dir in $(split $PATH); do
|
||||||
|
if [ -x $dir/$1 ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
run_install()
|
||||||
|
{
|
||||||
|
if ! install $*; then
|
||||||
|
echo
|
||||||
|
echo "ERROR: Failed to install $*" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
cant_autostart()
|
||||||
|
{
|
||||||
|
echo
|
||||||
|
echo "WARNING: Unable to configure shorewall init to start automatically at boot" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
require()
|
||||||
|
{
|
||||||
|
eval [ -n "\$$1" ] || fatal_error "Required option $1 not set"
|
||||||
|
}
|
||||||
|
|
||||||
install_file() # $1 = source $2 = target $3 = mode
|
install_file() # $1 = source $2 = target $3 = mode
|
||||||
{
|
{
|
||||||
if cp -f $1 $2; then
|
run_install $T $OWNERSHIP -m $3 $1 ${2}
|
||||||
if chmod $3 $2; then
|
|
||||||
if [ -n "$OWNER" ]; then
|
|
||||||
if chown $OWNER:$GROUP $2; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "ERROR: Failed to install $2" >&2
|
|
||||||
exit 1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
|
||||||
# Change to the directory containing this script
|
|
||||||
#
|
|
||||||
cd "$(dirname $0)"
|
cd "$(dirname $0)"
|
||||||
|
|
||||||
#
|
PRODUCT=shorewall-init
|
||||||
# Source common functions
|
|
||||||
#
|
|
||||||
. ./lib.installer || { echo "ERROR: Can not load common functions." >&2; exit 1; }
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parse the run line
|
# Parse the run line
|
||||||
#
|
#
|
||||||
|
T='-T'
|
||||||
|
|
||||||
finished=0
|
finished=0
|
||||||
configure=1
|
configure=1
|
||||||
@@ -90,7 +121,7 @@ while [ $finished -eq 0 ] ; do
|
|||||||
usage 0
|
usage 0
|
||||||
;;
|
;;
|
||||||
v)
|
v)
|
||||||
echo "$Product Firewall Installer Version $VERSION"
|
echo "Shorewall-init Firewall Installer Version $VERSION"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
n*)
|
n*)
|
||||||
@@ -115,17 +146,17 @@ done
|
|||||||
# Read the RC file
|
# Read the RC file
|
||||||
#
|
#
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
|
#
|
||||||
|
# Load packager's settings if any
|
||||||
|
#
|
||||||
if [ -f ./shorewallrc ]; then
|
if [ -f ./shorewallrc ]; then
|
||||||
file=./shorewallrc
|
. ./shorewallrc || exit 1
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
|
||||||
elif [ -f ~/.shorewallrc ]; then
|
|
||||||
file=~/.shorewallrc
|
file=~/.shorewallrc
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
elif [ -f ~/.shorewallrc ]; then
|
||||||
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
. ~/.shorewallrc || exit 1
|
||||||
file=/usr/share/shorewall/shorewallrc
|
file=./.shorewallrc
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
else
|
||||||
else
|
fatal_error "No configuration file specified and ~/.shorewallrc not found"
|
||||||
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
|
||||||
fi
|
fi
|
||||||
elif [ $# -eq 1 ]; then
|
elif [ $# -eq 1 ]; then
|
||||||
file=$1
|
file=$1
|
||||||
@@ -133,11 +164,11 @@ elif [ $# -eq 1 ]; then
|
|||||||
/*|.*)
|
/*|.*)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
file=./$file || exit 1
|
file=./$file
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
. $file
|
||||||
else
|
else
|
||||||
usage 1
|
usage 1
|
||||||
fi
|
fi
|
||||||
@@ -157,8 +188,6 @@ done
|
|||||||
|
|
||||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
|
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
|
||||||
|
|
||||||
[ $configure -eq 1 ] && ETC=/etc || ETC="${CONFDIR}"
|
|
||||||
|
|
||||||
if [ -z "$BUILD" ]; then
|
if [ -z "$BUILD" ]; then
|
||||||
case $(uname) in
|
case $(uname) in
|
||||||
cygwin*)
|
cygwin*)
|
||||||
@@ -199,8 +228,6 @@ if [ -z "$BUILD" ]; then
|
|||||||
BUILD=slackware
|
BUILD=slackware
|
||||||
elif [ -f /etc/arch-release ] ; then
|
elif [ -f /etc/arch-release ] ; then
|
||||||
BUILD=archlinux
|
BUILD=archlinux
|
||||||
elif [ -f ${CONFDIR}/openwrt_release ]; then
|
|
||||||
BUILD=openwrt
|
|
||||||
else
|
else
|
||||||
BUILD=linux
|
BUILD=linux
|
||||||
fi
|
fi
|
||||||
@@ -208,24 +235,22 @@ if [ -z "$BUILD" ]; then
|
|||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[ -n "$OWNER" ] || OWNER=$(id -un)
|
||||||
|
[ -n "$GROUP" ] || GROUP=$(id -gn)
|
||||||
|
|
||||||
case $BUILD in
|
case $BUILD in
|
||||||
apple)
|
apple)
|
||||||
[ -z "$OWNER" ] && OWNER=root
|
T=
|
||||||
[ -z "$GROUP" ] && GROUP=wheel
|
;;
|
||||||
|
debian|gentoo|redhat|suse|slackware|archlinux)
|
||||||
;;
|
;;
|
||||||
cygwin*|CYGWIN*)
|
|
||||||
OWNER=$(id -un)
|
|
||||||
GROUP=$(id -gn)
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
if [ $(id -u) -eq 0 ]; then
|
[ -n "$BUILD" ] && echo "ERROR: Unknown BUILD environment ($BUILD)" >&2 || echo "ERROR: Unknown BUILD environment"
|
||||||
[ -z "$OWNER" ] && OWNER=root
|
exit 1
|
||||||
[ -z "$GROUP" ] && GROUP=root
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
[ -n "$OWNER" ] && OWNERSHIP="$OWNER:$GROUP"
|
OWNERSHIP="-o $OWNER -g $GROUP"
|
||||||
|
|
||||||
[ -n "$HOST" ] || HOST=$BUILD
|
[ -n "$HOST" ] || HOST=$BUILD
|
||||||
|
|
||||||
@@ -250,46 +275,48 @@ case "$HOST" in
|
|||||||
suse)
|
suse)
|
||||||
echo "Installing SuSE-specific configuration..."
|
echo "Installing SuSE-specific configuration..."
|
||||||
;;
|
;;
|
||||||
openwrt)
|
|
||||||
echo "Installing Openwrt-specific configuration..."
|
|
||||||
;;
|
|
||||||
linux)
|
linux)
|
||||||
fatal_error "Shorewall-init is not supported on this system"
|
echo "ERROR: Shorewall-init is not supported on this system" >&2
|
||||||
|
exit 1
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
fatal_error "Unsupported HOST distribution: \"$HOST\""
|
echo "ERROR: Unsupported HOST distribution: \"$HOST\"" >&2
|
||||||
|
exit 1;
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
[ -z "$TARGET" ] && TARGET=$HOST
|
[ -z "$TARGET" ] && TARGET=$HOST
|
||||||
|
|
||||||
if [ -n "$DESTDIR" ]; then
|
if [ -n "$DESTDIR" ]; then
|
||||||
if [ $(id -u) != 0 ] ; then
|
if [ `id -u` != 0 ] ; then
|
||||||
echo "Not setting file owner/group permissions, not running as root."
|
echo "Not setting file owner/group permissions, not running as root."
|
||||||
OWNERSHIP=""
|
OWNERSHIP=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
make_parent_directory ${DESTDIR}${INITDIR} 0755
|
install -d $OWNERSHIP -m 755 ${DESTDIR}${INITDIR}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Installing $Product Version $VERSION"
|
echo "Installing Shorewall Init Version $VERSION"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check for /usr/share/shorewall-init/version
|
# Check for /usr/share/shorewall-init/version
|
||||||
#
|
#
|
||||||
if [ -f ${DESTDIR}${SHAREDIR}/$PRODUCT/version ]; then
|
if [ -f ${DESTDIR}${SHAREDIR}/shorewall-init/version ]; then
|
||||||
first_install=""
|
first_install=""
|
||||||
else
|
else
|
||||||
first_install="Yes"
|
first_install="Yes"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$DESTDIR" ] && make_parent_directory ${DESTDIR}${CONFDIR}/logrotate.d 0755
|
if [ -n "$DESTDIR" ]; then
|
||||||
|
mkdir -p ${DESTDIR}${CONFDIR}/logrotate.d
|
||||||
|
chmod 755 ${DESTDIR}${CONFDIR}/logrotate.d
|
||||||
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Install the Firewall Script
|
# Install the Firewall Script
|
||||||
#
|
#
|
||||||
if [ -n "$INITFILE" ]; then
|
if [ -n "$INITFILE" ]; then
|
||||||
make_parent_directory ${DESTDIR}${INITDIR} 0755
|
mkdir -p ${DESTDIR}${INITDIR}
|
||||||
install_file $INITSOURCE ${DESTDIR}${INITDIR}/$INITFILE 0544
|
install_file $INITSOURCE ${DESTDIR}${INITDIR}/$INITFILE 0544
|
||||||
[ "${SHAREDIR}" = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${INITDIR}/$INITFILE
|
[ "${SHAREDIR}" = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${INITDIR}/$INITFILE
|
||||||
|
|
||||||
@@ -303,92 +330,96 @@ fi
|
|||||||
#
|
#
|
||||||
# Install the .service file
|
# Install the .service file
|
||||||
#
|
#
|
||||||
if [ -z "${SERVICEDIR}" ]; then
|
if [ -n "$SYSTEMD" ]; then
|
||||||
SERVICEDIR="$SYSTEMD"
|
mkdir -p ${DESTDIR}${SYSTEMD}
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$SERVICEDIR" ]; then
|
|
||||||
make_parent_directory ${DESTDIR}${SERVICEDIR} 0755
|
|
||||||
[ -z "$SERVICEFILE" ] && SERVICEFILE=$PRODUCT.service
|
[ -z "$SERVICEFILE" ] && SERVICEFILE=$PRODUCT.service
|
||||||
install_file $SERVICEFILE ${DESTDIR}${SERVICEDIR}/$PRODUCT.service 0644
|
run_install $OWNERSHIP -m 644 $SERVICEFILE ${DESTDIR}${SYSTEMD}/$PRODUCT.service
|
||||||
[ ${SBINDIR} != /sbin ] && eval sed -i \'s\|/sbin/\|${SBINDIR}/\|\' ${DESTDIR}${SERVICEDIR}/$PRODUCT.service
|
[ ${SBINDIR} != /sbin ] && eval sed -i \'s\|/sbin/\|${SBINDIR}/\|\' ${DESTDIR}${SYSTEMD}/$PRODUCT.service
|
||||||
echo "Service file $SERVICEFILE installed as ${DESTDIR}${SERVICEDIR}/$PRODUCT.service"
|
echo "Service file $SERVICEFILE installed as ${DESTDIR}${SYSTEMD}/$PRODUCT.service"
|
||||||
[ -n "$DESTDIR" -o $configure -eq 0 ] && make_parent_directory ${DESTDIR}${SBINDIR} 0755
|
if [ -n "$DESTDIR" -o $configure -eq 0 ]; then
|
||||||
install_file $PRODUCT ${DESTDIR}${SBINDIR}/$PRODUCT 0700
|
mkdir -p ${DESTDIR}${SBINDIR}
|
||||||
[ "${SHAREDIR}" = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${SBINDIR}/$PRODUCT
|
chmod 755 ${DESTDIR}${SBINDIR}
|
||||||
echo "CLI installed as ${DESTDIR}${SBINDIR}/$PRODUCT"
|
fi
|
||||||
|
run_install $OWNERSHIP -m 700 shorewall-init ${DESTDIR}${SBINDIR}/shorewall-init
|
||||||
|
[ "${SHAREDIR}" = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${SBINDIR}/shorewall-init
|
||||||
|
echo "CLI installed as ${DESTDIR}${SBINDIR}/shorewall-init"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Create /usr/share/shorewall-init if needed
|
# Create /usr/share/shorewall-init if needed
|
||||||
#
|
#
|
||||||
make_parent_directory ${DESTDIR}${SHAREDIR}/$PRODUCT 0755
|
mkdir -p ${DESTDIR}${SHAREDIR}/shorewall-init
|
||||||
|
chmod 755 ${DESTDIR}${SHAREDIR}/shorewall-init
|
||||||
|
|
||||||
#
|
#
|
||||||
# Install logrotate file
|
# Install logrotate file
|
||||||
#
|
#
|
||||||
if [ -d ${DESTDIR}${CONFDIR}/logrotate.d ]; then
|
if [ -d ${DESTDIR}${CONFDIR}/logrotate.d ]; then
|
||||||
install_file logrotate ${DESTDIR}${CONFDIR}/logrotate.d/$PRODUCT 0644
|
run_install $OWNERSHIP -m 0644 logrotate ${DESTDIR}${CONFDIR}/logrotate.d/$PRODUCT
|
||||||
echo "Logrotate file installed as ${DESTDIR}${CONFDIR}/logrotate.d/$PRODUCT"
|
echo "Logrotate file installed as ${DESTDIR}${CONFDIR}/logrotate.d/$PRODUCT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Create the version file
|
# Create the version file
|
||||||
#
|
#
|
||||||
echo "$VERSION" > ${DESTDIR}/${SHAREDIR}/$PRODUCT/version
|
echo "$VERSION" > ${DESTDIR}/${SHAREDIR}/shorewall-init/version
|
||||||
chmod 0644 ${DESTDIR}${SHAREDIR}/$PRODUCT/version
|
chmod 644 ${DESTDIR}${SHAREDIR}/shorewall-init/version
|
||||||
|
|
||||||
#
|
#
|
||||||
# Remove and create the symbolic link to the init script
|
# Remove and create the symbolic link to the init script
|
||||||
#
|
#
|
||||||
|
echo CONFDIR is $CONFDIR
|
||||||
|
|
||||||
if [ -z "$DESTDIR" ]; then
|
if [ -z "$DESTDIR" ]; then
|
||||||
rm -f ${SHAREDIR}/$PRODUCT/init
|
rm -f ${SHAREDIR}/shorewall-init/init
|
||||||
ln -s ${INITDIR}/${INITFILE} ${SHAREDIR}/$PRODUCT/init
|
ln -s ${INITDIR}/${INITFILE} ${SHAREDIR}/shorewall-init/init
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $HOST = debian ]; then
|
if [ $HOST = debian ]; then
|
||||||
if [ -n "${DESTDIR}" ]; then
|
if [ -n "${DESTDIR}" ]; then
|
||||||
make_parent_directory ${DESTDIR}${ETC}/network/if-up.d 0755
|
mkdir -p ${DESTDIR}/etc/network/if-up.d/
|
||||||
make_parent_directory ${DESTDIR}${ETC}/network/if-down.d 0755
|
mkdir -p ${DESTDIR}/etc/network/if-down.d/
|
||||||
make_parent_directory ${DESTDIR}${ETC}/network/if-post-down.d 0755
|
mkdir -p ${DESTDIR}/etc/network/if-post-down.d/
|
||||||
elif [ $configure -eq 0 ]; then
|
elif [ $configure -eq 0 ]; then
|
||||||
make_parent_directory ${DESTDIR}${CONFDIR}/network/if-up.d 0755
|
mkdir -p ${DESTDIR}${CONFDIR}/network/if-up.d/
|
||||||
make_parent_directory ${DESTDIR}${CONFDIR}/network/if-down.d 0755
|
mkdir -p ${DESTDIR}${CONFDIR}/network/if-down.d/
|
||||||
make_parent_directory ${DESTDIR}${CONFDIR}/network/if-post-down.d 0755
|
mkdir -p ${DESTDIR}${CONFDIR}/network/if-post-down.d/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f ${DESTDIR}${CONFDIR}/default/$PRODUCT ]; then
|
if [ ! -f ${DESTDIR}${CONFDIR}/default/shorewall-init ]; then
|
||||||
[ -n "${DESTDIR}" ] && make_parent_directory ${DESTDIR}${ETC}/default 0755
|
if [ -n "${DESTDIR}" ]; then
|
||||||
|
mkdir ${DESTDIR}/etc/default
|
||||||
|
fi
|
||||||
|
|
||||||
[ $configure -eq 1 ] || make_parent_directory ${DESTDIR}${CONFDIR}/default 0755
|
if [ $configure -eq 1 ]; then
|
||||||
install_file ${SYSCONFFILE} ${DESTDIR}${ETC}/default/$PRODUCT 0644
|
install_file sysconfig ${DESTDIR}/etc/default/shorewall-init 0644
|
||||||
echo "${SYSCONFFILE} file installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
|
else
|
||||||
|
mkdir -p ${DESTDIR}${CONFDIR}/default
|
||||||
|
install_file sysconfig ${DESTDIR}${CONFDIR}/default/shorewall-init 0644
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
IFUPDOWN=ifupdown.debian.sh
|
IFUPDOWN=ifupdown.debian.sh
|
||||||
else
|
else
|
||||||
if [ -n "$DESTDIR" ]; then
|
if [ -n "$DESTDIR" ]; then
|
||||||
make_parent_directory ${DESTDIR}${SYSCONFDIR} 0755
|
mkdir -p ${DESTDIR}${SYSCONFDIR}
|
||||||
|
|
||||||
if [ -z "$RPM" ]; then
|
if [ -z "$RPM" ]; then
|
||||||
if [ $HOST = suse ]; then
|
if [ $HOST = suse ]; then
|
||||||
make_parent_directory ${DESTDIR}${ETC}/sysconfig/network/if-up.d 0755
|
mkdir -p ${DESTDIR}/etc/sysconfig/network/if-up.d
|
||||||
make_parent_directory ${DESTDIR}${ETC}/sysconfig/network/if-down.d 0755
|
mkdir -p ${DESTDIR}/etc/sysconfig/network/if-down.d
|
||||||
elif [ $HOST = gentoo ]; then
|
elif [ $HOST = gentoo ]; then
|
||||||
# Gentoo does not support if-{up,down}.d
|
# Gentoo does not support if-{up,down}.d
|
||||||
/bin/true
|
/bin/true
|
||||||
elif [ $HOST = openwrt ]; then
|
|
||||||
# Not implemented on OpenWRT
|
|
||||||
/bin/true
|
|
||||||
else
|
else
|
||||||
make_parent_directory ${DESTDIR}/${ETC}/NetworkManager/dispatcher.d 0755
|
mkdir -p ${DESTDIR}/etc/NetworkManager/dispatcher.d
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$SYSCONFFILE" -a ! -f ${DESTDIR}${SYSCONFDIR}/${PRODUCT} ]; then
|
if [ -n "$SYSCONFFILE" -a ! -f ${DESTDIR}${SYSCONFDIR}/${PRODUCT} ]; then
|
||||||
install_file ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/$PRODUCT 0644
|
run_install $OWNERSHIP -m 0644 ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/$PRODUCT
|
||||||
echo "${SYSCONFFILE} file installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
|
echo "$SYSCONFFILE installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ $HOST = suse ] && IFUPDOWN=ifupdown.suse.sh || IFUPDOWN=ifupdown.fedora.sh
|
[ $HOST = suse ] && IFUPDOWN=ifupdown.suse.sh || IFUPDOWN=ifupdown.fedora.sh
|
||||||
@@ -398,19 +429,21 @@ fi
|
|||||||
# Install the ifupdown script
|
# Install the ifupdown script
|
||||||
#
|
#
|
||||||
|
|
||||||
if [ $HOST != openwrt ]; then
|
cp $IFUPDOWN ifupdown
|
||||||
cp $IFUPDOWN ifupdown
|
|
||||||
|
|
||||||
[ "${SHAREDIR}" = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ifupdown
|
[ "${SHAREDIR}" = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ifupdown
|
||||||
|
|
||||||
make_parent_directory ${DESTDIR}${LIBEXECDIR}/$PRODUCT 0755
|
mkdir -p ${DESTDIR}${LIBEXECDIR}/shorewall-init
|
||||||
|
|
||||||
install_file ifupdown ${DESTDIR}${LIBEXECDIR}/$PRODUCT/ifupdown 0544
|
install_file ifupdown ${DESTDIR}${LIBEXECDIR}/shorewall-init/ifupdown 0544
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -d ${DESTDIR}/etc/NetworkManager ]; then
|
if [ -d ${DESTDIR}/etc/NetworkManager ]; then
|
||||||
[ $configure -eq 1 ] || make_parent_directory ${DESTDIR}${CONFDIR}/NetworkManager/dispatcher.d 0755
|
if [ $configure -eq 1 ]; then
|
||||||
install_file ifupdown ${DESTDIR}${ETC}/NetworkManager/dispatcher.d/01-shorewall 0544
|
install_file ifupdown ${DESTDIR}/etc/NetworkManager/dispatcher.d/01-shorewall 0544
|
||||||
|
else
|
||||||
|
mkdir -p ${DESTDIR}${CONFDIR}/NetworkManager/dispatcher.d/
|
||||||
|
install_file ifupdown ${DESTDIR}${CONFDIR}/NetworkManager/dispatcher.d/01-shorewall 0544
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case $HOST in
|
case $HOST in
|
||||||
@@ -428,8 +461,8 @@ case $HOST in
|
|||||||
suse)
|
suse)
|
||||||
if [ -z "$RPM" ]; then
|
if [ -z "$RPM" ]; then
|
||||||
if [ $configure -eq 0 ]; then
|
if [ $configure -eq 0 ]; then
|
||||||
make_parent_directory ${DESTDIR}${SYSCONFDIR}/network/if-up.d 0755
|
mkdir -p ${DESTDIR}${SYSCONFDIR}/network/if-up.d/
|
||||||
make_parent_directory ${DESTDIR}${SYSCONFDIR}/network/if-down.d 0755
|
mkdir -p ${DESTDIR}${SYSCONFDIR}/network/if-down.d/
|
||||||
fi
|
fi
|
||||||
|
|
||||||
install_file ifupdown ${DESTDIR}${SYSCONFDIR}/network/if-up.d/shorewall 0544
|
install_file ifupdown ${DESTDIR}${SYSCONFDIR}/network/if-up.d/shorewall 0544
|
||||||
@@ -459,21 +492,17 @@ case $HOST in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
if [ -z "$DESTDIR" ]; then
|
if [ -z "$DESTDIR" ]; then
|
||||||
if [ $configure -eq 1 -a -n "first_install" ]; then
|
if [ $configure -eq 1 -a -n "$first_install" ]; then
|
||||||
if [ $HOST = debian ]; then
|
if [ $HOST = debian ]; then
|
||||||
if [ -n "$SERVICEDIR" ]; then
|
if mywhich insserv; then
|
||||||
if systemctl enable ${PRODUCT}.service; then
|
if insserv ${INITDIR}/shorewall-init; then
|
||||||
echo "$Product will start automatically at boot"
|
echo "Shorewall Init will start automatically at boot"
|
||||||
fi
|
|
||||||
elif mywhich insserv; then
|
|
||||||
if insserv ${INITDIR}/$PRODUCT; then
|
|
||||||
echo "$Product will start automatically at boot"
|
|
||||||
else
|
else
|
||||||
cant_autostart
|
cant_autostart
|
||||||
fi
|
fi
|
||||||
elif mywhich update-rc.d ; then
|
elif mywhich update-rc.d ; then
|
||||||
if update-rc.d $PRODUCT enable; then
|
if update-rc.d $PRODUCT enable; then
|
||||||
echo "$Product will start automatically at boot"
|
echo "$PRODUCT will start automatically at boot"
|
||||||
echo "Set startup=1 in ${CONFDIR}/default/$PRODUCT to enable"
|
echo "Set startup=1 in ${CONFDIR}/default/$PRODUCT to enable"
|
||||||
else
|
else
|
||||||
cant_autostart
|
cant_autostart
|
||||||
@@ -481,45 +510,31 @@ if [ -z "$DESTDIR" ]; then
|
|||||||
else
|
else
|
||||||
cant_autostart
|
cant_autostart
|
||||||
fi
|
fi
|
||||||
elif [ $HOST = openwrt -a -f ${CONFDIR}/rc.common ]; then
|
|
||||||
/etc/init.d/$PRODUCT enable
|
|
||||||
if /etc/init.d/$PRODUCT enabled; then
|
|
||||||
echo "$Product will start automatically at boot"
|
|
||||||
else
|
|
||||||
cant_autostart
|
|
||||||
fi
|
|
||||||
elif [ $HOST = gentoo ]; then
|
elif [ $HOST = gentoo ]; then
|
||||||
# On Gentoo, a service must be enabled manually by the user,
|
# On Gentoo, a service must be enabled manually by the user,
|
||||||
# not by the installer
|
# not by the installer
|
||||||
/bin/true
|
/bin/true
|
||||||
else
|
else
|
||||||
if [ -n "$SERVICEDIR" ]; then
|
if [ -n "$SYSTEMD" ]; then
|
||||||
if systemctl enable ${PRODUCT}.service; then
|
if systemctl enable shorewall-init.service; then
|
||||||
echo "$Product will start automatically at boot"
|
echo "Shorewall Init will start automatically at boot"
|
||||||
fi
|
fi
|
||||||
elif [ -x ${SBINDIR}/insserv -o -x /usr${SBINDIR}/insserv ]; then
|
elif [ -x ${SBINDIR}/insserv -o -x /usr${SBINDIR}/insserv ]; then
|
||||||
if insserv ${INITDIR}/$PRODUCT ; then
|
if insserv ${INITDIR}/shorewall-init ; then
|
||||||
echo "$Product will start automatically at boot"
|
echo "Shorewall Init will start automatically at boot"
|
||||||
else
|
else
|
||||||
cant_autostart
|
cant_autostart
|
||||||
fi
|
fi
|
||||||
elif [ -x ${SBINDIR}/chkconfig -o -x /usr${SBINDIR}/chkconfig ]; then
|
elif [ -x ${SBINDIR}/chkconfig -o -x /usr${SBINDIR}/chkconfig ]; then
|
||||||
if chkconfig --add $PRODUCT ; then
|
if chkconfig --add shorewall-init ; then
|
||||||
echo "$Product will start automatically at boot"
|
echo "Shorewall Init will start automatically in run levels as follows:"
|
||||||
chkconfig --list $PRODUCT
|
chkconfig --list shorewall-init
|
||||||
else
|
else
|
||||||
cant_autostart
|
cant_autostart
|
||||||
fi
|
fi
|
||||||
elif [ -x ${SBINDIR}/rc-update ]; then
|
elif [ -x ${SBINDIR}/rc-update ]; then
|
||||||
if rc-update add $PRODUCT default; then
|
if rc-update add shorewall-init default; then
|
||||||
echo "$Product will start automatically at boot"
|
echo "Shorewall Init will start automatically at boot"
|
||||||
else
|
|
||||||
cant_autostart
|
|
||||||
fi
|
|
||||||
elif [ $HOST = openwrt -a -f ${CONFDIR}/rc.common ]; then
|
|
||||||
/etc/init.d/$PRODUCT enable
|
|
||||||
if /etc/init.d/$PRODUCT enabled; then
|
|
||||||
echo "$Product will start automatically at boot"
|
|
||||||
else
|
else
|
||||||
cant_autostart
|
cant_autostart
|
||||||
fi
|
fi
|
||||||
@@ -530,25 +545,25 @@ if [ -z "$DESTDIR" ]; then
|
|||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
if [ $configure -eq 1 -a -n "$first_install" ]; then
|
if [ $configure -eq 1 -a -n "$first_install" ]; then
|
||||||
if [ $HOST = debian -a -z "$SERVICEDIR" ]; then
|
if [ $HOST = debian ]; then
|
||||||
if [ -n "${DESTDIR}" ]; then
|
if [ -n "${DESTDIR}" ]; then
|
||||||
make_parent_directory ${DESTDIR}/etc/rcS.d 0755
|
mkdir -p ${DESTDIR}/etc/rcS.d
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ln -sf ../init.d/$PRODUCT ${DESTDIR}${CONFDIR}/rcS.d/S38${PRODUCT}
|
ln -sf ../init.d/shorewall-init ${DESTDIR}${CONFDIR}/rcS.d/S38shorewall-init
|
||||||
echo "$Product will start automatically at boot"
|
echo "Shorewall Init will start automatically at boot"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -z "${DESTDIR}" ] && [ ! -f ~/.shorewallrc ] && cp ${SHAREDIR}/shorewall/shorewallrc .
|
[ -z "${DESTDIR}" ] && [ ! -f ~/.shorewallrc ] && cp ${SHAREDIR}/shorewall/shorewallrc .
|
||||||
|
|
||||||
if [ -d ${DESTDIR}/etc/ppp ]; then
|
if [ -f ${DESTDIR}/etc/ppp ]; then
|
||||||
case $HOST in
|
case $HOST in
|
||||||
debian|suse)
|
debian|suse)
|
||||||
for directory in ip-up.d ip-down.d ipv6-up.d ipv6-down.d; do
|
for directory in ip-up.d ip-down.d ipv6-up.d ipv6-down.d; do
|
||||||
make_parent_directory ${DESTDIR}/etc/ppp/$directory 0755 #SuSE doesn't create the IPv6 directories
|
mkdir -p ${DESTDIR}/etc/ppp/$directory #SuSE doesn't create the IPv6 directories
|
||||||
cp -fp ${DESTDIR}${LIBEXECDIR}/$PRODUCT/ifupdown ${DESTDIR}${CONFDIR}/ppp/$directory/shorewall
|
cp -fp ${DESTDIR}${LIBEXECDIR}/shorewall-init/ifupdown ${DESTDIR}${CONFDIR}/ppp/$directory/shorewall
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
redhat)
|
redhat)
|
||||||
@@ -559,19 +574,19 @@ if [ -d ${DESTDIR}/etc/ppp ]; then
|
|||||||
FILE=${DESTDIR}/etc/ppp/$file
|
FILE=${DESTDIR}/etc/ppp/$file
|
||||||
if [ -f $FILE ]; then
|
if [ -f $FILE ]; then
|
||||||
if grep -qF Shorewall-based $FILE ; then
|
if grep -qF Shorewall-based $FILE ; then
|
||||||
cp -fp ${DESTDIR}${LIBEXECDIR}/$PRODUCT/ifupdown $FILE
|
cp -fp ${DESTDIR}${LIBEXECDIR}/shorewall-init/ifupdown $FILE
|
||||||
else
|
else
|
||||||
echo "$FILE already exists -- ppp devices will not be handled"
|
echo "$FILE already exists -- ppp devices will not be handled"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
cp -fp ${DESTDIR}${LIBEXECDIR}/$PRODUCT/ifupdown $FILE
|
cp -fp ${DESTDIR}${LIBEXECDIR}/shorewall-init/ifupdown $FILE
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
#
|
#
|
||||||
# Report Success
|
# Report Success
|
||||||
#
|
#
|
||||||
echo "shorewall Init Version $VERSION Installed"
|
echo "shorewall Init Version $VERSION Installed"
|
||||||
|
@@ -1,19 +1,18 @@
|
|||||||
#!/bin/bash
|
#! /bin/bash
|
||||||
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall - V5.0
|
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall - V4.5
|
||||||
#
|
#
|
||||||
# (c) 2012-2014 - Tom Eastep (teastep@shorewall.net)
|
# (c) 2012-2014 - Tom Eastep (teastep@shorewall.net)
|
||||||
#
|
#
|
||||||
# On most distributions, this file should be called
|
# On most distributions, this file should be called /etc/init.d/shorewall.
|
||||||
# /etc/init.d/shorewall.
|
|
||||||
#
|
#
|
||||||
# Complete documentation is available at http://shorewall.net
|
# Complete documentation is available at http://shorewall.net
|
||||||
#
|
#
|
||||||
# This program is part of Shorewall.
|
# This program is part of Shorewall.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by the
|
||||||
# the Free Software Foundation, either version 2 of the license or,
|
# Free Software Foundation, either version 2 of the license or, at your
|
||||||
# at your option, any later version.
|
# option, any later version.
|
||||||
#
|
#
|
||||||
# This program is distributed in the hope that it will be useful,
|
# This program is distributed in the hope that it will be useful,
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
@@ -23,7 +22,7 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
###############################################################################
|
#########################################################################################
|
||||||
# set the STATEDIR variable
|
# set the STATEDIR variable
|
||||||
setstatedir() {
|
setstatedir() {
|
||||||
local statedir
|
local statedir
|
||||||
@@ -31,14 +30,10 @@ setstatedir() {
|
|||||||
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARLIB}/${PRODUCT}
|
[ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARDIR}/${PRODUCT}
|
||||||
|
|
||||||
if [ $PRODUCT = shorewall ]; then
|
if [ $PRODUCT = shorewall -o $PRODUCT = shorewall6 ]; then
|
||||||
${SBINDIR}/shorewall compile
|
${SBINDIR}/$PRODUCT ${OPTIONS} compile -c || exit 1
|
||||||
elif [ $PRODUCT = shorewall6 ]; then
|
|
||||||
${SBINDIR}/shorewall -6 compile
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -51,7 +46,7 @@ setstatedir() {
|
|||||||
if [ -f "$SYSCONFDIR/shorewall-init" ]; then
|
if [ -f "$SYSCONFDIR/shorewall-init" ]; then
|
||||||
. $SYSCONFDIR/shorewall-init
|
. $SYSCONFDIR/shorewall-init
|
||||||
if [ -z "$PRODUCTS" ]; then
|
if [ -z "$PRODUCTS" ]; then
|
||||||
echo "ERROR: No products configured" >&2
|
echo "ERROR: No products configured" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@@ -61,66 +56,71 @@ fi
|
|||||||
|
|
||||||
# Initialize the firewall
|
# Initialize the firewall
|
||||||
shorewall_start () {
|
shorewall_start () {
|
||||||
local PRODUCT
|
local PRODUCT
|
||||||
local STATEDIR
|
local STATEDIR
|
||||||
|
|
||||||
printf "Initializing \"Shorewall-based firewalls\": "
|
echo -n "Initializing \"Shorewall-based firewalls\": "
|
||||||
for PRODUCT in $PRODUCTS; do
|
for PRODUCT in $PRODUCTS; do
|
||||||
if setstatedir; then
|
setstatedir
|
||||||
if [ -x ${STATEDIR}/firewall ]; then
|
|
||||||
#
|
|
||||||
# Run in a sub-shell to avoid name collisions
|
|
||||||
#
|
|
||||||
(
|
|
||||||
if ! ${STATEDIR}/firewall status > /dev/null 2>&1; then
|
|
||||||
${STATEDIR}/firewall ${OPTIONS} stop
|
|
||||||
fi
|
|
||||||
)
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -n "$SAVE_IPSETS" -a -f "$SAVE_IPSETS" ]; then
|
if [ -x ${STATEDIR}/firewall ]; then
|
||||||
ipset -R < "$SAVE_IPSETS"
|
#
|
||||||
fi
|
# Run in a sub-shell to avoid name collisions
|
||||||
|
#
|
||||||
|
(
|
||||||
|
if ! ${STATEDIR}/firewall status > /dev/null 2>&1; then
|
||||||
|
${STATEDIR}/firewall ${OPTIONS} stop || exit 1
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
)
|
||||||
|
else
|
||||||
|
echo ERROR: ${STATEDIR}/firewall does not exist or is not executable!
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
return 0
|
if [ -n "$SAVE_IPSETS" -a -f "$SAVE_IPSETS" ]; then
|
||||||
|
ipset -R < "$SAVE_IPSETS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# Clear the firewall
|
# Clear the firewall
|
||||||
shorewall_stop () {
|
shorewall_stop () {
|
||||||
local PRODUCT
|
local PRODUCT
|
||||||
local STATEDIR
|
local STATEDIR
|
||||||
|
|
||||||
printf "Clearing \"Shorewall-based firewalls\": "
|
echo -n "Clearing \"Shorewall-based firewalls\": "
|
||||||
for PRODUCT in $PRODUCTS; do
|
for PRODUCT in $PRODUCTS; do
|
||||||
if setstatedir; then
|
setstatedir
|
||||||
if [ -x ${STATEDIR}/firewall ]; then
|
|
||||||
${STATEDIR}/firewall ${OPTIONS} clear
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ -n "$SAVE_IPSETS" ]; then
|
if [ -x ${STATEDIR}/firewall ]; then
|
||||||
mkdir -p $(dirname "$SAVE_IPSETS")
|
${STATEDIR}/firewall ${OPTIONS} clear || exit 1
|
||||||
if ipset -S > "${SAVE_IPSETS}.tmp"; then
|
fi
|
||||||
grep -qE -- '^(-N|create )' "${SAVE_IPSETS}.tmp" && mv -f "${SAVE_IPSETS}.tmp" "$SAVE_IPSETS"
|
done
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
return 0
|
if [ -n "$SAVE_IPSETS" ]; then
|
||||||
|
mkdir -p $(dirname "$SAVE_IPSETS")
|
||||||
|
if ipset -S > "${SAVE_IPSETS}.tmp"; then
|
||||||
|
grep -qE -- '^(-N|create )' "${SAVE_IPSETS}.tmp" && mv -f "${SAVE_IPSETS}.tmp" "$SAVE_IPSETS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
start)
|
start)
|
||||||
shorewall_start
|
shorewall_start
|
||||||
;;
|
;;
|
||||||
stop)
|
stop)
|
||||||
shorewall_stop
|
shorewall_stop
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Usage: $0 {start|stop}"
|
echo "Usage: $0 {start|stop}"
|
||||||
exit 1
|
exit 1
|
||||||
esac
|
esac
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
@@ -4,17 +4,17 @@
|
|||||||
# Copyright 2011 Jonathan Underwood <jonathan.underwood@gmail.com>
|
# Copyright 2011 Jonathan Underwood <jonathan.underwood@gmail.com>
|
||||||
#
|
#
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Shorewall firewall (bootup security)
|
Description=Shorewall IPv4 firewall (bootup security)
|
||||||
Before=network-pre.target
|
Before=network.target
|
||||||
Wants=network-pre.target
|
Conflicts=iptables.service firewalld.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
RemainAfterExit=yes
|
RemainAfterExit=yes
|
||||||
EnvironmentFile=-/etc/sysconfig/shorewall-init
|
EnvironmentFile=-/etc/sysconfig/shorewall-init
|
||||||
StandardOutput=syslog
|
StandardOutput=syslog
|
||||||
ExecStart=/sbin/shorewall-init start
|
ExecStart=/sbin/shorewall-init $OPTIONS start
|
||||||
ExecStop=/sbin/shorewall-init stop
|
ExecStop=/sbin/shorewall-init $OPTIONS stop
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=basic.target
|
WantedBy=basic.target
|
||||||
|
@@ -1,20 +0,0 @@
|
|||||||
#
|
|
||||||
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall
|
|
||||||
#
|
|
||||||
# Copyright 2011 Jonathan Underwood <jonathan.underwood@gmail.com>
|
|
||||||
# Copyright 2015 Tom Eastep <teastep@shorewall.net>
|
|
||||||
#
|
|
||||||
[Unit]
|
|
||||||
Description=Shorewall firewall (bootup security)
|
|
||||||
Before=network.target
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
RemainAfterExit=yes
|
|
||||||
EnvironmentFile=-/etc/default/shorewall-init
|
|
||||||
StandardOutput=syslog
|
|
||||||
ExecStart=/sbin/shorewall-init start
|
|
||||||
ExecStop=/sbin/shorewall-init stop
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=basic.target
|
|
@@ -1,8 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Script to back uninstall Shoreline Firewall Init
|
# Script to back uninstall Shoreline Firewall
|
||||||
#
|
#
|
||||||
# (c) 2000-2016 - Tom Eastep (teastep@shorewall.net)
|
# (c) 2000-2014 - Tom Eastep (teastep@shorewall.net)
|
||||||
#
|
#
|
||||||
# Shorewall documentation is available at http://shorewall.sourceforge.net
|
# Shorewall documentation is available at http://shorewall.sourceforge.net
|
||||||
#
|
#
|
||||||
@@ -26,34 +26,49 @@
|
|||||||
# You may only use this script to uninstall the version
|
# You may only use this script to uninstall the version
|
||||||
# shown below. Simply run this script to remove Shorewall Firewall
|
# shown below. Simply run this script to remove Shorewall Firewall
|
||||||
|
|
||||||
VERSION=xxx # The Build script inserts the actual version
|
VERSION=xxx #The Build script inserts the actual version
|
||||||
PRODUCT=shorewall-init
|
|
||||||
Product="Shorewall Init"
|
|
||||||
|
|
||||||
usage() # $1 = exit status
|
usage() # $1 = exit status
|
||||||
{
|
{
|
||||||
ME=$(basename $0)
|
ME=$(basename $0)
|
||||||
echo "usage: $ME [ <option> ] [ <shorewallrc file> ]"
|
echo "usage: $ME [ <shorewallrc file> ]"
|
||||||
echo "where <option> is one of"
|
|
||||||
echo " -h"
|
|
||||||
echo " -v"
|
|
||||||
echo " -n"
|
|
||||||
exit $1
|
exit $1
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
qt()
|
||||||
# Change to the directory containing this script
|
{
|
||||||
#
|
"$@" >/dev/null 2>&1
|
||||||
cd "$(dirname $0)"
|
}
|
||||||
|
|
||||||
#
|
split() {
|
||||||
# Source common functions
|
local ifs
|
||||||
#
|
ifs=$IFS
|
||||||
. ./lib.uninstaller || { echo "ERROR: Can not load common functions." >&2; exit 1; }
|
IFS=:
|
||||||
|
set -- $1
|
||||||
|
echo $*
|
||||||
|
IFS=$ifs
|
||||||
|
}
|
||||||
|
|
||||||
|
mywhich() {
|
||||||
|
local dir
|
||||||
|
|
||||||
|
for dir in $(split $PATH); do
|
||||||
|
if [ -x $dir/$1 ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_file() # $1 = file to restore
|
||||||
|
{
|
||||||
|
if [ -f $1 -o -L $1 ] ; then
|
||||||
|
rm -f $1
|
||||||
|
echo "$1 Removed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#
|
|
||||||
# Parse the run line
|
|
||||||
#
|
|
||||||
finished=0
|
finished=0
|
||||||
configure=1
|
configure=1
|
||||||
|
|
||||||
@@ -90,17 +105,17 @@ while [ $finished -eq 0 ]; do
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
#
|
#
|
||||||
# Read the RC file
|
# Read the RC file
|
||||||
#
|
#
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
if [ -f ./shorewallrc ]; then
|
if [ -f ./shorewallrc ]; then
|
||||||
. ./shorewallrc || fatal_error "Can not load the RC file: ./shorewallrc"
|
. ./shorewallrc
|
||||||
elif [ -f ~/.shorewallrc ]; then
|
elif [ -f ~/.shorewallrc ]; then
|
||||||
. ~/.shorewallrc || fatal_error "Can not load the RC file: ~/.shorewallrc"
|
. ~/.shorewallrc || exit 1
|
||||||
|
file=./.shorewallrc
|
||||||
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
||||||
. /usr/share/shorewall/shorewallrc || fatal_error "Can not load the RC file: /usr/share/shorewall/shorewallrc"
|
. /usr/share/shorewall/shorewallrc
|
||||||
else
|
else
|
||||||
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
||||||
fi
|
fi
|
||||||
@@ -110,72 +125,59 @@ elif [ $# -eq 1 ]; then
|
|||||||
/*|.*)
|
/*|.*)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
file=./$file || exit 1
|
file=./$file
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
. $file || exit 1
|
||||||
else
|
else
|
||||||
usage 1
|
usage 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f ${SHAREDIR}/$PRODUCT/version ]; then
|
if [ -f ${SHAREDIR}/shorewall-init/version ]; then
|
||||||
INSTALLED_VERSION="$(cat ${SHAREDIR}/$PRODUCT/version)"
|
INSTALLED_VERSION="$(cat ${SHAREDIR}/shorewall-init/version)"
|
||||||
if [ "$INSTALLED_VERSION" != "$VERSION" ]; then
|
if [ "$INSTALLED_VERSION" != "$VERSION" ]; then
|
||||||
echo "WARNING: $Product Version $INSTALLED_VERSION is installed"
|
echo "WARNING: Shorewall Init Version $INSTALLED_VERSION is installed"
|
||||||
echo " and this is the $VERSION uninstaller."
|
echo " and this is the $VERSION uninstaller."
|
||||||
VERSION="$INSTALLED_VERSION"
|
VERSION="$INSTALLED_VERSION"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "WARNING: $Product Version $VERSION is not installed"
|
echo "WARNING: Shorewall Init Version $VERSION is not installed"
|
||||||
VERSION=""
|
VERSION=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Uninstalling $Product $VERSION"
|
[ -n "${LIBEXEC:=${SHAREDIR}}" ]
|
||||||
|
|
||||||
|
echo "Uninstalling Shorewall Init $VERSION"
|
||||||
|
|
||||||
[ -n "$SANDBOX" ] && configure=0
|
[ -n "$SANDBOX" ] && configure=0
|
||||||
|
|
||||||
[ -n "${LIBEXEC:=${SHAREDIR}}" ]
|
INITSCRIPT=${CONFDIR}/init.d/shorewall-init
|
||||||
|
|
||||||
remove_file ${SBINDIR}/$PRODUCT
|
if [ -f "$INITSCRIPT" ]; then
|
||||||
|
|
||||||
FIREWALL=${CONFDIR}/init.d/$PRODUCT
|
|
||||||
|
|
||||||
if [ -f "$FIREWALL" ]; then
|
|
||||||
if [ $configure -eq 1 ]; then
|
if [ $configure -eq 1 ]; then
|
||||||
if [ $HOST = openwrt ] ; then
|
if mywhich updaterc.d ; then
|
||||||
if /etc/init.d/$PRODUCT enabled; then
|
updaterc.d shorewall-init remove
|
||||||
/etc/init.d/$PRODUCT disable
|
|
||||||
fi
|
|
||||||
elif mywhich insserv ; then
|
elif mywhich insserv ; then
|
||||||
insserv -r $FIREWALL
|
insserv -r $INITSCRIPT
|
||||||
elif mywhich update-rc.d ; then
|
|
||||||
update-rc.d ${PRODUCT} remove
|
|
||||||
elif mywhich chkconfig ; then
|
elif mywhich chkconfig ; then
|
||||||
chkconfig --del $(basename $FIREWALL)
|
chkconfig --del $(basename $INITSCRIPT)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
remove_file $FIREWALL
|
remove_file $INITSCRIPT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -z "${SERVICEDIR}" ] && SERVICEDIR="$SYSTEMD"
|
if [ -n "$SYSTEMD" ]; then
|
||||||
|
[ $configure -eq 1 ] && systemctl disable shorewall-init.service
|
||||||
if [ -n "$SERVICEDIR" ]; then
|
rm -f $SYSTEMD/shorewall-init.service
|
||||||
[ $configure -eq 1 ] && systemctl disable ${PRODUCT}.service
|
|
||||||
remove_file $SERVICEDIR/${PRODUCT}.service
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $HOST = openwrt ]; then
|
[ "$(readlink -m -q ${SBINDIR}/ifup-local)" = ${SHAREDIR}/shorewall-init ] && remove_file ${SBINDIR}/ifup-local
|
||||||
[ "$(readlink -q ${SBINDIR}/ifup-local)" = ${SHAREDIR}/$PRODUCT ] && remove_file ${SBINDIR}/ifup-local
|
[ "$(readlink -m -q ${SBINDIR}/ifdown-local)" = ${SHAREDIR}/shorewall-init ] && remove_file ${SBINDIR}/ifdown-local
|
||||||
[ "$(readlink -q ${SBINDIR}/ifdown-local)" = ${SHAREDIR}/$PRODUCT ] && remove_file ${SBINDIR}/ifdown-local
|
|
||||||
else
|
|
||||||
[ "$(readlink -m -q ${SBINDIR}/ifup-local)" = ${SHAREDIR}/$PRODUCT ] && remove_file ${SBINDIR}/ifup-local
|
|
||||||
[ "$(readlink -m -q ${SBINDIR}/ifdown-local)" = ${SHAREDIR}/$PRODUCT ] && remove_file ${SBINDIR}/ifdown-local
|
|
||||||
fi
|
|
||||||
|
|
||||||
remove_file ${CONFDIR}/default/$PRODUCT
|
remove_file ${CONFDIR}/default/shorewall-init
|
||||||
remove_file ${CONFDIR}/sysconfig/$PRODUCT
|
remove_file ${CONFDIR}/sysconfig/shorewall-init
|
||||||
|
|
||||||
remove_file ${CONFDIR}/NetworkManager/dispatcher.d/01-shorewall
|
remove_file ${CONFDIR}/NetworkManager/dispatcher.d/01-shorewall
|
||||||
|
|
||||||
@@ -186,25 +188,24 @@ remove_file ${CONFDIR}/network/if-post-down.d/shorewall
|
|||||||
remove_file ${CONFDIR}/sysconfig/network/if-up.d/shorewall
|
remove_file ${CONFDIR}/sysconfig/network/if-up.d/shorewall
|
||||||
remove_file ${CONFDIR}/sysconfig/network/if-down.d/shorewall
|
remove_file ${CONFDIR}/sysconfig/network/if-down.d/shorewall
|
||||||
|
|
||||||
|
[ -n "$SYSTEMD" ] && remove_file ${SYSTEMD}/shorewall.service
|
||||||
|
|
||||||
if [ -d ${CONFDIR}/ppp ]; then
|
if [ -d ${CONFDIR}/ppp ]; then
|
||||||
for directory in ip-up.d ip-down.d ipv6-up.d ipv6-down.d; do
|
for directory in ip-up.d ip-down.d ipv6-up.d ipv6-down.d; do
|
||||||
remove_file ${CONFDIR}/ppp/$directory/shorewall
|
remove_file ${CONFDIR}/ppp/$directory/shorewall
|
||||||
done
|
done
|
||||||
|
|
||||||
for file in if-up.local if-down.local; do
|
for file in if-up.local if-down.local; do
|
||||||
if [ -f ${CONFDIR}/ppp/$file ]; then
|
if grep -qF Shorewall-based ${CONFDIR}/ppp/$FILE; then
|
||||||
if grep -qF Shorewall-based ${CONFDIR}/ppp/$FILE; then
|
remove_file ${CONFDIR}/ppp/$FILE
|
||||||
remove_file ${CONFDIR}/ppp/$FILE
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
remove_directory ${SHAREDIR}/$PRODUCT
|
rm -f ${SBINDIR}/shorewall-init
|
||||||
remove_directory ${LIBEXECDIR}/$PRODUCT
|
rm -rf ${SHAREDIR}/shorewall-init
|
||||||
remove_file ${CONFDIR}/logrotate.d/$PRODUCT
|
rm -rf ${LIBEXECDIR}/shorewall-init
|
||||||
|
|
||||||
|
echo "Shorewall Init Uninstalled"
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Report Success
|
|
||||||
#
|
|
||||||
echo "$Product $VERSION Uninstalled"
|
|
||||||
|
18
Shorewall-lite/Makefile
Normal file
18
Shorewall-lite/Makefile
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Shorewall Lite Makefile to restart if firewall script is newer than last restart
|
||||||
|
VARDIR=$(shell /sbin/shorewall-lite show vardir)
|
||||||
|
SHAREDIR=/usr/share/shorewall-lite
|
||||||
|
RESTOREFILE?=.restore
|
||||||
|
|
||||||
|
all: $(VARDIR)/$(RESTOREFILE)
|
||||||
|
|
||||||
|
$(VARDIR)/$(RESTOREFILE): $(VARDIR)/firewall
|
||||||
|
@/sbin/shorewall-lite -q save >/dev/null; \
|
||||||
|
if \
|
||||||
|
/sbin/shorewall-lite -q restart >/dev/null 2>&1; \
|
||||||
|
then \
|
||||||
|
/sbin/shorewall-lite -q save >/dev/null; \
|
||||||
|
else \
|
||||||
|
/sbin/shorewall-lite -q restart 2>&1 | tail >&2; exit 1; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# EOF
|
1
Shorewall-lite/README.txt
Normal file
1
Shorewall-lite/README.txt
Normal file
@@ -0,0 +1 @@
|
|||||||
|
This is the Shorewall-lite stable 4.4 branch of Git.
|
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# Shorewall Lite version 5 - Default Config Path
|
# Shorewall Lite version 4.1 - Default Config Path
|
||||||
#
|
#
|
||||||
# /usr/share/shorewall-lite/configpath
|
# /usr/share/shorewall-lite/configpath
|
||||||
#
|
#
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
# prevent startup with default configuration
|
# prevent startup with default configuration
|
||||||
# set the following variable to 1 in order to allow Shorewall-lite to start
|
# set the following varible to 1 in order to allow Shorewall-lite to start
|
||||||
|
|
||||||
startup=0
|
startup=0
|
||||||
|
|
||||||
@@ -16,7 +16,7 @@ startup=0
|
|||||||
# wait_interface=
|
# wait_interface=
|
||||||
|
|
||||||
#
|
#
|
||||||
# Global start/restart/reload/stop options
|
# Startup options
|
||||||
#
|
#
|
||||||
OPTIONS=""
|
OPTIONS=""
|
||||||
|
|
||||||
@@ -30,16 +30,6 @@ STARTOPTIONS=""
|
|||||||
#
|
#
|
||||||
RESTARTOPTIONS=""
|
RESTARTOPTIONS=""
|
||||||
|
|
||||||
#
|
|
||||||
# Reload options
|
|
||||||
#
|
|
||||||
RELOADOPTIONS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Stop options
|
|
||||||
#
|
|
||||||
STOPOPTIONS=""
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Init Log -- if /dev/null, use the STARTUP_LOG defined in shorewall.conf
|
# Init Log -- if /dev/null, use the STARTUP_LOG defined in shorewall.conf
|
||||||
#
|
#
|
@@ -1,26 +0,0 @@
|
|||||||
#
|
|
||||||
# Global start/restart/reload/stop options
|
|
||||||
#
|
|
||||||
OPTIONS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Start options
|
|
||||||
#
|
|
||||||
STARTOPTIONS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Restart options
|
|
||||||
#
|
|
||||||
RESTARTOPTIONS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Reload options
|
|
||||||
#
|
|
||||||
RELOADOPTIONS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Stop options
|
|
||||||
#
|
|
||||||
STOPOPTIONS=""
|
|
||||||
|
|
||||||
# EOF
|
|
@@ -5,7 +5,7 @@
|
|||||||
# Required-Start: $network $remote_fs
|
# Required-Start: $network $remote_fs
|
||||||
# Required-Stop: $network $remote_fs
|
# Required-Stop: $network $remote_fs
|
||||||
# Default-Start: S
|
# Default-Start: S
|
||||||
# Default-Stop: 0 1 6
|
# Default-Stop: 0 6
|
||||||
# Short-Description: Configure the firewall at boot time
|
# Short-Description: Configure the firewall at boot time
|
||||||
# Description: Configure the firewall according to the rules specified in
|
# Description: Configure the firewall according to the rules specified in
|
||||||
# /etc/shorewall-lite
|
# /etc/shorewall-lite
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
. /lib/lsb/init-functions
|
. /lib/lsb/init-functions
|
||||||
|
|
||||||
SRWL='/sbin/shorewall -l'
|
SRWL=/sbin/shorewall-lite
|
||||||
SRWL_OPTS="-tvv"
|
SRWL_OPTS="-tvv"
|
||||||
test -n ${INITLOG:=/var/log/shorewall-lite-init.log}
|
test -n ${INITLOG:=/var/log/shorewall-lite-init.log}
|
||||||
|
|
||||||
@@ -85,18 +85,17 @@ fi
|
|||||||
|
|
||||||
# start the firewall
|
# start the firewall
|
||||||
shorewall_start () {
|
shorewall_start () {
|
||||||
printf "Starting \"Shorewall firewall\": "
|
echo -n "Starting \"Shorewall firewall\": "
|
||||||
$SRWL $SRWL_OPTS start $STARTOPTIONS >> $INITLOG 2>&1 && echo "done." || echo_notdone
|
$SRWL $SRWL_OPTS start $STARTOPTIONS >> $INITLOG 2>&1 && echo "done." || echo_notdone
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# stop the firewall
|
# stop the firewall
|
||||||
shorewall_stop () {
|
shorewall_stop () {
|
||||||
|
echo -n "Stopping \"Shorewall firewall\": "
|
||||||
if [ "$SAFESTOP" = 1 ]; then
|
if [ "$SAFESTOP" = 1 ]; then
|
||||||
printf "Stopping \"Shorewall Lite firewall\": "
|
|
||||||
$SRWL $SRWL_OPTS stop >> $INITLOG 2>&1 && echo "done." || echo_notdone
|
$SRWL $SRWL_OPTS stop >> $INITLOG 2>&1 && echo "done." || echo_notdone
|
||||||
else
|
else
|
||||||
printf "Clearing all \"Shorewall Lite firewall\" rules: "
|
|
||||||
$SRWL $SRWL_OPTS clear >> $INITLOG 2>&1 && echo "done." || echo_notdone
|
$SRWL $SRWL_OPTS clear >> $INITLOG 2>&1 && echo "done." || echo_notdone
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
@@ -104,14 +103,14 @@ shorewall_stop () {
|
|||||||
|
|
||||||
# restart the firewall
|
# restart the firewall
|
||||||
shorewall_restart () {
|
shorewall_restart () {
|
||||||
printf "Restarting \"Shorewall firewall\": "
|
echo -n "Restarting \"Shorewall firewall\": "
|
||||||
$SRWL $SRWL_OPTS restart $RESTARTOPTIONS >> $INITLOG 2>&1 && echo "done." || echo_notdone
|
$SRWL $SRWL_OPTS restart $RESTARTOPTIONS >> $INITLOG 2>&1 && echo "done." || echo_notdone
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# refresh the firewall
|
# refresh the firewall
|
||||||
shorewall_refresh () {
|
shorewall_refresh () {
|
||||||
printf "Refreshing \"Shorewall firewall\": "
|
echo -n "Refreshing \"Shorewall firewall\": "
|
||||||
$SRWL $SRWL_OPTS refresh >> $INITLOG 2>&1 && echo "done." || echo_notdone
|
$SRWL $SRWL_OPTS refresh >> $INITLOG 2>&1 && echo "done." || echo_notdone
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
@@ -25,7 +25,7 @@
|
|||||||
#
|
#
|
||||||
. /usr/share/shorewall/shorewallrc
|
. /usr/share/shorewall/shorewallrc
|
||||||
|
|
||||||
prog="shorewall -l"
|
prog="shorewall-lite"
|
||||||
shorewall="${SBINDIR}/$prog"
|
shorewall="${SBINDIR}/$prog"
|
||||||
logger="logger -i -t $prog"
|
logger="logger -i -t $prog"
|
||||||
lockfile="/var/lock/subsys/$prog"
|
lockfile="/var/lock/subsys/$prog"
|
||||||
@@ -38,8 +38,8 @@ if [ -f ${SYSCONFDIR}/$prog ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
start() {
|
start() {
|
||||||
printf $"Starting Shorewall: "
|
echo -n $"Starting Shorewall: "
|
||||||
$shorewall $OPTIONS start $STARTOPTIONS 2>&1 | $logger
|
$shorewall $OPTIONS start 2>&1 | $logger
|
||||||
retval=${PIPESTATUS[0]}
|
retval=${PIPESTATUS[0]}
|
||||||
if [[ $retval == 0 ]]; then
|
if [[ $retval == 0 ]]; then
|
||||||
touch $lockfile
|
touch $lockfile
|
||||||
@@ -52,7 +52,7 @@ start() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
stop() {
|
stop() {
|
||||||
printf $"Stopping Shorewall: "
|
echo -n $"Stopping Shorewall: "
|
||||||
$shorewall $OPTIONS stop 2>&1 | $logger
|
$shorewall $OPTIONS stop 2>&1 | $logger
|
||||||
retval=${PIPESTATUS[0]}
|
retval=${PIPESTATUS[0]}
|
||||||
if [[ $retval == 0 ]]; then
|
if [[ $retval == 0 ]]; then
|
||||||
@@ -68,8 +68,8 @@ stop() {
|
|||||||
restart() {
|
restart() {
|
||||||
# Note that we don't simply stop and start since shorewall has a built in
|
# Note that we don't simply stop and start since shorewall has a built in
|
||||||
# restart which stops the firewall if running and then starts it.
|
# restart which stops the firewall if running and then starts it.
|
||||||
printf $"Restarting Shorewall: "
|
echo -n $"Restarting Shorewall: "
|
||||||
$shorewall $OPTIONS restart $RESTARTOPTIONS 2>&1 | $logger
|
$shorewall $OPTIONS restart 2>&1 | $logger
|
||||||
retval=${PIPESTATUS[0]}
|
retval=${PIPESTATUS[0]}
|
||||||
if [[ $retval == 0 ]]; then
|
if [[ $retval == 0 ]]; then
|
||||||
touch $lockfile
|
touch $lockfile
|
||||||
|
@@ -1,94 +0,0 @@
|
|||||||
#!/bin/sh /etc/rc.common
|
|
||||||
#
|
|
||||||
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall - V4.5
|
|
||||||
#
|
|
||||||
# (c) 1999,2000,2001,2002,2003,2004,2005,2006,2007,2012,2014 - Tom Eastep (teastep@shorewall.net)
|
|
||||||
# (c) 2015 - Matt Darfeuille - (matdarf@gmail.com)
|
|
||||||
#
|
|
||||||
# On most distributions, this file should be called /etc/init.d/shorewall.
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is part of Shorewall.
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by the
|
|
||||||
# Free Software Foundation, either version 2 of the license or, at your
|
|
||||||
# option, any later version.
|
|
||||||
#
|
|
||||||
# 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/>.
|
|
||||||
#
|
|
||||||
# If an error occurs while starting or restarting the firewall, the
|
|
||||||
# firewall is automatically stopped.
|
|
||||||
#
|
|
||||||
# Commands are:
|
|
||||||
#
|
|
||||||
# shorewall-lite start Starts the firewall
|
|
||||||
# shorewall-lite restart Restarts the firewall
|
|
||||||
# shorewall-lite reload Reload the firewall
|
|
||||||
# shorewall-lite stop Stops the firewall
|
|
||||||
# shorewall-lite status Displays firewall status
|
|
||||||
#
|
|
||||||
|
|
||||||
# description: Packet filtering firewall
|
|
||||||
|
|
||||||
# Openwrt related
|
|
||||||
# Start and stop runlevel variable
|
|
||||||
START=50
|
|
||||||
STOP=89
|
|
||||||
# Displays the status command
|
|
||||||
EXTRA_COMMANDS="status"
|
|
||||||
EXTRA_HELP=" status Displays firewall status"
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Get startup options (override default)
|
|
||||||
################################################################################
|
|
||||||
OPTIONS=
|
|
||||||
|
|
||||||
#
|
|
||||||
# The installer may alter this
|
|
||||||
#
|
|
||||||
. /usr/share/shorewall/shorewallrc
|
|
||||||
|
|
||||||
if [ -f ${SYSCONFDIR}/shorewall-lite ]; then
|
|
||||||
. ${SYSCONFDIR}/shorewall-lite
|
|
||||||
fi
|
|
||||||
|
|
||||||
SHOREWALL_INIT_SCRIPT=1
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# E X E C U T I O N B E G I N S H E R E #
|
|
||||||
################################################################################
|
|
||||||
# Arg1 of init script is arg2 when rc.common is sourced; set to action variable
|
|
||||||
command="$action"
|
|
||||||
|
|
||||||
start() {
|
|
||||||
exec ${SBINDIR}/shorewall -l $OPTIONS $command $STARTOPTIONS
|
|
||||||
}
|
|
||||||
|
|
||||||
boot() {
|
|
||||||
local command="start"
|
|
||||||
start
|
|
||||||
}
|
|
||||||
|
|
||||||
restart() {
|
|
||||||
exec ${SBINDIR}/shorewall -l $OPTIONS $command $RESTARTOPTIONS
|
|
||||||
}
|
|
||||||
|
|
||||||
reload() {
|
|
||||||
exec ${SBINDIR}/shorewall -l $OPTIONS $command $RELOADOPTION
|
|
||||||
}
|
|
||||||
|
|
||||||
stop() {
|
|
||||||
exec ${SBINDIR}/shorewall -l $OPTIONS $command $STOPOPTIONS
|
|
||||||
}
|
|
||||||
|
|
||||||
status() {
|
|
||||||
exec ${SBINDIR}/shorewall -l $OPTIONS $command $@
|
|
||||||
}
|
|
@@ -2,7 +2,7 @@
|
|||||||
#
|
#
|
||||||
# Script to install Shoreline Firewall Lite
|
# Script to install Shoreline Firewall Lite
|
||||||
#
|
#
|
||||||
# (c) 2000-2016 - Tom Eastep (teastep@shorewall.net)
|
# (c) 2000-2011,2014 - Tom Eastep (teastep@shorewall.net)
|
||||||
#
|
#
|
||||||
# Shorewall documentation is available at http://shorewall.net
|
# Shorewall documentation is available at http://shorewall.net
|
||||||
#
|
#
|
||||||
@@ -22,35 +22,79 @@
|
|||||||
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
# along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
|
|
||||||
VERSION=xxx # The Build script inserts the actual version
|
VERSION=xxx #The Build script inserts the actual version
|
||||||
|
|
||||||
usage() # $1 = exit status
|
usage() # $1 = exit status
|
||||||
{
|
{
|
||||||
ME=$(basename $0)
|
ME=$(basename $0)
|
||||||
echo "usage: $ME [ <option> ] [ <shorewallrc file> ]"
|
echo "usage: $ME [ <configuration-file> ]"
|
||||||
echo "where <option> is one of"
|
echo " $ME -v"
|
||||||
echo " -h"
|
echo " $ME -h"
|
||||||
echo " -v"
|
echo " $ME -n"
|
||||||
echo " -n"
|
|
||||||
exit $1
|
exit $1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fatal_error()
|
||||||
|
{
|
||||||
|
echo " ERROR: $@" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
split() {
|
||||||
|
local ifs
|
||||||
|
ifs=$IFS
|
||||||
|
IFS=:
|
||||||
|
set -- $1
|
||||||
|
echo $*
|
||||||
|
IFS=$ifs
|
||||||
|
}
|
||||||
|
|
||||||
|
qt()
|
||||||
|
{
|
||||||
|
"$@" >/dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
mywhich() {
|
||||||
|
local dir
|
||||||
|
|
||||||
|
for dir in $(split $PATH); do
|
||||||
|
if [ -x $dir/$1 ]; then
|
||||||
|
echo $dir/$1
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
run_install()
|
||||||
|
{
|
||||||
|
if ! install $*; then
|
||||||
|
echo
|
||||||
|
echo "ERROR: Failed to install $*" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
cant_autostart()
|
||||||
|
{
|
||||||
|
echo
|
||||||
|
echo "WARNING: Unable to configure $Product to start automatically at boot" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
delete_file() # $1 = file to delete
|
||||||
|
{
|
||||||
|
rm -f $1
|
||||||
|
}
|
||||||
|
|
||||||
install_file() # $1 = source $2 = target $3 = mode
|
install_file() # $1 = source $2 = target $3 = mode
|
||||||
{
|
{
|
||||||
if cp -f $1 $2; then
|
run_install $T $OWNERSHIP -m $3 $1 ${2}
|
||||||
if chmod $3 $2; then
|
}
|
||||||
if [ -n "$OWNER" ]; then
|
|
||||||
if chown $OWNER:$GROUP $2; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "ERROR: Failed to install $2" >&2
|
require()
|
||||||
exit 1
|
{
|
||||||
|
eval [ -n "\$$1" ] || fatal_error "Required option $1 not set"
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -58,7 +102,7 @@ install_file() # $1 = source $2 = target $3 = mode
|
|||||||
#
|
#
|
||||||
cd "$(dirname $0)"
|
cd "$(dirname $0)"
|
||||||
|
|
||||||
if [ -f shorewall-lite.service ]; then
|
if [ -f shorewall-lite ]; then
|
||||||
PRODUCT=shorewall-lite
|
PRODUCT=shorewall-lite
|
||||||
Product="Shorewall Lite"
|
Product="Shorewall Lite"
|
||||||
else
|
else
|
||||||
@@ -66,11 +110,6 @@ else
|
|||||||
Product="Shorewall6 Lite"
|
Product="Shorewall6 Lite"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
|
||||||
# Source common functions
|
|
||||||
#
|
|
||||||
. ./lib.installer || { echo "ERROR: Can not load common functions." >&2; exit 1; }
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Parse the run line
|
# Parse the run line
|
||||||
#
|
#
|
||||||
@@ -117,14 +156,12 @@ done
|
|||||||
#
|
#
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
if [ -f ./shorewallrc ]; then
|
if [ -f ./shorewallrc ]; then
|
||||||
|
. ./shorewallrc || exit 1
|
||||||
file=./shorewallrc
|
file=./shorewallrc
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
|
||||||
elif [ -f ~/.shorewallrc ]; then
|
elif [ -f ~/.shorewallrc ]; then
|
||||||
file=~/.shorewallrc
|
. ~/.shorewallrc
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
|
||||||
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
||||||
file=/usr/share/shorewall/shorewallrc
|
. /usr/share/shorewall/shorewallrc
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
|
||||||
else
|
else
|
||||||
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
||||||
fi
|
fi
|
||||||
@@ -134,11 +171,11 @@ elif [ $# -eq 1 ]; then
|
|||||||
/*|.*)
|
/*|.*)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
file=./$file || exit 1
|
file=./$file
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
. $file
|
||||||
else
|
else
|
||||||
usage 1
|
usage 1
|
||||||
fi
|
fi
|
||||||
@@ -150,7 +187,7 @@ elif [ -z "${VARDIR}" ]; then
|
|||||||
VARDIR=${VARLIB}/${PRODUCT}
|
VARDIR=${VARLIB}/${PRODUCT}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for var in SHAREDIR LIBEXECDIR CONFDIR SBINDIR VARLIB VARDIR; do
|
for var in SHAREDIR LIBEXECDIRDIRDIR CONFDIR SBINDIR VARLIB VARDIR; do
|
||||||
require $var
|
require $var
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -164,6 +201,8 @@ PATH=${SBINDIR}:/bin:/usr${SBINDIR}:/usr/bin:/usr/local/bin:/usr/local${SBINDIR}
|
|||||||
# Determine where to install the firewall script
|
# Determine where to install the firewall script
|
||||||
#
|
#
|
||||||
cygwin=
|
cygwin=
|
||||||
|
INSTALLD='-D'
|
||||||
|
T='-T'
|
||||||
|
|
||||||
if [ -z "$BUILD" ]; then
|
if [ -z "$BUILD" ]; then
|
||||||
case $(uname) in
|
case $(uname) in
|
||||||
@@ -206,8 +245,6 @@ if [ -z "$BUILD" ]; then
|
|||||||
BUILD=slackware
|
BUILD=slackware
|
||||||
elif [ -f ${CONFDIR}/arch-release ] ; then
|
elif [ -f ${CONFDIR}/arch-release ] ; then
|
||||||
BUILD=archlinux
|
BUILD=archlinux
|
||||||
elif [ -f ${CONFDIR}/openwrt_release ]; then
|
|
||||||
BUILD=openwrt
|
|
||||||
else
|
else
|
||||||
BUILD=linux
|
BUILD=linux
|
||||||
fi
|
fi
|
||||||
@@ -223,16 +260,16 @@ case $BUILD in
|
|||||||
apple)
|
apple)
|
||||||
[ -z "$OWNER" ] && OWNER=root
|
[ -z "$OWNER" ] && OWNER=root
|
||||||
[ -z "$GROUP" ] && GROUP=wheel
|
[ -z "$GROUP" ] && GROUP=wheel
|
||||||
|
INSTALLD=
|
||||||
|
T=
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if [ $(id -u) -eq 0 ]; then
|
[ -z "$OWNER" ] && OWNER=root
|
||||||
[ -z "$OWNER" ] && OWNER=root
|
[ -z "$GROUP" ] && GROUP=root
|
||||||
[ -z "$GROUP" ] && GROUP=root
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
[ -n "$OWNER" ] && OWNERSHIP="$OWNER:$GROUP"
|
OWNERSHIP="-o $OWNER -g $GROUP"
|
||||||
|
|
||||||
[ -n "$HOST" ] || HOST=$BUILD
|
[ -n "$HOST" ] || HOST=$BUILD
|
||||||
|
|
||||||
@@ -263,13 +300,11 @@ case "$HOST" in
|
|||||||
suse)
|
suse)
|
||||||
echo "Installing Suse-specific configuration..."
|
echo "Installing Suse-specific configuration..."
|
||||||
;;
|
;;
|
||||||
openwrt)
|
|
||||||
echo "Installing OpenWRT-specific configuration..."
|
|
||||||
;;
|
|
||||||
linux)
|
linux)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
fatal_error "ERROR: Unknown HOST \"$HOST\""
|
echo "ERROR: Unknown HOST \"$HOST\"" >&2
|
||||||
|
exit 1;
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -281,8 +316,8 @@ if [ -n "$DESTDIR" ]; then
|
|||||||
OWNERSHIP=""
|
OWNERSHIP=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
make_parent_directory ${DESTDIR}${INITDIR} 0755
|
install -d $OWNERSHIP -m 755 ${DESTDIR}/${SBINDIR}
|
||||||
|
install -d $OWNERSHIP -m 755 ${DESTDIR}${INITDIR}
|
||||||
else
|
else
|
||||||
if [ ! -f ${SHAREDIR}/shorewall/coreversion ]; then
|
if [ ! -f ${SHAREDIR}/shorewall/coreversion ]; then
|
||||||
echo "$PRODUCT $VERSION requires Shorewall Core which does not appear to be installed" >&2
|
echo "$PRODUCT $VERSION requires Shorewall Core which does not appear to be installed" >&2
|
||||||
@@ -311,9 +346,9 @@ else
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check for ${SHAREDIR}/$PRODUCT/version
|
# Check for ${SBINDIR}/$PRODUCT
|
||||||
#
|
#
|
||||||
if [ -f ${DESTDIR}${SHAREDIR}/$PRODUCT/version ]; then
|
if [ -f ${DESTDIR}${SBINDIR}/$PRODUCT ]; then
|
||||||
first_install=""
|
first_install=""
|
||||||
else
|
else
|
||||||
first_install="Yes"
|
first_install="Yes"
|
||||||
@@ -321,25 +356,32 @@ fi
|
|||||||
|
|
||||||
delete_file ${DESTDIR}/usr/share/$PRODUCT/xmodules
|
delete_file ${DESTDIR}/usr/share/$PRODUCT/xmodules
|
||||||
|
|
||||||
[ -n "${INITFILE}" ] && make_parent_directory ${DESTDIR}${INITDIR} 0755
|
install_file $PRODUCT ${DESTDIR}${SBINDIR}/$PRODUCT 0544
|
||||||
|
[ -n "${INITFILE}" ] && install -d $OWNERSHIP -m 755 ${DESTDIR}${INITDIR}
|
||||||
|
|
||||||
|
echo "$Product control program installed in ${DESTDIR}${SBINDIR}/$PRODUCT"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Create ${CONFDIR}/$PRODUCT, /usr/share/$PRODUCT and /var/lib/$PRODUCT if needed
|
# Create ${CONFDIR}/$PRODUCT, /usr/share/$PRODUCT and /var/lib/$PRODUCT if needed
|
||||||
#
|
#
|
||||||
make_parent_directory ${DESTDIR}${CONFDIR}/$PRODUCT 0755
|
mkdir -p ${DESTDIR}${CONFDIR}/$PRODUCT
|
||||||
make_parent_directory ${DESTDIR}${SHAREDIR}/$PRODUCT 0755
|
mkdir -p ${DESTDIR}${SHAREDIR}/$PRODUCT
|
||||||
make_parent_directory ${DESTDIR}${LIBEXECDIR}/$PRODUCT 0755
|
mkdir -p ${DESTDIR}${LIBEXECDIR}/$PRODUCT
|
||||||
make_parent_directory ${DESTDIR}${SBINDIR} 0755
|
mkdir -p ${DESTDIR}${VARDIR}
|
||||||
make_parent_directory ${DESTDIR}${VARDIR} 0755
|
|
||||||
|
chmod 755 ${DESTDIR}${CONFDIR}/$PRODUCT
|
||||||
|
chmod 755 ${DESTDIR}${SHAREDIR}/$PRODUCT
|
||||||
|
|
||||||
if [ -n "$DESTDIR" ]; then
|
if [ -n "$DESTDIR" ]; then
|
||||||
make_parent_directory ${DESTDIR}${CONFDIR}/logrotate.d 0755
|
mkdir -p ${DESTDIR}${CONFDIR}/logrotate.d
|
||||||
make_parent_directory ${DESTDIR}${INITDIR} 0755
|
chmod 755 ${DESTDIR}${CONFDIR}/logrotate.d
|
||||||
|
mkdir -p ${DESTDIR}${INITDIR}
|
||||||
|
chmod 755 ${DESTDIR}${INITDIR}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$INITFILE" ]; then
|
if [ -n "$INITFILE" ]; then
|
||||||
if [ -f "${INITSOURCE}" ]; then
|
if [ -f "${INITSOURCE}" ]; then
|
||||||
initfile="${DESTDIR}${INITDIR}/${INITFILE}"
|
initfile="${DESTDIR}/${INITDIR}/${INITFILE}"
|
||||||
install_file ${INITSOURCE} "$initfile" 0544
|
install_file ${INITSOURCE} "$initfile" 0544
|
||||||
|
|
||||||
[ "${SHAREDIR}" = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' "$initfile"
|
[ "${SHAREDIR}" = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' "$initfile"
|
||||||
@@ -350,16 +392,12 @@ fi
|
|||||||
#
|
#
|
||||||
# Install the .service file
|
# Install the .service file
|
||||||
#
|
#
|
||||||
if [ -z "${SERVICEDIR}" ]; then
|
if [ -n "$SYSTEMD" ]; then
|
||||||
SERVICEDIR="$SYSTEMD"
|
mkdir -p ${DESTDIR}${SYSTEMD}
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$SERVICEDIR" ]; then
|
|
||||||
make_parent_directory ${DESTDIR}${SERVICEDIR} 0755
|
|
||||||
[ -z "$SERVICEFILE" ] && SERVICEFILE=$PRODUCT.service
|
[ -z "$SERVICEFILE" ] && SERVICEFILE=$PRODUCT.service
|
||||||
install_file $SERVICEFILE ${DESTDIR}${SERVICEDIR}/$PRODUCT.service 0644
|
run_install $OWNERSHIP -m 644 $SERVICEFILE ${DESTDIR}${SYSTEMD}/$PRODUCT.service
|
||||||
[ ${SBINDIR} != /sbin ] && eval sed -i \'s\|/sbin/\|${SBINDIR}/\|\' ${DESTDIR}${SERVICEDIR}/$PRODUCT.service
|
[ ${SBINDIR} != /sbin ] && eval sed -i \'s\|/sbin/\|${SBINDIR}/\|\' ${DESTDIR}${SYSTEMD}/$PRODUCT.service
|
||||||
echo "Service file $SERVICEFILE installed as ${DESTDIR}${SERVICEDIR}/$PRODUCT.service"
|
echo "Service file $SERVICEFILE installed as ${DESTDIR}${SYSTEMD}/$PRODUCT.service"
|
||||||
fi
|
fi
|
||||||
#
|
#
|
||||||
# Install the config file
|
# Install the config file
|
||||||
@@ -375,6 +413,15 @@ elif [ $HOST = gentoo ]; then
|
|||||||
# Adjust SUBSYSLOCK path (see https://bugs.gentoo.org/show_bug.cgi?id=459316)
|
# Adjust SUBSYSLOCK path (see https://bugs.gentoo.org/show_bug.cgi?id=459316)
|
||||||
perl -p -w -i -e "s|^SUBSYSLOCK=.*|SUBSYSLOCK=/run/lock/$PRODUCT|;" ${DESTDIR}${CONFDIR}/$PRODUCT/$PRODUCT.conf
|
perl -p -w -i -e "s|^SUBSYSLOCK=.*|SUBSYSLOCK=/run/lock/$PRODUCT|;" ${DESTDIR}${CONFDIR}/$PRODUCT/$PRODUCT.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# Install the Makefile
|
||||||
|
#
|
||||||
|
run_install $OWNERSHIP -m 0600 Makefile ${DESTDIR}${CONFDIR}/$PRODUCT
|
||||||
|
[ $SHAREDIR = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}/${CONFDIR}/$PRODUCT/Makefile
|
||||||
|
[ $SBINDIR = /sbin ] || eval sed -i \'s\|/sbin/\|${SBINDIR}/\|\' ${DESTDIR}/${CONFDIR}/$PRODUCT/Makefile
|
||||||
|
echo "Makefile installed as ${DESTDIR}${CONFDIR}/$PRODUCT/Makefile"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Install the default config path file
|
# Install the default config path file
|
||||||
#
|
#
|
||||||
@@ -386,14 +433,8 @@ echo "Default config path file installed as ${DESTDIR}${SHAREDIR}/$PRODUCT/confi
|
|||||||
#
|
#
|
||||||
for f in lib.* ; do
|
for f in lib.* ; do
|
||||||
if [ -f $f ]; then
|
if [ -f $f ]; then
|
||||||
case $f in
|
install_file $f ${DESTDIR}${SHAREDIR}/$PRODUCT/$f 0644
|
||||||
*installer)
|
echo "Library ${f#*.} file installed as ${DESTDIR}/${SHAREDIR}/$PRODUCT/$f"
|
||||||
;;
|
|
||||||
*)
|
|
||||||
install_file $f ${DESTDIR}${SHAREDIR}/$PRODUCT/$f 0644
|
|
||||||
echo "Library ${f#*.} file installed as ${DESTDIR}${SHAREDIR}/$PRODUCT/$f"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -406,7 +447,7 @@ echo "Common functions linked through ${DESTDIR}${SHAREDIR}/$PRODUCT/functions"
|
|||||||
#
|
#
|
||||||
|
|
||||||
install_file shorecap ${DESTDIR}${LIBEXECDIR}/$PRODUCT/shorecap 0755
|
install_file shorecap ${DESTDIR}${LIBEXECDIR}/$PRODUCT/shorecap 0755
|
||||||
[ $SHAREDIR = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${LIBEXECDIR}/$PRODUCT/shorecap
|
[ $SHAREDIR = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}/${LIBEXECDIR}/$PRODUCT/shorecap
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "Capability file builder installed in ${DESTDIR}${LIBEXECDIR}/$PRODUCT/shorecap"
|
echo "Capability file builder installed in ${DESTDIR}${LIBEXECDIR}/$PRODUCT/shorecap"
|
||||||
@@ -416,17 +457,17 @@ echo "Capability file builder installed in ${DESTDIR}${LIBEXECDIR}/$PRODUCT/shor
|
|||||||
#
|
#
|
||||||
|
|
||||||
if [ -f modules ]; then
|
if [ -f modules ]; then
|
||||||
install_file modules ${DESTDIR}${SHAREDIR}/$PRODUCT/modules 0600
|
run_install $OWNERSHIP -m 0600 modules ${DESTDIR}${SHAREDIR}/$PRODUCT
|
||||||
echo "Modules file installed as ${DESTDIR}${SHAREDIR}/$PRODUCT/modules"
|
echo "Modules file installed as ${DESTDIR}${SHAREDIR}/$PRODUCT/modules"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f helpers ]; then
|
if [ -f helpers ]; then
|
||||||
install_file helpers ${DESTDIR}${SHAREDIR}/$PRODUCT/helpers 0600
|
run_install $OWNERSHIP -m 0600 helpers ${DESTDIR}${SHAREDIR}/$PRODUCT
|
||||||
echo "Helper modules file installed as ${DESTDIR}${SHAREDIR}/$PRODUCT/helpers"
|
echo "Helper modules file installed as ${DESTDIR}${SHAREDIR}/$PRODUCT/helpers"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for f in modules.*; do
|
for f in modules.*; do
|
||||||
install_file $f ${DESTDIR}${SHAREDIR}/$PRODUCT/$f 0644
|
run_install $OWNERSHIP -m 0644 $f ${DESTDIR}${SHAREDIR}/$PRODUCT/$f
|
||||||
echo "Module file $f installed as ${DESTDIR}${SHAREDIR}/$PRODUCT/$f"
|
echo "Module file $f installed as ${DESTDIR}${SHAREDIR}/$PRODUCT/$f"
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -434,22 +475,20 @@ done
|
|||||||
# Install the Man Pages
|
# Install the Man Pages
|
||||||
#
|
#
|
||||||
|
|
||||||
if [ -d manpages -a -n "$MANDIR" ]; then
|
if [ -d manpages ]; then
|
||||||
cd manpages
|
cd manpages
|
||||||
|
|
||||||
make_parent_directory ${DESTDIR}${MANDIR}/man5 0755
|
[ -n "$INSTALLD" ] || mkdir -p ${DESTDIR}${MANDIR}/man5/ ${DESTDIR}${MANDIR}/man8/
|
||||||
|
|
||||||
for f in *.5; do
|
for f in *.5; do
|
||||||
gzip -c $f > $f.gz
|
gzip -c $f > $f.gz
|
||||||
install_file $f.gz ${DESTDIR}${MANDIR}/man5/$f.gz 0644
|
run_install $T $INSTALLD $OWNERSHIP -m 0644 $f.gz ${DESTDIR}${MANDIR}/man5/$f.gz
|
||||||
echo "Man page $f.gz installed to ${DESTDIR}${MANDIR}/man5/$f.gz"
|
echo "Man page $f.gz installed to ${DESTDIR}${MANDIR}/man5/$f.gz"
|
||||||
done
|
done
|
||||||
|
|
||||||
make_parent_directory ${DESTDIR}${MANDIR}/man8 0755
|
|
||||||
|
|
||||||
for f in *.8; do
|
for f in *.8; do
|
||||||
gzip -c $f > $f.gz
|
gzip -c $f > $f.gz
|
||||||
install_file $f.gz ${DESTDIR}${MANDIR}/man8/$f.gz 0644
|
run_install $T $INSTALLD $OWNERSHIP -m 0644 $f.gz ${DESTDIR}${MANDIR}/man8/$f.gz
|
||||||
echo "Man page $f.gz installed to ${DESTDIR}${MANDIR}/man8/$f.gz"
|
echo "Man page $f.gz installed to ${DESTDIR}${MANDIR}/man8/$f.gz"
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -459,7 +498,7 @@ if [ -d manpages -a -n "$MANDIR" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d ${DESTDIR}${CONFDIR}/logrotate.d ]; then
|
if [ -d ${DESTDIR}${CONFDIR}/logrotate.d ]; then
|
||||||
install_file logrotate ${DESTDIR}${CONFDIR}/logrotate.d/$PRODUCT 0644
|
run_install $OWNERSHIP -m 0644 logrotate ${DESTDIR}${CONFDIR}/logrotate.d/$PRODUCT
|
||||||
echo "Logrotate file installed as ${DESTDIR}${CONFDIR}/logrotate.d/$PRODUCT"
|
echo "Logrotate file installed as ${DESTDIR}${CONFDIR}/logrotate.d/$PRODUCT"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -467,7 +506,7 @@ fi
|
|||||||
# Create the version file
|
# Create the version file
|
||||||
#
|
#
|
||||||
echo "$VERSION" > ${DESTDIR}${SHAREDIR}/$PRODUCT/version
|
echo "$VERSION" > ${DESTDIR}${SHAREDIR}/$PRODUCT/version
|
||||||
chmod 0644 ${DESTDIR}${SHAREDIR}/$PRODUCT/version
|
chmod 644 ${DESTDIR}${SHAREDIR}/$PRODUCT/version
|
||||||
#
|
#
|
||||||
# Remove and create the symbolic link to the init script
|
# Remove and create the symbolic link to the init script
|
||||||
#
|
#
|
||||||
@@ -481,27 +520,26 @@ delete_file ${DESTDIR}${SHAREDIR}/$PRODUCT/lib.common
|
|||||||
delete_file ${DESTDIR}${SHAREDIR}/$PRODUCT/lib.cli
|
delete_file ${DESTDIR}${SHAREDIR}/$PRODUCT/lib.cli
|
||||||
delete_file ${DESTDIR}${SHAREDIR}/$PRODUCT/wait4ifup
|
delete_file ${DESTDIR}${SHAREDIR}/$PRODUCT/wait4ifup
|
||||||
|
|
||||||
#
|
|
||||||
# Creatae the symbolic link for the CLI
|
|
||||||
#
|
|
||||||
ln -sf shorewall ${DESTDIR}${SBINDIR}/${PRODUCT}
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Note -- not all packages will have the SYSCONFFILE so we need to check for its existance here
|
# Note -- not all packages will have the SYSCONFFILE so we need to check for its existance here
|
||||||
#
|
#
|
||||||
if [ -n "$SYSCONFFILE" -a -f "$SYSCONFFILE" -a ! -f ${DESTDIR}${SYSCONFDIR}/${PRODUCT} ]; then
|
if [ -n "$SYSCONFFILE" -a -f "$SYSCONFFILE" -a ! -f ${DESTDIR}${SYSCONFDIR}/${PRODUCT} ]; then
|
||||||
[ ${DESTDIR} ] && make_parent_directory ${DESTDIR}${SYSCONFDIR} 0755
|
if [ ${DESTDIR} ]; then
|
||||||
|
mkdir -p ${DESTDIR}${SYSCONFDIR}
|
||||||
|
chmod 755 ${DESTDIR}${SYSCONFDIR}
|
||||||
|
fi
|
||||||
|
|
||||||
install_file ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/${PRODUCT} 0640
|
run_install $OWNERSHIP -m 0644 ${SYSCONFFILE} ${DESTDIR}${SYSCONFDIR}/${PRODUCT}
|
||||||
echo "$SYSCONFFILE file installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
|
echo "$SYSCONFFILE installed in ${DESTDIR}${SYSCONFDIR}/${PRODUCT}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ${SHAREDIR} != /usr/share ]; then
|
if [ ${SHAREDIR} != /usr/share ]; then
|
||||||
eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}${SHAREDIR}/${PRODUCT}/lib.base
|
eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}/${SHAREDIR}/${PRODUCT}/lib.base
|
||||||
|
eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ${DESTDIR}/${SBINDIR}/$PRODUCT
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $configure -eq 1 -a -z "$DESTDIR" -a -n "$first_install" -a -z "${cygwin}${mac}" ]; then
|
if [ $configure -eq 1 -a -z "$DESTDIR" -a -n "$first_install" -a -z "${cygwin}${mac}" ]; then
|
||||||
if [ -n "$SERVICEDIR" ]; then
|
if [ -n "$SYSTEMD" ]; then
|
||||||
if systemctl enable ${PRODUCT}.service; then
|
if systemctl enable ${PRODUCT}.service; then
|
||||||
echo "$Product will start automatically at boot"
|
echo "$Product will start automatically at boot"
|
||||||
fi
|
fi
|
||||||
@@ -545,19 +583,12 @@ if [ $configure -eq 1 -a -z "$DESTDIR" -a -n "$first_install" -a -z "${cygwin}${
|
|||||||
else
|
else
|
||||||
cant_autostart
|
cant_autostart
|
||||||
fi
|
fi
|
||||||
elif [ $HOST = openwrt -a -f ${CONFDIR}/rc.common ]; then
|
|
||||||
/etc/init.d/$PRODUCT enable
|
|
||||||
if /etc/init.d/$PRODUCT enabled; then
|
|
||||||
echo "$PRODUCT will start automatically at boot"
|
|
||||||
else
|
|
||||||
cant_autostart
|
|
||||||
fi
|
|
||||||
elif [ "$INITFILE" != rc.${PRODUCT} ]; then #Slackware starts this automatically
|
elif [ "$INITFILE" != rc.${PRODUCT} ]; then #Slackware starts this automatically
|
||||||
cant_autostart
|
cant_autostart
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Report Success
|
# Report Success
|
||||||
#
|
#
|
||||||
echo "$Product Version $VERSION Installed"
|
echo "$Product Version $VERSION Installed"
|
||||||
|
File diff suppressed because it is too large
Load Diff
@@ -28,7 +28,7 @@
|
|||||||
#
|
#
|
||||||
# On the target system (the system where the firewall program is to run):
|
# On the target system (the system where the firewall program is to run):
|
||||||
#
|
#
|
||||||
# [ IPTABLES=<iptables binary> ] [ MODULESDIR=<kernel modules directory> ] shorecap > capabilities
|
# [ IPTABLES=<iptables binary> ] [ MODULESDIR=<kernel modules directory> ] [ MODULE_SUFFIX="<module suffix list>" ] shorecap > capabilities
|
||||||
#
|
#
|
||||||
# Now move the capabilities file to the compilation system. The file must
|
# Now move the capabilities file to the compilation system. The file must
|
||||||
# be placed in a directory on the CONFIG_PATH to be used when compiling firewalls
|
# be placed in a directory on the CONFIG_PATH to be used when compiling firewalls
|
||||||
@@ -38,26 +38,26 @@
|
|||||||
#
|
#
|
||||||
# IPTABLES - iptables
|
# IPTABLES - iptables
|
||||||
# MODULESDIR - /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter
|
# MODULESDIR - /lib/modules/$(uname -r)/kernel/net/ipv4/netfilter
|
||||||
|
# MODULE_SUFFIX - "o gz ko o.gz ko.gz"
|
||||||
#
|
#
|
||||||
# Shorewall need not be installed on the target system to run shorecap. If the '-e' flag is
|
# Shorewall need not be installed on the target system to run shorecap. If the '-e' flag is
|
||||||
# used during firewall compilation, then the generated firewall program will likewise not
|
# used during firewall compilation, then the generated firewall program will likewise not
|
||||||
# require Shorewall to be installed.
|
# require Shorewall to be installed.
|
||||||
|
|
||||||
|
|
||||||
PRODUCT=shorewall-lite
|
g_program=shorewall-lite
|
||||||
|
|
||||||
#
|
#
|
||||||
# This is modified by the installer when ${SHAREDIR} != /usr/share
|
# This is modified by the installer when ${SHAREDIR} != /usr/share
|
||||||
#
|
#
|
||||||
. /usr/share/shorewall/shorewallrc
|
. /usr/share/shorewall/shorewallrc
|
||||||
|
|
||||||
g_basedir=${SHAREDIR}/shorewall
|
g_sharedir="$SHAREDIR"/shorewall-lite
|
||||||
|
g_confdir="$CONFDIR"/shorewall-lite
|
||||||
|
g_readrc=1
|
||||||
|
|
||||||
. ${SHAREDIR}/shorewall/lib.cli
|
. ${SHAREDIR}/shorewall/lib.cli
|
||||||
|
. /usr/share/shorewall-lite/configpath
|
||||||
setup_product_environment
|
|
||||||
|
|
||||||
. ${SHAREDIR}/shorewall-lite/configpath
|
|
||||||
|
|
||||||
[ -n "$PATH" ] || PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
|
[ -n "$PATH" ] || PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
|
||||||
|
|
||||||
|
42
Shorewall-lite/shorewall-lite
Executable file
42
Shorewall-lite/shorewall-lite
Executable file
@@ -0,0 +1,42 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Shorewall Lite Packet Filtering Firewall Control Program - V4.5
|
||||||
|
#
|
||||||
|
# (c) 1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2014 -
|
||||||
|
# Tom Eastep (teastep@shorewall.net)
|
||||||
|
#
|
||||||
|
# Shorewall documentation is available at http://www.shorewall.net
|
||||||
|
#
|
||||||
|
# This program is part of Shorewall.
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by the
|
||||||
|
# Free Software Foundation, either version 2 of the license or, at your
|
||||||
|
# option, any later version.
|
||||||
|
#
|
||||||
|
# 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/>.
|
||||||
|
#
|
||||||
|
# For a list of supported commands, type 'shorewall help' or 'shorewall6 help'
|
||||||
|
#
|
||||||
|
################################################################################################
|
||||||
|
PRODUCT=shorewall-lite
|
||||||
|
|
||||||
|
#
|
||||||
|
# This is modified by the installer when ${SHAREDIR} != /usr/share
|
||||||
|
#
|
||||||
|
. /usr/share/shorewall/shorewallrc
|
||||||
|
|
||||||
|
g_program=$PRODUCT
|
||||||
|
g_sharedir="$SHAREDIR"/shorewall-lite
|
||||||
|
g_confdir="$CONFDIR"/shorewall-lite
|
||||||
|
g_readrc=1
|
||||||
|
|
||||||
|
. ${SHAREDIR}/shorewall/lib.cli
|
||||||
|
|
||||||
|
shorewall_cli $@
|
@@ -1,5 +1,5 @@
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
# /etc/shorewall-lite/shorewall-lite.conf Version 5 - Change the following
|
# /etc/shorewall-lite/shorewall-lite.conf Version 4 - Change the following
|
||||||
# variables to override the values in the shorewall.conf file used to
|
# variables to override the values in the shorewall.conf file used to
|
||||||
# compile /var/lib/shorewall-lite/firewall. Those values may be found in
|
# compile /var/lib/shorewall-lite/firewall. Those values may be found in
|
||||||
# /var/lib/shorewall-lite/firewall.conf.
|
# /var/lib/shorewall-lite/firewall.conf.
|
||||||
|
@@ -5,8 +5,7 @@
|
|||||||
#
|
#
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Shorewall IPv4 firewall (lite)
|
Description=Shorewall IPv4 firewall (lite)
|
||||||
Wants=network-online.target
|
After=network.target
|
||||||
After=network-online.target
|
|
||||||
Conflicts=iptables.service firewalld.service
|
Conflicts=iptables.service firewalld.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
@@ -14,7 +13,7 @@ Type=oneshot
|
|||||||
RemainAfterExit=yes
|
RemainAfterExit=yes
|
||||||
EnvironmentFile=-/etc/sysconfig/shorewall-lite
|
EnvironmentFile=-/etc/sysconfig/shorewall-lite
|
||||||
StandardOutput=syslog
|
StandardOutput=syslog
|
||||||
ExecStart=/sbin/shorewall-lite $OPTIONS start $STARTOPTIONS
|
ExecStart=/sbin/shorewall-lite $OPTIONS start
|
||||||
ExecStop=/sbin/shorewall-lite $OPTIONS stop
|
ExecStop=/sbin/shorewall-lite $OPTIONS stop
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
|
@@ -1,23 +0,0 @@
|
|||||||
#
|
|
||||||
# The Shoreline Firewall (Shorewall) Packet Filtering Firewall
|
|
||||||
#
|
|
||||||
# Copyright 2011 Jonathan Underwood <jonathan.underwood@gmail.com>
|
|
||||||
# Copyright 2015 Tom Eastep <teastep@shorewall.net>
|
|
||||||
#
|
|
||||||
[Unit]
|
|
||||||
Description=Shorewall IPv4 firewall (lite)
|
|
||||||
Wants=network-online.target
|
|
||||||
After=network-online.target
|
|
||||||
Conflicts=iptables.service firewalld.service
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
RemainAfterExit=yes
|
|
||||||
EnvironmentFile=-/etc/default/shorewall-lite
|
|
||||||
StandardOutput=syslog
|
|
||||||
ExecStart=/sbin/shorewall-lite $OPTIONS start $STARTOPTIONS
|
|
||||||
ExecStop=/sbin/shorewall-lite $OPTIONS clear
|
|
||||||
ExecReload=/sbin/shorewall-lite $OPTIONS reload $RELOADOPTIONS
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=basic.target
|
|
@@ -1,26 +0,0 @@
|
|||||||
#
|
|
||||||
# Global start/restart/reload/stop options
|
|
||||||
#
|
|
||||||
OPTIONS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Start options
|
|
||||||
#
|
|
||||||
STARTOPTIONS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Restart options
|
|
||||||
#
|
|
||||||
RESTARTOPTIONS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Reload options
|
|
||||||
#
|
|
||||||
RELOADOPTIONS=""
|
|
||||||
|
|
||||||
#
|
|
||||||
# Stop options
|
|
||||||
#
|
|
||||||
STOPOPTIONS=""
|
|
||||||
|
|
||||||
# EOF
|
|
@@ -1,8 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Script to back uninstall Shoreline Firewall Lite
|
# Script to back uninstall Shoreline Firewall
|
||||||
#
|
#
|
||||||
# (c) 2000-2016 - Tom Eastep (teastep@shorewall.net)
|
# (c) 2000-2011,2014 - Tom Eastep (teastep@shorewall.net)
|
||||||
#
|
#
|
||||||
# Shorewall documentation is available at http://shorewall.sourceforge.net
|
# Shorewall documentation is available at http://shorewall.sourceforge.net
|
||||||
#
|
#
|
||||||
@@ -26,7 +26,8 @@
|
|||||||
# You may only use this script to uninstall the version
|
# You may only use this script to uninstall the version
|
||||||
# shown below. Simply run this script to remove Shorewall Firewall
|
# shown below. Simply run this script to remove Shorewall Firewall
|
||||||
|
|
||||||
VERSION=xxx # The Build script inserts the actual version
|
VERSION=xxx #The Build script inserts the actual version
|
||||||
|
PRODUCT=shorewall-lite
|
||||||
|
|
||||||
usage() # $1 = exit status
|
usage() # $1 = exit status
|
||||||
{
|
{
|
||||||
@@ -39,27 +40,40 @@ usage() # $1 = exit status
|
|||||||
exit $1
|
exit $1
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
qt()
|
||||||
# Change to the directory containing this script
|
{
|
||||||
#
|
"$@" >/dev/null 2>&1
|
||||||
cd "$(dirname $0)"
|
}
|
||||||
|
|
||||||
if [ -f shorewall-lite.service ]; then
|
split() {
|
||||||
PRODUCT=shorewall-lite
|
local ifs
|
||||||
Product="Shorewall Lite"
|
ifs=$IFS
|
||||||
else
|
IFS=:
|
||||||
PRODUCT=shorewall6-lite
|
set -- $1
|
||||||
Product="Shorewall6 Lite"
|
echo $*
|
||||||
fi
|
IFS=$ifs
|
||||||
|
}
|
||||||
|
|
||||||
#
|
mywhich() {
|
||||||
# Source common functions
|
local dir
|
||||||
#
|
|
||||||
. ./lib.uninstaller || { echo "ERROR: Can not load common functions." >&2; exit 1; }
|
for dir in $(split $PATH); do
|
||||||
|
if [ -x $dir/$1 ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_file() # $1 = file to restore
|
||||||
|
{
|
||||||
|
if [ -f $1 -o -L $1 ] ; then
|
||||||
|
rm -f $1
|
||||||
|
echo "$1 Removed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
#
|
|
||||||
# Parse the run line
|
|
||||||
#
|
|
||||||
finished=0
|
finished=0
|
||||||
configure=1
|
configure=1
|
||||||
|
|
||||||
@@ -76,7 +90,7 @@ while [ $finished -eq 0 ]; do
|
|||||||
usage 0
|
usage 0
|
||||||
;;
|
;;
|
||||||
v)
|
v)
|
||||||
echo "$Product Firewall Uninstaller Version $VERSION"
|
echo "$Product Firewall Installer Version $VERSION"
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
n*)
|
n*)
|
||||||
@@ -96,17 +110,17 @@ while [ $finished -eq 0 ]; do
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
#
|
#
|
||||||
# Read the RC file
|
# Read the RC file
|
||||||
#
|
#
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
if [ -f ./shorewallrc ]; then
|
if [ -f ./shorewallrc ]; then
|
||||||
. ./shorewallrc || fatal_error "Can not load the RC file: ./shorewallrc"
|
. ./shorewallrc
|
||||||
elif [ -f ~/.shorewallrc ]; then
|
elif [ -f ~/.shorewallrc ]; then
|
||||||
. ~/.shorewallrc || fatal_error "Can not load the RC file: ~/.shorewallrc"
|
. ~/.shorewallrc || exit 1
|
||||||
|
file=./.shorewallrc
|
||||||
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
elif [ -f /usr/share/shorewall/shorewallrc ]; then
|
||||||
. /usr/share/shorewall/shorewallrc || fatal_error "Can not load the RC file: /usr/share/shorewall/shorewallrc"
|
. /usr/share/shorewall/shorewallrc
|
||||||
else
|
else
|
||||||
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
fatal_error "No configuration file specified and /usr/share/shorewall/shorewallrc not found"
|
||||||
fi
|
fi
|
||||||
@@ -116,61 +130,49 @@ elif [ $# -eq 1 ]; then
|
|||||||
/*|.*)
|
/*|.*)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
file=./$file || exit 1
|
file=./$file
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
. $file || fatal_error "Can not load the RC file: $file"
|
. $file
|
||||||
else
|
else
|
||||||
usage 1
|
usage 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f ${SHAREDIR}/$PRODUCT/version ]; then
|
if [ -f ${SHAREDIR}/shorewall-lite/version ]; then
|
||||||
INSTALLED_VERSION="$(cat ${SHAREDIR}/$PRODUCT/version)"
|
INSTALLED_VERSION="$(cat ${SHAREDIR}/shorewall-lite/version)"
|
||||||
if [ "$INSTALLED_VERSION" != "$VERSION" ]; then
|
if [ "$INSTALLED_VERSION" != "$VERSION" ]; then
|
||||||
echo "WARNING: $Product Version $INSTALLED_VERSION is installed"
|
echo "WARNING: Shorewall Lite Version $INSTALLED_VERSION is installed"
|
||||||
echo " and this is the $VERSION uninstaller."
|
echo " and this is the $VERSION uninstaller."
|
||||||
VERSION="$INSTALLED_VERSION"
|
VERSION="$INSTALLED_VERSION"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "WARNING: $Product Version $VERSION is not installed"
|
echo "WARNING: Shorewall Lite Version $VERSION is not installed"
|
||||||
VERSION=""
|
VERSION=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Uninstalling $Product $VERSION"
|
echo "Uninstalling Shorewall Lite $VERSION"
|
||||||
|
|
||||||
[ -n "$SANDBOX" ] && configure=0
|
[ -n "$SANDBOX" ] && configure=0
|
||||||
|
|
||||||
if [ $configure -eq 1 ]; then
|
if [ $configure -eq 1 ]; then
|
||||||
if qt iptables -L shorewall -n && [ ! -f ${SBINDIR}/shorewall ]; then
|
if qt iptables -L shorewall -n && [ ! -f ${SBINDIR}/shorewall ]; then
|
||||||
${SBINDIR}/$PRODUCT clear
|
shorewall-lite clear
|
||||||
elif qt ip6tables -L shorewall -n && [ ! -f ${SBINDIR}/shorewall6 ]; then
|
|
||||||
${SBINDIR}/$PRODUCT clear
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
remove_file ${SBINDIR}/$PRODUCT
|
if [ -L ${SHAREDIR}/shorewall-lite/init ]; then
|
||||||
|
FIREWALL=$(readlink -m -q ${SHAREDIR}/shorewall-lite/init)
|
||||||
if [ -L ${SHAREDIR}/$PRODUCT/init ]; then
|
|
||||||
if [ $HOST = openwrt ]; then
|
|
||||||
if [ $configure -eq 1 ] && /etc/init.d/$PRODUCT enabled; then
|
|
||||||
/etc/init.d/$PRODUCT disable
|
|
||||||
fi
|
|
||||||
|
|
||||||
FIREWALL=$(readlink ${SHAREDIR}/$PRODUCT/init)
|
|
||||||
else
|
|
||||||
FIREWALL=$(readlink -m -q ${SHAREDIR}/$PRODUCT/init)
|
|
||||||
fi
|
|
||||||
elif [ -n "$INITFILE" ]; then
|
elif [ -n "$INITFILE" ]; then
|
||||||
FIREWALL=${INITDIR}/${INITFILE}
|
FIREWALL=${INITDIR}/${INITFILE}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "$FIREWALL" ]; then
|
if [ -f "$FIREWALL" ]; then
|
||||||
if [ $configure -eq 1 ]; then
|
if [ $configure -eq 1 ]; then
|
||||||
if mywhich insserv ; then
|
if mywhich updaterc.d ; then
|
||||||
|
updaterc.d shorewall-lite remove
|
||||||
|
elif mywhich insserv ; then
|
||||||
insserv -r $FIREWALL
|
insserv -r $FIREWALL
|
||||||
elif mywhich update-rc.d ; then
|
|
||||||
update-rc.d ${PRODUCT} remove
|
|
||||||
elif mywhich chkconfig ; then
|
elif mywhich chkconfig ; then
|
||||||
chkconfig --del $(basename $FIREWALL)
|
chkconfig --del $(basename $FIREWALL)
|
||||||
fi
|
fi
|
||||||
@@ -179,29 +181,21 @@ if [ -f "$FIREWALL" ]; then
|
|||||||
remove_file $FIREWALL
|
remove_file $FIREWALL
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[ -z "${SERVICEDIR}" ] && SERVICEDIR="$SYSTEMD"
|
if [ -n "$SYSTEMD" ]; then
|
||||||
|
[ $configure -eq 1 ] && systemctl disable ${PRODUCT}
|
||||||
if [ -n "$SERVICEDIR" ]; then
|
rm -f $SYSTEMD/shorewall-lite.service
|
||||||
[ $configure -eq 1 ] && systemctl disable ${PRODUCT}.service
|
|
||||||
remove_file $SERVICEDIR/${PRODUCT}.service
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
remove_directory ${CONFDIR}/$PRODUCT
|
rm -f ${SBINDIR}/shorewall-lite
|
||||||
remove_directory ${VARDIR}
|
|
||||||
remove_directory ${SHAREDIR}/$PRODUCT
|
|
||||||
remove_directory ${LIBEXECDIR}/$PRODUCT
|
|
||||||
remove_file ${CONFDIR}/logrotate.d/$PRODUCT
|
|
||||||
|
|
||||||
if [ -n "$SYSCONFDIR" ]; then
|
rm -rf ${CONFDIR}/shorewall-lite
|
||||||
[ -n "$SYSCONFFILE" ] && remove_file ${SYSCONFDIR}/${PRODUCT}
|
rm -rf ${VARDIR}/shorewall-lite
|
||||||
fi
|
rm -rf ${SHAREDIR}/shorewall-lite
|
||||||
|
rm -rf ${LIBEXECDIR}/shorewall-lite
|
||||||
|
rm -f ${CONFDIR}/logrotate.d/shorewall-lite
|
||||||
|
|
||||||
if [ -n "${MANDIR}" ]; then
|
rm -f ${MANDIR}/man5/shorewall-lite*
|
||||||
remove_file_with_wildcard ${MANDIR}/man5/${PRODUCT}\*
|
rm -f ${MANDIR}/man8/shorewall-lite*
|
||||||
remove_file_with_wildcard ${MANDIR}/man8/${PRODUCT}\*
|
|
||||||
fi
|
echo "Shorewall Lite Uninstalled"
|
||||||
|
|
||||||
#
|
|
||||||
# Report Success
|
|
||||||
#
|
|
||||||
echo "$Product $VERSION Uninstalled"
|
|
||||||
|
@@ -1,9 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall6 -- /usr/share/shorewall/action.A_AllowICMPs
|
|
||||||
#
|
|
||||||
# This action A_ACCEPTs needed ICMP types
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
#ACTION SOURCE DEST PROTO DPORT
|
|
||||||
|
|
||||||
AllowICMPs(A_ACCEPT)
|
|
@@ -1,42 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.A_REJECTWITH
|
|
||||||
#
|
|
||||||
# A_REJECT Action.
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2012-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# A_REJECT[([<option>])] where <option> is a valid REJECT option.#
|
|
||||||
###############################################################################
|
|
||||||
?require AUDIT_TARGET
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
AUDIT(reject)
|
|
||||||
|
|
||||||
?if passed @1
|
|
||||||
?if @1 =~ /tcp-reset$/
|
|
||||||
?set reject_proto 6
|
|
||||||
?else
|
|
||||||
?set reject_proto ''
|
|
||||||
?endif
|
|
||||||
REJECT(@1) - - $reject_proto
|
|
||||||
?else
|
|
||||||
REJECT
|
|
||||||
?endif
|
|
@@ -1,31 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.A_REJECT!
|
|
||||||
#
|
|
||||||
# A_REJECT! Action.
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2012-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# A_REJECT[([<option>])] where <option> is a valid REJECT option.#
|
|
||||||
###############################################################################
|
|
||||||
?require AUDIT_TARGET
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
A_REJECT(@1)
|
|
@@ -1,45 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.AllowICMPs
|
|
||||||
#
|
|
||||||
# This action ACCEPTs needed ICMP types.
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER
|
|
||||||
|
|
||||||
DEFAULTS ACCEPT
|
|
||||||
|
|
||||||
?if __IPV4
|
|
||||||
@1 - - icmp fragmentation-needed {comment="Needed ICMP types"}
|
|
||||||
@1 - - icmp time-exceeded {comment="Needed ICMP types"}
|
|
||||||
?else
|
|
||||||
?COMMENT Needed ICMP types (RFC4890)
|
|
||||||
|
|
||||||
@1 - - ipv6-icmp destination-unreachable
|
|
||||||
@1 - - ipv6-icmp packet-too-big
|
|
||||||
@1 - - ipv6-icmp time-exceeded
|
|
||||||
@1 - - ipv6-icmp parameter-problem
|
|
||||||
|
|
||||||
# The following should have a ttl of 255 and must be allowed to transit a bridge
|
|
||||||
@1 - - ipv6-icmp router-solicitation
|
|
||||||
@1 - - ipv6-icmp router-advertisement
|
|
||||||
@1 - - ipv6-icmp neighbour-solicitation
|
|
||||||
@1 - - ipv6-icmp neighbour-advertisement
|
|
||||||
@1 - - ipv6-icmp 137 # Redirect
|
|
||||||
@1 - - ipv6-icmp 141 # Inverse neighbour discovery solicitation
|
|
||||||
@1 - - ipv6-icmp 142 # Inverse neighbour discovery advertisement
|
|
||||||
|
|
||||||
# The following should have a link local source address and must be allowed to transit a bridge
|
|
||||||
@1 fe80::/10 - ipv6-icmp 130 # Listener query
|
|
||||||
@1 fe80::/10 - ipv6-icmp 131 # Listener report
|
|
||||||
@1 fe80::/10 - ipv6-icmp 132 # Listener done
|
|
||||||
@1 fe80::/10 - ipv6-icmp 143 # Listener report v2
|
|
||||||
|
|
||||||
# The following should be received with a ttl of 255 and must be allowed to transit a bridge
|
|
||||||
@1 - - ipv6-icmp 148 # Certificate path solicitation
|
|
||||||
@1 - - ipv6-icmp 149 # Certificate path advertisement
|
|
||||||
|
|
||||||
# The following should have a link local source address and a ttl of 1 and must be allowed to transit abridge
|
|
||||||
@1 fe80::/10 - ipv6-icmp 151 # Multicast router advertisement
|
|
||||||
@1 fe80::/10 - ipv6-icmp 152 # Multicast router solicitation
|
|
||||||
@1 fe80::/10 - ipv6-icmp 153 # Multicast router termination
|
|
||||||
?endif
|
|
@@ -1,23 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.AutoBLL
|
|
||||||
#
|
|
||||||
# Auto Blacklisting Logger Action
|
|
||||||
#
|
|
||||||
# Arguments are
|
|
||||||
#
|
|
||||||
# Event - Name of the blacklisted event
|
|
||||||
# Disposition - What to do with packets
|
|
||||||
# Level - Log level and optional tag for logging
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT
|
|
||||||
#
|
|
||||||
# Log the Reject
|
|
||||||
#
|
|
||||||
?if "$3" ne 'none'
|
|
||||||
LOG:$3
|
|
||||||
?endif
|
|
||||||
#
|
|
||||||
# And set the AutoBL Event for the SOURCE IP address
|
|
||||||
#
|
|
||||||
SetEvent(${1}_BL,$2,src)
|
|
@@ -1,50 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall - /usr/share/shorewall/action.BLACKLIST
|
|
||||||
#
|
|
||||||
# This action:
|
|
||||||
#
|
|
||||||
# - Adds the sender to the dynamic blacklist ipset
|
|
||||||
# - Optionally acts on the packet (default is DROP)
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
#
|
|
||||||
# 1 - Action to take after adding the packet. Default is DROP.
|
|
||||||
# Pass -- if you don't want to take any action.
|
|
||||||
# 2 - Timeout for ipset entry. Default is the timeout specified in
|
|
||||||
# DYNAMIC_BLACKLIST or the one specified when the ipset was created.
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
# Note -- This action is defined with the 'section' option, so the first
|
|
||||||
# parameter is always the section name. That means that in the
|
|
||||||
# following text, the first parameter passed in the rule is actually
|
|
||||||
# @2.
|
|
||||||
###############################################################################
|
|
||||||
?if $1 eq 'BLACKLIST'
|
|
||||||
?if $BLACKLIST_LOG_LEVEL
|
|
||||||
blacklog
|
|
||||||
?else
|
|
||||||
$BLACKLIST_DISPOSITION
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
?if ! "$SW_DBL_IPSET"
|
|
||||||
? error The BLACKLIST action may only be used with ipset-based dynamic blacklisting
|
|
||||||
?endif
|
|
||||||
|
|
||||||
DEFAULTS -,DROP,-
|
|
||||||
#
|
|
||||||
# Add to the blacklist
|
|
||||||
#
|
|
||||||
?if passed(@3)
|
|
||||||
ADD($SW_DBL_IPSET:src:@3)
|
|
||||||
?elsif $SW_DBL_TIMEOUT
|
|
||||||
ADD($SW_DBL_IPSET:src:$SW_DBL_TIMEOUT)
|
|
||||||
?else
|
|
||||||
ADD($SW_DBL_IPSET:src)
|
|
||||||
?endif
|
|
||||||
#
|
|
||||||
# Dispose of the packet if asked
|
|
||||||
#
|
|
||||||
?if passed(@2)
|
|
||||||
@2
|
|
||||||
?endif
|
|
||||||
?endif
|
|
@@ -1,65 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.Broadcast
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# Broadcast[([<action>|[,{audit|-}])]
|
|
||||||
#
|
|
||||||
# Default action is DROP
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS DROP,-
|
|
||||||
|
|
||||||
?if __ADDRTYPE
|
|
||||||
@1 - - - ;; -m addrtype --dst-type BROADCAST
|
|
||||||
@1 - - - ;; -m addrtype --dst-type ANYCAST
|
|
||||||
?else
|
|
||||||
?begin perl;
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Shorewall::IPAddrs;
|
|
||||||
use Shorewall::Config;
|
|
||||||
use Shorewall::Chains;
|
|
||||||
|
|
||||||
my ( $action, $audit ) = get_action_params( 2 );
|
|
||||||
my $chainref = get_action_chain;
|
|
||||||
my ( $level, $tag ) = get_action_logging;
|
|
||||||
|
|
||||||
fatal_error "Invalid parameter to action Broadcast" if supplied $audit && $audit ne 'audit';
|
|
||||||
|
|
||||||
my $target = require_audit ( $action , $audit );
|
|
||||||
|
|
||||||
if ( $family == F_IPV4 ) {
|
|
||||||
add_commands $chainref, 'for address in $ALL_BCASTS; do';
|
|
||||||
} elsif ($family == F_IPV6 ) {
|
|
||||||
add_commands $chainref, 'for address in $ALL_ACASTS; do';
|
|
||||||
}
|
|
||||||
|
|
||||||
incr_cmd_level $chainref;
|
|
||||||
log_rule_limit $level, $chainref, 'Broadcast' , $action, '', $tag, 'add', ' -d $address ' if $level ne '';
|
|
||||||
add_jump $chainref, $target, 0, "-d \$address ";
|
|
||||||
decr_cmd_level $chainref;
|
|
||||||
add_commands $chainref, 'done';
|
|
||||||
|
|
||||||
1;
|
|
||||||
|
|
||||||
?end perl;
|
|
||||||
?endif
|
|
@@ -1,34 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.DNSAmp
|
|
||||||
#
|
|
||||||
# DNS Amplification Action
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# DNSAmp[([<action>])]
|
|
||||||
#
|
|
||||||
# Default action is DROP
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
#ACTION SOURCE DEST PROTO DPORT
|
|
||||||
|
|
||||||
DEFAULTS DROP
|
|
||||||
|
|
||||||
@1 - - udp 53 ;; -m u32 --u32 "0>>22&0x3C\@8&0xffff=0x0100 && 0>>22&0x3C\@12&0xffff0000=0x00010000"
|
|
@@ -1,84 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.Drop
|
|
||||||
#
|
|
||||||
# The former default DROP common rules. Use of this action is now deprecated
|
|
||||||
#
|
|
||||||
# This action is invoked before a DROP policy is enforced. The purpose
|
|
||||||
# of the action is:
|
|
||||||
#
|
|
||||||
# a) Avoid logging lots of useless cruft.
|
|
||||||
# b) Ensure that certain ICMP packets that are necessary for successful
|
|
||||||
# internet operation are always ACCEPTed.
|
|
||||||
#
|
|
||||||
# The action accepts six optional parameters:
|
|
||||||
#
|
|
||||||
# 1 - 'audit' or '-'. Default is '-' which means don't audit in builtin
|
|
||||||
# actions.
|
|
||||||
# 2 - Action to take with Auth requests. Default is to do nothing special
|
|
||||||
# with them.
|
|
||||||
# 3 - Action to take with SMB requests. Default is DROP or A_DROP,
|
|
||||||
# depending on the setting of the first parameter.
|
|
||||||
# 4 - Action to take with required ICMP packets. Default is ACCEPT or
|
|
||||||
# A_ACCEPT depending on the first parameter.
|
|
||||||
# 5 - Action to take with late DNS replies (UDP source port 53). Default
|
|
||||||
# is DROP or A_DROP depending on the first parameter.
|
|
||||||
# 6 - Action to take with UPnP packets. Default is DROP or A_DROP
|
|
||||||
# depending on the first parameter.
|
|
||||||
#
|
|
||||||
# IF YOU ARE HAVING CONNECTION PROBLEMS, CHANGING THIS FILE WON'T HELP!!!!!!!!!
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
?warning "You are using the deprecated Drop default action. Please see http://www.shorewall.net/Actions.html#Default"
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
DEFAULTS -,-,A_DROP,A_ACCEPT,A_DROP,A_DROP
|
|
||||||
?else
|
|
||||||
?error The first parameter to Drop must be 'audit' or '-'
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
DEFAULTS -,-,DROP,ACCEPT,DROP,DROP
|
|
||||||
?endif
|
|
||||||
|
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT
|
|
||||||
#
|
|
||||||
# Count packets that come through here
|
|
||||||
#
|
|
||||||
COUNT
|
|
||||||
#
|
|
||||||
# Special Handling for Auth
|
|
||||||
#
|
|
||||||
?if passed(@2)
|
|
||||||
Auth(@2)
|
|
||||||
?endif
|
|
||||||
#
|
|
||||||
# ACCEPT critical ICMP types
|
|
||||||
#
|
|
||||||
# For IPv6 connectivity ipv6-icmp broadcasting is required so
|
|
||||||
# AllowICMPs must be before silent broadcast Drop.
|
|
||||||
#
|
|
||||||
AllowICMPs(@4) - - icmp
|
|
||||||
#
|
|
||||||
# Don't log broadcasts or multicasts
|
|
||||||
#
|
|
||||||
Broadcast(DROP,@1)
|
|
||||||
Multicast(DROP,@1)
|
|
||||||
#
|
|
||||||
# Drop packets that are in the INVALID state -- these are usually ICMP packets
|
|
||||||
# and just confuse people when they appear in the log.
|
|
||||||
#
|
|
||||||
Invalid(DROP,@1)
|
|
||||||
#
|
|
||||||
# Drop Microsoft noise so that it doesn't clutter up the log.
|
|
||||||
#
|
|
||||||
SMB(@3)
|
|
||||||
DropUPnP(@6)
|
|
||||||
#
|
|
||||||
# Drop 'newnotsyn' traffic so that it doesn't get logged.
|
|
||||||
#
|
|
||||||
NotSyn(DROP,@1) - - tcp
|
|
||||||
#
|
|
||||||
# Drop late-arriving DNS replies. These are just a nuisance and clutter up
|
|
||||||
# the log.
|
|
||||||
#
|
|
||||||
DropDNSrep(@5)
|
|
@@ -1,10 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.DropDNSrep
|
|
||||||
#
|
|
||||||
# This macro silently drops DNS UDP replies that are in the New state
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER
|
|
||||||
|
|
||||||
DEFAULTS DROP
|
|
||||||
@1 - - udp - 53 { comment="Late DNS Replies" }
|
|
@@ -1,35 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.Established
|
|
||||||
#
|
|
||||||
# Established Action
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# Established[([<action>])]
|
|
||||||
#
|
|
||||||
# Default action is ACCEPT
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS ACCEPT
|
|
||||||
|
|
||||||
#
|
|
||||||
# All logic for this action is supplied by the 'state' option in actions.std
|
|
||||||
#
|
|
@@ -1,33 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.FIN
|
|
||||||
#
|
|
||||||
# FIN Action
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2012-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# FIN[([<action>])]
|
|
||||||
#
|
|
||||||
# Default action is ACCEPT
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS ACCEPT,-
|
|
||||||
|
|
||||||
@1 - - ;;+ -p 6 --tcp-flags ACK,FIN,PSH ACK,FIN,PSH
|
|
@@ -1,34 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.GlusterFS
|
|
||||||
#
|
|
||||||
# GlusterFS Handler for GlusterFS 3.4 and Later
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
#
|
|
||||||
# Bricks - Number of bricks
|
|
||||||
# IB - 0 or 1, indicating whether Infiniband is used or not
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS 2,0
|
|
||||||
|
|
||||||
?if @1 !~ /^\d+/ || ! @1 || @1 > 1024
|
|
||||||
?error Invalid value (@1) for the GlusterFS Bricks argument
|
|
||||||
?elsif @2 !~ /^[01]$/
|
|
||||||
?error Invalid value (@2) for the GlusterFS IB argument
|
|
||||||
?endif
|
|
||||||
|
|
||||||
#ACTION SOURCE DEST PROTO DPORT
|
|
||||||
|
|
||||||
ACCEPT - - udp 111,2049
|
|
||||||
ACCEPT - - tcp 38465:38467
|
|
||||||
|
|
||||||
?if @{2}
|
|
||||||
ACCEPT - - tcp 24007:24008
|
|
||||||
?else
|
|
||||||
ACCEPT - - tcp 24007
|
|
||||||
?endif
|
|
||||||
|
|
||||||
?set last_port 49150 + @{1}
|
|
||||||
|
|
||||||
ACCEPT - - tcp 49151:$last_port
|
|
@@ -1,35 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.Invalid
|
|
||||||
#
|
|
||||||
# Invalid Action
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# Invalid[([<action>])]
|
|
||||||
#
|
|
||||||
# Default action is DROP
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS DROP,-
|
|
||||||
|
|
||||||
#
|
|
||||||
# All logic for this action is triggered by the 'audit' and 'state' options
|
|
||||||
# in actions.std
|
|
||||||
#
|
|
@@ -1,70 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.Limit
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2017 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# Limit(<recent-set>,<num-connections>,<timeout>)
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -,-,-
|
|
||||||
|
|
||||||
?begin perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Shorewall::Config;
|
|
||||||
use Shorewall::Chains;
|
|
||||||
|
|
||||||
my $chainref = get_action_chain;
|
|
||||||
my @param = get_action_params(3);
|
|
||||||
my ( $level, $tag ) = get_action_logging;
|
|
||||||
|
|
||||||
@param = split( ',', $tag ), $tag = $param[0] unless supplied( join '', @param );
|
|
||||||
|
|
||||||
fatal_error 'Limit rules must include <set name>,<max connections>,<interval> as the log tag or as parameters' unless @param == 3;
|
|
||||||
|
|
||||||
my $set = $param[0];
|
|
||||||
|
|
||||||
for ( @param[1,2] ) {
|
|
||||||
fatal_error 'Max connections and interval in Limit rules must be numeric (' . join( ':', 'Limit', $level eq '' ? 'none' : $level, $tag ) . ')' unless /^\d+$/
|
|
||||||
}
|
|
||||||
|
|
||||||
my $count = $param[1] + 1;
|
|
||||||
|
|
||||||
require_capability( 'RECENT_MATCH' , 'Limit rules' , '' );
|
|
||||||
|
|
||||||
warning_message "The Limit action is deprecated in favor of per-IP rate limiting using the RATE LIMIT column";
|
|
||||||
|
|
||||||
add_irule $chainref, recent => "--name $set --set";
|
|
||||||
|
|
||||||
if ( $level ne '' ) {
|
|
||||||
my $xchainref = new_chain 'filter' , "$chainref->{name}%";
|
|
||||||
log_irule_limit( $level, $xchainref, '', 'DROP', [], $tag, 'add' , '' );
|
|
||||||
add_ijump $xchainref, j => 'DROP';
|
|
||||||
add_ijump $chainref, j => $xchainref, recent => "--name $set --update --seconds $param[2] --hitcount $count";
|
|
||||||
} else {
|
|
||||||
add_ijump $chainref, j => 'DROP', recent => "--update --name $set --seconds $param[2] --hitcount $count";
|
|
||||||
}
|
|
||||||
|
|
||||||
add_ijump $chainref, j => 'ACCEPT';
|
|
||||||
|
|
||||||
1;
|
|
||||||
|
|
||||||
?end perl
|
|
@@ -1,56 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.Multicast
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# Multicast[([<action>|-[,{audit|-}])]
|
|
||||||
#
|
|
||||||
# Default action is DROP
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS DROP,-
|
|
||||||
|
|
||||||
?if __ADDRTYPE
|
|
||||||
@1 - - - ;; -m addrtype --dst-type MULTICAST
|
|
||||||
?else
|
|
||||||
?begin perl;
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Shorewall::IPAddrs;
|
|
||||||
use Shorewall::Config;
|
|
||||||
use Shorewall::Chains;
|
|
||||||
|
|
||||||
my ( $action, $audit ) = get_action_params( 2 );
|
|
||||||
my $chainref = get_action_chain;
|
|
||||||
my ( $level, $tag ) = get_action_logging;
|
|
||||||
|
|
||||||
fatal_error "Invalid parameter to action Multicast" if supplied $audit && $audit ne 'audit';
|
|
||||||
|
|
||||||
my $target = require_audit ( $action , $audit );
|
|
||||||
my $dest = ( $family == F_IPV4 ) ? join( ' ', '-d', IPv4_MULTICAST . ' ' ) : join( ' ', '-d', IPv6_MULTICAST . ' ' );
|
|
||||||
|
|
||||||
log_rule_limit( $level, $chainref, 'Multicast' , $action, '', $tag, 'add', $dest ) if $level ne '';
|
|
||||||
add_jump $chainref, $target, 0, $dest;
|
|
||||||
|
|
||||||
1;
|
|
||||||
|
|
||||||
?end perl;
|
|
||||||
?endif
|
|
@@ -1,35 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.New
|
|
||||||
#
|
|
||||||
# New Action
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# New[([<action>])]
|
|
||||||
#
|
|
||||||
# Default action is ACCEPT
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS ACCEPT
|
|
||||||
|
|
||||||
#
|
|
||||||
# All logic for this action is supplied by the 'state' option in actions.std
|
|
||||||
#
|
|
@@ -1,33 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.NotSyn
|
|
||||||
#
|
|
||||||
# NotSyn Action
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# NotSyn[([<action>])]
|
|
||||||
#
|
|
||||||
# Default action is DROP
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS DROP,-
|
|
||||||
|
|
||||||
@1 - - ;;+ -p 6 ! --syn
|
|
@@ -1,33 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.RST
|
|
||||||
#
|
|
||||||
# RST Action
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2012-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# RST[([<action>])]
|
|
||||||
#
|
|
||||||
# Default action is DROP
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS DROP,-
|
|
||||||
|
|
||||||
@1 - - ;;+ -p 6 --tcp-flags RST RST
|
|
@@ -1,85 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.Reject
|
|
||||||
#
|
|
||||||
# The former default REJECT action common rules. Use of this action is deprecated.
|
|
||||||
#
|
|
||||||
# This action is invoked before a REJECT policy is enforced. The purpose
|
|
||||||
# of the action is:
|
|
||||||
#
|
|
||||||
# a) Avoid logging lots of useless cruft.
|
|
||||||
# b) Ensure that certain ICMP packets that are necessary for successful
|
|
||||||
# internet operation are always ACCEPTed.
|
|
||||||
#
|
|
||||||
# The action accepts six optional parameters:
|
|
||||||
#
|
|
||||||
# 1 - 'audit' or '-'. Default is '-' which means don't audit in builtin
|
|
||||||
# actions.
|
|
||||||
# 2 - Action to take with Auth requests. Default is to do nothing
|
|
||||||
# special with them.
|
|
||||||
# 3 - Action to take with SMB requests. Default is REJECT or A_REJECT,
|
|
||||||
# depending on the setting of the first parameter.
|
|
||||||
# 4 - Action to take with required ICMP packets. Default is ACCEPT or
|
|
||||||
# A_ACCEPT depending on the first parameter.
|
|
||||||
# 5 - Action to take with late DNS replies (UDP source port 53). Default
|
|
||||||
# is DROP or A_DROP depending on the first parameter.
|
|
||||||
# 6 - Action to take with UPnP packets. Default is DROP or A_DROP
|
|
||||||
# depending on the first parameter.
|
|
||||||
#
|
|
||||||
# IF YOU ARE HAVING CONNECTION PROBLEMS, CHANGING THIS FILE WON'T HELP!!!!!!!!!
|
|
||||||
###############################################################################
|
|
||||||
?warning "You are using the deprecated Reject default action. Please see http://www.shorewall.net/Actions.html#Default"
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
DEFAULTS -,-,A_REJECT,A_ACCEPT,A_DROP,A_DROP
|
|
||||||
?else
|
|
||||||
?error The first parameter to Reject must be 'audit' or '-'
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
DEFAULTS -,-,REJECT,ACCEPT,DROP,DROP
|
|
||||||
?endif
|
|
||||||
|
|
||||||
#ACTION SOURCE DEST PROTO
|
|
||||||
#
|
|
||||||
# Count packets that come through here
|
|
||||||
#
|
|
||||||
COUNT
|
|
||||||
#
|
|
||||||
# Special handling for Auth
|
|
||||||
#
|
|
||||||
?if passed(@2)
|
|
||||||
Auth(@2)
|
|
||||||
?endif
|
|
||||||
#
|
|
||||||
# ACCEPT critical ICMP types
|
|
||||||
#
|
|
||||||
# For IPv6 connectivity ipv6-icmp broadcasting is required so
|
|
||||||
# AllowICMPs must be before silent broadcast Drop.
|
|
||||||
#
|
|
||||||
AllowICMPs(@4) - - icmp
|
|
||||||
#
|
|
||||||
# Drop Broadcasts so they don't clutter up the log
|
|
||||||
# (broadcasts must *not* be rejected).
|
|
||||||
#
|
|
||||||
Broadcast(DROP,@1)
|
|
||||||
Multicast(DROP,@1)
|
|
||||||
#
|
|
||||||
# Drop packets that are in the INVALID state -- these are usually ICMP packets
|
|
||||||
# and just confuse people when they appear in the log (these ICMPs cannot be
|
|
||||||
# rejected).
|
|
||||||
#
|
|
||||||
Invalid(DROP,@1)
|
|
||||||
#
|
|
||||||
# Reject Microsoft noise so that it doesn't clutter up the log.
|
|
||||||
#
|
|
||||||
SMB(@3)
|
|
||||||
DropUPnP(@6)
|
|
||||||
#
|
|
||||||
# Drop 'newnotsyn' traffic so that it doesn't get logged.
|
|
||||||
#
|
|
||||||
NotSyn(DROP,@1) - - tcp
|
|
||||||
#
|
|
||||||
# Drop late-arriving DNS replies. These are just a nuisance and clutter up
|
|
||||||
# the log.
|
|
||||||
#
|
|
||||||
DropDNSrep(@5)
|
|
@@ -1,35 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.Related
|
|
||||||
#
|
|
||||||
# Related Action
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# Related[([<action>])]
|
|
||||||
#
|
|
||||||
# Default action is DROP
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS DROP
|
|
||||||
|
|
||||||
#
|
|
||||||
# All logic for this action is supplied by the 'state' option in actions.std
|
|
||||||
#
|
|
@@ -1,48 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.SetEvent
|
|
||||||
#
|
|
||||||
# Set an Event
|
|
||||||
#
|
|
||||||
# Parameters:
|
|
||||||
#
|
|
||||||
# Event - Must start with a letter and be composed of letters, digits,
|
|
||||||
# '-', and '_'.
|
|
||||||
# Action - Action to perform after setting the event. Default is ACCEPT
|
|
||||||
# Src or Dest - 'src' (default) or 'dst'. Determines if the event is
|
|
||||||
# associated with the source address (src) or destination
|
|
||||||
# address (dst)
|
|
||||||
# Disposition - Disposition for any event generated.
|
|
||||||
#
|
|
||||||
# For additional information, see http://www.shorewall.net/Events.html
|
|
||||||
#
|
|
||||||
|
|
||||||
DEFAULTS -,ACCEPT,src
|
|
||||||
|
|
||||||
?begin perl
|
|
||||||
|
|
||||||
use Shorewall::Config;
|
|
||||||
use Shorewall::Chains;
|
|
||||||
use Shorewall::Rules;
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
my ( $event, $action, $destination, $disposition ) = get_action_params( 4 );
|
|
||||||
|
|
||||||
require_capability 'RECENT_MATCH', 'Use of events', 's';
|
|
||||||
require_capability 'MARK_ANYWHERE', 'Use of events', 's';
|
|
||||||
|
|
||||||
fatal_error "An event name is required" unless supplied $event;
|
|
||||||
fatal_error "Invalid event name ($event)" unless $event =~ /^[a-zA-z][-\w]*$/;
|
|
||||||
fatal_error "Invalid Src or Dest ($destination)" unless $destination =~ /^(?:src|dst)$/;
|
|
||||||
|
|
||||||
set_action_disposition( $disposition) if supplied $disposition;
|
|
||||||
set_action_name_to_caller;
|
|
||||||
|
|
||||||
if ( $destination eq 'dst' ) {
|
|
||||||
perl_action_helper( $action, '', '', "-m recent --name $event --set --rdest" );
|
|
||||||
} else {
|
|
||||||
perl_action_helper( $action, '', '', "-m recent --name $event --set --rsource" );
|
|
||||||
}
|
|
||||||
|
|
||||||
1;
|
|
||||||
|
|
||||||
?end perl
|
|
@@ -1,29 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.TCPFlags
|
|
||||||
#
|
|
||||||
# Drop TCPFlags Action
|
|
||||||
#
|
|
||||||
# Accepts a single optional parameter:
|
|
||||||
#
|
|
||||||
# - = Do not Audit
|
|
||||||
# audit = Audit dropped packets.
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
?set tcpflags_action 'A_DROP'
|
|
||||||
?else
|
|
||||||
?error The parameter to TCPFlags must be 'audit' or '-'
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
?set tcpflags_action 'DROP'
|
|
||||||
?endif
|
|
||||||
|
|
||||||
$tcpflags_action - - ;;+ -p 6 --tcp-flags ALL FIN,URG,PSH
|
|
||||||
$tcpflags_action - - ;;+ -p 6 --tcp-flags ALL NONE
|
|
||||||
$tcpflags_action - - ;;+ -p 6 --tcp-flags SYN,RST SYN,RST
|
|
||||||
$tcpflags_action - - ;;+ -p 6 --tcp-flags SYN,FIN SYN,FIN
|
|
||||||
$tcpflags_action - - ;;+ -p tcp --syn --sport 0
|
|
@@ -1,35 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall --/usr/share/shorewall/action.Untracked
|
|
||||||
#
|
|
||||||
# Untracked Action
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# Untracked[([<action>])]
|
|
||||||
#
|
|
||||||
# Default action is DROP
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS DROP
|
|
||||||
|
|
||||||
#
|
|
||||||
# All logic for this action is supplied by the 'state' option in actions.std
|
|
||||||
#
|
|
@@ -1,38 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.allowBcast
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2017 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# allowBcast[([audit])]
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
?require AUDIT_TARGET
|
|
||||||
Broadcast(A_ACCEPT)
|
|
||||||
?else
|
|
||||||
?error "Invalid argument (@1) to allowBcast"
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
Broadcast(ACCEPT)
|
|
||||||
?endif
|
|
@@ -1,37 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.allowInvalid
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# allowInvalid[([audit])]
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
Invalid(A_ACCEPT)
|
|
||||||
?else
|
|
||||||
?error The first parameter to allowInvalid must be 'audit' or '-'
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
Invalid(ACCEPT)
|
|
||||||
?endif
|
|
@@ -1,38 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.allowMcast
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2017 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# allowMcast[([audit])]
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
?require AUDIT_TARGET
|
|
||||||
Multicast(A_ACCEPT)
|
|
||||||
?else
|
|
||||||
?error "Invalid argument (@1) to allowMcast"
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
Multicast(ACCEPT)
|
|
||||||
?endif
|
|
@@ -1,40 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.allowinUPnP
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2017 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# allowinUPnP[([audit])]
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
?require AUDIT_TARGET
|
|
||||||
A_ACCEPT - - 17 1900
|
|
||||||
A_ACCEPT - - 6 49152
|
|
||||||
?else
|
|
||||||
?error "Invalid argument (@1) to allowinUPnP"
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
ACCEPT - - 17 1900
|
|
||||||
ACCEPT - - 6 49152
|
|
||||||
?endif
|
|
@@ -1,39 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.dropBcast
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2017 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# dropBcast[([audit])]
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
?require AUDIT_TARGET
|
|
||||||
Broadcast(A_DROP)
|
|
||||||
?else
|
|
||||||
?error "Invalid argument (@1) to dropBcast"
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
Broadcast(DROP)
|
|
||||||
?endif
|
|
||||||
|
|
@@ -1,39 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.dropBcasts
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2017 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# dropBcasts[([audit])]
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
?require AUDIT_TARGET
|
|
||||||
Broadcast(A_DROP)
|
|
||||||
?else
|
|
||||||
?error "Invalid argument (@1) to dropBcasts"
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
Broadcast(DROP)
|
|
||||||
?endif
|
|
||||||
|
|
@@ -1,39 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.dropInvalid
|
|
||||||
#
|
|
||||||
# dropInvalid Action
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2011-2016 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# dropInvalid[([audit])]
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
Invalid(A_DROP)
|
|
||||||
?else
|
|
||||||
?error The first parameter to dropInvalid must be 'audit' or '-'
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
Invalid(DROP)
|
|
||||||
?endif
|
|
@@ -1,38 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.dropMcast
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2017 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# dropMcast[([audit])]
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
?require AUDIT_TARGET
|
|
||||||
Multicast(A_DROP)
|
|
||||||
?else
|
|
||||||
?error "Invalid argument (@1) to dropMcast"
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
Multicast(DROP)
|
|
||||||
?endif
|
|
@@ -1,38 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.dropNotSyn
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2017 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# dropNotSyn[([audit])]
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
?require AUDIT_TARGET
|
|
||||||
A_DROP {proto=6:!syn}
|
|
||||||
?else
|
|
||||||
?error "Invalid argument (@1) to dropNotSyn"
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
DROP {proto=6:!syn}
|
|
||||||
?endif
|
|
@@ -1,43 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.forwardUPnP
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2017 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# forwardUPnP
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?begin perl
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
use Shorewall::Config;
|
|
||||||
use Shorewall::Chains;
|
|
||||||
|
|
||||||
my $chainref = get_action_chain;
|
|
||||||
|
|
||||||
set_optflags( $chainref, DONT_OPTIMIZE );
|
|
||||||
|
|
||||||
add_commands( $chainref , '[ -f ${VARDIR}/.forwardUPnP ] && cat ${VARDIR}/.forwardUPnP >&3' );
|
|
||||||
|
|
||||||
1;
|
|
||||||
|
|
||||||
?end perl
|
|
@@ -1,22 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /etc/shorewall/action.mangletemplate
|
|
||||||
#
|
|
||||||
# Mangle Action Template
|
|
||||||
#
|
|
||||||
# This file is a template for files with names of the form
|
|
||||||
# /etc/shorewall/action.<action-name> where <action> is an
|
|
||||||
# ACTION defined with the mangle option in /etc/shorewall/actions.
|
|
||||||
#
|
|
||||||
# To define a new action:
|
|
||||||
#
|
|
||||||
# 1. Add the <action name> to /etc/shorewall/actions with the mangle option
|
|
||||||
# 2. Copy this file to /etc/shorewall/action.<action name>
|
|
||||||
# 3. Add the desired rules to that file.
|
|
||||||
#
|
|
||||||
# Please see http://shorewall.net/Actions.html for additional
|
|
||||||
# information.
|
|
||||||
#
|
|
||||||
# Columns are the same as in /etc/shorewall/mangle.
|
|
||||||
#
|
|
||||||
####################################################################################################################################################
|
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT USER TEST LENGTH TOS CONNBYTES HELPER PROBABILITY DSCP
|
|
@@ -1,39 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.rejNotSyn
|
|
||||||
#
|
|
||||||
# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt]
|
|
||||||
#
|
|
||||||
# (c) 2017 Tom Eastep (teastep@shorewall.net)
|
|
||||||
#
|
|
||||||
# Complete documentation is available at http://shorewall.net
|
|
||||||
#
|
|
||||||
# This program is free software; you can redistribute it and/or modify
|
|
||||||
# it under the terms of Version 2 of the GNU General Public License
|
|
||||||
# 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, write to the Free Software
|
|
||||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
||||||
#
|
|
||||||
# rejNotSyn[([audit])]
|
|
||||||
#
|
|
||||||
###############################################################################
|
|
||||||
|
|
||||||
DEFAULTS -
|
|
||||||
|
|
||||||
?if passed(@1)
|
|
||||||
?if @1 eq 'audit'
|
|
||||||
?require AUDIT_TARGET
|
|
||||||
A_REJECT {proto=6:!syn}
|
|
||||||
?else
|
|
||||||
?error "Invalid argument (@1) to rejNotSyn"
|
|
||||||
?endif
|
|
||||||
?else
|
|
||||||
REJECT(tcp-reset) {proto=6:!syn}
|
|
||||||
?endif
|
|
||||||
|
|
@@ -1,22 +0,0 @@
|
|||||||
#
|
|
||||||
# Shorewall -- /usr/share/shorewall/action.template
|
|
||||||
#
|
|
||||||
# Action Template
|
|
||||||
#
|
|
||||||
# This file is a template for files with names of the form
|
|
||||||
# /etc/shorewall/action.<action-name> where <action> is an
|
|
||||||
# ACTION defined in /etc/shorewall/actions.
|
|
||||||
#
|
|
||||||
# To define a new action:
|
|
||||||
#
|
|
||||||
# 1. Add the <action name> to /etc/shorewall/actions
|
|
||||||
# 2. Copy this file to /etc/shorewall/action.<action name>
|
|
||||||
# 3. Add the desired rules to that file.
|
|
||||||
#
|
|
||||||
# Please see http://shorewall.net/Actions.html for additional
|
|
||||||
# information.
|
|
||||||
#
|
|
||||||
# Columns are the same as in /etc/shorewall/rules.
|
|
||||||
#
|
|
||||||
#################################################################################################################################################################################################
|
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER MARK CONNLIMIT TIME HEADERS SWITCH HELPER
|
|
@@ -1,4 +1,4 @@
|
|||||||
Shoreline Firewall (Shorewall) Version 5
|
Shoreline Firewall (Shorewall) Version 4
|
||||||
----- ----
|
----- ----
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
|
@@ -1,10 +1,14 @@
|
|||||||
#
|
#
|
||||||
# Shorewall -- /usr/share/shorewall/macro.AMQP
|
# Shorewall version 4 - AMQP Macro
|
||||||
#
|
#
|
||||||
# This macro handles AMQP traffic.
|
# /usr/share/shorewall/macro.AMQP
|
||||||
|
#
|
||||||
|
# This macro handles AMQP traffic.
|
||||||
#
|
#
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER
|
?FORMAT 2
|
||||||
|
###############################################################################
|
||||||
|
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGIN RATE USER/
|
||||||
|
# PORT(S) PORT(S) DEST LIMIT GROUP
|
||||||
PARAM - - tcp 5672
|
PARAM - - tcp 5672
|
||||||
PARAM - - udp 5672
|
PARAM - - udp 5672
|
||||||
|
@@ -1,10 +1,15 @@
|
|||||||
#
|
#
|
||||||
# Shorewall -- /usr/share/shorewall/macro.A_AllowICMPs
|
# Shorewall version 4 - Audited AllowICMPs Macro
|
||||||
#
|
#
|
||||||
# This macro audits and accepts needed ICMP types.
|
# /usr/share/shorewall/macro.A_AllowICMPs
|
||||||
|
#
|
||||||
|
# This macro A_ACCEPTs needed ICMP types
|
||||||
#
|
#
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE
|
?FORMAT 2
|
||||||
|
###############################################################################
|
||||||
|
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGIN RATE USER/
|
||||||
|
# PORT(S) PORT(S) DEST LIMIT GROUP
|
||||||
|
|
||||||
?COMMENT Needed ICMP types
|
?COMMENT Needed ICMP types
|
||||||
|
|
||||||
|
@@ -1,10 +1,15 @@
|
|||||||
#
|
#
|
||||||
# Shorewall -- /usr/share/shorewall/macro.A_DropDNSrep
|
# Shorewall version 4 - Audited DropDNSrep Macro
|
||||||
#
|
#
|
||||||
# This macro audits and drops DNS UDP replies.
|
# /usr/share/shorewall/macro.A_DropDNSrep
|
||||||
|
#
|
||||||
|
# This macro silently audites and drops DNS UDP replies
|
||||||
#
|
#
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER
|
?FORMAT 2
|
||||||
|
###############################################################################
|
||||||
|
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGIN RATE USER/
|
||||||
|
# PORT(S) PORT(S) DEST LIMIT GROUP
|
||||||
|
|
||||||
?COMMENT Late DNS Replies
|
?COMMENT Late DNS Replies
|
||||||
|
|
||||||
|
@@ -1,10 +1,15 @@
|
|||||||
#
|
#
|
||||||
# Shorewall -- /usr/share/shorewall/macro.A_DropUPnP
|
# Shorewall version 4 - ADropUPnP Macro
|
||||||
#
|
#
|
||||||
# This macro audits and drops UPnP probes on UDP port 1900.
|
# /usr/share/shorewall/macro.A_DropUPnP
|
||||||
|
#
|
||||||
|
# This macro silently drops UPnP probes on UDP port 1900
|
||||||
#
|
#
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER
|
?FORMAT 2
|
||||||
|
###############################################################################
|
||||||
|
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGIN RATE USER/
|
||||||
|
# PORT(S) PORT(S) DEST LIMIT GROUP
|
||||||
|
|
||||||
?COMMENT UPnP
|
?COMMENT UPnP
|
||||||
|
|
||||||
|
@@ -1,13 +1,16 @@
|
|||||||
#
|
#
|
||||||
# Shorewall -- /usr/share/shorewall/macro.ActiveDir
|
# Shorewall version 4 - Samba 4 Macro
|
||||||
#
|
#
|
||||||
# This macro handles ports for Samba 4 Active Directory Service.
|
# /usr/share/shorewall/macro.ActiveDir
|
||||||
# You can copy this file to /etc/shorewall[6]/ and comment out the ports you
|
|
||||||
# do not want open.
|
|
||||||
#
|
#
|
||||||
|
# This macro handles ports for Samba 4 Active Directory Service
|
||||||
|
#
|
||||||
|
# You can comment out the ports you do not want open
|
||||||
|
#
|
||||||
|
#
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER
|
#ACTION SOURCE DEST PROTO DEST SOURCE RATE USER/
|
||||||
|
# PORT(S) PORT(S) LIMIT GROUP
|
||||||
PARAM - - tcp 389 #LDAP services
|
PARAM - - tcp 389 #LDAP services
|
||||||
PARAM - - udp 389
|
PARAM - - udp 389
|
||||||
PARAM - - tcp 636 #LDAP SSL
|
PARAM - - tcp 636 #LDAP SSL
|
||||||
|
18
Shorewall/Macros/macro.AllowICMPs
Normal file
18
Shorewall/Macros/macro.AllowICMPs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
#
|
||||||
|
# Shorewall version 4 - AllowICMPs Macro
|
||||||
|
#
|
||||||
|
# /usr/share/shorewall/macro.AllowICMPs
|
||||||
|
#
|
||||||
|
# This macro ACCEPTs needed ICMP types
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
?FORMAT 2
|
||||||
|
###############################################################################
|
||||||
|
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGIN RATE USER/
|
||||||
|
# PORT(S) PORT(S) DEST LIMIT GROUP
|
||||||
|
|
||||||
|
?COMMENT Needed ICMP types
|
||||||
|
|
||||||
|
DEFAULT ACCEPT
|
||||||
|
PARAM - - icmp fragmentation-needed
|
||||||
|
PARAM - - icmp time-exceeded
|
@@ -1,12 +1,17 @@
|
|||||||
#
|
#
|
||||||
# Shorewall -- /usr/share/shorewall/macro.Amanda
|
# Shorewall version 4 - Amanda Macro
|
||||||
#
|
#
|
||||||
# This macro handles connections required by the AMANDA backup system
|
# /usr/share/shorewall/macro.Amanda
|
||||||
# to back up remote nodes. It does not provide the ability to restore
|
#
|
||||||
# files from those nodes.
|
# This macro handles connections required by the AMANDA backup system
|
||||||
|
# to back up remote nodes. It does not provide the ability to restore
|
||||||
|
# files from those nodes.
|
||||||
#
|
#
|
||||||
###############################################################################
|
###############################################################################
|
||||||
#ACTION SOURCE DEST PROTO DPORT SPORT ORIGDEST RATE USER
|
?FORMAT 2
|
||||||
|
###############################################################################
|
||||||
|
#ACTION SOURCE DEST PROTO DEST SOURCE ORIGIN RATE USER/
|
||||||
|
# PORT(S) PORT(S) DEST LIMIT GROUP
|
||||||
|
|
||||||
?if ( __CT_TARGET && ! $AUTOHELPERS && __AMANDA_HELPER )
|
?if ( __CT_TARGET && ! $AUTOHELPERS && __AMANDA_HELPER )
|
||||||
PARAM - - udp 10080 { helper=amanda }
|
PARAM - - udp 10080 { helper=amanda }
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user