wazuh-kibana-app/public/controllers/ruleset.js

212 lines
7.8 KiB
JavaScript
Raw Normal View History

/*
* Wazuh app - Ruleset controllers
* Copyright (C) 2018 Wazuh, Inc.
*
* 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
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Find more information about this on the LICENSE file.
*/
import * as modules from 'ui/modules'
const app = modules.get('app/wazuh', []);
app.controller('rulesController', function ($scope, $rootScope, Rules,RulesAutoComplete, errorHandler, genericReq, appState) {
$scope.setRulesTab = tab => $rootScope.globalsubmenuNavItem2 = tab;
2017-01-16 18:27:53 +00:00
//Initialization
2017-10-20 19:04:22 +00:00
$scope.loading = true;
$scope.rules = Rules;
$scope.rulesAutoComplete = RulesAutoComplete;
$scope.setRulesTab('rules');
$rootScope.tabVisualizations = { ruleset: 4 };
$scope.analizeRules = async search => {
try {
$scope.rulesAutoComplete.filters = [];
if(search.startsWith('group:') && search.split('group:')[1].trim()) {
await $scope.rulesAutoComplete.addFilter('group',search.split('group:')[1].trim());
} else if(search.startsWith('level:') && search.split('level:')[1].trim()) {
await $scope.rulesAutoComplete.addFilter('level',search.split('level:')[1].trim());
} else if(search.startsWith('pci:') && search.split('pci:')[1].trim()) {
await $scope.rulesAutoComplete.addFilter('pci',search.split('pci:')[1].trim());
} else if(search.startsWith('file:') && search.split('file:')[1].trim()) {
await $scope.rulesAutoComplete.addFilter('file',search.split('file:')[1].trim());
} else {
await $scope.rulesAutoComplete.addFilter('search',search);
}
if(!$scope.$$phase) $scope.$digest();
return $scope.rulesAutoComplete.items;
} catch (error){
errorHandler.handle(error,'Ruleset');
if(!$rootScope.$$phase) $rootScope.$digest();
}
}
$scope.checkEnter = search => {
$scope.searchTerm = '';
angular.element(document.querySelector('#autocomplete')).blur();
if(search.startsWith('group:') && search.split('group:')[1].trim()) {
$scope.rules.addFilter('group',search.split('group:')[1].trim());
} else if(search.startsWith('level:') && search.split('level:')[1].trim()) {
$scope.rules.addFilter('level',search.split('level:')[1].trim());
} else if(search.startsWith('pci:') && search.split('pci:')[1].trim()) {
$scope.rules.addFilter('pci',search.split('pci:')[1].trim());
} else if(search.startsWith('file:') && search.split('file:')[1].trim()) {
$scope.rules.addFilter('file',search.split('file:')[1].trim());
2018-01-15 15:33:12 +00:00
} else {
$scope.rules.addFilter('search',search.trim());
}
2016-11-03 19:52:52 +00:00
};
const load = async () => {
try {
$rootScope.rawVisualizations = null;
2018-04-23 11:05:16 +00:00
const data = await genericReq.request('GET',`/api/wazuh-elastic/create-vis/manager-ruleset-rules/${appState.getCurrentPattern()}`)
$rootScope.rawVisualizations = data.data.raw;
// Render visualizations
$rootScope.$broadcast('updateVis');
if(!$rootScope.$$phase) $rootScope.$digest();
await Promise.all([
$scope.rules.nextPage(),
$scope.rulesAutoComplete.nextPage()
]);
$scope.loading = false;
if(!$scope.$$phase) $scope.$digest();
return;
} catch (error) {
errorHandler.handle('Unexpected exception loading controller','Ruleset');
if(!$rootScope.$$phase) $rootScope.$digest();
}
2016-11-03 19:52:52 +00:00
}
//Load
load();
2017-11-30 15:29:45 +00:00
let timesOpened = 0;
let lastName = false;
2018-02-15 11:00:49 +00:00
$scope.closeOther = rule => {
const item = rule.id ? rule.id : rule;
if(item !== lastName){
lastName = item;
2017-11-30 15:29:45 +00:00
timesOpened = 0;
}
timesOpened++;
2018-02-15 11:00:49 +00:00
$scope.activeItem = (timesOpened <= 1) ? item : false;
2017-11-30 15:29:45 +00:00
if(timesOpened > 1) timesOpened = 0;
return true;
}
2016-11-03 19:52:52 +00:00
//Destroy
2018-01-08 16:12:06 +00:00
$scope.$on('$destroy', () => {
$rootScope.rawVisualizations = null;
2018-01-08 16:12:06 +00:00
$scope.rules.reset();
if($rootScope.ownHandlers){
for(let h of $rootScope.ownHandlers){
h._scope.$destroy();
}
2018-01-08 16:12:06 +00:00
}
$rootScope.ownHandlers = [];
});
2016-11-03 19:52:52 +00:00
});
app.controller('decodersController', function ($scope, $rootScope, $sce, Decoders,DecodersAutoComplete, errorHandler, genericReq, appState) {
$scope.setRulesTab = tab => $rootScope.globalsubmenuNavItem2 = tab;
2017-01-16 18:27:53 +00:00
//Initialization
$scope.loading = true;
2017-10-20 19:04:22 +00:00
$scope.decoders = Decoders;
$scope.decodersAutoComplete = DecodersAutoComplete;
$scope.typeFilter = "all";
$scope.setRulesTab('decoders');
$rootScope.tabVisualizations = { ruleset: 1 };
2016-11-03 19:52:52 +00:00
let timesOpened = 0;
let lastName = false;
$scope.closeOther = name => {
if(name !== lastName){
lastName = name;
timesOpened = 0;
}
timesOpened++;
$scope.activeItem = (timesOpened <= 1) ? name : false;
if(timesOpened > 1) timesOpened = 0;
return true;
}
$scope.checkEnter = search => {
$scope.searchTerm = '';
angular.element(document.querySelector('#autocomplete')).blur();
if(search.startsWith('path:') && search.split('path:')[1].trim()) {
$scope.decoders.addFilter('path',search.split('path:')[1].trim());
} else if(search.startsWith('file:') && search.split('file:')[1].trim()) {
$scope.decoders.addFilter('file',search.split('file:')[1].trim());
2018-01-15 15:33:12 +00:00
} else {
$scope.decoders.addFilter('search',search.trim());
}
};
$scope.analizeDecoders = async search => {
try {
$scope.decodersAutoComplete.filters = [];
if(search.startsWith('path:') && search.split('path:')[1].trim()) {
await $scope.decodersAutoComplete.addFilter('path',search.split('path:')[1].trim());
} else if(search.startsWith('file:') && search.split('file:')[1].trim()) {
await $scope.decodersAutoComplete.addFilter('file',search.split('file:')[1].trim());
} else {
await $scope.decodersAutoComplete.addFilter('search',search);
}
if(!$scope.$$phase) $scope.$digest();
return $scope.decodersAutoComplete.items;
} catch (error){
errorHandler.handle(error,'Ruleset');
if(!$rootScope.$$phase) $rootScope.$digest();
}
}
const load = async () => {
try {
$rootScope.rawVisualizations = null;
2018-04-23 11:05:16 +00:00
const data = await genericReq.request('GET',`/api/wazuh-elastic/create-vis/manager-ruleset-decoders/${appState.getCurrentPattern()}`)
$rootScope.rawVisualizations = data.data.raw;
// Render visualizations
$rootScope.$broadcast('updateVis');
if(!$rootScope.$$phase) $rootScope.$digest();
await Promise.all([
$scope.decoders.nextPage(),
$scope.decodersAutoComplete.nextPage()
]);
$scope.loading = false;
if(!$scope.$$phase) $scope.$digest();
return;
} catch (error) {
errorHandler.handle(error,'Ruleset');
if(!$rootScope.$$phase) $rootScope.$digest();
}
}
2016-11-03 19:52:52 +00:00
//Load
load();
2016-11-03 19:52:52 +00:00
//Destroy
2018-01-08 16:12:06 +00:00
$scope.$on("$destroy", () => {
$scope.decoders.reset();
if($rootScope.ownHandlers){
for(let h of $rootScope.ownHandlers){
h._scope.$destroy();
}
2018-01-08 16:12:06 +00:00
}
$rootScope.ownHandlers = [];
});
});