diff --git a/New/Shorewall/Common.pm b/New/Shorewall/Common.pm index 29fcb5b67..826893e43 100644 --- a/New/Shorewall/Common.pm +++ b/New/Shorewall/Common.pm @@ -76,6 +76,8 @@ our ( $command, $doing, $done ) = qw/ compile Compiling Compiled/; #describe the our $verbose; +my $timestamp; + my $object = 0; # Object file Handle Reference my $lastlineblank = 0; # Avoid extra blank lines in the output my $indent = ''; @@ -83,7 +85,8 @@ my ( $dir, $file ); # Object's Directory and File my $tempfile; # Temporary File Name BEGIN { - $verbose = $ENV{VERBOSE} || 0; + $verbose = $ENV{VERBOSE} || 0; + $timestamp = $ENV{TIMESTAMP} || ''; } # @@ -180,7 +183,7 @@ sub timestamp() { sub progress_message { if ( $verbose > 1 ) { - timestamp if $ENV{TIMESTAMP}; + timestamp if $timestamp; my $line = join( ' ', @_ ); $line =~ s/\s+/ /g; print "$line\n"; @@ -189,14 +192,14 @@ sub progress_message { sub progress_message2 { if ( $verbose > 0 ) { - timestamp if $ENV{TIMESTAMP}; + timestamp if $timestamp; print "@_\n"; } } sub progress_message3 { if ( $verbose >= 0 ) { - timestamp if $ENV{TIMESTAMP}; + timestamp if $timestamp; print "@_\n"; } } @@ -283,12 +286,13 @@ sub create_temp_object( $ ) { } -sub finalize_object() { +sub finalize_object( $ ) { + my $export = $_[0]; close $object; $object = 0; rename $tempfile, $file or fatal_error "Cannot Rename $tempfile to $file: $!"; chmod 0700, $file; - progress_message3 "Shorewall configuration compiled to $file" unless $ENV{EXPORT}; + progress_message3 "Shorewall configuration compiled to $file" unless $export; } sub create_temp_aux_config() { @@ -313,11 +317,6 @@ END { unlink $tempfile; } - my $exitstatus = $?; #Changed by system() - - system "rm -rf $ENV{TMP_DIR}" if $ENV{TMP_DIR}; - - $? = $exitstatus; } 1; diff --git a/New/Shorewall/Config.pm b/New/Shorewall/Config.pm index 860282429..64be5e6bc 100644 --- a/New/Shorewall/Config.pm +++ b/New/Shorewall/Config.pm @@ -224,6 +224,11 @@ my @openstack; my $currentfile; my $currentfilename; my $currentlinenumber = 0; +my $tmp_dir; + +BEGIN { + $tmp_dir = $ENV{TMP_DIR}; +} # # Issue a Warning Message @@ -499,7 +504,7 @@ sub get_configuration() { fatal_error "$file does not exist!"; } - $file = "$ENV{TMP_DIR}/capabilities"; + $file = "$tmp_dir/capabilities"; if ( -f $file ) { if ( -r _ ) { @@ -764,4 +769,14 @@ sub generate_aux_config() { } +END { + if ( $tmp_dir ) { + my $exitstatus = $?; #Changed by system() + + system "rm -rf $tmp_dir"; + + $? = $exitstatus; + } +} + 1; diff --git a/New/compiler.pl b/New/compiler.pl index e00af28d8..2543c315b 100755 --- a/New/compiler.pl +++ b/New/compiler.pl @@ -60,6 +60,12 @@ use Shorewall::Rules; use Shorewall::Proc; use Shorewall::Proxyarp; +my $export; + +BEGIN { + $export = $ENV{EXPORT}; +} + # # First stage of script generation. # @@ -75,7 +81,7 @@ sub generate_script_1 { emit "#\n# Compiled firewall script generated by Shorewall-perl $env{VERSION} - $date\n#"; - if ( $ENV{EXPORT} ) { + if ( $export ) { emitj ( 'SHAREDIR=/usr/share/shorewall-lite', 'CONFDIR=/etc/shorewall-lite', 'VARDIR=/var/lib/shorewall-lite', @@ -114,7 +120,7 @@ sub generate_script_1 { push_indent; - if ( $ENV{EXPORT} ) { + if ( $export ) { emitj ( '#', '# These variables are required by the library functions called in this script', '#', @@ -158,7 +164,7 @@ sub generate_script_1 { ); } - append_file 'params' if $config{EXPORTPARAMS}; + append_file 'params' if $export; emitj ( '', "STOPPING=", @@ -486,7 +492,7 @@ sub generate_script_2 () { save_progress_message 'Initializing...'; - if ( $ENV{EXPORT} ) { + if ( $export ) { my $mf = find_file 'modules'; if ( $mf ne "$env{SHAREDIR}/module" && -f $mf ) { @@ -635,7 +641,7 @@ sub compiler( $ ) { my $objectfile = $_[0]; - report_capabilities if $ENV{VERBOSE} > 1; + report_capabilities if $verbose > 1; require_capability( 'MULTIPORT' , "Shorewall-perl $env{VERSION}" ); require_capability( 'ADDRTYPE' , "Shorewall-perl $env{VERSION}" ); @@ -774,11 +780,11 @@ sub compiler( $ ) { # # Finish the script. # - finalize_object; + finalize_object ( $export ); # # And generate the auxilary config file # - generate_aux_config if $ENV{EXPORT}; + generate_aux_config if $export; } }