mirror of
https://github.com/valitydev/wazuh-kibana-app.git
synced 2024-11-07 10:18:57 +00:00
Simplify dynamic visualizations loading schema
This commit is contained in:
parent
7e756f91d5
commit
c8070b95d1
@ -3,8 +3,8 @@ import $ from 'jquery';
|
||||
|
||||
app.controller('overviewController', function ($scope, $location, $rootScope, appState, genericReq, errorHandler, metricService) {
|
||||
|
||||
// Timestamp for visualizations at controller's startup
|
||||
if(!$rootScope.visTimestamp) $rootScope.visTimestamp = new Date().getTime();
|
||||
$rootScope.backFinished = false;
|
||||
if(!$rootScope.$$phase) $rootScope.$digest
|
||||
|
||||
$rootScope.page = 'overview';
|
||||
@ -63,7 +63,7 @@ app.controller('overviewController', function ($scope, $location, $rootScope, ap
|
||||
awsRevoked :'[vis-id="\'Wazuh-App-Overview-AWS-Metric-Revoke-security\'"]'
|
||||
}
|
||||
|
||||
// Check the url hash and retrieve the tabView information
|
||||
// Check the url hash and retrieve tabView information
|
||||
if ($location.search().tabView) {
|
||||
$scope.tabView = $location.search().tabView;
|
||||
} else { // If tabView doesn't exist, default it to 'panels'
|
||||
@ -71,7 +71,7 @@ app.controller('overviewController', function ($scope, $location, $rootScope, ap
|
||||
$location.search('tabView', 'panels');
|
||||
}
|
||||
|
||||
// Check the url hash and retrivew the tab information
|
||||
// Check the url hash and retrieve tab information
|
||||
if ($location.search().tab) {
|
||||
$scope.tab = $location.search().tab;
|
||||
} else { // If tab doesn't exist, default it to 'general'
|
||||
@ -140,8 +140,6 @@ app.controller('overviewController', function ($scope, $location, $rootScope, ap
|
||||
if(!$rootScope.$$phase) $rootScope.$digest();
|
||||
}
|
||||
|
||||
checkMetrics($scope.tab, $scope.tabView);
|
||||
|
||||
// Switch subtab
|
||||
$scope.switchSubtab = subtab => {
|
||||
if ($scope.tabView === subtab) return;
|
||||
@ -153,54 +151,39 @@ app.controller('overviewController', function ($scope, $location, $rootScope, ap
|
||||
$scope.switchTab = tab => {
|
||||
if ($scope.tab === tab) return;
|
||||
|
||||
|
||||
// call backend to create visualizations
|
||||
$rootScope.backFinished = false;
|
||||
genericReq.request('GET',`/api/wazuh-elastic/delete-vis/${$rootScope.visTimestamp}`)
|
||||
.then(() => genericReq.request('GET',`/api/wazuh-elastic/create-vis/overview-${$scope.tab}/${$rootScope.visTimestamp}/${appState.getCurrentPattern()}`))
|
||||
// Create current tab visualizations
|
||||
genericReq.request('GET',`/api/wazuh-elastic/create-vis/overview-${$scope.tab}/${$rootScope.visTimestamp}/${appState.getCurrentPattern()}`)
|
||||
.then(() => {
|
||||
|
||||
// Render visualizations
|
||||
$rootScope.$broadcast('updateVis');
|
||||
|
||||
checkMetrics(tab, 'panels');
|
||||
|
||||
// Deleting app state traces in the url
|
||||
$location.search('_a', null);
|
||||
$rootScope.backFinished = true;
|
||||
if(!$rootScope.$$phase) $rootScope.$digest();
|
||||
})
|
||||
.catch(console.error)
|
||||
|
||||
})
|
||||
.catch(error => {
|
||||
errorHandler.handle(error, 'Overview');
|
||||
});
|
||||
};
|
||||
|
||||
// Watch tabView
|
||||
$scope.$watch('tabView', () => {
|
||||
$rootScope.backFinished = false;
|
||||
$location.search('tabView', $scope.tabView);
|
||||
if($scope.tabView === 'panels'){
|
||||
// Update the implicit filter
|
||||
genericReq.request('GET',`/api/wazuh-elastic/delete-vis/${$rootScope.visTimestamp}`)
|
||||
.then(() => genericReq.request('GET',`/api/wazuh-elastic/create-vis/overview-${$scope.tab}/${$rootScope.visTimestamp}/${appState.getCurrentPattern()}`))
|
||||
.then(() => {
|
||||
$rootScope.backFinished = true;
|
||||
if(!$rootScope.$$phase) $rootScope.$digest();
|
||||
})
|
||||
.catch(console.error)
|
||||
} else {
|
||||
genericReq.request('GET',`/api/wazuh-elastic/delete-vis/${$rootScope.visTimestamp}`)
|
||||
.then(() => {
|
||||
if ($rootScope.ownHandlers) {
|
||||
for (let h of $rootScope.ownHandlers) {
|
||||
h._scope.$destroy();
|
||||
}
|
||||
}
|
||||
$rootScope.ownHandlers = [];
|
||||
|
||||
$rootScope.loadedVisualizations = [];
|
||||
$rootScope.backFinished = true;
|
||||
if(!$rootScope.$$phase) $rootScope.$digest();
|
||||
})
|
||||
.catch(console.error)
|
||||
}
|
||||
$location.search('tabView', $scope.tabView);
|
||||
|
||||
if ($rootScope.ownHandlers) {
|
||||
for (let h of $rootScope.ownHandlers) {
|
||||
h._scope.$destroy();
|
||||
}
|
||||
}
|
||||
$rootScope.ownHandlers = [];
|
||||
|
||||
$rootScope.loadedVisualizations = [];
|
||||
});
|
||||
|
||||
// Watch tab
|
||||
$scope.$watch('tab', () => {
|
||||
|
||||
$location.search('tab', $scope.tab);
|
||||
@ -222,10 +205,7 @@ app.controller('overviewController', function ($scope, $location, $rootScope, ap
|
||||
});
|
||||
|
||||
$scope.$on('$destroy', () => {
|
||||
$rootScope.backFinished = false;
|
||||
genericReq.request('GET',`/api/wazuh-elastic/delete-vis/${$rootScope.visTimestamp}`)
|
||||
.then(() => $rootScope.backFinished = true)
|
||||
.catch(console.error)
|
||||
|
||||
if ($rootScope.ownHandlers) {
|
||||
for (let h of $rootScope.ownHandlers) {
|
||||
h._scope.$destroy();
|
||||
@ -237,16 +217,18 @@ app.controller('overviewController', function ($scope, $location, $rootScope, ap
|
||||
$rootScope.ownHandlers = [];
|
||||
});
|
||||
|
||||
|
||||
// call backend to create visualizations at controller's initialization
|
||||
|
||||
genericReq.request('GET',`/api/wazuh-elastic/delete-vis/${$rootScope.visTimestamp}`)
|
||||
.then(() => genericReq.request('GET',`/api/wazuh-elastic/create-vis/overview-${$scope.tab}/${$rootScope.visTimestamp}/${appState.getCurrentPattern()}`))
|
||||
// Create visualizations for controller's first execution
|
||||
genericReq.request('GET',`/api/wazuh-elastic/create-vis/overview-${$scope.tab}/${$rootScope.visTimestamp}/${appState.getCurrentPattern()}`)
|
||||
.then(() => {
|
||||
$rootScope.backFinished = true;
|
||||
if(!$rootScope.$$phase) $rootScope.$digest();
|
||||
|
||||
// Render visualizations
|
||||
$rootScope.$broadcast('updateVis');
|
||||
|
||||
checkMetrics($scope.tab, $scope.tabView);
|
||||
})
|
||||
.catch(console.error)
|
||||
.catch(error => {
|
||||
errorHandler.handle(error, 'Overview');
|
||||
});
|
||||
|
||||
//PCI tab
|
||||
let tabs = [];
|
||||
|
@ -1,6 +1,6 @@
|
||||
import $ from 'jquery';
|
||||
const ownLoader = require('./loader/loader-import');
|
||||
let accumulate = {},stopLoop = false;
|
||||
|
||||
var app = require('ui/modules').get('apps/webinar_app', [])
|
||||
.directive('kbnVis', [function () {
|
||||
return {
|
||||
@ -9,8 +9,7 @@ var app = require('ui/modules').get('apps/webinar_app', [])
|
||||
visID: '=visId',
|
||||
specificTimeRange: '=specificTimeRange'
|
||||
},
|
||||
controller: function VisController($scope, $rootScope, $location, savedVisualizations, $window,genericReq) {
|
||||
|
||||
controller: function VisController($scope, $rootScope, $location, savedVisualizations, genericReq) {
|
||||
if(!$rootScope.ownHandlers) $rootScope.ownHandlers = [];
|
||||
let originalImplicitFilter = '';
|
||||
let implicitFilter = '';
|
||||
@ -22,15 +21,13 @@ var app = require('ui/modules').get('apps/webinar_app', [])
|
||||
let renderInProgress = false;
|
||||
|
||||
const myRender = function() {
|
||||
if(typeof accumulate[$scope.visID] === 'undefined') accumulate[$scope.visID] = 'pending'
|
||||
if ($rootScope.visTimestamp) { // Only render if we already have the timestamp for it
|
||||
if (($rootScope.discoverPendingUpdates && $rootScope.discoverPendingUpdates.length != 0) || $scope.visID.includes('Ruleset') ){ // There are pending updates from the discover (which is the one who owns the true app state)
|
||||
if (($rootScope.discoverPendingUpdates && $rootScope.discoverPendingUpdates.length != 0) || $scope.visID.includes('Ruleset') ) { // There are pending updates from the discover (which is the one who owns the true app state)
|
||||
|
||||
if(!visualization && !rendered && !renderInProgress) { // There's no visualization object -> create it with proper filters
|
||||
renderInProgress = true;
|
||||
|
||||
savedVisualizations.get(!$scope.visID.includes('Agents-status') ? $scope.visID + "-" + $rootScope.visTimestamp : $scope.visID)
|
||||
.then(savedObj => {
|
||||
if(!visualization && !rendered && !renderInProgress) { // There's no visualization object -> create it with proper filters
|
||||
renderInProgress = true;
|
||||
|
||||
if ($rootScope.visTimestamp) {
|
||||
savedVisualizations.get($scope.visID + "-" + $rootScope.visTimestamp).then(savedObj => {
|
||||
originalImplicitFilter = savedObj.searchSource.get('query')['query'];
|
||||
visTitle = savedObj.vis.title;
|
||||
visualization = savedObj;
|
||||
@ -74,28 +71,27 @@ var app = require('ui/modules').get('apps/webinar_app', [])
|
||||
$rootScope.ownHandlers.push(visHandler);
|
||||
visHandler.addRenderCompleteListener(renderComplete);
|
||||
});
|
||||
}
|
||||
} else if (rendered) { // There's a visualization object -> just update its filters
|
||||
|
||||
} else if (rendered) { // There's a visualization object -> just update its filters
|
||||
|
||||
// There's an original filter
|
||||
if (originalImplicitFilter.length > 0 ) {
|
||||
// And also a pending one -> concatenate them
|
||||
if ($rootScope.discoverPendingUpdates && typeof $rootScope.discoverPendingUpdates[0].query === 'string' && $rootScope.discoverPendingUpdates[0].query.length > 0) {
|
||||
implicitFilter = originalImplicitFilter + ' AND ' + $rootScope.discoverPendingUpdates[0].query;
|
||||
} else {
|
||||
// Only the original filter
|
||||
implicitFilter = originalImplicitFilter;
|
||||
}
|
||||
// There's an original filter
|
||||
if (originalImplicitFilter.length > 0 ) {
|
||||
// And also a pending one -> concatenate them
|
||||
if ($rootScope.discoverPendingUpdates && typeof $rootScope.discoverPendingUpdates[0].query === 'string' && $rootScope.discoverPendingUpdates[0].query.length > 0) {
|
||||
implicitFilter = originalImplicitFilter + ' AND ' + $rootScope.discoverPendingUpdates[0].query;
|
||||
} else {
|
||||
// Other case, use the pending one, if it is empty, it won't matter
|
||||
implicitFilter = $rootScope.discoverPendingUpdates ? $rootScope.discoverPendingUpdates[0].query : '';
|
||||
}
|
||||
|
||||
if (visTitle !== 'Wazuh App Overview General Agents status') { // We don't want to filter that visualization as it uses another index-pattern
|
||||
visualization.searchSource
|
||||
.query({ language: 'lucene', query: implicitFilter })
|
||||
.set('filter', $rootScope.discoverPendingUpdates ? $rootScope.discoverPendingUpdates[1] : {});
|
||||
// Only the original filter
|
||||
implicitFilter = originalImplicitFilter;
|
||||
}
|
||||
} else {
|
||||
// Other case, use the pending one, if it is empty, it won't matter
|
||||
implicitFilter = $rootScope.discoverPendingUpdates ? $rootScope.discoverPendingUpdates[0].query : '';
|
||||
}
|
||||
|
||||
if (visTitle !== 'Wazuh App Overview General Agents status') { // We don't want to filter that visualization as it uses another index-pattern
|
||||
visualization.searchSource
|
||||
.query({ language: 'lucene', query: implicitFilter })
|
||||
.set('filter', $rootScope.discoverPendingUpdates ? $rootScope.discoverPendingUpdates[1] : {});
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -106,46 +102,32 @@ var app = require('ui/modules').get('apps/webinar_app', [])
|
||||
myRender();
|
||||
});
|
||||
|
||||
const renderComplete = () => {
|
||||
if(accumulate[$scope.visID] === 'pending'){
|
||||
accumulate[$scope.visID] = 'complete'
|
||||
}
|
||||
var renderComplete = function() {
|
||||
rendered = true;
|
||||
|
||||
if(typeof $rootScope.loadedVisualizations === 'undefined') $rootScope.loadedVisualizations = [];
|
||||
$rootScope.loadedVisualizations.push(true);
|
||||
let currentCompleted = Math.round(($rootScope.loadedVisualizations.length / $rootScope.tabVisualizations[$location.search().tab]) * 100);
|
||||
$rootScope.loadingStatus = `Rendering visualizations... ${currentCompleted > 100 ? 100 : currentCompleted} %`;
|
||||
let completed = true;
|
||||
for(let key in accumulate){
|
||||
if(accumulate[key] === 'pending') completed = false;
|
||||
break;
|
||||
}
|
||||
if (completed && currentCompleted >= 100) {
|
||||
if(!stopLoop){
|
||||
stopLoop =true;
|
||||
|
||||
if (currentCompleted >= 100) {
|
||||
|
||||
if ($rootScope.visTimestamp) {
|
||||
genericReq.request('GET',`/api/wazuh-elastic/delete-vis/${$rootScope.visTimestamp}`)
|
||||
.then(() => {
|
||||
if (!visTitle !== 'Wazuh App Overview General Agents status') $rootScope.rendered = true;
|
||||
// Forcing a digest cycle
|
||||
if(!$rootScope.$$phase) $rootScope.$digest();
|
||||
})
|
||||
.catch(error => console.error(error.message || error))
|
||||
} else {
|
||||
if (!visTitle !== 'Wazuh App Overview General Agents status') $rootScope.rendered = true;
|
||||
// Forcing a digest cycle
|
||||
if(!$rootScope.$$phase) $rootScope.$digest();
|
||||
$rootScope.visTimestamp = null;
|
||||
});
|
||||
}
|
||||
} else if (!visTitle !== 'Wazuh App Overview General Agents status') {
|
||||
|
||||
$rootScope.rendered = false;
|
||||
|
||||
if (!visTitle !== 'Wazuh App Overview General Agents status') $rootScope.rendered = true;
|
||||
// Forcing a digest cycle
|
||||
if(!$rootScope.$$phase) $rootScope.$digest();
|
||||
}
|
||||
else if (!visTitle !== 'Wazuh App Overview General Agents status') $rootScope.rendered = false;
|
||||
};
|
||||
|
||||
// Initializing the visualization
|
||||
const loader = ownLoader.getVisualizeLoader();
|
||||
myRender();
|
||||
}
|
||||
}
|
||||
}]);
|
@ -1,121 +1,118 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'audit' && tabView === 'panels' && backFinished" ng-show="resultState === 'ready'" layout-align="space-around">
|
||||
<md-content flex layout="column" ng-if="tab === 'audit' && tabView === 'panels'" ng-show="resultState === 'ready'" layout-align="space-around">
|
||||
|
||||
<!-- View: Panels -->
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>New files: <span class="wz-text-bold">{{auditNewFiles}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Read files: <span class="wz-text-bold">{{auditReadFiles}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Modified files: <span class="wz-text-bold">{{auditModifiedFiles}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Removed files: <span class="wz-text-bold">{{auditRemovedFiles}}</span></div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>New files: <span class="wz-text-bold">{{auditNewFiles}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Read files: <span class="wz-text-bold">{{auditReadFiles}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Modified files: <span class="wz-text-bold">{{auditModifiedFiles}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Removed files: <span class="wz-text-bold">{{auditRemovedFiles}}</span></div>
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-New-files'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Read-files'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Modified-files'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Removed-files'"></kbn-vis>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-200">
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Groups</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Groups'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Agents</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Agents'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Directories</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Directories'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Files'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-310">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Alerts-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-448">
|
||||
<div flex="20" layout="column" layout-align="center stretch">
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">File read access</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-File-read-access'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">File write access</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-File-write-access'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-New-files'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Read-files'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Modified-files'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Removed-files'"></kbn-vis>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-200">
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Groups</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Groups'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Agents</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Agents'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Directories</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Directories'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Files'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-310">
|
||||
<div flex="60" layout="column" layout-align="center stretch">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts over time</span>
|
||||
<span class="wz-headline-title">Commands</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Alerts-over-time'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Commands'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-448">
|
||||
<div flex="20" layout="column" layout-align="center stretch">
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">File read access</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-File-read-access'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">File write access</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-File-write-access'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div flex="60" layout="column" layout-align="center stretch">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Commands</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Commands'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div flex="20" layout="column" layout-align="center stretch">
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Created files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Files-created'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Removed files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Files-deleted'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div flex layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<div flex="20" layout="column" layout-align="center stretch">
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span class="wz-headline-title">Created files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Last-alerts'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Files-created'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Removed files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Files-deleted'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div flex layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Audit-Last-alerts'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
</md-content>
|
||||
|
@ -1,87 +1,82 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'aws' && tabView === 'panels' && backFinished" ng-show="resultState === 'ready'" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'aws' && tabView === 'panels'" ng-show="resultState === 'ready'" layout-align="start">
|
||||
|
||||
<!-- View: Panels -->
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>Successful logins: <span class="wz-text-bold">{{awsLogins}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Most active user: <span class="wz-text-bold">{{awsMostActiveUser}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Authorized security groups: <span class="wz-text-bold">{{awsAuthorized}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Revoked security groups: <span class="wz-text-bold">{{awsRevoked}}</span></div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>Successful logins: <span class="wz-text-bold">{{awsLogins}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Most active user: <span class="wz-text-bold">{{awsMostActiveUser}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Authorized security groups: <span class="wz-text-bold">{{awsAuthorized}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Revoked security groups: <span class="wz-text-bold">{{awsRevoked}}</span></div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Metric-Successful-logins'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Most-active-user'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Metric-Authorize-security'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Metric-Revoke-security'"></kbn-vis>
|
||||
</div>
|
||||
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Metric-Successful-logins'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Most-active-user'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Metric-Authorize-security'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Metric-Revoke-security'"></kbn-vis>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-300">
|
||||
<div flex layout="column">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Instances</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Instances'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<div flex layout="column">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Security groups over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Security-groups-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<div layout="row" layout-align="center stretch" class="height-300">
|
||||
<div flex layout="column">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Events over time</span>
|
||||
<span class="wz-headline-title">Instances</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Events-over-time'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Instances'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<md-card flex="65" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Event sources over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Event-sources-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="35" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Success login - Top 5 countries</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Success-login-Top-5-countries'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="height-570">
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<div flex layout="column">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span class="wz-headline-title">Security groups over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Alerts-summary'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Security-groups-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Events over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Events-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<md-card flex="65" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Event sources over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Event-sources-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="35" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Success login - Top 5 countries</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Success-login-Top-5-countries'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-AWS-Alerts-summary'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
</md-content>
|
||||
|
@ -1,86 +1,84 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels' && backFinished" ng-show="resultState === 'ready'">
|
||||
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels'" ng-show="resultState === 'ready'">
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>Files added: <span class="wz-text-bold">{{fimAdded}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Files modified: <span class="wz-text-bold">{{fimModified}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Files deleted: <span class="wz-text-bold">{{fimDeleted}}</span></div>
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>Files added: <span class="wz-text-bold">{{fimAdded}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Files modified: <span class="wz-text-bold">{{fimModified}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Files deleted: <span class="wz-text-bold">{{fimDeleted}}</span></div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Added'" ></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Modified'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Deleted'"></kbn-vis>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="height-400">
|
||||
|
||||
<div flex layout="column">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Events over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Events-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Added'" ></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Modified'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Deleted'"></kbn-vis>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="height-400">
|
||||
|
||||
<div flex layout="column">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Events over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Events-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div flex="30" layout="column">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top user owners</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Top-user-owners'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top group owners</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Top-group-owners'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div layout="row" class="height-213">
|
||||
<div flex="30" layout="column">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top file changes</span>
|
||||
<span class="wz-headline-title">Top user owners</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Top-file-changes'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Top-user-owners'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Root user file changes</span>
|
||||
<span class="wz-headline-title">Top group owners</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Root-user-file-changes'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">World writable modified files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-World-writable-modified-files'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Top-group-owners'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Events summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Events-summary'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div layout="row" class="height-213">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top file changes</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Top-file-changes'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Root user file changes</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Root-user-file-changes'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">World writable modified files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-World-writable-modified-files'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Events summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-FIM-Events-summary'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
</md-content>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'general' && tabView === 'panels' && backFinished" ng-show="resultState === 'ready'" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'general' && tabView === 'panels'" ng-show="resultState === 'ready'" layout-align="start">
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
|
@ -1,91 +1,88 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'oscap' && tabView === 'panels' && backFinished" ng-show="resultState === 'ready'" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'oscap' && tabView === 'panels'" ng-show="resultState === 'ready'" layout-align="start">
|
||||
|
||||
<!-- View: Panels -->
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>Last score: <span class="wz-text-bold">{{scapLastScore}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Highest score: <span class="wz-text-bold">{{scapHighestScore}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Lowest score: <span class="wz-text-bold">{{scapLowestScore}}</span></div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>Last score: <span class="wz-text-bold">{{scapLastScore}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Highest score: <span class="wz-text-bold">{{scapHighestScore}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Lowest score: <span class="wz-text-bold">{{scapLowestScore}}</span></div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Last-score'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Highest-score'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Lowest-score'"></kbn-vis>
|
||||
</div>
|
||||
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Last-score'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Highest-score'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Lowest-score'"></kbn-vis>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-215">
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Agents</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Agents'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Profiles</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Profiles'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Content</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Content'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Severity</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Severity'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-215">
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Agents</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Agents'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Profiles</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Profiles'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Content</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Content'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Severity</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Severity'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="start stretch" class="height-240">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 5 Agents - Severity high</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Top-5-agents-Severity-high'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="start stretch" class="height-240">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 5 Agents - Severity high</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Top-5-agents-Severity-high'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-320">
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 10 - Alerts</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Top-10-alerts'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-320">
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 10 - Alerts</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Top-10-alerts'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 10 - High risk alerts</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Top-10-high-risk-alerts'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 10 - High risk alerts</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Top-10-high-risk-alerts'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Last-alerts'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-OSCAP-Last-alerts'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
</md-content>
|
||||
|
@ -1,76 +1,73 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'pci' && tabView === 'panels' && backFinished" ng-show="resultState === 'ready'" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'pci' && tabView === 'panels'" ng-show="resultState === 'ready'" layout-align="start">
|
||||
|
||||
<!-- View: Panels -->
|
||||
|
||||
|
||||
<div layout="row" layout-align="center stretch">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-tabs md-selected="selectedIndex" class="wz-md-tab" md-border-bottom md-dynamic-height id="pciReq_tab">
|
||||
<md-tab ng-repeat="tab in tabs" ng-disabled="tab.disabled" label="{{tab.title}}">
|
||||
<div class="md-padding">
|
||||
<span class="wz-headline-title">PCI DSS Requirement: {{tab.title}}</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<div layout="row" class="wz-padding-top-10 wz-line-height">
|
||||
<div ng-bind-html="tab.content"></div>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-tabs md-selected="selectedIndex" class="wz-md-tab" md-border-bottom md-dynamic-height id="pciReq_tab">
|
||||
<md-tab ng-repeat="tab in tabs" ng-disabled="tab.disabled" label="{{tab.title}}">
|
||||
<div class="md-padding">
|
||||
<span class="wz-headline-title">PCI DSS Requirement: {{tab.title}}</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<div layout="row" class="wz-padding-top-10 wz-line-height">
|
||||
<div ng-bind-html="tab.content"></div>
|
||||
</div>
|
||||
</md-tab>
|
||||
</md-tabs>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
||||
</md-tab>
|
||||
</md-tabs>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-530">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Last alerts</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Requirements-heatmap'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-530">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Last alerts</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Requirements-heatmap'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-255">
|
||||
<md-card flex="70" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Requirements</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="30" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Groups</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Groups'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-255">
|
||||
<md-card flex="70" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Requirements</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="30" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Groups</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Groups'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-255">
|
||||
<md-card flex="30" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Agents</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Agents'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="70" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Requirements by agent</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Requirements-by-agent'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-255">
|
||||
<md-card flex="30" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Agents</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Agents'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="70" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Requirements by agent</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Requirements-by-agent'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Last-alerts'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PCI-DSS-Last-alerts'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
</md-content>
|
||||
|
@ -1,52 +1,49 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'pm' && tabView === 'panels' && backFinished" ng-show="resultState === 'ready'" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'pm' && tabView === 'panels'" ng-show="resultState === 'ready'" layout-align="start">
|
||||
|
||||
<!-- View: Panels -->
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-290">
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Events over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PM-Events-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-290">
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Events over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PM-Events-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 5 CIS Requirements</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PM-Top-5-CIS-requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 5 CIS Requirements</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PM-Top-5-CIS-requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 5 PCI DSS Requirements</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PM-Top-5-PCI-DSS-requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 5 PCI DSS Requirements</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PM-Top-5-PCI-DSS-requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-240">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Events per agent evolution</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PM-Events-per-agent-evolution'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-240">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Events per agent evolution</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PM-Events-per-agent-evolution'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PM-Alerts-summary'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-PM-Alerts-summary'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
</md-content>
|
||||
|
@ -1,72 +1,71 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'virustotal' && tabView === 'panels' && backFinished" ng-show="resultState === 'ready'" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'virustotal' && tabView === 'panels'" ng-show="resultState === 'ready'" layout-align="start">
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>Total malicious: <span class="wz-text-bold">{{virusMalicious}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Total positives: <span class="wz-text-bold">{{virusPositives}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Total: <span class="wz-text-bold">{{virusTotal}}</span></div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>Total malicious: <span class="wz-text-bold">{{virusMalicious}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Total positives: <span class="wz-text-bold">{{virusPositives}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Total: <span class="wz-text-bold">{{virusTotal}}</span></div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Total-Malicious'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Total-Positives'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Total'"></kbn-vis>
|
||||
</div>
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Total-Malicious'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Total-Positives'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Total'"></kbn-vis>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="height-360">
|
||||
<div flex layout="column">
|
||||
<div flex layout="row">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Unique malicious files per agent</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Malicious-Per-Agent'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
||||
<div flex layout="column">
|
||||
<div flex layout="row">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Last scanned files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Last-Files-Pie'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" class="height-360">
|
||||
<div flex layout="column">
|
||||
<div flex layout="row">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Unique malicious files per agent</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Malicious-Per-Agent'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
||||
<div layout="row" class="height-550">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 10 agents with positive scans</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Positives-Heatmap'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" class="height-250">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Malicious files alerts evolution</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Malicious-Evolution'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Last files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Files-Table'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<div flex layout="column">
|
||||
<div flex layout="row">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Last scanned files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Last-Files-Pie'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div layout="row" class="height-550">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 10 agents with positive scans</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Positives-Heatmap'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" class="height-250">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Malicious files alerts evolution</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Malicious-Evolution'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Last files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-Virustotal-Files-Table'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
|
||||
</md-content>
|
||||
|
@ -1,63 +1,58 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'vuls' && tabView === 'panels' && backFinished" ng-show="resultState === 'ready'" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'vuls' && tabView === 'panels'" ng-show="resultState === 'ready'" layout-align="start">
|
||||
|
||||
<!-- View: Panels -->
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>Critical severity alerts: <span class="wz-text-bold">{{vulnCritical}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>High severity alerts: <span class="wz-text-bold">{{vulnHigh}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Medium severity alerts: <span class="wz-text-bold">{{vulnMedium}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Low severity alerts: <span class="wz-text-bold">{{vulnLow}}</span></div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Metric-Critical-severity'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Metric-High-severity'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Metric-Medium-severity'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Metric-Low-severity'"></kbn-vis>
|
||||
</div>
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-text-truncatable" flex>Critical severity alerts: <span class="wz-text-bold">{{vulnCritical}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>High severity alerts: <span class="wz-text-bold">{{vulnHigh}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Medium severity alerts: <span class="wz-text-bold">{{vulnMedium}}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Low severity alerts: <span class="wz-text-bold">{{vulnLow}}</span></div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts severity over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Alerts-severity-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div class="wz-no-display">
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Metric-Critical-severity'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Metric-High-severity'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Metric-Medium-severity'"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Metric-Low-severity'"></kbn-vis>
|
||||
</div>
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<md-card flex="60" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top Agents severity</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Top-Agents-severity'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="40" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Affected packages - Top 5</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Top-5-affected-packages'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts severity over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Alerts-severity-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<md-card flex="60" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top Agents severity</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Top-Agents-severity'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="40" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Affected packages - Top 5</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Top-5-affected-packages'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Alerts-summary'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Overview-VULS-Alerts-summary'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
</md-content>
|
||||
|
@ -34,7 +34,7 @@
|
||||
<!-- View: Discover -->
|
||||
<kbn-dis></kbn-dis>
|
||||
|
||||
<div class="wazuh-loading" layout="column" layout-aling="center center" ng-show="!backFinished || (resultState === 'ready' && tabView === 'panels' && !rendered)">
|
||||
<div class="wazuh-loading" layout="column" layout-aling="center center" ng-show="resultState === 'ready' && tabView === 'panels' && !rendered">
|
||||
<div class="percentage"><i class="fa fa-spinner fa-spin fa-fw" aria-hidden="true"></i></div>
|
||||
<div class="percentage">{{loadingStatus}}</div>
|
||||
</div>
|
||||
|
@ -343,7 +343,7 @@ module.exports = (server, options) => {
|
||||
}
|
||||
}
|
||||
|
||||
const deleteVis = async (req,res) => {
|
||||
const deleteVis = async (req, res) => {
|
||||
try {
|
||||
const tmp = await elasticRequest.callWithInternalUser('deleteByQuery', {
|
||||
index: '.kibana',
|
||||
@ -354,49 +354,47 @@ module.exports = (server, options) => {
|
||||
})
|
||||
|
||||
await elasticRequest.callWithInternalUser('indices.refresh', { index: ['.kibana']})
|
||||
return res({aknowledge: true , output: tmp});
|
||||
return res({acknowledge: true , output: tmp});
|
||||
|
||||
} catch(error){
|
||||
console.log(error.message || error)
|
||||
return res({error:error.message || error}).code(500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces our visualizations main fields to fit our pattern needs.
|
||||
* @param {*} app_objects Object with the visualizations raw content.
|
||||
* @param {*} id Eg: 'wazuh-alerts'
|
||||
* Replaces visualizations main fields to fit a certain pattern.
|
||||
* @param {*} app_objects Object containing raw visualizations.
|
||||
* @param {*} id Index-pattern id to use in the visualizations. Eg: 'wazuh-alerts'
|
||||
* @param {*} timestamp Milliseconds timestamp used to identify visualizations batch.
|
||||
*/
|
||||
const buildVisualizationsBulk = (app_objects,id,timestamp) => {
|
||||
const buildVisualizationsBulk = (app_objects, id, timestamp) => {
|
||||
try{
|
||||
let body = '';
|
||||
for (let element of app_objects) {
|
||||
body += '{ "index": { "_index": ".kibana", "_type": "doc", ' + '"_id": "' + element._type + ':' + element._id + '-'+timestamp+'" } }\n';
|
||||
|
||||
// Bulk action (you define index, doc and id)
|
||||
body += '{ "index": { "_index": ".kibana", "_type": "doc", ' + '"_id": "' + element._type + ':' + element._id + '-' + timestamp + '" } }\n';
|
||||
|
||||
let temp = {};
|
||||
let aux = JSON.stringify(element._source);
|
||||
aux = aux.replace("wazuh-alerts", id);
|
||||
aux = JSON.parse(aux);
|
||||
temp[element._type] = aux;
|
||||
|
||||
if (temp[element._type].kibanaSavedObjectMeta.searchSourceJSON.index) {
|
||||
temp[element._type].kibanaSavedObjectMeta.searchSourceJSON.index = id;
|
||||
}
|
||||
// Stringify and replace index-pattern for visualizations
|
||||
let aux_source = JSON.stringify(element._source);
|
||||
aux_source = aux_source.replace("wazuh-alerts", id);
|
||||
aux_source = JSON.parse(aux_source);
|
||||
|
||||
// Bulk source
|
||||
let bulk_content = {};
|
||||
bulk_content[element._type] = aux_source;
|
||||
|
||||
temp["type"] = element._type;
|
||||
temp.visualization.description = timestamp;
|
||||
bulk_content["type"] = element._type;
|
||||
bulk_content.visualization.description = timestamp;
|
||||
|
||||
body += JSON.stringify(temp) + "\n";
|
||||
body += JSON.stringify(bulk_content) + "\n";
|
||||
}
|
||||
return body;
|
||||
} catch (error) {
|
||||
console.log(error.message || error)
|
||||
return (error.message || error);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const createVis = async (req,res) => {
|
||||
const createVis = async (req, res) => {
|
||||
try {
|
||||
if(!req.params.pattern ||
|
||||
!req.params.tab ||
|
||||
@ -411,17 +409,13 @@ module.exports = (server, options) => {
|
||||
await elasticRequest.callWithInternalUser('bulk', { index: '.kibana', body: bulkBody });
|
||||
|
||||
await elasticRequest.callWithInternalUser('indices.refresh', { index: ['.kibana']})
|
||||
return res({aknowledge: true});
|
||||
return res({acknowledge: true});
|
||||
|
||||
} catch(error){
|
||||
console.log(error.message || error)
|
||||
return res({error:error.message || error}).code(500);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// Get index patterns list
|
||||
server.route({
|
||||
method: 'GET',
|
||||
|
Loading…
Reference in New Issue
Block a user