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:
Stefan Schantl
2022-03-02 20:43:05 +01:00
committed by Peter Müller
parent 7b529f5417
commit 5841800969

View File

@@ -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.