Correct handling of nested shell variable expansion; update extension script doc

git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@6773 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
teastep 2007-07-03 21:22:08 +00:00
parent 42e9e8bc45
commit aa991fcf45
2 changed files with 17 additions and 10 deletions

View File

@ -551,10 +551,9 @@ sub read_a_line {
#
$line = '', next if $line =~ /^\s*$/;
#
# Expand Shell Variables using %ENV
# Expand Shell Variables using %ENV
#
$line = join( '', $1 , ( $ENV{$2} || '' ) , $3 ) while $line =~ /^(.*?)\${([a-zA-Z]\w*)}(.*)$/;
$line = join( '', $1 , ( $ENV{$2} || '' ) , $3 ) while $line =~ /^(.*?)\$([a-zA-Z]\w*)(.*)$/;
$line = join( '', $1 , ( $ENV{$2} || '' ) , $3 ) while $line =~ /^(.*?)\$([a-zA-Z]\w*)(.*)$/ || $line =~ /^(.*?)\${([a-zA-Z]\w*)}(.*)$/;
if ( $line =~ /^\s*INCLUDE\s/ ) {

View File

@ -432,7 +432,7 @@
will abort the compilation.</para>
<para>All scripts will need to begin with the following
line:<programlisting>use Shorewall::Chains;</programlisting> For more
line:<programlisting>use Shorewall::Chains;</programlisting>For more
complex scripts, you may need to 'use' other Shorewall Perl modules --
browse <filename
class="directory">/usr/share/shorewall-perl/Shorewall/</filename> to see
@ -479,12 +479,20 @@
<member>maclog</member>
</simplelist>Note that in the 'initdone' script, there is no default
chain ($chainref). You can objtain a reference to a standard chain
by:<programlisting>my $chainref = $chain_table{&lt;table&gt;}{&lt;chain name&gt;};</programlisting>Example:<programlisting>my $chainref = $chain_table{filter}{INPUT};</programlisting>The
continue script has been eliminated because it no longer make any sense
under Shorewall-perl. This script was designed to allow you to add
special temporary rules during [re]start. Shorewall-perl doesn't need
such rules.</para>
chain ($chainref). You can obtain a reference to a standard chain
by:<programlisting>my $chainref = $chain_table{&lt;table&gt;}{&lt;chain name&gt;};</programlisting>Example:<programlisting>my $chainref = $chain_table{filter}{INPUT};</programlisting></para>
<para>You can also use the hash references $filter_table, $mangle_table
and $nat_table to access chain references.</para>
<para>Example:</para>
<programlisting>my $chainref = $filter_table-&gt;{INPUT}; #Same as above with a few less keystrokes; runs faster too</programlisting>
<para>The continue script has been eliminated because it no longer make
any sense under Shorewall-perl. This script was designed to allow you to
add special temporary rules during [re]start. Shorewall-perl doesn't
need such rules.</para>
</listitem>
</itemizedlist>
</article>