Expand variables in shorewallrc

Signed-off-by: Tom Eastep <teastep@shorewall.net>
This commit is contained in:
Tom Eastep 2012-03-24 21:26:20 -07:00
parent 217d5e636c
commit fc4aaa97c6

View File

@ -2096,7 +2096,7 @@ sub set_action_param( $$ ) {
# #
# Expand Shell Variables in the passed buffer using %params and @actparms # Expand Shell Variables in the passed buffer using %params and @actparms
# #
sub expand_variables( \$ ) { sub expand_variables( \$;$ ) {
my ( $lineref, $count ) = ( $_[0], 0 ); my ( $lineref, $count ) = ( $_[0], 0 );
# $1 $2 $3 - $4 # $1 $2 $3 - $4
while ( $$lineref =~ m( ^(.*?) \$({)? (\w+) (?(2)}) (.*)$ )x ) { while ( $$lineref =~ m( ^(.*?) \$({)? (\w+) (?(2)}) (.*)$ )x ) {
@ -2110,6 +2110,8 @@ sub expand_variables( \$ ) {
$val = $actparms[$var]; $val = $actparms[$var];
} elsif ( exists $params{$var} ) { } elsif ( exists $params{$var} ) {
$val = $params{$var}; $val = $params{$var};
} elsif ( $_[1] && exists $shorewallrc{$var} ) {
$val = $shorewallrc{$var}
} else { } else {
fatal_error "Undefined shell variable (\$$var)" unless exists $config{$var}; fatal_error "Undefined shell variable (\$$var)" unless exists $config{$var};
$val = $config{$var}; $val = $config{$var};
@ -2278,11 +2280,14 @@ sub process_shorewallrc() {
while ( read_a_line1 ) { while ( read_a_line1 ) {
if ( $currentline =~ /^([a-zA-Z]\w*)=(.*)$/ ) { if ( $currentline =~ /^([a-zA-Z]\w*)=(.*)$/ ) {
my ($var, $val) = ($1, $2); my ($var, $val) = ($1, $2);
$shorewallrc{$var} = $val =~ /^\"([^\"]*)\"$/ ? $1 : $val; $val = $1 if $val =~ /^\"([^\"]*)\"$/;
expand_variables( $val, 1 ) if supplied $val;
$shorewallrc{$var} = $val;
} else { } else {
fatal_error "Unrecognized shorewallrc entry"; fatal_error "Unrecognized shorewallrc entry";
} }
} }
} }
} }