ids.cgi: Allow to configure IDS/IPS mode individually for each provider.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
This commit is contained in:
Stefan Schantl
2022-03-20 16:52:19 +01:00
parent 4c98be8bd2
commit 443ad51d1c

View File

@@ -696,6 +696,7 @@ if ($cgiparams{'RULESET'} eq $Lang::tr{'ids apply'}) {
my $provider = $cgiparams{'PROVIDER'};
my $subscription_code = $cgiparams{'SUBSCRIPTION_CODE'};
my $status_autoupdate;
my $mode;
# Handle autoupdate checkbox.
if ($cgiparams{'ENABLE_AUTOUPDATE'} eq "on") {
@@ -704,6 +705,13 @@ if ($cgiparams{'RULESET'} eq $Lang::tr{'ids apply'}) {
$status_autoupdate = "disabled";
}
# Handle monitor traffic only checkbox.
if ($cgiparams{'MONITOR_TRAFFIC_ONLY'} eq "on") {
$mode = "IDS";
} else {
$mode = "IPS";
}
# Check if we are going to add a new provider.
if ($cgiparams{'PROVIDERS'} eq "$Lang::tr{'add'}") {
# Loop through the hash of used providers.
@@ -766,7 +774,7 @@ if ($cgiparams{'RULESET'} eq $Lang::tr{'ids apply'}) {
}
# Add/Modify the entry to/in the used providers hash..
$used_providers{$id} = ["$provider", "$subscription_code", "$status_autoupdate", "$status"];
$used_providers{$id} = ["$provider", "$subscription_code", "$status_autoupdate", "$status", "$mode"];
# Write the changed hash to the providers settings file.
&General::writehasharray($IDS::providers_settings_file, \%used_providers);
@@ -1029,9 +1037,6 @@ sub show_mainpage() {
$checked{'ENABLE_IDS'}{'off'} = '';
$checked{'ENABLE_IDS'}{'on'} = '';
$checked{'ENABLE_IDS'}{$idssettings{'ENABLE_IDS'}} = "checked='checked'";
$checked{'MONITOR_TRAFFIC_ONLY'}{'off'} = '';
$checked{'MONITOR_TRAFFIC_ONLY'}{'on'} = '';
$checked{'MONITOR_TRAFFIC_ONLY'}{$idssettings{'MONITOR_TRAFFIC_ONLY'}} = "checked='checked'";
$selected{'AUTOUPDATE_INTERVAL'}{'off'} = '';
$selected{'AUTOUPDATE_INTERVAL'}{'daily'} = '';
$selected{'AUTOUPDATE_INTERVAL'}{'weekly'} = '';
@@ -1102,8 +1107,6 @@ print <<END
<input type='checkbox' name='ENABLE_IDS' $checked{'ENABLE_IDS'}{'on'}>&nbsp;$Lang::tr{'ids enable'}
</td>
<td class='base' colspan='2'>
<input type='checkbox' name='MONITOR_TRAFFIC_ONLY' $checked{'MONITOR_TRAFFIC_ONLY'}{'on'}>&nbsp;$Lang::tr{'ids monitor traffic only'}
</td>
</tr>
@@ -1698,6 +1701,12 @@ END
$checked{'ENABLE_AUTOUPDATE'} = "checked='checked'";
}
# Check if the monitor traffic only mode is set for this provider.
if ($used_providers{$cgiparams{'ID'}}[4] eq "IDS") {
# Set the checkbox to be checked.
$checked{'MONITOR_TRAFFIC_ONLY'} = "checked='checked'";
}
# Display section to force an rules update and to reset the provider.
&show_additional_provider_actions();
@@ -1795,9 +1804,13 @@ print <<END
</tr>
<tr>
<td colspan='2'>
<td>
<input type='checkbox' name='ENABLE_AUTOUPDATE' $checked{'ENABLE_AUTOUPDATE'}>&nbsp;$Lang::tr{'ids enable automatic updates'}
</td>
<td>
<input type='checkbox' name='MONITOR_TRAFFIC_ONLY' $checked{'MONITOR_TRAFFIC_ONLY'}>&nbsp;$Lang::tr{'ids monitor traffic only'}
</td>
</tr>
<tr>