From d57aa5e4c8ff8f70b77bf2409309c6bed130335c Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Fri, 7 Jun 2019 18:18:28 +0200 Subject: [PATCH] IDPS, minor usability improvements. * in download tab add enable selected with filter options * when using bulk actions, obey filter results (filter -> select all -> action, should apply on visible items) * move button actions to tab events, preventing accidental event removal --- .../OPNsense/IDS/Api/SettingsController.php | 6 + .../mvc/app/views/OPNsense/IDS/index.volt | 139 +++++++++--------- 2 files changed, 77 insertions(+), 68 deletions(-) diff --git a/src/opnsense/mvc/app/controllers/OPNsense/IDS/Api/SettingsController.php b/src/opnsense/mvc/app/controllers/OPNsense/IDS/Api/SettingsController.php index d9d475566..c6bab93fb 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/IDS/Api/SettingsController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/IDS/Api/SettingsController.php @@ -448,6 +448,12 @@ class SettingsController extends ApiMutableModelControllerBase $node = $this->getModel()->getFileNode($filename); if ($enabled == "0" || $enabled == "1") { $node->enabled = (string)$enabled; + } elseif ($enabled == "drop") { + $node->enabled = "1"; + $node->filter = "drop"; + } elseif ($enabled == "clear") { + $node->enabled = "1"; + $node->filter = ""; } elseif ((string)$node->enabled == "1") { $node->enabled = "0"; } else { diff --git a/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt b/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt index 194335375..95aab880c 100644 --- a/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt +++ b/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt @@ -198,17 +198,20 @@ POSSIBILITY OF SUCH DAMAGE. var base = $.when({}); var keyset = []; $.each(rows, function(key, uuid){ - keyset.push(uuid); - if ( combine === undefined || keyset.length > combine || rows[rows.length - 1] === uuid) { - var call_url = url + keyset.join(',') +'/'+url_suffix; - base = base.then(function() { - var defer = $.Deferred(); - ajaxCall(call_url, {}, function(){ - defer.resolve(); + // only perform action in visible items + if ($("#"+gridId).find("tr[data-row-id='"+uuid+"']").is(':visible')) { + keyset.push(uuid); + if ( combine === undefined || keyset.length > combine || rows[rows.length - 1] === uuid) { + var call_url = url + keyset.join(',') +'/'+url_suffix; + base = base.then(function() { + var defer = $.Deferred(); + ajaxCall(call_url, {}, function(){ + defer.resolve(); + }); + return defer.promise(); }); - return defer.promise(); - }); - keyset = []; + keyset = []; + } } }); // last action in the list, reload grid and release this promise @@ -291,6 +294,21 @@ POSSIBILITY OF SUCH DAMAGE. } } }); + /** + * disable/enable[with optional filter] selected rulesets + */ + $("#disableSelectedRuleSets").unbind('click').click(function(){ + actionToggleSelected('grid-rule-files', '/api/ids/settings/toggleRuleset/', 0, 20); + }); + $("#enableSelectedRuleSets").unbind('click').click(function(){ + actionToggleSelected('grid-rule-files', '/api/ids/settings/toggleRuleset/', 1, 20); + }); + $("#enabledropSelectedRuleSets").unbind('click').click(function(){ + actionToggleSelected('grid-rule-files', '/api/ids/settings/toggleRuleset/', "drop", 20); + }); + $("#enableclearSelectedRuleSets").click(function(){ + actionToggleSelected('grid-rule-files', '/api/ids/settings/toggleRuleset/', "clear", 20); + }); } else if (e.target.id == 'rule_tab'){ // // activate rule tab page @@ -325,6 +343,35 @@ POSSIBILITY OF SUCH DAMAGE. toggle:'/api/ids/settings/toggleRule/' } ); + /** + * disable/enable [+action] selected rules + */ + $("#disableSelectedRules").unbind('click').click(function(event){ + event.preventDefault(); + $("#disableSelectedRules > span").removeClass("fa-square-o").addClass("fa-spinner fa-pulse"); + actionToggleSelected('grid-installedrules', '/api/ids/settings/toggleRule/', 0, 100).done(function(){ + $("#disableSelectedRules > span").removeClass("fa-spinner fa-pulse"); + $("#disableSelectedRules > span").addClass("fa-square-o"); + }); + }); + $("#enableSelectedRules").unbind('click').click(function(){ + $("#enableSelectedRules > span").removeClass("fa-check-square-o").addClass("fa-spinner fa-pulse"); + actionToggleSelected('grid-installedrules', '/api/ids/settings/toggleRule/', 1, 100).done(function(){ + $("#enableSelectedRules > span").removeClass("fa-spinner fa-pulse").addClass("fa-check-square-o"); + }); + }); + $("#alertSelectedRules").unbind('click').click(function(){ + $("#alertSelectedRules > span").addClass("fa-spinner fa-pulse"); + actionToggleSelected('grid-installedrules', '/api/ids/settings/toggleRule/', "alert", 100).done(function(){ + $("#alertSelectedRules > span").removeClass("fa-spinner fa-pulse"); + }); + }); + $("#dropSelectedRules").unbind('click').click(function(){ + $("#dropSelectedRules > span").addClass("fa-spinner fa-pulse"); + actionToggleSelected('grid-installedrules', '/api/ids/settings/toggleRule/', "drop", 100).done(function(){ + $("#dropSelectedRules > span").removeClass("fa-spinner fa-pulse"); + }); + }); } else if (e.target.id == 'alert_tab') { updateAlertLogs(); /** @@ -556,62 +603,6 @@ POSSIBILITY OF SUCH DAMAGE. }); }); - /** - * disable selected rulesets - */ - $("#disableSelectedRuleSets").click(function(){ - actionToggleSelected('grid-rule-files', '/api/ids/settings/toggleRuleset/', 0, 20); - }); - - /** - * enable selected rulesets - */ - $("#enableSelectedRuleSets").click(function(){ - actionToggleSelected('grid-rule-files', '/api/ids/settings/toggleRuleset/', 1, 20); - }); - - /** - * disable selected rules - */ - $("#disableSelectedRules").click(function(event){ - event.preventDefault(); - $("#disableSelectedRules > span").removeClass("fa-square-o").addClass("fa-spinner fa-pulse"); - actionToggleSelected('grid-installedrules', '/api/ids/settings/toggleRule/', 0, 100).done(function(){ - $("#disableSelectedRules > span").removeClass("fa-spinner fa-pulse"); - $("#disableSelectedRules > span").addClass("fa-square-o"); - }); - }); - - /** - * enable selected rules - */ - $("#enableSelectedRules").unbind('click').click(function(){ - $("#enableSelectedRules > span").removeClass("fa-check-square-o").addClass("fa-spinner fa-pulse"); - actionToggleSelected('grid-installedrules', '/api/ids/settings/toggleRule/', 1, 100).done(function(){ - $("#enableSelectedRules > span").removeClass("fa-spinner fa-pulse").addClass("fa-check-square-o"); - }); - }); - - /** - * enable+alert selected rules - */ - $("#alertSelectedRules").unbind('click').click(function(){ - $("#alertSelectedRules > span").addClass("fa-spinner fa-pulse"); - actionToggleSelected('grid-installedrules', '/api/ids/settings/toggleRule/', "alert", 100).done(function(){ - $("#alertSelectedRules > span").removeClass("fa-spinner fa-pulse"); - }); - }); - - /** - * enable+alert selected rules - */ - $("#dropSelectedRules").unbind('click').click(function(){ - $("#dropSelectedRules > span").addClass("fa-spinner fa-pulse"); - actionToggleSelected('grid-installedrules', '/api/ids/settings/toggleRule/', "drop", 100).done(function(){ - $("#dropSelectedRules > span").removeClass("fa-spinner fa-pulse"); - }); - }); - /** * link query alerts button. */ @@ -723,8 +714,20 @@ POSSIBILITY OF SUCH DAMAGE.
- - +
+ + + + +