forked from extern/shorewall_code
Generate Auxillary conf file
git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@5563 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
parent
1e2192ab2d
commit
b38c69c61e
@ -25,6 +25,7 @@ package Shorewall::Common;
|
|||||||
require Exporter;
|
require Exporter;
|
||||||
use File::Basename;
|
use File::Basename;
|
||||||
use File::Temp qw/ tempfile tempdir /;
|
use File::Temp qw/ tempfile tempdir /;
|
||||||
|
use Cwd 'abs_path';
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
|
|
||||||
@ -47,6 +48,8 @@ our @EXPORT = qw(ALLIPv4
|
|||||||
pop_indent
|
pop_indent
|
||||||
copy
|
copy
|
||||||
copy1
|
copy1
|
||||||
|
create_temp_aux_config
|
||||||
|
finalize_aux_config
|
||||||
|
|
||||||
@allipv4
|
@allipv4
|
||||||
@rfc1918_networks
|
@rfc1918_networks
|
||||||
@ -102,6 +105,7 @@ sub create_temp_object( $ ) {
|
|||||||
|
|
||||||
eval {
|
eval {
|
||||||
( $file, $dir, $suffix ) = fileparse( $objectfile );
|
( $file, $dir, $suffix ) = fileparse( $objectfile );
|
||||||
|
$dir = abs_path $dir;
|
||||||
fatal_error "Directory $dir does not exist" unless -d $dir;
|
fatal_error "Directory $dir does not exist" unless -d $dir;
|
||||||
fatal_error "$dir is a Symbolic Link" if -l $dir;
|
fatal_error "$dir is a Symbolic Link" if -l $dir;
|
||||||
fatal_error "$objectfile is a Directory" if -d $objectfile;
|
fatal_error "$objectfile is a Directory" if -d $objectfile;
|
||||||
@ -110,7 +114,7 @@ sub create_temp_object( $ ) {
|
|||||||
( $object, $tempfile ) = tempfile ( 'tempfileXXXX' , DIR => $dir );
|
( $object, $tempfile ) = tempfile ( 'tempfileXXXX' , DIR => $dir );
|
||||||
};
|
};
|
||||||
|
|
||||||
fatal_error "$@" if $@;
|
die if $@;
|
||||||
|
|
||||||
$file = "$file.$suffix" if $suffix;
|
$file = "$file.$suffix" if $suffix;
|
||||||
$file = $dir . $file;
|
$file = $dir . $file;
|
||||||
@ -118,6 +122,8 @@ sub create_temp_object( $ ) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
sub finalize_object() {
|
sub finalize_object() {
|
||||||
|
close $object;
|
||||||
|
$object = 0;
|
||||||
rename $tempfile, $file or fatal_error "Cannot Rename $tempfile to $file: $!";
|
rename $tempfile, $file or fatal_error "Cannot Rename $tempfile to $file: $!";
|
||||||
chmod 0700, $file;
|
chmod 0700, $file;
|
||||||
}
|
}
|
||||||
@ -247,4 +253,21 @@ sub copy1( $ ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub create_temp_aux_config() {
|
||||||
|
eval {
|
||||||
|
( $object, $tempfile ) = tempfile ( 'tempfileXXXX' , DIR => $dir );
|
||||||
|
};
|
||||||
|
|
||||||
|
die if $@;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
sub finalize_aux_config() {
|
||||||
|
close $object;
|
||||||
|
$object = 0;
|
||||||
|
rename $tempfile, "$file.conf" or fatal_error "Cannot Rename $tempfile to $file.conf: $!";
|
||||||
|
|
||||||
|
progress_message3 "Shorewall configuration compiled to $file";
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
@ -28,7 +28,7 @@ use warnings;
|
|||||||
use Shorewall::Common;
|
use Shorewall::Common;
|
||||||
|
|
||||||
our @ISA = qw(Exporter);
|
our @ISA = qw(Exporter);
|
||||||
our @EXPORT = qw(find_file get_configuration report_capabilities propagateconfig append_file %config %env %capabilities );
|
our @EXPORT = qw(find_file get_configuration report_capabilities propagateconfig append_file generate_aux_config %config %env %capabilities );
|
||||||
our @EXPORT_OK = ();
|
our @EXPORT_OK = ();
|
||||||
our @VERSION = 1.00;
|
our @VERSION = 1.00;
|
||||||
|
|
||||||
@ -525,4 +525,39 @@ sub append_file( $ ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
;
|
sub generate_aux_config() {
|
||||||
|
sub conditionally_add_option( $ ) {
|
||||||
|
my $option = $_[0];
|
||||||
|
|
||||||
|
my $value = $config{$option};
|
||||||
|
|
||||||
|
emit "[ -n \"\${$option:=$value}\" ]" if $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub conditionally_add_option1( $ ) {
|
||||||
|
my $option = $_[0];
|
||||||
|
|
||||||
|
my $value = $config{$option};
|
||||||
|
|
||||||
|
emit "$option=\"$value\"" if $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
create_temp_aux_config;
|
||||||
|
|
||||||
|
my $date = localtime;
|
||||||
|
|
||||||
|
emit "#
|
||||||
|
# Shorewall auxiliary configuration file created by Shorewall version $ENV{VERSION} - $date
|
||||||
|
#";
|
||||||
|
|
||||||
|
for my $option qw(VERBOSITY LOGFILE LOGFORMAT IPTABLES PATH SHOREWALL_SHELL SUBSYSLOCK RESTOREFILE SAVE_IPSETS) {
|
||||||
|
conditionally_add_option $option;
|
||||||
|
}
|
||||||
|
|
||||||
|
conditionally_add_option1 'TC_ENABLED';
|
||||||
|
|
||||||
|
finalize_aux_config;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
|
@ -710,6 +710,7 @@ sub compile_firewall( $ ) {
|
|||||||
dump_chain_table if $ENV{DEBUG};
|
dump_chain_table if $ENV{DEBUG};
|
||||||
generate_script_3;
|
generate_script_3;
|
||||||
finalize_object;
|
finalize_object;
|
||||||
|
generate_aux_config;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user