]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
ids.cgi: Allow to configure IDS/IPS mode individually for each provider.
authorStefan Schantl <stefan.schantl@ipfire.org>
Sun, 20 Mar 2022 15:52:19 +0000 (16:52 +0100)
committerStefan Schantl <stefan.schantl@ipfire.org>
Sat, 26 Mar 2022 10:37:21 +0000 (11:37 +0100)
Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
html/cgi-bin/ids.cgi

index 946df465fdac2d77ca71a85c039f63c7b1a1c16f..be16a4eb06636136c281e0c6fd567a1f00bbae5d 100644 (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>