From 3e3cce534e17299b4bd65ae7dd34da15af031c3f Mon Sep 17 00:00:00 2001 From: Tom Eastep Date: Fri, 15 Mar 2013 10:25:32 -0700 Subject: [PATCH] Split ifupdown.sh into separate per-distro scripts. Signed-off-by: Tom Eastep --- Shorewall-init/ifupdown.debian.sh | 135 ++++++++++++++++++ Shorewall-init/ifupdown.fedora.sh | 107 ++++++++++++++ .../{ifupdown.sh => ifupdown.suse.sh} | 126 ++++------------ Shorewall-init/install.sh | 7 +- 4 files changed, 275 insertions(+), 100 deletions(-) create mode 100644 Shorewall-init/ifupdown.debian.sh create mode 100644 Shorewall-init/ifupdown.fedora.sh rename Shorewall-init/{ifupdown.sh => ifupdown.suse.sh} (64%) diff --git a/Shorewall-init/ifupdown.debian.sh b/Shorewall-init/ifupdown.debian.sh new file mode 100644 index 000000000..2158edede --- /dev/null +++ b/Shorewall-init/ifupdown.debian.sh @@ -0,0 +1,135 @@ +#!/bin/sh +# +# Debian ifupdown script for Shorewall-based products +# +# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt] +# +# (c) 2010,2013 - Tom Eastep (teastep@shorewall.net) +# +# Shorewall 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. +# + +setstatedir() { + local statedir + if [ -f ${CONFDIR}/${PRODUCT}/vardir ]; then + statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR ) + fi + + [ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARDIR}/${PRODUCT} + + if [ ! -x $STATEDIR/firewall ]; then + if [ $PRODUCT = shorewall -o $PRODUCT = shorewall6 ]; then + ${SBINDIR}/$PRODUCT compile + fi + fi +} + +Debian_ppp() { + NEWPRODUCTS= + INTERFACE="$1" + + case $0 in + /etc/ppp/ip-*) + # + # IPv4 + # + for product in $PRODUCTS; do + case $product in + shorewall|shorewall-lite) + NEWPRODUCTS="$NEWPRODUCTS $product"; + ;; + esac + done + ;; + /etc/ppp/ipv6-*) + # + # IPv6 + # + for product in $PRODUCTS; do + case $product in + shorewall6|shorewall6-lite) + NEWPRODUCTS="$NEWPRODUCTS $product"; + ;; + esac + done + ;; + *) + exit 0 + ;; + esac + + PRODUCTS="$NEWPRODUCTS" + + case $0 in + *up/*) + COMMAND=up + ;; + *) + COMMAND=down + ;; + esac +} + +IFUPDOWN=0 +PRODUCTS= + +# +# The installer may alter this +# +. /usr/share/shorewall/shorewallrc + +if [ -f /etc/default/shorewall-init ]; then + . /etc/default/shorewall-init +elif [ -f /etc/sysconfig/shorewall-init ]; then + . /etc/sysconfig/shorewall-init +fi + +[ "$IFUPDOWN" = 1 -a -n "$PRODUCTS" ] || exit 0 + +case $0 in + /etc/ppp*) + # + # Debian ppp + # + Debian_ppp + ;; + *) + # + # Debian ifupdown system + # + INTERFACE="$IFACE" + + if [ "$MODE" = start ]; then + COMMAND=up + elif [ "$MODE" = stop ]; then + COMMAND=down + else + exit 0 + fi + ;; +esac + +[ -n "$LOGFILE" ] || LOGFILE=/dev/null + +for PRODUCT in $PRODUCTS; do + setstatedir + + if [ -x $VARLIB/$PRODUCT/firewall ]; then + ( ${VARLIB}/$PRODUCT/firewall -V0 $COMMAND $INTERFACE >> $LOGFILE 2>&1 ) || true + fi +done + +exit 0 diff --git a/Shorewall-init/ifupdown.fedora.sh b/Shorewall-init/ifupdown.fedora.sh new file mode 100644 index 000000000..2af199203 --- /dev/null +++ b/Shorewall-init/ifupdown.fedora.sh @@ -0,0 +1,107 @@ +#!/bin/sh +# +# Redhat/Fedora/Centos/Foobar ifupdown script for Shorewall-based products +# +# This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt] +# +# (c) 2010,2013 - Tom Eastep (teastep@shorewall.net) +# +# Shorewall 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. +# + +setstatedir() { + local statedir + if [ -f ${CONFDIR}/${PRODUCT}/vardir ]; then + statedir=$( . /${CONFDIR}/${PRODUCT}/vardir && echo $VARDIR ) + fi + + [ -n "$statedir" ] && STATEDIR=${statedir} || STATEDIR=${VARDIR}/${PRODUCT} + + if [ ! -x $STATEDIR/firewall ]; then + if [ $PRODUCT = shorewall -o $PRODUCT = shorewall6 ]; then + ${SBINDIR}/$PRODUCT compile + fi + fi +} + +IFUPDOWN=0 +PRODUCTS= + +# +# The installer may alter this +# +. /usr/share/shorewall/shorewallrc + +if [ -f /etc/default/shorewall-init ]; then + . /etc/default/shorewall-init +elif [ -f /etc/sysconfig/shorewall-init ]; then + . /etc/sysconfig/shorewall-init +fi + +[ "$IFUPDOWN" = 1 -a -n "$PRODUCTS" ] || exit 0 + +PHASE='' + +case $0 in + /etc/ppp*) + INTERFACE="$1" + + case $0 in + *ip-up.local) + COMMAND=up + ;; + *ip-down.local) + COMMAND=down + ;; + *) + exit 0 + ;; + esac + ;; + *) + # + # RedHat ifup/down system + # + INTERFACE="$1" + + case $0 in + *ifup*) + COMMAND=up + ;; + *ifdown*) + COMMAND=down + ;; + *dispatcher.d*) + COMMAND="$2" + ;; + *) + exit 0 + ;; + esac + ;; +esac + +[ -n "$LOGFILE" ] || LOGFILE=/dev/null + +for PRODUCT in $PRODUCTS; do + setstatedir + + if [ -x $VARLIB/$PRODUCT/firewall ]; then + ( ${VARLIB}/$PRODUCT/firewall -V0 $COMMAND $INTERFACE >> $LOGFILE 2>&1 ) || true + fi +done + +exit 0 diff --git a/Shorewall-init/ifupdown.sh b/Shorewall-init/ifupdown.suse.sh similarity index 64% rename from Shorewall-init/ifupdown.sh rename to Shorewall-init/ifupdown.suse.sh index 4674a41bd..2ad97c7d9 100644 --- a/Shorewall-init/ifupdown.sh +++ b/Shorewall-init/ifupdown.suse.sh @@ -1,10 +1,10 @@ #!/bin/sh # -# ifupdown script for Shorewall-based products +# SuSE ifupdown script for Shorewall-based products # # This program is under GPL [http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt] # -# (c) 2010 - Tom Eastep (teastep@shorewall.net) +# (c) 2010,2013 - Tom Eastep (teastep@shorewall.net) # # Shorewall documentation is available at http://shorewall.net # @@ -37,7 +37,7 @@ setstatedir() { fi } -Debian_SuSE_ppp() { +SuSE_ppp() { NEWPRODUCTS= INTERFACE="$1" @@ -99,105 +99,35 @@ fi [ "$IFUPDOWN" = 1 -a -n "$PRODUCTS" ] || exit 0 -if [ -f /etc/debian_version ]; then - case $0 in - /etc/ppp*) - # - # Debian ppp - # - Debian_SuSE_ppp - ;; - - *) - # - # Debian ifupdown system - # - INTERFACE="$IFACE" +PHASE='' - if [ "$MODE" = start ]; then +case $0 in + /etc/ppp*) + # + # SUSE ppp + # + SuSE_ppp + ;; + + *) + # + # SuSE ifupdown system + # + INTERFACE="$2" + + case $0 in + *if-up.d*) COMMAND=up - elif [ "$MODE" = stop ]; then + ;; + *if-down.d*) COMMAND=down - else + ;; + *) exit 0 - fi - ;; - esac -elif [ -f /etc/SuSE-release ]; then - PHASE='' - - case $0 in - /etc/ppp*) - # - # SUSE ppp - # - Debian_SuSE_ppp - ;; - - *) - # - # SuSE ifupdown system - # - INTERFACE="$2" - - case $0 in - *if-up.d*) - COMMAND=up - ;; - *if-down.d*) - COMMAND=down - ;; - *) - exit 0 - ;; - esac - ;; - esac -else - # - # Assume RedHat/Fedora/CentOS/Foobar/... - # - PHASE='' - - case $0 in - /etc/ppp*) - INTERFACE="$1" - - case $0 in - *ip-up.local) - COMMAND=up - ;; - *ip-down.local) - COMMAND=down - ;; - *) - exit 0 - ;; - esac - ;; - *) - # - # RedHat ifup/down system - # - INTERFACE="$1" - - case $0 in - *ifup*) - COMMAND=up - ;; - *ifdown*) - COMMAND=down - ;; - *dispatcher.d*) - COMMAND="$2" - ;; - *) - exit 0 - ;; - esac - ;; - esac -fi + ;; + esac + ;; +esac [ -n "$LOGFILE" ] || LOGFILE=/dev/null diff --git a/Shorewall-init/install.sh b/Shorewall-init/install.sh index 9e362c7f0..912be9253 100755 --- a/Shorewall-init/install.sh +++ b/Shorewall-init/install.sh @@ -342,6 +342,7 @@ if [ $HOST = debian ]; then fi install_file sysconfig ${DESTDIR}/etc/default/shorewall-init 0644 + IFUPDOWN=ifupdown.debian.sh fi else if [ -n "$DESTDIR" ]; then @@ -359,14 +360,16 @@ else if [ -d ${DESTDIR}${SYSCONFDIR} -a ! -f ${DESTDIR}${SYSCONFDIR}/shorewall-init ]; then install_file sysconfig ${DESTDIR}${SYSCONFDIR}/shorewall-init 0644 - fi + fi + + [ $HOST = suse ] && IFUPDOWN=ifupdown.suse.sh || IFUPDOWN=ifupdown.fedora.sh fi # # Install the ifupdown script # -cp ifupdown.sh ifupdown +cp $IFUPDOWN ifupdown [ "${SHAREDIR}" = /usr/share ] || eval sed -i \'s\|/usr/share/\|${SHAREDIR}/\|\' ifupdown