Add variable expansion to INCLUDE

git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@1783 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
teastep 2004-11-29 15:05:16 +00:00
parent d00fda4e1f
commit 40dd271a84
6 changed files with 39 additions and 9 deletions

View File

@ -89,3 +89,5 @@ Changes in 2.0.12
1) Correct typo in shorewall.conf. 1) Correct typo in shorewall.conf.
2) Fix "shorewall add" and "shorewall delete" with bridging. 2) Fix "shorewall add" and "shorewall delete" with bridging.
3) Implement variable expansion in INCLUDE directives

View File

@ -52,9 +52,9 @@ qt()
# #
# Perform variable substitution on the passed argument and echo the result # Perform variable substitution on the passed argument and echo the result
# #
expand() # $1 = contents of variable which may be the name of another variable expand() # $@ = contents of variable which may be the name of another variable
{ {
eval echo \"$1\" eval echo \"$@\"
} }
# #
@ -104,7 +104,8 @@ ensure_config_path() {
# #
# Find a File -- For relative file name, look first in $SHOREWALL_DIR then in /etc/shorewall # Find a File -- For relative file name, look first in $SHOREWALL_DIR then in /etc/shorewall
# #
find_file() find_file
()
{ {
local saveifs= directory local saveifs= directory
@ -434,7 +435,7 @@ read_file() # $1 = file name, $2 = nest count
while read first rest; do while read first rest; do
if [ "x$first" = "xINCLUDE" ]; then if [ "x$first" = "xINCLUDE" ]; then
if [ $2 -lt 4 ]; then if [ $2 -lt 4 ]; then
read_file $(find_file ${rest%#*}) $(($2 + 1)) read_file $(find_file $(expand ${rest%#*})) $(($2 + 1))
else else
echo " WARNING: INCLUDE in $1 ignored (nested too deeply)" >&2 echo " WARNING: INCLUDE in $1 ignored (nested too deeply)" >&2
fi fi
@ -452,7 +453,7 @@ read_file() # $1 = file name, $2 = nest count
# Function for including one file into another # Function for including one file into another
# #
INCLUDE() { INCLUDE() {
. $(find_file $@) . $(find_file $(expand $@))
} }
# #

View File

@ -204,3 +204,17 @@ Problems corrected in 2.0.12
shorewall add br0:eth2:192.168.1.3 OK shorewall add br0:eth2:192.168.1.3 OK
shorewall delete br0:eth2:192.168.1.3 OK shorewall delete br0:eth2:192.168.1.3 OK
-----------------------------------------------------------------------
New Features in 2.0.12
1) Variable expansion may now be used with the INCLUDE directive.
Example:
/etc/shorewall/params
FILE=/etc/foo/bar
Any other config file:
INCLUDE $FILE

View File

@ -158,3 +158,6 @@ Changes since 2.0.3
76) Add "shorewall show zones" 76) Add "shorewall show zones"
77) Remove dependency of "show zones" on dynamic zones. 77) Remove dependency of "show zones" on dynamic zones.
78) Implement variable expansion in INCLUDE directives

View File

@ -73,9 +73,9 @@ qt()
# #
# Perform variable substitution on the passed argument and echo the result # Perform variable substitution on the passed argument and echo the result
# #
expand() # $1 = contents of variable which may be the name of another variable expand() # $@ = contents of variable which may be the name of another variable
{ {
eval echo \"$1\" eval echo \"$@\"
} }
# #
@ -459,7 +459,7 @@ read_file() # $1 = file name, $2 = nest count
while read first rest; do while read first rest; do
if [ "x$first" = "xINCLUDE" ]; then if [ "x$first" = "xINCLUDE" ]; then
if [ $2 -lt 4 ]; then if [ $2 -lt 4 ]; then
read_file $(find_file ${rest%#*}) $(($2 + 1)) read_file $(find_file $(expand ${rest%#*})) $(($2 + 1))
else else
echo " WARNING: INCLUDE in $1 ignored (nested too deeply)" >&2 echo " WARNING: INCLUDE in $1 ignored (nested too deeply)" >&2
fi fi
@ -477,7 +477,7 @@ read_file() # $1 = file name, $2 = nest count
# Function for including one file into another # Function for including one file into another
# #
INCLUDE() { INCLUDE() {
. $(find_file $@) . $(find_file $(expand $@))
} }
# #

View File

@ -734,4 +734,14 @@ New Features:
ursa:/etc/shorewall # ursa:/etc/shorewall #
32) Variable expansion may now be used with the INCLUDE directive.
Example:
/etc/shorewall/params
FILE=/etc/foo/bar
Any other config file:
INCLUDE $FILE