Bring 'export' command forward

git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@4351 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
teastep 2006-08-13 15:34:52 +00:00
parent 6545adfe5b
commit 3bc36199e5
4 changed files with 93 additions and 2 deletions

View File

@ -576,7 +576,7 @@ mktempdir() {
# Not all versions of the BSD mktemp support the -d option under Linux # Not all versions of the BSD mktemp support the -d option under Linux
# #
qt rm -rf /tmp/shorewall-$$ qt rm -rf /tmp/shorewall-$$
mkdir -p /tmp/shorewall-$$ chmod 700 /tmp/shorewall-$$ && echo /tmp/shorewall-$$ mkdir -p /tmp/shorewall-$$ && chmod 700 /tmp/shorewall-$$ && echo /tmp/shorewall-$$
;; ;;
*) *)
error_message "ERROR:Internal error in mktempdir" error_message "ERROR:Internal error in mktempdir"

View File

@ -121,6 +121,27 @@ dump)
When -x is given, that option is also passed to iptables to display actual packet and byte counts." When -x is given, that option is also passed to iptables to display actual packet and byte counts."
;; ;;
export)
echo "export: export [ <directory1> ] <target>
If <directory1> is omitted, then the current working directory is assumed.
Causes the shorewall configuration in <directory1> to be compiled into a
program called '<directory1>/firewall'. If compilation is successful,
the '<directory1>/firewall' script is copied via scp to the specified
<target>
<target> is of the form [user@]<system>:[<directory1>]
Example:
shorewall export admin@gateway:~
This command would compile the configuration in the current working directory
then copy the 'firewall' (and firewall.conf) files to admin's home directory
on system 'gateway'"
;;
forget) forget)
echo "forget: forget [ <file name> ] echo "forget: forget [ <file name> ]
Deletes /var/lib/shorewall/<file name>. If no <file name> is given then Deletes /var/lib/shorewall/<file name>. If no <file name> is given then

View File

@ -266,7 +266,7 @@ chmod 755 ${PREFIX}/usr/share/shorewall/configfiles
# #
run_install $OWNERSHIP -m 0644 shorewall.conf ${PREFIX}/usr/share/shorewall/configfiles/shorewall.conf run_install $OWNERSHIP -m 0644 shorewall.conf ${PREFIX}/usr/share/shorewall/configfiles/shorewall.conf
qt mywhich perl && perl -p -w -i -e 's|^CONFIG_PATH=.*|CONFIG_PATH=/usr/share/shorewall/configfiles:/usr/share/shorewall|;' /usr/share/shorewall/configfiles/shorewall.conf qt mywhich perl && perl -p -w -i -e 's|^CONFIG_PATH=.*|CONFIG_PATH=/usr/share/shorewall/configfiles:/usr/share/shorewall|;' ${PREFIX}/usr/share/shorewall/configfiles/shorewall.conf
if [ ! -f ${PREFIX}/etc/shorewall/shorewall.conf ]; then if [ ! -f ${PREFIX}/etc/shorewall/shorewall.conf ]; then
run_install $OWNERSHIP -m 0644 shorewall.conf ${PREFIX}/etc/shorewall/shorewall.conf run_install $OWNERSHIP -m 0644 shorewall.conf ${PREFIX}/etc/shorewall/shorewall.conf

View File

@ -1377,6 +1377,71 @@ reload_command() # $* = original arguments less the command.
fi fi
fi fi
} }
#
# Export command executor
#
export_command() # $* = original arguments less the command.
{
local verbose=$(make_verbose) file= finished=0 directory target
while [ $finished -eq 0 -a $# -gt 0 ]; do
option=$1
case $option in
-*)
option=${option#-}
while [ -n "$option" ]; do
case $option in
-)
finished=1
option=
;;
*)
usage 1
;;
esac
done
shift
;;
*)
finished=1
;;
esac
done
case $# in
1)
directory="."
target=$1
;;
2)
directory=$1
target=$2
;;
*)
usage 1
;;
esac
case $target in
*:*)
;;
*)
fatal_error "Target must be of the form [user@]<system>:[<directory>]"
;;
esac
file=$(resolve_file $directory/firewall)
if shorewall $debugging $verbose compile -e $directory $directory/firewall && \
echo "Copying $file and ${file}.conf to ${target#*@}..." && \
scp $directory/firewall $directory/firewall.conf $target
then
progress_message3 "Copy complete"
fi
}
# #
# Help information # Help information
# #
@ -1399,6 +1464,7 @@ usage() # $1 = exit status
echo " compile [ -e ] [ <directory name> ] <path name>" echo " compile [ -e ] [ <directory name> ] <path name>"
echo " drop <address> ..." echo " drop <address> ..."
echo " dump [ -x ]" echo " dump [ -x ]"
echo " export [ <directory1> ] [<user>@]<system>:[<directory2>]"
echo " forget [ <file name> ]" echo " forget [ <file name> ]"
echo " help [ <command > | host | address ]" echo " help [ <command > | host | address ]"
echo " hits" echo " hits"
@ -1717,6 +1783,10 @@ case "$COMMAND" in
shift shift
reload_command $@ reload_command $@
;; ;;
export)
shift
export_command $@
;;
status) status)
[ $# -eq 1 ] || usage 1 [ $# -eq 1 ] || usage 1
echo "Shorewall-$version Status at $HOSTNAME - $(date)" echo "Shorewall-$version Status at $HOSTNAME - $(date)"