From: Stefan Schantl Date: Fri, 2 Apr 2021 09:45:00 +0000 (+0200) Subject: update-ids-ruleset: Port script to work with multiple providers. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1194bed87c0e2a63add9ee4101e2b9b0cef4590a;p=people%2Fstevee%2Fipfire-2.x.git update-ids-ruleset: Port script to work with multiple providers. Signed-off-by: Stefan Schantl --- diff --git a/src/scripts/update-ids-ruleset b/src/scripts/update-ids-ruleset index dbe5b6849c..3a3f17443e 100644 --- a/src/scripts/update-ids-ruleset +++ b/src/scripts/update-ids-ruleset @@ -2,7 +2,7 @@ ############################################################################### # # # IPFire.org - A linux based firewall # -# Copyright (C) 2018 IPFire Team # +# Copyright (C) 2018-2021 IPFire Team # # # # This program is free software: you can redistribute it and/or modify # # it under the terms of the GNU General Public License as published by # @@ -26,6 +26,9 @@ require '/var/ipfire/general-functions.pl'; require "${General::swroot}/ids-functions.pl"; require "${General::swroot}/lang.pl"; +# Hash to store the configured providers. +my %providers = (); + # The user and group name as which this script should be run. my $run_as = 'nobody'; @@ -63,20 +66,36 @@ if(&IDS::checkdiskspace()) { # Lock the IDS page. &IDS::lock_ids_page(); -# Call the download function and gather the new ruleset. -if(&IDS::downloadruleset()) { - # Store error message for displaying in the WUI. - &IDS::_store_error_message("$Lang::tr{'could not download latest updates'}"); +# Grab the configured providers. +&General::readhasharray("$IDS::providers_settings_file", \%providers); - # Unlock the IDS page. - &IDS::unlock_ids_page(); +# Loop through the array of available providers. +foreach my $id (keys %providers) { + # Assign some nice variabled. + my $provider = $providers{$id}[0]; + my $autoupdate_status = $providers{$id}[3]; - # Exit. - exit 0; -} + # Skip the provider if autoupdate is not enabled. + next unless($autoupdate_status eq "enabled"); -# Set correct ownership for the downloaded tarball. -&IDS::set_ownership("$IDS::rulestarball"); + # Call the download function and gather the new ruleset for the current processed provider. + if(&IDS::downloadruleset($provider)) { + # Store error message for displaying in the WUI. + &IDS::_store_error_message("$provider: $Lang::tr{'could not download latest updates'}"); + + # Unlock the IDS page. + &IDS::unlock_ids_page(); + + # Exit. + exit 0; + } + + # Get path and name of the stored rules file or archive. + my $stored_file = &IDS::_get_dl_rulesfile($provider); + + # Set correct ownership for the downloaded tarball. + &IDS::set_ownership("$stored_file"); +} # Call oinkmaster to alter the ruleset. &IDS::oinkmaster();