diff --git a/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt b/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt
index c2c64403f..6202b2984 100644
--- a/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt
+++ b/src/opnsense/mvc/app/views/OPNsense/IDS/index.volt
@@ -136,6 +136,45 @@ POSSIBILITY OF SUCH DAMAGE.
});
}
+ /**
+ * toggle selected items
+ * @param gridId: grid id to to use
+ * @param url: ajax action to call
+ * @param state: 0/1/undefined
+ * @param combine: number of keys to combine (seperate with ,)
+ * try to avoid too much items per call (results in too long url's)
+ */
+ function actionToggleSelected(gridId, url, state, combine) {
+ var rows =$("#"+gridId).bootgrid('getSelectedRows');
+ if (rows != undefined){
+ var deferreds = [];
+ if (state != undefined) {
+ var url_suffix = state;
+ } else {
+ var url_suffix = "";
+ }
+
+ var keyset = [];
+ $.each(rows, function(key,uuid){
+ keyset.push(uuid);
+ if ( combine == undefined || keyset.length > combine) {
+ deferreds.push(ajaxCall(url + keyset.join(',') +'/'+url_suffix, sendData={},null));
+ keyset = [];
+ }
+ });
+
+ // flush remaining items
+ if (keyset.length > 0) {
+ deferreds.push(ajaxCall(url + keyset.join(',') +'/'+url_suffix, sendData={},null));
+ }
+
+ // refresh when all toggles are executed
+ $.when.apply(null, deferreds).done(function(){
+ $("#"+gridId).bootgrid("reload");
+ });
+ }
+ }
+
/*************************************************************************************************************
* UI load grids (on tab change)
*************************************************************************************************************/
@@ -160,8 +199,6 @@ POSSIBILITY OF SUCH DAMAGE.
{ search:'/api/ids/settings/searchinstalledrules',
get:'/api/ids/settings/getRuleInfo/',
options:{
- multiSelect:false,
- selection:false,
requestHandler:addRuleFilters,
formatters:{
rowtoggle: function (column, row) {
@@ -210,8 +247,6 @@ POSSIBILITY OF SUCH DAMAGE.
{ search:'/api/ids/settings/listInstallableRulesets',
toggle:'/api/ids/settings/toggleInstalledRuleset/',
options:{
- multiSelect:false,
- selection:false,
navigation:0,
formatters:{
rowtoggle: function (column, row) {
@@ -272,6 +307,42 @@ POSSIBILITY OF SUCH DAMAGE.
});
});
+ /**
+ * disable selected rulesets
+ */
+ $("#disableSelectedRuleSets").click(function(){
+ var gridId = 'grid-rule-files';
+ var url = '/api/ids/settings/toggleInstalledRuleset/';
+ actionToggleSelected(gridId, url, 0, 20);
+ });
+
+ /**
+ * enable selected rulesets
+ */
+ $("#enableSelectedRuleSets").click(function(){
+ var gridId = 'grid-rule-files';
+ var url = '/api/ids/settings/toggleInstalledRuleset/';
+ actionToggleSelected(gridId, url, 1, 20);
+ });
+
+ /**
+ * disable selected rules
+ */
+ $("#disableSelectedRules").click(function(){
+ var gridId = 'grid-installedrules';
+ var url = '/api/ids/settings/toggleRule/';
+ actionToggleSelected(gridId, url, 0, 100);
+ });
+
+ /**
+ * enable selected rules
+ */
+ $("#enableSelectedRules").click(function(){
+ var gridId = 'grid-installedrules';
+ var url = '/api/ids/settings/toggleRule/';
+ actionToggleSelected(gridId, url, 1, 100);
+ });
+
/**
* Initialize
*/
@@ -309,13 +380,23 @@ POSSIBILITY OF SUCH DAMAGE.
- | {{ lang._('Enabled') }} |
+ filename |
{{ lang._('Description') }} |
{{ lang._('Last updated') }} |
+ {{ lang._('Enabled') }} |
+
+
+ |
+
+
+
+ |
+
+
@@ -336,7 +417,7 @@ POSSIBILITY OF SUCH DAMAGE.
- | sid |
+ {{ lang._('sid') }} |
{{ lang._('Source') }} |
{{ lang._('ClassType') }} |
{{ lang._('Message') }} |
@@ -345,6 +426,15 @@ POSSIBILITY OF SUCH DAMAGE.
+
+
+ |
+
+
+
+ |
+
+