]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/commitdiff
rules.pl: Autodetect ipset db file to restore.
authorStefan Schantl <stefan.schantl@ipfire.org>
Wed, 2 Mar 2022 19:43:05 +0000 (20:43 +0100)
committerPeter Müller <peter.mueller@ipfire.org>
Sat, 5 Mar 2022 14:32:44 +0000 (14:32 +0000)
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>
config/firewall/rules.pl

index b12764d187a4175d4412e379c23bd53ac5b18a90..b8c602538bde38d6adca20725126b71188480452 100644 (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.