mirror of
https://github.com/vincentmli/bpfire.git
synced 2026-04-24 01:42:58 +02:00
rules.pl: Autodetect ipset db file to restore.
This commit allows the ipset_restore() function to auto-detect which set file needs to be restored. Currently it is limitated to country codes only, because we currently does not support anything else. Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
This commit is contained in:
committed by
Peter Müller
parent
7b529f5417
commit
5841800969
@@ -945,8 +945,9 @@ sub ipset_get_sets () {
|
||||
sub ipset_restore ($) {
|
||||
my ($set) = @_;
|
||||
|
||||
my $file_prefix = "ipset4";
|
||||
my $db_file = "$Location::Functions::ipset_db_directory/$set.$file_prefix";
|
||||
# Empty variable to store the db file, which should be
|
||||
# restored by ipset.
|
||||
my $db_file;
|
||||
|
||||
# Check if the set already has been loaded.
|
||||
if($ipset_loaded_sets{$set}) {
|
||||
@@ -954,6 +955,15 @@ sub ipset_restore ($) {
|
||||
return;
|
||||
}
|
||||
|
||||
# Check if the given set name is a country code.
|
||||
if($set ~~ @locations) {
|
||||
# Libloc adds "ipset4" as prefix to all exported IPv4 data.
|
||||
my $file_prefix = "ipset4";
|
||||
|
||||
# Generate full path and filename for the ipset db file to restore.
|
||||
$db_file = "$Location::Functions::ipset_db_directory/$set.$file_prefix";
|
||||
}
|
||||
|
||||
# Check if the generated file exists.
|
||||
if (-f $db_file) {
|
||||
# Run ipset and restore the given set.
|
||||
|
||||
Reference in New Issue
Block a user