mirror of
https://github.com/valitydev/wazuh-kibana-app.git
synced 2024-11-06 09:55:18 +00:00
UI modifications for visualizations and more (#1293)
* Design fixes * Place of column gear * Columns and formatted * Overview files vis * Expand files * Expandible file in fim * Resizable table columns * Expandible vis with double click * Top 10 rule groups * Change Top 5 rules * Top 10 Agent alerts * Width of columns on tables * Add missing class * No show some fields in windows files tables
This commit is contained in:
parent
0d1dd9b64f
commit
320a4bc36f
@ -1,3 +1,4 @@
|
||||
node_modules/
|
||||
public/utils/codemirror/
|
||||
public/kibana-integrations/
|
||||
public/utils/table-col-resizable.js
|
@ -168,6 +168,8 @@ import './utils/fontawesome/css/font-awesome.min.css';
|
||||
// Dev tools
|
||||
import './utils/codemirror';
|
||||
|
||||
import './utils/table-col-resizable'
|
||||
|
||||
// Material
|
||||
import 'angular-material/angular-material.css';
|
||||
import 'angular-aria/angular-aria';
|
||||
|
@ -420,6 +420,7 @@ export class DevToolsController {
|
||||
const evtDocument = this.$document[0];
|
||||
$('.wz-dev-column-separator').mousedown(function (e) {
|
||||
e.preventDefault();
|
||||
$('.wz-dev-column-separator').addClass('active');
|
||||
const leftOrigWidth = $('#wz-dev-left-column').width();
|
||||
const rightOrigWidth = $('#wz-dev-right-column').width();
|
||||
$(evtDocument).mousemove(function (e) {
|
||||
@ -431,6 +432,7 @@ export class DevToolsController {
|
||||
});
|
||||
|
||||
$(evtDocument).mouseup(function () {
|
||||
$('.wz-dev-column-separator').removeClass('active');
|
||||
$(evtDocument).unbind('mousemove');
|
||||
});
|
||||
|
||||
|
@ -206,7 +206,7 @@ export class CdbListsController {
|
||||
);
|
||||
const currentApi = JSON.parse(this.appState.getCurrentAPI()).id;
|
||||
const output = await this.csvReq.fetch(
|
||||
'/cdblists',
|
||||
'/lists',
|
||||
currentApi,
|
||||
this.wzTableFilter.get()
|
||||
);
|
||||
|
@ -69,7 +69,7 @@
|
||||
<div layout="row">
|
||||
<md-button class="cancelBtn" type="button" ng-click="cancelRemoveEntry()"><i
|
||||
aria-hidden='true' class='fa fa-fw fa-close'></i> Cancel</md-button>
|
||||
<md-button class="agreeBtn" type="button" ng-click="confirmRemoveEntry(item[0])"><i
|
||||
<md-button class="agreeBtn wz-button" type="button" ng-click="confirmRemoveEntry(item[0])"><i
|
||||
aria-hidden='true' class='fa fa-fw fa-check'></i> Confirm</md-button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -59,6 +59,7 @@ app.directive('wzTable', function () {
|
||||
$scope.showColumns = false;
|
||||
$scope.originalkeys = $scope.keys.map((key, idx) => ({ key, idx }));
|
||||
$scope.updateColumns = key => {
|
||||
$("#wz_table").colResizable({ disable: true });
|
||||
const str = key.key.value || key.key;
|
||||
const cleanArray = $scope.keys.map(item => item.value || item);
|
||||
if (cleanArray.includes(str)) {
|
||||
@ -76,6 +77,8 @@ app.directive('wzTable', function () {
|
||||
$scope.keys.push(key.key);
|
||||
}
|
||||
}
|
||||
init()
|
||||
.then(() => ($scope.setColResizable()))
|
||||
};
|
||||
$scope.exists = key => {
|
||||
const str = key.key.value || key.key;
|
||||
@ -116,7 +119,10 @@ app.directive('wzTable', function () {
|
||||
$scope.rowsPerPage = calcTableRows($window.innerHeight, rowSizes);
|
||||
$scope.itemsPerPage = $scope.rowsPerPage;
|
||||
init()
|
||||
.then(() => (resizing = false))
|
||||
.then(() => {
|
||||
resizing = false;
|
||||
if ($scope.customColumns) { $scope.setColResizable() }
|
||||
})
|
||||
.catch(() => (resizing = false));
|
||||
}, 150);
|
||||
};
|
||||
@ -244,8 +250,8 @@ app.directive('wzTable', function () {
|
||||
/**
|
||||
* On controller loads
|
||||
*/
|
||||
const init = async () =>
|
||||
initTable(
|
||||
const init = async () => {
|
||||
await initTable(
|
||||
$scope,
|
||||
fetch,
|
||||
wzTableFilter,
|
||||
@ -255,7 +261,12 @@ app.directive('wzTable', function () {
|
||||
globalState,
|
||||
$window
|
||||
);
|
||||
|
||||
if ($scope.customColumns) {
|
||||
setTimeout(() => {
|
||||
$scope.setColResizable()
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Pagination variables and functions
|
||||
*/
|
||||
@ -432,7 +443,18 @@ app.directive('wzTable', function () {
|
||||
);
|
||||
};
|
||||
|
||||
$scope.expandPolicyMonitoringCheck = item => {
|
||||
$scope.isSyscheck = () => {
|
||||
return (
|
||||
instance.path.includes('/syscheck')
|
||||
);
|
||||
};
|
||||
|
||||
$scope.isWindows = () => {
|
||||
var agent = $scope.$parent.$parent.$parent.$parent.agent;
|
||||
return (agent.os || {}).platform === "windows"
|
||||
};
|
||||
|
||||
$scope.expandTableRow = item => {
|
||||
if (item.expanded) item.expanded = false;
|
||||
else {
|
||||
$scope.pagedItems[$scope.currentPage].map(
|
||||
@ -455,6 +477,11 @@ app.directive('wzTable', function () {
|
||||
}
|
||||
$c.remove();
|
||||
};
|
||||
|
||||
$scope.setColResizable = () => {
|
||||
$("#wz_table").colResizable({ liveDrag: true, minWidth: 75, partialRefresh: true, draggingClass: false });
|
||||
$scope.$applyAsync();
|
||||
}
|
||||
},
|
||||
template
|
||||
};
|
||||
|
@ -4,22 +4,23 @@
|
||||
</div>
|
||||
</div>
|
||||
<div ng-if="customColumns" layout="row" ng-show="!error && !wazuh_table_loading && items.length" class="columns-bar"
|
||||
ng-class="{'columns-bar-active': showColumns}">
|
||||
ng-class="{'columns-bar-active': showColumns}" ng-style="!showColumns && {'margin-bottom': '-35px'}">
|
||||
<div ng-if="showColumns" class="euiCheckbox wz-margin-right-8" ng-repeat="key in originalkeys" ng-click="updateColumns(key)">
|
||||
<input class="euiCheckbox__input" type="checkbox" aria-label="Select all rows" ng-checked="exists(key)">
|
||||
<div class="euiCheckbox__square"></div>
|
||||
<span class="euiCheckbox__label">{{ keyEquivalence[key.key.value || key.key] }}</span>
|
||||
</div>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" style="line-height: 24px;" ng-click="showColumns = !showColumns" tooltip="Columns"><i
|
||||
<span class="wz-text-link font-size-18" style="line-height: 24px;" ng-click="showColumns = !showColumns" tooltip="Columns"><i
|
||||
class="fa fa-fw fa-gear"></i></span>
|
||||
</div>
|
||||
|
||||
<div layout="row" ng-show="!error && !wazuh_table_loading && items.length" ng-if="!isPolicyMonitoring()">
|
||||
<table class="table table-striped table-condensed table-hover" style="table-layout: fixed !important" id="wz_table">
|
||||
<div ng-show="!error && !wazuh_table_loading && items.length" ng-if="!isPolicyMonitoring() && !isSyscheck()">
|
||||
<table class="table table-striped table-condensed table-hover no-margin-bottom" ng-class="customColumns ? 'table-resizable' : ''"
|
||||
style="table-layout: fixed !important" id="wz_table">
|
||||
<thead class="wz-text-bold">
|
||||
<th ng-repeat="key in keys" class="wz-text-left" ng-class="{ 'cursor-pointer' : !key.nosortable, 'col-lg-1' : !key.size, 'col-lg-{{key.size}}' : key.size }"
|
||||
ng-click="!key.nosortable && sort(key)" ng-style="(path === '/agents' && key === 'id') && {'width':'65px'}">
|
||||
<th ng-repeat="key in keys" class="wz-text-left" ng-class="{ 'cursor-pointer' : !key.nosortable}" ng-click="!key.nosortable && sort(key)"
|
||||
ng-style="key.width && {'width':key.width}">
|
||||
{{ path === '/agents/groups' && (key.value || key) === 'count' ? 'Agents' : keyEquivalence[key.value ||
|
||||
key] || key.value || key }}
|
||||
<i ng-if="!key.nosortable" class="fa wz-theader-sort-icon" ng-class="sortValue === (key.value || key) ? (sortDir ? 'fa-sort-asc' : 'fa-sort-desc') : 'fa-sort'"
|
||||
@ -64,7 +65,7 @@
|
||||
<div layout="row">
|
||||
<md-button class="cancelBtn" type="button" ng-click="cancelRemoveGroup()"><i aria-hidden='true'
|
||||
class='fa fa-fw fa-close'></i> Cancel</md-button>
|
||||
<md-button class="agreeBtn" type="button" ng-click="confirmRemoveGroup(item.name)"><i
|
||||
<md-button class="agreeBtn wz-button" type="button" ng-click="confirmRemoveGroup(item.name)"><i
|
||||
aria-hidden='true' class='fa fa-fw fa-check'></i> Confirm</md-button>
|
||||
</div>
|
||||
</div>
|
||||
@ -82,7 +83,7 @@
|
||||
<div layout="row">
|
||||
<md-button class="cancelBtn" type="button" ng-click="cancelRemoveAgent()"><i aria-hidden='true'
|
||||
class='fa fa-fw fa-close'></i> Cancel</md-button>
|
||||
<md-button class="agreeBtn" type="button" ng-click="confirmRemoveAgent(item.id)"><i
|
||||
<md-button class="agreeBtn wz-button" type="button" ng-click="confirmRemoveAgent(item.id)"><i
|
||||
aria-hidden='true' class='fa fa-fw fa-check'></i> Confirm</md-button>
|
||||
</div>
|
||||
</div>
|
||||
@ -105,7 +106,7 @@
|
||||
<div layout="row">
|
||||
<md-button class="cancelBtn" type="button" ng-click="cancelRemoveFile()"><i aria-hidden='true'
|
||||
class='fa fa-fw fa-close'></i> Cancel</md-button>
|
||||
<md-button class="agreeBtn" type="button" ng-click="confirmRemoveFile(item, path)"><i
|
||||
<md-button class="agreeBtn wz-button" type="button" ng-click="confirmRemoveFile(item, path)"><i
|
||||
aria-hidden='true' class='fa fa-fw fa-check'></i> Confirm</md-button>
|
||||
</div>
|
||||
</div>
|
||||
@ -138,11 +139,11 @@
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div layout="row" ng-show="!error && !wazuh_table_loading && items.length" ng-if="isPolicyMonitoring()">
|
||||
<table class="table table-striped table-striped-duo table-condensed table-hover" style="table-layout: fixed !important"
|
||||
id="wz_table">
|
||||
<div ng-show="!error && !wazuh_table_loading && items.length" ng-if="isPolicyMonitoring()">
|
||||
<table class="table table-striped table-striped-duo table-condensed table-hover no-margin-bottom" ng-class="customColumns ? 'table-resizable' : ''"
|
||||
style="table-layout: fixed !important" id="wz_table">
|
||||
<thead class="wz-text-bold">
|
||||
<th ng-repeat="key in keys" class="wz-text-left" ng-class="{ 'cursor-pointer' : !key.nosortable, 'col-lg-1' : !key.size, 'col-lg-{{key.size}}' : key.size }"
|
||||
<th ng-repeat="key in keys" class="wz-text-left" ng-class="{ 'cursor-pointer' : !key.nosortable }" ng-style="key.width && {'width':key.width}"
|
||||
ng-click="!key.nosortable && sort(key)">
|
||||
{{ keyEquivalence[key.value || key] || key.value || key }}
|
||||
<i ng-if="!key.nosortable" class="fa wz-theader-sort-icon" ng-class="sortValue === (key.value || key) ? (sortDir ? 'fa-sort-asc' : 'fa-sort-desc') : 'fa-sort'"
|
||||
@ -151,7 +152,7 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="wz-word-wrap cursor-pointer" ng-repeat-start="item in pagedItems[currentPage] | filter:{item:'!'}"
|
||||
ng-click="expandPolicyMonitoringCheck(item)" ng-class="{'selected': item.expanded}">
|
||||
ng-click="expandTableRow(item)" ng-class="{'selected': item.expanded}">
|
||||
<td ng-repeat="key in keys" id="td-{{$parent.$index}}-{{$index}}" ng-mouseover="showTooltip($parent.$index, $index, item)">
|
||||
<div class="wz-text-truncatable">
|
||||
<span>
|
||||
@ -170,7 +171,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr ng-if="item.rationale || item.remediation || item.directory || (item.compliance && item.compliance.length)"
|
||||
class="wz-word-wrap cursor-pointer selected" ng-show="item.expanded" ng-repeat-end="" ng-click="expandPolicyMonitoringCheck(item)">
|
||||
class="wz-word-wrap cursor-pointer selected" ng-show="item.expanded" ng-repeat-end="" ng-click="expandTableRow(item)">
|
||||
<td colspan="3" style="border-top: none">
|
||||
<div layout="row" layout-padding="" class="layout-padding layout-row">
|
||||
<md-card flex="" class="wz-md-card wz-padding-top-0 wz-padding-bottom-0 wz-no-margin _md flex">
|
||||
@ -245,6 +246,84 @@
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div ng-show="!error && !wazuh_table_loading && items.length" ng-if="isSyscheck()">
|
||||
<table class="table table-striped table-striped-duo table-condensed table-hover no-margin-bottom" ng-class="customColumns ? 'table-resizable' : ''"
|
||||
style="table-layout: fixed !important" id="wz_table">
|
||||
<thead class="wz-text-bold">
|
||||
<th ng-repeat="key in keys" class="wz-text-left" ng-class="{ 'cursor-pointer' : !key.nosortable }" ng-style="key.width && {'width':key.width}"
|
||||
ng-click="!key.nosortable && sort(key)">
|
||||
{{ keyEquivalence[key.value || key] || key.value || key }}
|
||||
<i ng-if="!key.nosortable" class="fa wz-theader-sort-icon" ng-class="sortValue === (key.value || key) ? (sortDir ? 'fa-sort-asc' : 'fa-sort-desc') : 'fa-sort'"
|
||||
aria-hidden="true"></i>
|
||||
</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="wz-word-wrap cursor-pointer" ng-repeat-start="item in pagedItems[currentPage] | filter:{item:'!'}"
|
||||
ng-click="expandTableRow(item)" ng-class="{'selected': item.expanded}">
|
||||
<td ng-repeat="key in keys" id="td-{{$parent.$index}}-{{$index}}" ng-mouseover="showTooltip($parent.$index, $index, item)">
|
||||
<div class="wz-text-truncatable">
|
||||
<span>
|
||||
{{
|
||||
parseValue(key,item)
|
||||
}}
|
||||
</span>
|
||||
<md-tooltip ng-show="item.showTooltip[$index]" md-direction="bottom" class="wz-tooltip">
|
||||
{{ parseValue(key,item) }}
|
||||
</md-tooltip>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="wz-word-wrap cursor-pointer selected" ng-show="item.expanded" ng-repeat-end="" ng-click="expandTableRow(item)">
|
||||
<td colspan="{{keys.length}}" style="border-top: none">
|
||||
<div layout="row" layout-padding="" class="layout-padding layout-row" ng-if="item.expanded">
|
||||
<md-card flex="" class="wz-md-card wz-padding-top-0 wz-padding-bottom-0 wz-no-margin _md flex">
|
||||
<md-card-content>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<table class="table table-striped table-condensed">
|
||||
<tbody>
|
||||
<tr ng-repeat="(key, value) in item" ng-if="key !== 'expanded' && key !== 'showTooltip'"
|
||||
ng-show="!isWindows() || (key !== 'inode' && key !== 'gid' && key !== 'gname')"
|
||||
class="no-duo">
|
||||
<td class="wz-word-break-rule">{{key}}</td>
|
||||
<td>
|
||||
<span class="wz-text-right color-grey">{{value}}</span>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
<tfoot>
|
||||
<td colspan="{{keys.length}}">
|
||||
<span ng-show="!wazuh_table_loading" class="color-grey">{{ totalItems }} items ({{time | number: 2}}
|
||||
seconds)</span>
|
||||
<div ng-show="items.length >= itemsPerPage" class="pagination pull-right" style="margin:0 !important">
|
||||
<ul layout="row">
|
||||
<li ng-show="currentPage" class="md-padding">
|
||||
<a href ng-click="prevPage()">« Prev</a>
|
||||
</li>
|
||||
|
||||
<li ng-repeat="n in range(pagedItems.length, currentPage, currentPage + gap) " ng-class="{'wz-text-active': n == currentPage}"
|
||||
ng-click="setPage()" class="md-padding">
|
||||
<a href ng-bind="n + 1">1</a>
|
||||
</li>
|
||||
|
||||
<li ng-show="currentPage < pagedItems.length - 1" class="md-padding">
|
||||
<a href ng-click="nextPage()">Next »</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</td>
|
||||
</tfoot>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div layout="row" ng-if="!error && !wazuh_table_loading && !totalItems">
|
||||
<div flex class="euiCallOut euiCallOut--warning">
|
||||
<div class="euiCallOutHeader">
|
||||
|
@ -235,7 +235,11 @@ margin-top: 8px;
|
||||
.wz-button {
|
||||
color: white !important;
|
||||
transition: none !important;
|
||||
background-color: rgb(0, 85, 113) !important;
|
||||
//background-color: rgb(0, 85, 113) !important;
|
||||
background-color: #0079a5 !important;
|
||||
min-width: 115px!important;
|
||||
border-radius: 4px!important;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.wz-button-flat {
|
||||
@ -247,8 +251,10 @@ margin-top: 8px;
|
||||
.wz-button.active,
|
||||
.wz-button:not([disabled]):hover,
|
||||
.wz-button-flat:not([disabled]):hover {
|
||||
background-color: rgb(0, 121, 165) !important;
|
||||
background-color: #005571 !important;
|
||||
color: white !important;
|
||||
text-decoration: underline;
|
||||
box-shadow: 0 3px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
.wz-back-btn-absolute{
|
||||
@ -495,7 +501,7 @@ md-sidenav {
|
||||
}
|
||||
|
||||
.wz-dev-column-separator{
|
||||
width: 14px;
|
||||
width: 12px;
|
||||
margin-top: 25px;
|
||||
background: #dddddd;
|
||||
float: left;
|
||||
@ -509,6 +515,11 @@ md-sidenav {
|
||||
background-color: #cce4ed;
|
||||
}
|
||||
|
||||
.wz-dev-column-separator:focus, .wz-dev-column-separator.active {
|
||||
background-color: #0079a5;
|
||||
color: #FFF;
|
||||
}
|
||||
|
||||
.wz-dev-column-separator span {
|
||||
height: calc(~'100vh - 110px');
|
||||
display: table-cell;
|
||||
@ -531,6 +542,10 @@ md-sidenav {
|
||||
height: calc(~'100vh - 85px');
|
||||
}
|
||||
|
||||
.wz-dev-box .CodeMirror{
|
||||
border: 1px solid #ddd!important;
|
||||
}
|
||||
|
||||
/* Card and select input shadow overriding */
|
||||
|
||||
.wz-md-card:not(.wz-metric-color) {
|
||||
@ -540,7 +555,7 @@ md-sidenav {
|
||||
}
|
||||
|
||||
.wz-card-actions {
|
||||
margin: 0 !important;
|
||||
margin: 15px 0 0 0;
|
||||
padding: 0 10px !important;
|
||||
border-top: 1px solid #dfeff8 !important;
|
||||
background-color: #ecf6fb;
|
||||
@ -550,6 +565,7 @@ md-sidenav {
|
||||
border-bottom: 1px solid #dfeff8;
|
||||
padding: 5px 10px!important;
|
||||
min-height: 42px;
|
||||
margin: 0!important;
|
||||
}
|
||||
md-switch.md-default-theme .md-thumb, md-switch .md-thumb {
|
||||
border: 1px solid #d3dae6;
|
||||
@ -722,6 +738,10 @@ md-switch.md-default-theme.md-checked .md-thumb, md-switch.md-checked .md-thumb
|
||||
padding-bottom: 14px;
|
||||
}
|
||||
|
||||
.wz-padding-bottom-30 {
|
||||
padding-bottom: 30px;
|
||||
}
|
||||
|
||||
.addGroupInput {
|
||||
height: 40px !important;
|
||||
max-width: 181px !important;
|
||||
@ -738,8 +758,6 @@ md-switch.md-default-theme.md-checked .md-thumb, md-switch.md-checked .md-thumb
|
||||
height: 25px !important;
|
||||
line-height: inherit !important;
|
||||
color: #ffffff !important;
|
||||
background-color: #006BB4 !important;
|
||||
border-color: #006BB4 !important;
|
||||
}
|
||||
|
||||
.cancelBtn {
|
||||
@ -749,6 +767,7 @@ md-switch.md-default-theme.md-checked .md-thumb, md-switch.md-checked .md-thumb
|
||||
min-height: 0px !important;
|
||||
height: 25px !important;
|
||||
line-height: inherit !important;
|
||||
border-radius: 4px!important;
|
||||
}
|
||||
|
||||
.agents-prev-btn {
|
||||
@ -834,13 +853,17 @@ wz-xml-file-editor {
|
||||
background: #ecf6fb!important;
|
||||
}
|
||||
|
||||
.table-striped-duo tbody tr:nth-child(2n+1):not(:hover), .table-striped-duo tbody tr:nth-child(2n+2):not(:hover) {
|
||||
.table-striped-duo>tbody tr:not(.no-duo):nth-child(2n+1):not(:hover), .table-striped-duo>tbody tr:not(.no-duo):nth-child(2n+2):not(:hover) {
|
||||
background: #f9f9f9;
|
||||
}
|
||||
.table-striped-duo tbody tr:nth-child(4n+1):not(:hover), .table-striped-duo tbody tr:nth-child(4n+2):not(:hover) {
|
||||
.table-striped-duo>tbody tr:not(.no-duo):nth-child(4n+1):not(:hover), .table-striped-duo>tbody tr:not(.no-duo):nth-child(4n+2):not(:hover) {
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
.table-resizable>thead th:not(:first-child){
|
||||
border-left: 1px dashed #dfeff8;
|
||||
}
|
||||
|
||||
.daemons-card {
|
||||
padding: 16px 5px !important;
|
||||
}
|
||||
|
@ -48,6 +48,10 @@ html, body, button:not(.fa):not(.fa-times), textarea, input, select, .wz-chip {
|
||||
line-height: 20px !important;
|
||||
}
|
||||
|
||||
.wz-line-height-40 {
|
||||
line-height: 40px !important;
|
||||
}
|
||||
|
||||
.wz-text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -2819,6 +2819,9 @@
|
||||
background-image: url('data:image/svg+xml;utf8,<svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 704q0 26-19 45l-448 448q-19 19-45 19t-45-19l-448-448q-19-19-19-45t19-45 45-19h896q26 0 45 19t19 45z" fill="#CECECE"/></svg>');
|
||||
/* 1 */ }
|
||||
|
||||
.kuiLocalSearchButton:hover {
|
||||
background-color: #005571 !important;
|
||||
}
|
||||
/**
|
||||
* 1. Override inherited styles.
|
||||
*/
|
||||
@ -2829,7 +2832,7 @@
|
||||
line-height: 0;
|
||||
/* 1 */
|
||||
color: #ffffff;
|
||||
background-color: #00445a;
|
||||
background-color: #0079a5 !important;
|
||||
border: 0;
|
||||
border-radius: 0 4px 4px 0; }
|
||||
.kuiLocalSearchButton:focus {
|
||||
|
@ -58,18 +58,14 @@
|
||||
|
||||
<div layout="row">
|
||||
<md-card flex class="wz-md-card _md flex md-margin-h">
|
||||
<md-card-content>
|
||||
<wz-table custom-columns="true" flex path="'/agents'" keys="['id','name','ip','status','group','os.name','os.version','version', 'dateAdd', 'lastKeepAlive']"
|
||||
allow-click="true" row-sizes="[17,15,13]">
|
||||
<md-card-content class="wz-padding-bottom-30">
|
||||
<wz-table custom-columns="true" flex path="'/agents'" keys="[{value: 'id', width: '75px'},'name','ip','status','group','os.name','os.version','version', 'dateAdd', 'lastKeepAlive']"
|
||||
allow-click="true" row-sizes="[17,15,13]"></wz-table>
|
||||
</md-card-content>
|
||||
<md-card-actions layout="row" layout-align="end center" class="wz-card-actions layout-align-end-center layout-row">
|
||||
<a class="wz-text-link cursor-pointer small md-button md-ink-ripple" id="btnDownload" ng-click="ctrl.downloadCsv()">Formatted
|
||||
<i aria-hidden="true" class="fa fa-download"></i></a>
|
||||
</md-card-actions>
|
||||
</md-card>
|
||||
</wz-table>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="wz-margin-top-10 md-padding-h">
|
||||
<span flex></span>
|
||||
<a class="small" id="btnDownload" ng-click="ctrl.downloadCsv()">Formatted
|
||||
<i aria-hidden="true" class="fa fa-download"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
@ -25,7 +25,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-230">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Groups</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -36,7 +36,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Directories</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -47,7 +47,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Files</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -61,7 +61,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-230">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(3)">
|
||||
<span class="wz-headline-title">Alerts over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -76,7 +76,7 @@
|
||||
<div flex="20" layout="column" layout-align="center stretch">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(4)">
|
||||
<span class="wz-headline-title">File read access</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -88,7 +88,7 @@
|
||||
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(5)">
|
||||
<span class="wz-headline-title">File write access</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -102,7 +102,7 @@
|
||||
<div flex="60" layout="column" layout-align="center stretch">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(6)">
|
||||
<span class="wz-headline-title">Commands</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(6)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -116,7 +116,7 @@
|
||||
<div flex="20" layout="column" layout-align="center stretch">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[7]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(7)">
|
||||
<span class="wz-headline-title">Created files</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(7)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -127,7 +127,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[8]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(8)">
|
||||
<span class="wz-headline-title">Removed files</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(8)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -142,7 +142,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[9]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(9)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(9)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -44,7 +44,7 @@
|
||||
<div layout="row" layout-align="start stretch" class="height-320">
|
||||
<md-card flex="60" class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Top 5 CIS-CAT groups</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -55,7 +55,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Scan result evolution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -71,7 +71,7 @@
|
||||
<div layout="row" layout-align="start stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -1,19 +1,19 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels'" ng-show="!showSyscheckFiles"
|
||||
ng-class="{'no-opacity': resultState !== 'ready' || !rendered}" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels'" ng-show="!showSyscheckFiles" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}"
|
||||
layout-align="start">
|
||||
<div layout="row">
|
||||
<span flex></span>
|
||||
<md-button ng-click="launchSyscheckScan()" class="wz-button pull-right"><i class="fa fa-fw fa-play"></i> Run
|
||||
scan</md-button>
|
||||
<span></span>
|
||||
<md-button ng-click="switchSyscheckFiles()" class="wz-button pull-right"><i class="fa fa-fw fa-database"></i>
|
||||
Show state</md-button>
|
||||
Show files</md-button>
|
||||
</div>
|
||||
<!-- View: Panels -->
|
||||
<div layout="row" class="height-300">
|
||||
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Most active users</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -24,7 +24,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Actions</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -36,7 +36,7 @@
|
||||
|
||||
<md-card flex="40" class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Events</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -51,7 +51,7 @@
|
||||
<div layout="row" class="height-230">
|
||||
<md-card flex="33" class="wz-md-card" ng-class="{'fullscreen': expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(3)">
|
||||
<span class="wz-headline-title">Files added</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -62,7 +62,7 @@
|
||||
</md-card>
|
||||
<md-card flex="33" class="wz-md-card" ng-class="{'fullscreen': expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(4)">
|
||||
<span class="wz-headline-title">Files modified</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -74,7 +74,7 @@
|
||||
</md-card>
|
||||
<md-card flex="33" class="wz-md-card" ng-class="{'fullscreen': expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(5)">
|
||||
<span class="wz-headline-title">Files deleted</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -89,7 +89,7 @@
|
||||
<div layout="row" layout-align="space-between stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(6)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(6)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -101,8 +101,7 @@
|
||||
</div>
|
||||
</md-content>
|
||||
|
||||
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels' && showSyscheckFiles"
|
||||
layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels' && showSyscheckFiles" layout-align="start">
|
||||
<div layout="row">
|
||||
<span flex></span>
|
||||
<md-button ng-click="launchSyscheckScan()" class="wz-button pull-right"><i class="fa fa-fw fa-play"></i>
|
||||
@ -112,16 +111,13 @@
|
||||
Show alerts</md-button>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8"
|
||||
ng-if="showSyscheckFiles && (!agent || !agent.os)">
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="showSyscheckFiles && (!agent || !agent.os)">
|
||||
<div flex class="euiCallOut euiCallOut--warning">
|
||||
<div class="euiCallOutHeader">
|
||||
<svg class="euiIcon euiIcon--medium euiCallOutHeader__icon" aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"
|
||||
viewBox="0 0 16 16">
|
||||
<svg class="euiIcon euiIcon--medium euiCallOutHeader__icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
|
||||
<defs>
|
||||
<path id="help-a"
|
||||
d="M13.6 12.186l-1.357-1.358c-.025-.025-.058-.034-.084-.056.53-.794.84-1.746.84-2.773a4.977 4.977 0 0 0-.84-2.772c.026-.02.059-.03.084-.056L13.6 3.813a6.96 6.96 0 0 1 0 8.373zM8 15A6.956 6.956 0 0 1 3.814 13.6l1.358-1.358c.025-.025.034-.057.055-.084C6.02 12.688 6.974 13 8 13a4.978 4.978 0 0 0 2.773-.84c.02.026.03.058.056.083l1.357 1.358A6.956 6.956 0 0 1 8 15zm-5.601-2.813a6.963 6.963 0 0 1 0-8.373l1.359 1.358c.024.025.057.035.084.056A4.97 4.97 0 0 0 3 8c0 1.027.31 1.98.842 2.773-.027.022-.06.031-.084.056l-1.36 1.358zm5.6-.187A4 4 0 1 1 8 4a4 4 0 0 1 0 8zM8 1c1.573 0 3.019.525 4.187 1.4l-1.357 1.358c-.025.025-.035.057-.056.084A4.979 4.979 0 0 0 8 3a4.979 4.979 0 0 0-2.773.842c-.021-.027-.03-.059-.055-.084L3.814 2.4A6.957 6.957 0 0 1 8 1zm0-1a8.001 8.001 0 1 0 .003 16.002A8.001 8.001 0 0 0 8 0z">
|
||||
<path id="help-a" d="M13.6 12.186l-1.357-1.358c-.025-.025-.058-.034-.084-.056.53-.794.84-1.746.84-2.773a4.977 4.977 0 0 0-.84-2.772c.026-.02.059-.03.084-.056L13.6 3.813a6.96 6.96 0 0 1 0 8.373zM8 15A6.956 6.956 0 0 1 3.814 13.6l1.358-1.358c.025-.025.034-.057.055-.084C6.02 12.688 6.974 13 8 13a4.978 4.978 0 0 0 2.773-.84c.02.026.03.058.056.083l1.357 1.358A6.956 6.956 0 0 1 8 15zm-5.601-2.813a6.963 6.963 0 0 1 0-8.373l1.359 1.358c.024.025.057.035.084.056A4.97 4.97 0 0 0 3 8c0 1.027.31 1.98.842 2.773-.027.022-.06.031-.084.056l-1.36 1.358zm5.6-.187A4 4 0 1 1 8 4a4 4 0 0 1 0 8zM8 1c1.573 0 3.019.525 4.187 1.4l-1.357 1.358c-.025.025-.035.057-.056.084A4.979 4.979 0 0 0 8 3a4.979 4.979 0 0 0-2.773.842c-.021-.027-.03-.059-.055-.084L3.814 2.4A6.957 6.957 0 0 1 8 1zm0-1a8.001 8.001 0 1 0 .003 16.002A8.001 8.001 0 0 0 8 0z">
|
||||
</path>
|
||||
</defs>
|
||||
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#help-a" fill-rule="evenodd"></use>
|
||||
@ -133,91 +129,76 @@
|
||||
|
||||
<div layout="row" class="wz-padding-top-0" ng-if="agent && agent.os && agent.os.platform === 'windows'">
|
||||
<md-card flex="" class="wz-md-card _md flex">
|
||||
<md-card-content>
|
||||
<md-card-content class="wz-padding-bottom-30">
|
||||
<span class="wz-headline-title"><i class="fa fa-fw fa-windows"></i> Windows registry</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<div layout="row" class="wz-margin-top-10">
|
||||
<input placeholder="Filter registry..." ng-model="registrySearch" type="text"
|
||||
class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid height-30"
|
||||
aria-invalid="false"
|
||||
wz-enter="searchSyscheckFile(registrySearch,{name:'type',value:'registry'})">
|
||||
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-30"
|
||||
ng-click="searchSyscheckFile(registrySearch,{name:'type',value:'registry'})">
|
||||
<input placeholder="Filter registry..." ng-model="registrySearch" type="text" class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid height-30"
|
||||
aria-invalid="false" wz-enter="searchSyscheckFile(registrySearch,{name:'type',value:'registry'})">
|
||||
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-30" ng-click="searchSyscheckFile(registrySearch,{name:'type',value:'registry'})">
|
||||
<span class="fa fa-search" aria-hidden="true"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div layout="row" ng-if="agent && !load" class="wz-margin-top-10 wz-margin-bottom-40-inv">
|
||||
<wz-table flex path="'/syscheck/' + agent.id" implicit-filter="[{name:'type',value:'registry'}]"
|
||||
row-sizes="[6,6,6]" extra-limit="100" keys="['file','sha1','md5']">
|
||||
row-sizes="[6,6,6]" extra-limit="100" keys="['file']">
|
||||
</wz-table>
|
||||
</div>
|
||||
<div layout="row" layout-padding>
|
||||
<span flex></span>
|
||||
<a class="small" id="btnDownload"
|
||||
ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-registry.csv', [{name:'type',value:'registry'}])">Formatted
|
||||
<i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
|
||||
</div>
|
||||
</md-card-content>
|
||||
<md-card-actions layout="row" layout-align="end center" class="wz-card-actions layout-align-end-center layout-row">
|
||||
<a class="wz-text-link cursor-pointer small md-button md-ink-ripple" id="btnDownload" ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-registry.csv', [{name:'type',value:'registry'}])">Formatted
|
||||
<i aria-hidden="true" class="fa fa-download"></i></a>
|
||||
</md-card-actions>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="wz-padding-top-0" ng-if="agent && agent.os && agent.os.platform === 'windows'">
|
||||
<md-card flex="" class="wz-md-card _md flex">
|
||||
<md-card-content>
|
||||
<md-card-content class="wz-padding-bottom-30">
|
||||
<span class="wz-headline-title"><i class="fa fa-fw fa-file-o"></i> Files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<div layout="row" class="wz-margin-top-10">
|
||||
<input placeholder="Filter files..." ng-model="filesSearch" type="text"
|
||||
class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid height-30"
|
||||
<input placeholder="Filter files..." ng-model="filesSearch" type="text" class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid height-30"
|
||||
aria-invalid="false" wz-enter="searchSyscheckFile(filesSearch,{name:'type',value:'file'})">
|
||||
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-30"
|
||||
ng-click="searchSyscheckFile(filesSearch,{name:'type',value:'file'})">
|
||||
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-30" ng-click="searchSyscheckFile(filesSearch,{name:'type',value:'file'})">
|
||||
<span class="fa fa-search" aria-hidden="true"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div layout="row" ng-if="agent && !load" class="wz-margin-top-10 wz-margin-bottom-40-inv">
|
||||
<wz-table flex path="'/syscheck/' + agent.id" implicit-filter="[{name:'type',value:'file'}]"
|
||||
row-sizes="[6,6,6]" extra-limit="100"
|
||||
keys="['file','size','uname','perm','sha1','sha256','uid','mtime','md5']">
|
||||
row-sizes="[6,6,6]" extra-limit="100" keys="['file',{value: 'size', width: '100px'},'uname','perm','sha256',{value: 'uid', width: '100px'},'mtime']">
|
||||
</wz-table>
|
||||
</div>
|
||||
<div layout="row" layout-padding>
|
||||
<span flex></span>
|
||||
<a class="small" id="btnDownload"
|
||||
ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-files.csv', [{name:'type',value:'file'}])">Formatted
|
||||
<i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
|
||||
</div>
|
||||
</md-card-content>
|
||||
<md-card-actions layout="row" layout-align="end center" class="wz-card-actions layout-align-end-center layout-row">
|
||||
<a class="wz-text-link cursor-pointer small md-button md-ink-ripple" id="btnDownload" ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-files.csv', [{name:'type',value:'file'}])">Formatted
|
||||
<i aria-hidden="true" class="fa fa-download"></i></a>
|
||||
</md-card-actions>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="wz-padding-top-0" ng-if="agent && agent.os && agent.os.platform !== 'windows'">
|
||||
<md-card flex="" class="wz-md-card _md flex">
|
||||
<md-card-content>
|
||||
<md-card-content class="wz-padding-bottom-30">
|
||||
<span class="wz-headline-title"><i class="fa fa-fw fa-file-o"></i> Files</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-bottom-25">
|
||||
<input placeholder="Filter files..." ng-model="filesSearch" type="text"
|
||||
class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid height-30"
|
||||
<input placeholder="Filter files..." ng-model="filesSearch" type="text" class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid height-30"
|
||||
aria-invalid="false" wz-enter="searchSyscheckFile(filesSearch)">
|
||||
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-30"
|
||||
ng-click="searchSyscheckFile(filesSearch)">
|
||||
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-30" ng-click="searchSyscheckFile(filesSearch)">
|
||||
<span class="fa fa-search" aria-hidden="true"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div layout="row" ng-if="agent && !load" class="wz-margin-top-16 wz-margin-bottom-40-inv">
|
||||
<wz-table custom-columns="true" flex path="'/syscheck/' + agent.id" row-sizes="[12,10,8]"
|
||||
extra-limit="100"
|
||||
keys="['file','size','inode','gname','uname','perm','sha1','sha256','uid','gid','mtime','md5']">
|
||||
extra-limit="100" keys="['file',{value: 'size', width: '100px'},{value: 'gname', width: '150px'},{value: 'uname', width: '150px'},{value: 'perm', width: '125px'},'sha256',{value: 'uid', width: '100px'},{value: 'gid', width: '100px'},{value: 'mtime', width: '150px'}]">
|
||||
</wz-table>
|
||||
</div>
|
||||
<div layout="row" layout-padding>
|
||||
<span flex></span>
|
||||
<a class="small" id="btnDownload"
|
||||
ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-files.csv')">Formatted
|
||||
<i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
|
||||
</div>
|
||||
</md-card-content>
|
||||
<md-card-actions layout="row" layout-align="end center" class="wz-card-actions layout-align-end-center layout-row">
|
||||
<a class="wz-text-link cursor-pointer small md-button md-ink-ripple" id="btnDownload" ng-click="downloadCsv('/syscheck/' + agent.id, 'fim-files.csv')">Formatted
|
||||
<i aria-hidden="true" class="fa fa-download"></i></a>
|
||||
</md-card-actions>
|
||||
</md-card>
|
||||
</div>
|
||||
</md-content>
|
@ -22,7 +22,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Top 5 rule groups</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -33,7 +33,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Top 5 rules</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -44,7 +44,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Top 5 GDPR requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -58,7 +58,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-300">
|
||||
<md-card flex="70" class="wz-md-card" ng-class="{'fullscreen': expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(3)">
|
||||
<span class="wz-headline-title">GDPR Requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -69,7 +69,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(4)">
|
||||
<span class="wz-headline-title">Rule level distribution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -83,7 +83,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card class="wz-md-card" flex ng-class="{'fullscreen': expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(5)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'general' && tabView === 'panels'"
|
||||
ng-class="{'no-opacity': resultState !== 'ready' || !rendered}" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'general' && tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}"
|
||||
layout-align="start">
|
||||
|
||||
<!-- Agent information section -->
|
||||
<div layout="row" layout-align="start center">
|
||||
@ -30,8 +30,7 @@
|
||||
<md-card flex class="wz-metric-color wz-md-card">
|
||||
<md-card-content layout="row" class="wz-padding-metric">
|
||||
<div class="wz-word-break" flex ng-if="agent.group">
|
||||
Groups: <span ng-repeat="group in agent.group" class="wz-text-bold wz-text-link"
|
||||
ng-click="goGroups(agent,$index)">{{
|
||||
Groups: <span ng-repeat="group in agent.group" class="wz-text-bold wz-text-link" ng-click="goGroups(agent,$index)">{{
|
||||
group }} </span>
|
||||
</div>
|
||||
</md-card-content>
|
||||
@ -44,11 +43,9 @@
|
||||
|| 'Unknown' }}</span></div>
|
||||
<div class="wz-text-truncatable" flex>Registration date:<span class="wz-text-bold">
|
||||
{{agent.dateAdd}}</span></div>
|
||||
<div class="wz-text-truncatable" flex ng-if="agent.syscheck.inProgress">Last syscheck scan:<span
|
||||
class="wz-text-bold">
|
||||
<div class="wz-text-truncatable" flex ng-if="agent.syscheck.inProgress">Last syscheck scan:<span class="wz-text-bold">
|
||||
Scan in progress</span></div>
|
||||
<div class="wz-text-truncatable" flex ng-if="!agent.syscheck.inProgress">Last syscheck scan:<span
|
||||
class="wz-text-bold">
|
||||
<div class="wz-text-truncatable" flex ng-if="!agent.syscheck.inProgress">Last syscheck scan:<span class="wz-text-bold">
|
||||
{{agent.syscheck.end || 'Unknown'}}</span>
|
||||
<md-tooltip ng-if="!agent.syscheck.inProgress && agent.syscheck.start && agent.syscheck.end"
|
||||
md-direction="bottom" class="wz-tooltip">
|
||||
@ -76,19 +73,18 @@
|
||||
<div layout="row" layout-align="start stretch" class="height-400">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(3)">
|
||||
<span class="wz-headline-title">Alert level evolution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-Overview-Alert-level-evolution"
|
||||
vis-id="'Wazuh-App-Agents-Overview-Alert-level-evolution'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-Overview-Alert-level-evolution" vis-id="'Wazuh-App-Agents-Overview-Alert-level-evolution'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(4)">
|
||||
<span class="wz-headline-title">Alerts</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -103,7 +99,7 @@
|
||||
<div layout="row" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Top 5 alerts</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -115,27 +111,25 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Top 10 groups</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-Overview-Top-10-groups"
|
||||
vis-id="'Wazuh-App-Agents-Overview-Top-10-groups'">
|
||||
<kbn-vis id="Wazuh-App-Agents-Overview-Top-10-groups" vis-id="'Wazuh-App-Agents-Overview-Top-10-groups'">
|
||||
</kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Top 5 PCI DSS Requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-Overview-Top-5-PCI-DSS-Requirements"
|
||||
vis-id="'Wazuh-App-Agents-Overview-Top-5-PCI-DSS-Requirements'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-Overview-Top-5-PCI-DSS-Requirements" vis-id="'Wazuh-App-Agents-Overview-Top-5-PCI-DSS-Requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
@ -143,19 +137,18 @@
|
||||
<div layout="row" class="height-570">
|
||||
<md-card class="wz-md-card" ng-class="{'fullscreen': expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(5)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Agents-Overview-Alerts-summary'"
|
||||
id="Wazuh-App-Agents-Overview-Alerts-summary"></kbn-vis>
|
||||
<kbn-vis vis-id="'Wazuh-App-Agents-Overview-Alerts-summary'" id="Wazuh-App-Agents-Overview-Alerts-summary"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(6)">
|
||||
<span class="wz-headline-title">Groups summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(6)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -22,7 +22,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-230">
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Top 5 Scans</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -33,7 +33,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Top 5 Profiles</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -44,7 +44,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Top 5 Content</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -55,7 +55,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(3)">
|
||||
<span class="wz-headline-title">Top 5 Severity</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -69,7 +69,7 @@
|
||||
<div layout="row" layout-align="start stretch" class="height-230">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(4)">
|
||||
<span class="wz-headline-title">Daily scans evolution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -83,7 +83,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-250">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(5)">
|
||||
<span class="wz-headline-title">Top 5 - Alerts</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -94,7 +94,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(6)">
|
||||
<span class="wz-headline-title">Top 5 - High risk alerts</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(6)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -108,7 +108,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[7]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(7)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(7)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div layout="row" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Most common Osquery packs being used</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -14,7 +14,7 @@
|
||||
</md-card>
|
||||
<md-card flex="70" class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Evolution of Osquery events per pack over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -28,7 +28,7 @@
|
||||
<div layout="row" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Most common Osquery actions</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -40,7 +40,7 @@
|
||||
|
||||
<md-card flex="70" class="wz-md-card" ng-class="{'fullscreen': expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(3)">
|
||||
<span class="wz-headline-title">Most common rules</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -54,7 +54,7 @@
|
||||
<div layout="row" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(4)">
|
||||
<span class="wz-headline-title">Evolution of Osquery events over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Top 5 rule groups</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -32,7 +32,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Top 5 rules</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -43,7 +43,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Top 5 PCI DSS requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -57,7 +57,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-300">
|
||||
<md-card flex="70" class="wz-md-card" ng-class="{'fullscreen': expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(3)">
|
||||
<span class="wz-headline-title">PCI Requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -68,7 +68,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(4)">
|
||||
<span class="wz-headline-title">Rule level distribution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -82,7 +82,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card class="wz-md-card" flex ng-class="{'fullscreen': expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(5)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -8,7 +8,7 @@
|
||||
<div layout="row" class="height-240">
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Alerts over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -20,7 +20,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Top 5 CIS Requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -32,7 +32,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Top 5 PCI DSS Requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -47,7 +47,7 @@
|
||||
<div layout="row" layout-align="space-between stretch" class="height-570">
|
||||
<md-card flex="100" class="wz-md-card" ng-class="{'fullscreen': expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(3)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'sca' && tabView === 'panels'" ng-show="!showScaScan"
|
||||
ng-class="{'no-opacity': resultState !== 'ready' || !rendered}" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'sca' && tabView === 'panels'" ng-show="!showScaScan" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}"
|
||||
layout-align="start">
|
||||
<div layout="row">
|
||||
<span flex></span>
|
||||
<md-button ng-click="switchScaScan()" class="wz-button pull-right"><i class="fa fa-fw fa-database"></i>
|
||||
@ -9,7 +9,7 @@
|
||||
<div layout="row" layout-align="space-between stretch" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Alerts over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -25,81 +25,75 @@
|
||||
<div layout="column" flex class="height-540">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Top 5 CIS requirements passed</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-CIS-Requirements-passed"
|
||||
vis-id="'Wazuh-App-Agents-CA-Top-5-CIS-Requirements-passed'">
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-CIS-Requirements-passed" vis-id="'Wazuh-App-Agents-CA-Top-5-CIS-Requirements-passed'">
|
||||
</kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Top 5 CIS requirements failed</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-CIS-Requirements-failed"
|
||||
vis-id="'Wazuh-App-Agents-CA-Top-5-CIS-Requirements-failed'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-CIS-Requirements-failed" vis-id="'Wazuh-App-Agents-CA-Top-5-CIS-Requirements-failed'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="column" flex class="height-540">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(3)">
|
||||
<span class="wz-headline-title">Top 5 CIS CSC requirements passed</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-CIS-CSC-Requirements-passed"
|
||||
vis-id="'Wazuh-App-Agents-CA-Top-5-CIS-CSC-Requirements-passed'">
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-CIS-CSC-Requirements-passed" vis-id="'Wazuh-App-Agents-CA-Top-5-CIS-CSC-Requirements-passed'">
|
||||
</kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(4)">
|
||||
<span class="wz-headline-title">Top 5 CIS CSC requirements failed</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-CIS-CSC-Requirements-failed"
|
||||
vis-id="'Wazuh-App-Agents-CA-Top-5-CIS-CSC-Requirements-failed'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-CIS-CSC-Requirements-failed" vis-id="'Wazuh-App-Agents-CA-Top-5-CIS-CSC-Requirements-failed'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="column" flex class="height-540">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(5)">
|
||||
<span class="wz-headline-title">Top 5 PCI DSS requirements passed</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements-passed"
|
||||
vis-id="'Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements-passed'">
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements-passed" vis-id="'Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements-passed'">
|
||||
</kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(6)">
|
||||
<span class="wz-headline-title">Top 5 PCI DSS requirements failed</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(6)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements-failed"
|
||||
vis-id="'Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements-failed'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements-failed" vis-id="'Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements-failed'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
@ -108,7 +102,7 @@
|
||||
<div layout="row" layout-align="space-between stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[7]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(7)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(7)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -127,16 +121,13 @@
|
||||
Show alerts</md-button>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8"
|
||||
ng-if="showScaScan && (!agent || !agent.os)">
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="showScaScan && (!agent || !agent.os)">
|
||||
<div flex class="euiCallOut euiCallOut--warning">
|
||||
<div class="euiCallOutHeader">
|
||||
<svg class="euiIcon euiIcon--medium euiCallOutHeader__icon" aria-hidden="true"
|
||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16"
|
||||
viewBox="0 0 16 16">
|
||||
<svg class="euiIcon euiIcon--medium euiCallOutHeader__icon" aria-hidden="true" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
|
||||
<defs>
|
||||
<path id="help-a"
|
||||
d="M13.6 12.186l-1.357-1.358c-.025-.025-.058-.034-.084-.056.53-.794.84-1.746.84-2.773a4.977 4.977 0 0 0-.84-2.772c.026-.02.059-.03.084-.056L13.6 3.813a6.96 6.96 0 0 1 0 8.373zM8 15A6.956 6.956 0 0 1 3.814 13.6l1.358-1.358c.025-.025.034-.057.055-.084C6.02 12.688 6.974 13 8 13a4.978 4.978 0 0 0 2.773-.84c.02.026.03.058.056.083l1.357 1.358A6.956 6.956 0 0 1 8 15zm-5.601-2.813a6.963 6.963 0 0 1 0-8.373l1.359 1.358c.024.025.057.035.084.056A4.97 4.97 0 0 0 3 8c0 1.027.31 1.98.842 2.773-.027.022-.06.031-.084.056l-1.36 1.358zm5.6-.187A4 4 0 1 1 8 4a4 4 0 0 1 0 8zM8 1c1.573 0 3.019.525 4.187 1.4l-1.357 1.358c-.025.025-.035.057-.056.084A4.979 4.979 0 0 0 8 3a4.979 4.979 0 0 0-2.773.842c-.021-.027-.03-.059-.055-.084L3.814 2.4A6.957 6.957 0 0 1 8 1zm0-1a8.001 8.001 0 1 0 .003 16.002A8.001 8.001 0 0 0 8 0z">
|
||||
<path id="help-a" d="M13.6 12.186l-1.357-1.358c-.025-.025-.058-.034-.084-.056.53-.794.84-1.746.84-2.773a4.977 4.977 0 0 0-.84-2.772c.026-.02.059-.03.084-.056L13.6 3.813a6.96 6.96 0 0 1 0 8.373zM8 15A6.956 6.956 0 0 1 3.814 13.6l1.358-1.358c.025-.025.034-.057.055-.084C6.02 12.688 6.974 13 8 13a4.978 4.978 0 0 0 2.773-.84c.02.026.03.058.056.083l1.357 1.358A6.956 6.956 0 0 1 8 15zm-5.601-2.813a6.963 6.963 0 0 1 0-8.373l1.359 1.358c.024.025.057.035.084.056A4.97 4.97 0 0 0 3 8c0 1.027.31 1.98.842 2.773-.027.022-.06.031-.084.056l-1.36 1.358zm5.6-.187A4 4 0 1 1 8 4a4 4 0 0 1 0 8zM8 1c1.573 0 3.019.525 4.187 1.4l-1.357 1.358c-.025.025-.035.057-.056.084A4.979 4.979 0 0 0 8 3a4.979 4.979 0 0 0-2.773.842c-.021-.027-.03-.059-.055-.084L3.814 2.4A6.957 6.957 0 0 1 8 1zm0-1a8.001 8.001 0 1 0 .003 16.002A8.001 8.001 0 0 0 8 0z">
|
||||
</path>
|
||||
</defs>
|
||||
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#help-a" fill-rule="evenodd"></use>
|
||||
@ -180,8 +171,7 @@
|
||||
<tr class="euiTableRow" ng-repeat="policy in policies">
|
||||
<td class="euiTableRowCell">
|
||||
<div class="euiTableCellContent euiTableCellContent--overflowingContent">
|
||||
<button ng-click="loadScaChecks(policy)" class="euiLink euiLink--primary"
|
||||
type="button">{{policy.name}}</button>
|
||||
<button ng-click="loadScaChecks(policy)" class="euiLink euiLink--primary" type="button">{{policy.name}}</button>
|
||||
</div>
|
||||
</td>
|
||||
<td class="euiTableRowCell">
|
||||
@ -222,17 +212,14 @@
|
||||
|
||||
<div layout="row" class="wz-padding-top-0" ng-if="agent && agent.os && lookingSca">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content>
|
||||
<span class="wz-headline-title"><i class="fa fa-fw fa-arrow-left cursor-pointer"
|
||||
ng-click="closeScaChecks()"></i>
|
||||
<md-card-content class="wz-padding-bottom-30">
|
||||
<span class="wz-headline-title"><i class="fa fa-fw fa-arrow-left cursor-pointer" ng-click="closeScaChecks()"></i>
|
||||
{{lookingSca.name}} checks</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<div layout="row" class="wz-margin-top-16 wz-margin-bottom-25">
|
||||
<input placeholder="Filter checks..." ng-model="custom_search" type="text"
|
||||
class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid"
|
||||
<input placeholder="Filter checks..." ng-model="custom_search" type="text" class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid"
|
||||
aria-invalid="false" wz-enter="search(custom_search)">
|
||||
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-40"
|
||||
ng-click="search(custom_search)">
|
||||
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-40" ng-click="search(custom_search)">
|
||||
<span class="fa fa-search" aria-hidden="true"></span>
|
||||
</button>
|
||||
</div>
|
||||
@ -241,13 +228,11 @@
|
||||
row-sizes="[13,11,9]" extra-limit="100" keys="['title', 'file', 'result']">
|
||||
</wz-table>
|
||||
</div>
|
||||
<div layout="row" layout-padding>
|
||||
<span flex></span>
|
||||
<a class="small" id="btnDownload"
|
||||
ng-click="downloadCsv('/sca/' + agent.id + '/checks/' + lookingSca.id, lookingSca.id + '.csv')">Formatted
|
||||
<i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
|
||||
</div>
|
||||
</md-card-content>
|
||||
<md-card-actions layout="row" layout-align="end center" class="wz-card-actions layout-align-end-center layout-row">
|
||||
<a class="wz-text-link cursor-pointer small md-button md-ink-ripple" id="btnDownload" ng-click="downloadCsv('/sca/' + agent.id + '/checks/' + lookingSca.id, lookingSca.id + '.csv')">Formatted
|
||||
<i aria-hidden="true" class="fa fa-download"></i></a>
|
||||
</md-card-actions>
|
||||
</md-card>
|
||||
</div>
|
||||
</md-content>
|
@ -23,7 +23,7 @@
|
||||
<div layout="row" class="height-250">
|
||||
<md-card flex="33" class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Last scanned files</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -34,7 +34,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content class="wazuh-column" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Malicious files alerts Evolution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -47,7 +47,7 @@
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Last files</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -25,7 +25,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Alerts severity over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -36,7 +36,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Most common rules</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -49,7 +49,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(2)">
|
||||
<span class="wz-headline-title">Most common CVEs</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -60,7 +60,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(3)">
|
||||
<span class="wz-headline-title">Severity distribution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -71,7 +71,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(4)">
|
||||
<span class="wz-headline-title">Commonly affected packages</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -85,7 +85,7 @@
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(5)">
|
||||
<span class="wz-headline-title">Alert summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -7,8 +7,7 @@
|
||||
not fetch data for this agent. <span ng-if="emptyAgent">Reason: {{emptyAgent}}</span></span>
|
||||
</div>
|
||||
<div layout="row" layout-padding ng-if="emptyAgent">
|
||||
<span class="wz-text-link" ng-click="getAgent()"><i class="fa fa-fw fa-refresh"
|
||||
aria-hidden="true"></i>
|
||||
<span class="wz-text-link" ng-click="getAgent()"><i class="fa fa-fw fa-refresh" aria-hidden="true"></i>
|
||||
Try again</span>
|
||||
</div>
|
||||
</md-card-content>
|
||||
@ -19,16 +18,15 @@
|
||||
|
||||
<!-- Headline -->
|
||||
<div layout="row" class="wz-margin-left-16 wz-margin-right-16 wz-margin-top-8">
|
||||
<span class="font-size-18"><i class="fa fa-fw fa-tv" aria-hidden="true"></i> {{ agent.name || '-' }} <span
|
||||
class="wz-text-bold wz-text-link" ng-click="goDiscover()" tooltip="Discover"><i
|
||||
class="fa fa-fw fa-compass" aria-hidden="true"></i></span></span>
|
||||
<span class="font-size-18 wz-line-height-40"><i class="fa fa-fw fa-tv" aria-hidden="true"></i> {{ agent.name || '-' }} <span
|
||||
class="wz-text-bold wz-text-link" ng-click="goDiscover()" tooltip="Discover"><i class="fa fa-fw fa-compass"
|
||||
aria-hidden="true"></i></span></span>
|
||||
<span flex></span>
|
||||
<md-button ng-show="!showConfirmRestartAgent" ng-disabled="restartingAgent" class="wz-button wz-no-margin"
|
||||
ng-disabled="isRestarting" ng-click="showConfirmRestartAgent = true"><i class="fa fa-refresh"
|
||||
ng-class="restartingAgent ? 'fa-spin fa-spinner' : ''"></i>
|
||||
<md-button ng-show="!showConfirmRestartAgent" ng-disabled="restartingAgent" class="wz-button wz-no-margin height-35"
|
||||
ng-disabled="isRestarting" ng-click="showConfirmRestartAgent = true"><i class="fa fa-refresh" ng-class="restartingAgent ? 'fa-spin fa-spinner' : ''"></i>
|
||||
Restart agent
|
||||
</md-button>
|
||||
<div ng-show="showConfirmRestartAgent" class="confirmEmbedBubble confirmEmbedBubbleInline wz-margin-right-8">
|
||||
<div ng-show="showConfirmRestartAgent" class="confirmEmbedBubble confirmEmbedBubbleInline">
|
||||
<div layout="row no-wrap">
|
||||
<span class="wz-padding-top-10 wz-padding-left-8">The agent will be restarted</span>
|
||||
</div>
|
||||
@ -44,8 +42,7 @@
|
||||
<div layout="row" layout-padding>
|
||||
<md-card flex class="wz-md-card wz-padding-top-0 wz-padding-bottom-0">
|
||||
<md-card-content>
|
||||
<div
|
||||
class="euiFlexGroup euiFlexGroup--gutterLarge euiFlexGroup--justifyContentSpaceBetween euiFlexGroup--directionRow euiFlexGroup--responsive">
|
||||
<div class="euiFlexGroup euiFlexGroup--gutterLarge euiFlexGroup--justifyContentSpaceBetween euiFlexGroup--directionRow euiFlexGroup--responsive">
|
||||
<div class="euiFlexItem euiFlexItem--flexGrowZero">
|
||||
<div class="euiStat euiStat--leftAligned">
|
||||
<div class="euiText euiText--small euiStat__description">
|
||||
@ -102,8 +99,7 @@
|
||||
<p class="euiTitle euiTitle--small euiStat__title" ng-if="agent.syscheck.inProgress">Scan
|
||||
in progress</p>
|
||||
<p class="euiTitle euiTitle--small euiStat__title" ng-if="!agent.syscheck.inProgress">{{agent.syscheck.end
|
||||
|| '-'}} <md-tooltip
|
||||
ng-if="!agent.syscheck.inProgress && agent.syscheck.start && agent.syscheck.end"
|
||||
|| '-'}} <md-tooltip ng-if="!agent.syscheck.inProgress && agent.syscheck.start && agent.syscheck.end"
|
||||
md-direction="bottom" class="wz-tooltip">
|
||||
Start time: {{ agent.syscheck.start || '-'}} <br>
|
||||
End time: {{ agent.syscheck.end || '-'}} <br>
|
||||
@ -121,8 +117,7 @@
|
||||
in progress</p>
|
||||
<p class="euiTitle euiTitle--small euiStat__title" ng-if="!agent.rootcheck.inProgress">{{agent.rootcheck.end
|
||||
|| '-'}}
|
||||
<md-tooltip
|
||||
ng-if="!agent.rootcheck.inProgress && agent.rootcheck.start && agent.rootcheck.end"
|
||||
<md-tooltip ng-if="!agent.rootcheck.inProgress && agent.rootcheck.start && agent.rootcheck.end"
|
||||
md-direction="bottom" class="wz-tooltip">
|
||||
Start time: {{ agent.rootcheck.start || '-'}} <br>
|
||||
End time: {{ agent.rootcheck.end || '-'}} <br>
|
||||
@ -140,9 +135,8 @@
|
||||
<md-card-content>
|
||||
|
||||
<div layout="row" ng-if="agent.group">
|
||||
<span class="font-size-16">Groups <i ng-if='adminMode' tooltip="Add group"
|
||||
ng-click="switchGroupEdit()" class="wz-text-bold wz-text-link-add fa fa-fw"
|
||||
ng-class="!addingGroupToAgent ? 'fa-plus-circle' : 'fa-minus-circle'"></i></span>
|
||||
<span class="font-size-16">Groups <i ng-if='adminMode' tooltip="Add group" ng-click="switchGroupEdit()"
|
||||
class="wz-text-bold wz-text-link-add fa fa-fw" ng-class="!addingGroupToAgent ? 'fa-plus-circle' : 'fa-minus-circle'"></i></span>
|
||||
</div>
|
||||
<md-divider ng-if="agent.group" class="wz-margin-top-10"></md-divider>
|
||||
<div layout="row" class="wz-margin-top-10" ng-if="agent.group && editGroup && !addingGroupToAgent">
|
||||
@ -150,15 +144,12 @@
|
||||
Available groups:
|
||||
</div>
|
||||
<div class="wz-word-break" flex ng-if="!groups || !groups.length">
|
||||
No more groups available. Create a new group at <a
|
||||
ng-href="#/manager//?_g=()&tab=groups">Configuration
|
||||
No more groups available. Create a new group at <a ng-href="#/manager//?_g=()&tab=groups">Configuration
|
||||
> Groups</a>.
|
||||
</div>
|
||||
</div>
|
||||
<div ng-if="agent.group && editGroup && !addingGroupToAgent && groups && groups.length"
|
||||
class="wz-margin-top-4">
|
||||
<span ng-repeat="group in groups" class="wz-text-bold wz-text-link"
|
||||
ng-click="showConfirmAddGroup(group)">{{
|
||||
<div ng-if="agent.group && editGroup && !addingGroupToAgent && groups && groups.length" class="wz-margin-top-4">
|
||||
<span ng-repeat="group in groups" class="wz-text-bold wz-text-link" ng-click="showConfirmAddGroup(group)">{{
|
||||
group }} </span>
|
||||
</div>
|
||||
|
||||
@ -169,13 +160,12 @@
|
||||
</div>
|
||||
<div layout="row">
|
||||
<md-button class="cancelBtn" type="button" ng-click="cancelAddGroup()">Cancel</md-button>
|
||||
<md-button class="agreeBtn" type="button" ng-click="confirmAddGroup(addingGroupToAgent)"><i
|
||||
<md-button class="agreeBtn wz-button" type="button" ng-click="confirmAddGroup(addingGroupToAgent)"><i
|
||||
aria-hidden='true' class='fa fa-fw fa-check'></i> Confirm</md-button>
|
||||
</div>
|
||||
</div>
|
||||
<div layout="row" ng-if="agent.group" class="wz-word-break wz-padding-top-10">
|
||||
<span ng-repeat="group in agent.group" class="wz-text-bold wz-text-link"
|
||||
ng-click="goGroups(agent,$index)">{{
|
||||
<span ng-repeat="group in agent.group" class="wz-text-bold wz-text-link" ng-click="goGroups(agent,$index)">{{
|
||||
group
|
||||
}} </span>
|
||||
</div>
|
||||
@ -192,19 +182,15 @@
|
||||
<h3 class="euiTitle wzEuiTitle">Security Information Management</h3>
|
||||
<div class="euiSpacer euiSpacer--m"></div>
|
||||
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_dashboard.svg'"
|
||||
card-title="'Security events'" switch-tab="switchTab('general')" current-tab="'general'"
|
||||
description="TabDescription.general.description"></wz-welcome-card>
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_logging.svg'"
|
||||
card-title="'Integrity monitoring'" switch-tab="switchTab('fim')" current-tab="'fim'"
|
||||
description="TabDescription.fim.description"></wz-welcome-card>
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_devtools.svg'"
|
||||
card-title="'Configuration'" switch-tab="switchTab('configuration')"
|
||||
current-tab="'configuration'" description="TabDescription.configuration.description">
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_dashboard.svg'" card-title="'Security events'"
|
||||
switch-tab="switchTab('general')" current-tab="'general'" description="TabDescription.general.description"></wz-welcome-card>
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_logging.svg'" card-title="'Integrity monitoring'"
|
||||
switch-tab="switchTab('fim')" current-tab="'fim'" description="TabDescription.fim.description"></wz-welcome-card>
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_devtools.svg'" card-title="'Configuration'"
|
||||
switch-tab="switchTab('configuration')" current-tab="'configuration'" description="TabDescription.configuration.description">
|
||||
</wz-welcome-card>
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_index_pattern.svg'"
|
||||
card-title="'Inventory data'" switch-tab="switchTab('syscollector')"
|
||||
current-tab="'syscollector'" description="TabDescription.syscollector.description">
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_index_pattern.svg'" card-title="'Inventory data'"
|
||||
switch-tab="switchTab('syscollector')" current-tab="'syscollector'" description="TabDescription.syscollector.description">
|
||||
</wz-welcome-card>
|
||||
</div>
|
||||
</div>
|
||||
@ -214,22 +200,17 @@
|
||||
<h3 class="euiTitle wzEuiTitle">Auditing and Policy Monitoring</h3>
|
||||
<div class="euiSpacer euiSpacer--m"></div>
|
||||
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_advanced_settings.svg'"
|
||||
card-title="'Policy monitoring'" switch-tab="switchTab('pm')" current-tab="'pm'"
|
||||
description="TabDescription.pm.description"></wz-welcome-card>
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_timelion.svg'"
|
||||
card-title="'Configuration assessment'" switch-tab="switchTab('sca')" current-tab="'sca'"
|
||||
description="TabDescription['sca'].description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.audit && agent.isLinuxOS" class="euiFlexItem"
|
||||
logo="'icons/app_monitoring.svg'" card-title="'System auditing'"
|
||||
switch-tab="switchTab('audit')" current-tab="'audit'"
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_advanced_settings.svg'" card-title="'Policy monitoring'"
|
||||
switch-tab="switchTab('pm')" current-tab="'pm'" description="TabDescription.pm.description"></wz-welcome-card>
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_timelion.svg'" card-title="'Configuration assessment'"
|
||||
switch-tab="switchTab('sca')" current-tab="'sca'" description="TabDescription['sca'].description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.audit && agent.isLinuxOS" class="euiFlexItem" logo="'icons/app_monitoring.svg'"
|
||||
card-title="'System auditing'" switch-tab="switchTab('audit')" current-tab="'audit'"
|
||||
description="TabDescription.audit.description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.oscap && agent.isLinuxOS" class="euiFlexItem"
|
||||
logo="'icons/app_discover.svg'" card-title="'OpenSCAP'" switch-tab="switchTab('oscap')"
|
||||
current-tab="'oscap'" description="TabDescription.oscap.description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.oscap && agent.isLinuxOS" class="euiFlexItem" logo="'icons/app_discover.svg'"
|
||||
card-title="'OpenSCAP'" switch-tab="switchTab('oscap')" current-tab="'oscap'" description="TabDescription.oscap.description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.ciscat" class="euiFlexItem" logo="'icons/app_management.svg'"
|
||||
card-title="'CIS-CAT'" switch-tab="switchTab('ciscat')" current-tab="'ciscat'"
|
||||
description="TabDescription.ciscat.description"></wz-welcome-card>
|
||||
card-title="'CIS-CAT'" switch-tab="switchTab('ciscat')" current-tab="'ciscat'" description="TabDescription.ciscat.description"></wz-welcome-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -244,12 +225,10 @@
|
||||
<h3 class="euiTitle wzEuiTitle">Threat Detection and Response</h3>
|
||||
<div class="euiSpacer euiSpacer--m"></div>
|
||||
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_security.svg'"
|
||||
card-title="'Vulnerabilities'" switch-tab="switchTab('vuls')" current-tab="'vuls'"
|
||||
description="TabDescription.vuls.description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.virustotal" class="euiFlexItem"
|
||||
logo="'icons/app_saved_objects.svg'" card-title="'VirusTotal'"
|
||||
switch-tab="switchTab('virustotal')" current-tab="'virustotal'"
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_security.svg'" card-title="'Vulnerabilities'"
|
||||
switch-tab="switchTab('vuls')" current-tab="'vuls'" description="TabDescription.vuls.description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.virustotal" class="euiFlexItem" logo="'icons/app_saved_objects.svg'"
|
||||
card-title="'VirusTotal'" switch-tab="switchTab('virustotal')" current-tab="'virustotal'"
|
||||
description="TabDescription.virustotal.description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.osquery" class="euiFlexItem" logo="'icons/osquery.svg'"
|
||||
card-title="'Osquery'" switch-tab="switchTab('osquery')" current-tab="'osquery'"
|
||||
@ -264,11 +243,9 @@
|
||||
<div class="euiSpacer euiSpacer--m"></div>
|
||||
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
|
||||
<wz-welcome-card ng-if="extensions.pci" class="euiFlexItem" logo="'icons/app_apm.svg'"
|
||||
card-title="'PCI DSS'" switch-tab="switchTab('pci')" current-tab="'pci'"
|
||||
description="TabDescription.pci.description"></wz-welcome-card>
|
||||
card-title="'PCI DSS'" switch-tab="switchTab('pci')" current-tab="'pci'" description="TabDescription.pci.description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.gdpr" class="euiFlexItem" logo="'icons/app_visualize.svg'"
|
||||
card-title="'GDPR'" switch-tab="switchTab('gdpr')" current-tab="'gdpr'"
|
||||
description="TabDescription.gdpr.description"></wz-welcome-card>
|
||||
card-title="'GDPR'" switch-tab="switchTab('gdpr')" current-tab="'gdpr'" description="TabDescription.gdpr.description"></wz-welcome-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -196,14 +196,13 @@
|
||||
scan</md-button>
|
||||
<span></span>
|
||||
<md-button ng-click="switchSyscheckFiles()" class="wz-button pull-right"><i class="fa fa-fw fa-database"></i>
|
||||
Show state</md-button>
|
||||
Show files</md-button>
|
||||
</div>
|
||||
<div layout="row"
|
||||
ng-if="!showSyscheckFiles && !showScaScan && tab === 'sca' && resultState === 'none' && tabView === 'panels'">
|
||||
<span flex></span>
|
||||
<md-button ng-click="switchScaScan()" class="wz-button pull-right"><i class="fa fa-fw fa-database"></i>
|
||||
Show
|
||||
state</md-button>
|
||||
Show state</md-button>
|
||||
</div>
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8"
|
||||
ng-if="!showSyscheckFiles && !showScaScan && tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'"
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<wz-menu ng-init="menuNavItem = 'wazuh-dev'"></wz-menu>
|
||||
<md-content flex layout="column" class="md-padding" layout-align="start">
|
||||
<div>
|
||||
<div class="wz-dev-box">
|
||||
<div id="wz-dev-left-column" flex layout="column">
|
||||
<span class="wz-headline-title wz-dev-title">Console <i ng-click="ctrl.send()" class="fa fa-play wz-play-dev-color cursor-pointer pull-right fa-fw wz-always-top" id="play_button" aria-hidden="true"></i></span>
|
||||
<textarea flex id="api_input"></textarea>
|
||||
|
@ -119,23 +119,20 @@
|
||||
<md-card flex class="wz-md-card _md flex md-margin-h" ng-if="!lookingGroup">
|
||||
<md-card-content>
|
||||
<div layout="row">
|
||||
<wz-table flex extra-limit="100" path="'/agents/groups'" keys="['name','count','mergedSum']"
|
||||
<wz-table custom-columns="true" flex extra-limit="100" path="'/agents/groups'" keys="['name','count','mergedSum']"
|
||||
allow-click="true" row-sizes="[14,12,10]">
|
||||
</wz-table>
|
||||
</div>
|
||||
</md-card-content>
|
||||
<!-- CSV Download button section for groups -->
|
||||
<md-card-actions layout="row" layout-align="end center" class="wz-card-actions layout-align-end-center layout-row">
|
||||
<a class="wz-text-link cursor-pointer small md-button md-ink-ripple" id="btnDownload" ng-click="downloadCsv('/agents/groups')">Formatted
|
||||
<i aria-hidden="true" class="fa fa-download"></i></a>
|
||||
</md-card-actions>
|
||||
<!-- End CSV Download button section for groups -->
|
||||
</md-card>
|
||||
<!-- End groups table -->
|
||||
|
||||
<!-- CSV Download button section for groups -->
|
||||
<div layout="row" class="md-padding" ng-if="!lookingGroup">
|
||||
<span flex></span>
|
||||
<a class="small" id="btnDownload" ng-click="downloadCsv('/agents/groups')">Formatted
|
||||
<i aria-hidden="true" class="fa fa-fw fa-download"></i>
|
||||
</a>
|
||||
</div>
|
||||
<!-- End CSV Download button section for groups -->
|
||||
|
||||
<div ng-if='!addingAgents'>
|
||||
<!-- Group agents table -->
|
||||
<md-card flex class="wz-md-card _md flex md-margin-h" ng-if="lookingGroup && groupsSelectedTab==='agents' && currentGroup">
|
||||
|
@ -49,12 +49,12 @@
|
||||
<!-- White space between filters and Realtime button -->
|
||||
<span flex></span>
|
||||
|
||||
<md-button ng-if="!ctrl.realtime" class="wz-button md-raised no-margin-right" ng-click="ctrl.playRealtime()"
|
||||
<md-button ng-if="!ctrl.realtime" class="wz-button no-margin-right" ng-click="ctrl.playRealtime()"
|
||||
aria-label="Play realtime button">
|
||||
<i class="fa fa-play fa-fw" aria-hidden="true"></i>
|
||||
Play realtime
|
||||
</md-button>
|
||||
<md-button ng-if="ctrl.realtime" class="wz-button md-raised no-margin-right" ng-click="ctrl.stopRealtime()"
|
||||
<md-button ng-if="ctrl.realtime" class="wz-button no-margin-right" ng-click="ctrl.stopRealtime()"
|
||||
aria-label="Stop realtime button">
|
||||
<i class="fa fa-stop fa-fw" aria-hidden="true"></i>
|
||||
Stop realtime
|
||||
|
@ -20,7 +20,7 @@
|
||||
ng-show="!loading && !showConfig && !showNodes && rendered">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(0)">
|
||||
<span class="wz-headline-title">Cluster alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -31,7 +31,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="expand(1)">
|
||||
<span class="wz-headline-title">Alerts by node summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -50,12 +50,11 @@
|
||||
<wz-table custom-columns="true" implicit-filter="cdbctrl.appliedFilters" flex path="'/lists/files'"
|
||||
keys="['name', 'path']" allow-click="true" row-sizes="[15,13,11]">
|
||||
</wz-table>
|
||||
<div layout="row" class="wz-margin-top-10 md-padding-h">
|
||||
<span flex></span>
|
||||
<a class="small" id="btnDownload" ng-click="cdbctrl.downloadCsv()">Formatted <i aria-hidden="true"
|
||||
class="fa fa-download"></i></a>
|
||||
</div>
|
||||
</md-card-content>
|
||||
<md-card-actions layout="row" layout-align="end center" class="wz-card-actions layout-align-end-center layout-row">
|
||||
<a class="wz-text-link cursor-pointer small md-button md-ink-ripple" id="btnDownload" ng-click="cdbctrl.downloadCsv()">Formatted
|
||||
<i aria-hidden="true" class="fa fa-download"></i></a>
|
||||
</md-card-actions>
|
||||
</md-card>
|
||||
</div>
|
||||
</div>
|
@ -30,19 +30,18 @@
|
||||
<wz-kbn-switch class="md-primary wz-no-top-bottom-margin" switch-model="dctrl.showingLocalDecoders"
|
||||
switch-text="Custom decoders"></wz-kbn-switch>
|
||||
</md-card-actions>
|
||||
<md-card-content>
|
||||
<md-card-content class="wz-padding-bottom-0">
|
||||
<wz-table custom-columns="true" ng-if="!dctrl.showingLocalDecoders" implicit-filter="dctrl.appliedFilters"
|
||||
flex path="'/decoders'" keys="['name',{value:'details.program_name',size:2,nosortable:true},{value:'details.order',size:2,nosortable:true},'file']"
|
||||
allow-click="true" row-sizes="[16,13,11]">
|
||||
</wz-table>
|
||||
<wz-table custom-columns="true" ng-if="dctrl.showingLocalDecoders" flex path="'/decoders'" keys="['name',{value:'details.program_name',size:2,nosortable:true},{value:'details.order',size:2,nosortable:true},'file']"
|
||||
implicit-filter="[{ name:'path',value: 'etc/decoders'}]" allow-click="true" row-sizes="[16,13,11]"></wz-table>
|
||||
<div layout="row" class="wz-margin-top-10 md-padding-h">
|
||||
<span flex></span>
|
||||
<a class="small" id="btnDownload" ng-click="dctrl.downloadCsv()">Formatted <i aria-hidden="true"
|
||||
class="fa fa-download"></i></a>
|
||||
</div>
|
||||
</md-card-content>
|
||||
<md-card-actions layout="row" layout-align="end center" class="wz-card-actions layout-align-end-center layout-row">
|
||||
<a class="wz-text-link cursor-pointer small md-button md-ink-ripple" id="btnDownload" ng-click="dctrl.downloadCsv()">Formatted
|
||||
<i aria-hidden="true" class="fa fa-download"></i></a>
|
||||
</md-card-actions>
|
||||
</md-card>
|
||||
</div>
|
||||
<div class="md-padding" ng-if="dctrl.editingFile && dctrl.type === 'decoders'">
|
||||
|
@ -10,9 +10,9 @@
|
||||
<md-card flex class="wz-md-card _md flex md-margin-h">
|
||||
<md-card-content>
|
||||
<wz-table ng-if="filesctrl.filesSubTab === 'rules'" implicit-filter="[{ name:'path',value: 'etc/rules'}]"
|
||||
flex path="'/rules/files'" keys="['file']" allow-click="true" row-sizes="[16,13,11]"></wz-table>
|
||||
flex path="'/rules/files'" keys="[{value: 'file', width: '75px'}]" allow-click="true" row-sizes="[16,13,11]"></wz-table>
|
||||
<wz-table ng-if="filesctrl.filesSubTab === 'decoders'" implicit-filter="[{ name:'path',value: 'etc/decoders'}]"
|
||||
flex path="'/decoders/files'" keys="['file']" allow-click="true" row-sizes="[16,13,11]"></wz-table>
|
||||
flex path="'/decoders/files'" keys="[{value: 'file', width: '75px'}]" allow-click="true" row-sizes="[16,13,11]"></wz-table>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
@ -181,7 +181,7 @@
|
||||
<md-card-content>
|
||||
<wz-table custom-columns="true" flex path="'/rules'"
|
||||
implicit-filter="[{ name:'file',value: currentRule.file}]"
|
||||
keys="['id',{value:'file',size:2},{value:'description',size:2},{value:'groups',nosortable:true,size:2},{value:'pci',nosortable:true,size:2},{value:'gdpr',nosortable:true},'level']"
|
||||
keys="[{value: 'id', width: '75px'},{value:'file',size:2},{value:'description',size:2},{value:'groups',nosortable:true,size:2},{value:'pci',nosortable:true,size:2},{value:'gdpr',nosortable:true},'level']"
|
||||
allow-click="true">
|
||||
</wz-table>
|
||||
</md-card-content>
|
||||
|
@ -47,19 +47,19 @@
|
||||
<span flex></span>
|
||||
<wz-kbn-switch class="md-primary wz-no-top-bottom-margin" switch-model="showingLocalRules" switch-text="Custom rules"></wz-kbn-switch>
|
||||
</md-card-actions>
|
||||
<md-card-content>
|
||||
<wz-table custom-columns="true" flex ng-if="showingLocalRules" path="'/rules'" keys="['id',{value:'file',size:2},{value:'description',size:2},{value:'groups',nosortable:true,size:2},{value:'pci',nosortable:true,size:2},{value:'gdpr',nosortable:true},'level']"
|
||||
<md-card-content class="wz-padding-bottom-0">
|
||||
<wz-table custom-columns="true" flex ng-if="showingLocalRules" path="'/rules'" keys="[{value: 'id', width: '75px'},{value:'file',size:2},{value:'description',size:2},{value:'groups',nosortable:true,size:2},{value:'pci',nosortable:true,size:2},{value:'gdpr',nosortable:true},{value: 'level', width: '100px'}]"
|
||||
implicit-filter="[{ name:'path',value: 'etc/rules'}]" allow-click="true" row-sizes="[16,13,11]">
|
||||
</wz-table>
|
||||
<wz-table custom-columns="true" ng-if="!showingLocalRules" implicit-filter="appliedFilters" flex path="'/rules'"
|
||||
keys="['id',{value:'file',size:2},{value:'description',size:2},{value:'groups',nosortable:true,size:2},{value:'pci',nosortable:true,size:2},{value:'gdpr',nosortable:true},'level']"
|
||||
keys="[{value: 'id', width: '75px'},{value:'file',size:2},{value:'description',size:2},{value:'groups',nosortable:true,size:2},{value:'pci',nosortable:true,size:2},{value:'gdpr',nosortable:true}, {value: 'level', width: '100px'}]"
|
||||
allow-click="true" row-sizes="[16,13,11]">
|
||||
</wz-table>
|
||||
<div layout="row" class="wz-margin-top-10 md-padding-h">
|
||||
<span flex></span>
|
||||
<a class="small" id="btnDownload" ng-click="downloadCsv()">Formatted <i aria-hidden="true" class="fa fa-download"></i></a>
|
||||
</div>
|
||||
</md-card-content>
|
||||
<md-card-actions layout="row" layout-align="end center" class="wz-card-actions layout-align-end-center layout-row">
|
||||
<a class="wz-text-link cursor-pointer small md-button md-ink-ripple" id="btnDownload" ng-click="downloadCsv()">Formatted
|
||||
<i aria-hidden="true" class="fa fa-download"></i></a>
|
||||
</md-card-actions>
|
||||
</md-card>
|
||||
</div>
|
||||
<div class="md-padding" ng-if="editingFile && type === 'rules'">
|
||||
@ -77,8 +77,7 @@
|
||||
<span ng-click='closeEditingFile()' class='btn btn-info'>Cancel</span>
|
||||
<button ng-disabled='xmlHasErrors || newFileName === "" || doingSaving || overwriteError' ng-click='doSaveConfig(true,newFileName)'
|
||||
class='btn wz-button pull-right wz-margin-left-8'>
|
||||
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'
|
||||
ng-class="doingSaving ? 'fa-spin fa-spinner' : ''"></i>Save
|
||||
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save' ng-class="doingSaving ? 'fa-spin fa-spinner' : ''"></i>Save
|
||||
file</span>
|
||||
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
|
||||
XML format error</span>
|
||||
|
@ -22,7 +22,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-200">
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Groups</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -33,7 +33,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Agents</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -44,7 +44,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Directories</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -55,7 +55,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Files</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -69,7 +69,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-310">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(4)">
|
||||
<span class="wz-headline-title">Alerts over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -84,7 +84,7 @@
|
||||
<div flex="20" layout="column" layout-align="center stretch">
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(5)">
|
||||
<span class="wz-headline-title">File read access</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -95,7 +95,7 @@
|
||||
</md-card>
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(6)">
|
||||
<span class="wz-headline-title">File write access</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(6)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -109,7 +109,7 @@
|
||||
<div flex="60" layout="column" layout-align="center stretch">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[7]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(7)">
|
||||
<span class="wz-headline-title">Commands</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(7)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -123,7 +123,7 @@
|
||||
<div flex="20" layout="column" layout-align="center stretch">
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[8]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(8)">
|
||||
<span class="wz-headline-title">Created files</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(8)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -134,7 +134,7 @@
|
||||
</md-card>
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[9]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(9)">
|
||||
<span class="wz-headline-title">Removed files</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(9)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -149,7 +149,7 @@
|
||||
<div flex layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[10]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(10)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(10)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -11,7 +11,7 @@
|
||||
<div layout="row" class="height-250">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Sources</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -23,7 +23,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Accounts</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -35,7 +35,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">S3 buckets</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -47,7 +47,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Regions</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -62,7 +62,7 @@
|
||||
<div layout="row" class="height-300">
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(4)">
|
||||
<span class="wz-headline-title">Events by source over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -74,7 +74,7 @@
|
||||
</md-card>
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(5)">
|
||||
<span class="wz-headline-title">Events by S3 bucket over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -89,7 +89,7 @@
|
||||
<div layout="row" class="height-400">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(6)">
|
||||
<span class="wz-headline-title">Top 5 rules</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(6)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -44,7 +44,7 @@
|
||||
<div layout="row" layout-align="start stretch" class="height-320">
|
||||
<md-card flex="60" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Top 5 CIS-CAT groups</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -55,7 +55,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Scan result evolution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -71,7 +71,7 @@
|
||||
<div layout="row" layout-align="start stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -3,42 +3,42 @@
|
||||
<div layout="row" class="height-225">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<span class="wz-headline-title">Top 5 agents with deleted files</span>
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Files added</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Overview-FIM-deleted" vis-id="'Wazuh-App-Overview-FIM-deleted'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-FIM-Files-added" vis-id="'Wazuh-App-Agents-FIM-Files-added'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<span class="wz-headline-title">Top 5 agents with new files</span>
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Files modified</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Overview-FIM-added" vis-id="'Wazuh-App-Overview-FIM-added'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-FIM-Files-modified" vis-id="'Wazuh-App-Agents-FIM-Files-modified'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<span class="wz-headline-title">Top 5 agents with modified files</span>
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Files deleted</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Overview-FIM-modified" vis-id="'Wazuh-App-Overview-FIM-modified'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Overview-FIM-deleted" vis-id="'Wazuh-App-Agents-FIM-Files-deleted'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" class="height-300">
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Top 5 agents</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -49,7 +49,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(4)">
|
||||
<span class="wz-headline-title">Events summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -63,8 +63,8 @@
|
||||
<div layout="row" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<span class="wz-headline-title">Top 5 rules</span>
|
||||
<div layout="row" ng-dblclick="octrl.expand(5)">
|
||||
<span class="wz-headline-title">Rule distribution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
@ -75,7 +75,7 @@
|
||||
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(6)">
|
||||
<span class="wz-headline-title">Actions</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(6)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -86,7 +86,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[7]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(7)">
|
||||
<span class="wz-headline-title">Top 5 users</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(7)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-400">
|
||||
<md-card flex="30" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Groups</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -32,7 +32,7 @@
|
||||
</md-card>
|
||||
<md-card flex="70" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">GDPR Requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -47,7 +47,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Top requirements over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -62,7 +62,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-255">
|
||||
<md-card flex="70" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Requirements by agent</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -74,7 +74,7 @@
|
||||
</md-card>
|
||||
<md-card flex="30" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(4)">
|
||||
<span class="wz-headline-title">Agents</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -25,19 +25,19 @@
|
||||
<div layout="row" layout-align="start stretch" class="height-400">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<span class="wz-headline-title">Rule group evolution</span>
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Top 10 Agent alerts</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Overview-General-Rule-group-evolution"
|
||||
vis-id="'Wazuh-App-Overview-General-Rule-group-evolution'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Overview-General-Top-10-agent-alert"
|
||||
vis-id="'Wazuh-App-Overview-General-Top-10-agent-alert'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Alert level evolution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -52,7 +52,7 @@
|
||||
<div layout="row" layout-align="space-between stretch" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Top 5 agents</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -64,7 +64,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Top 10 rule groups</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -76,7 +76,7 @@
|
||||
</md-card>
|
||||
<md-card flex="40" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[4]}">
|
||||
<md-card-content class="wazuh-column" ng-show="octrl.wzMonitoringEnabled">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(4)">
|
||||
<span class="wz-headline-title">Agents status</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -121,7 +121,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(5)">
|
||||
<span class="wz-headline-title">Commonly fired rules</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -131,18 +131,6 @@
|
||||
vis-id="'Wazuh-App-Overview-General-Commonly-fired-rules'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="40" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<span class="wz-headline-title">Alerts evolution - Top 5 agents</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Overview-General-Alerts-evolution-Top-5-agents"
|
||||
vis-id="'Wazuh-App-Overview-General-Alerts-evolution-Top-5-agents'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
</md-content>
|
@ -20,7 +20,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-215">
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Top 5 Agents</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -31,7 +31,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Top 5 Profiles</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -42,7 +42,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Top 5 Content</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -53,7 +53,7 @@
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Top 5 Severity</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -67,7 +67,7 @@
|
||||
<div layout="row" layout-align="start stretch" class="height-240">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(4)">
|
||||
<span class="wz-headline-title">Top 5 Agents - Severity high</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -81,7 +81,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-320">
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(5)">
|
||||
<span class="wz-headline-title">Top 10 - Alerts</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -93,7 +93,7 @@
|
||||
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(6)">
|
||||
<span class="wz-headline-title">Top 10 - High risk alerts</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(6)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -107,7 +107,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[7]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(7)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(7)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<div layout="row" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Alerts over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -31,7 +31,7 @@
|
||||
<div layout="row" class="height-300">
|
||||
<md-card flex="30" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Most common packs</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -42,7 +42,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Top 5 rules</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -56,7 +56,7 @@
|
||||
<div layout="row" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Alerts evolution - Top 5 agents</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -21,7 +21,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-400">
|
||||
<md-card flex="70" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">PCI Requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -33,7 +33,7 @@
|
||||
</md-card>
|
||||
<md-card flex="30" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Groups</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -47,7 +47,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-300">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Top requirements over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -62,7 +62,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-255">
|
||||
<md-card flex="30" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Agents</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -73,7 +73,7 @@
|
||||
</md-card>
|
||||
<md-card flex="70" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(4)">
|
||||
<span class="wz-headline-title">Requirements by agent</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -4,7 +4,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-290">
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Events over time</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Top 5 CIS Requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
<md-card flex="25" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Top 5 PCI DSS Requirements</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -42,7 +42,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-240">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Events per control type evolution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -56,7 +56,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(4)">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -22,7 +22,7 @@
|
||||
<div flex layout="row">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Unique malicious files per agent</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -37,7 +37,7 @@
|
||||
<div flex layout="row">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Last scanned files</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -52,7 +52,7 @@
|
||||
<div layout="row" class="height-550">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Top 10 agents with positive scans</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -65,7 +65,7 @@
|
||||
<div layout="row" class="height-250">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Malicious files alerts evolution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -78,7 +78,7 @@
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(4)">
|
||||
<span class="wz-headline-title">Last files</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -22,7 +22,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<md-card flex="30" class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[0]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(0)">
|
||||
<span class="wz-headline-title">Most affected agents</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(0)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -33,7 +33,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[1]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(1)">
|
||||
<span class="wz-headline-title">Alerts severity</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(1)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -47,7 +47,7 @@
|
||||
<div layout="row" layout-align="center stretch" class="height-270">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[2]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(2)">
|
||||
<span class="wz-headline-title">Severity distribution</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(2)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -58,7 +58,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[3]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(3)">
|
||||
<span class="wz-headline-title">Commonly affected packages</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(3)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -69,7 +69,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[4]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(4)">
|
||||
<span class="wz-headline-title">Most common CVEs</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(4)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -80,7 +80,7 @@
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[5]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(5)">
|
||||
<span class="wz-headline-title">Most common CWEs</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(5)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
@ -93,7 +93,7 @@
|
||||
<div layout="row" class="height-570">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': octrl.expandArray[6]}">
|
||||
<md-card-content class="wazuh-column">
|
||||
<div layout="row">
|
||||
<div layout="row" ng-dblclick="octrl.expand(6)">
|
||||
<span class="wz-headline-title">Alert summary</span>
|
||||
<span flex></span>
|
||||
<span class="wz-text-link" ng-click="octrl.expand(6)"><i class="fa fa-fw fa-expand"></i></span>
|
||||
|
@ -68,7 +68,7 @@
|
||||
<p class="color-f9">{{ctrl.messageErrorUpdate}}</p>
|
||||
</div>
|
||||
<div layout="row" layout-align="center center">
|
||||
<md-button type="submit" class="wz-button md-raised md-primary" aria-label="Update API button">
|
||||
<md-button type="submit" class="wz-button md-primary" aria-label="Update API button">
|
||||
<i class="fa fa-pencil fa-fw" aria-hidden="true"></i> Update Wazuh API entry
|
||||
</md-button>
|
||||
</div>
|
||||
@ -80,7 +80,7 @@
|
||||
|
||||
<!-- Add API button section -->
|
||||
<div ng-show="!ctrl.isUpdating()" layout="row" layout-align="center center" class="wz-padding-top-10">
|
||||
<md-button ng-click="ctrl.switch()" class="wz-button md-raised md-primary"
|
||||
<md-button ng-click="ctrl.switch()" class="wz-button md-primary"
|
||||
aria-label="Add new API button">
|
||||
<i class="fa fa-plus-circle fa-fw" aria-hidden="true"></i> Add new Wazuh API entry
|
||||
</md-button>
|
||||
@ -114,7 +114,7 @@
|
||||
<p class="color-f9">{{ctrl.messageError}}</p>
|
||||
</div>
|
||||
<div layout="row" layout-align="center center">
|
||||
<md-button type="submit" class="wz-button md-raised md-primary" aria-label="Save API button">
|
||||
<md-button type="submit" class="wz-button md-primary" aria-label="Save API button">
|
||||
<i class="fa fa-floppy-o fa-fw" aria-hidden="true"></i> Save Wazuh API entry
|
||||
</md-button>
|
||||
</div>
|
||||
|
422
public/utils/table-col-resizable.js
Normal file
422
public/utils/table-col-resizable.js
Normal file
@ -0,0 +1,422 @@
|
||||
/**
|
||||
_ _____ _ _ _
|
||||
| | __ \ (_) | | | |
|
||||
___ ___ | | |__) |___ ___ _ ______ _| |__ | | ___
|
||||
/ __/ _ \| | _ // _ \/ __| |_ / _` | '_ \| |/ _ \
|
||||
| (_| (_) | | | \ \ __/\__ \ |/ / (_| | |_) | | __/
|
||||
\___\___/|_|_| \_\___||___/_/___\__,_|_.__/|_|\___|
|
||||
|
||||
v1.6 - jQuery plugin created by Alvaro Prieto Lauroba
|
||||
|
||||
Licences: MIT & GPL
|
||||
Feel free to use or modify this plugin as far as my full name is kept
|
||||
|
||||
If you are going to use this plug-in in production environments it is
|
||||
strongly recommended to use its minified version: colResizable.min.js
|
||||
|
||||
*/
|
||||
|
||||
(function(global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined'
|
||||
? (module.exports = factory())
|
||||
: typeof define === 'function' && define.amd
|
||||
? define(factory)
|
||||
: (global.CodeMirror = factory());
|
||||
})(this, function() {
|
||||
'use strict';
|
||||
|
||||
var d = $(document); //window object
|
||||
var h = $("head"); //head object
|
||||
var drag = null; //reference to the current grip that is being dragged
|
||||
var tables = {}; //object of the already processed tables (table.id as key)
|
||||
var count = 0; //internal count to create unique IDs when needed.
|
||||
|
||||
//common strings for packing
|
||||
var ID = "id";
|
||||
var PX = "px";
|
||||
var SIGNATURE ="JColResizer";
|
||||
var FLEX = "JCLRFlex";
|
||||
|
||||
//short-cuts
|
||||
var I = parseInt;
|
||||
var M = Math;
|
||||
var ie = navigator.userAgent.indexOf('Trident/4.0')>0;
|
||||
var S;
|
||||
try{S = sessionStorage;}catch(e){} //Firefox crashes when executed as local file system
|
||||
|
||||
//append required CSS rules
|
||||
h.append("<style type='text/css'> .JColResizer{table-layout:fixed;} .JColResizer > tbody > tr > td, .JColResizer > tbody > tr > th{overflow:hidden;padding-left:0!important; padding-right:0!important;} .JCLRgrips{ height:0px; position:relative;} .JCLRgrip{margin-left:-5px; position:absolute; z-index:5; } .JCLRgrip .JColResizer{position:absolute;background-color:red;filter:alpha(opacity=1);opacity:0;width:10px;height:100%;cursor: e-resize;top:0px} .JCLRLastGrip{position:absolute; width:1px; } .JCLRgripDrag{ border-left:1px dotted black; } .JCLRFlex{width:auto!important;} .JCLRgrip.JCLRdisabledGrip .JColResizer{cursor:default; display:none;}</style>");
|
||||
|
||||
|
||||
/**
|
||||
* Function to allow column resizing for table objects. It is the starting point to apply the plugin.
|
||||
* @param {DOM node} tb - reference to the DOM table object to be enhanced
|
||||
* @param {Object} options - some customization values
|
||||
*/
|
||||
var init = function( tb, options){
|
||||
var t = $(tb); //the table object is wrapped
|
||||
t.opt = options; //each table has its own options available at anytime
|
||||
t.mode = options.resizeMode; //shortcuts
|
||||
t.dc = t.opt.disabledColumns;
|
||||
if(t.opt.disable) return destroy(t); //the user is asking to destroy a previously colResized table
|
||||
var id = t.id = t.attr(ID) || SIGNATURE+count++; //its id is obtained, if null new one is generated
|
||||
t.p = t.opt.postbackSafe; //short-cut to detect postback safe
|
||||
if(!t.is("table") || tables[id] && !t.opt.partialRefresh) return; //if the object is not a table or if it was already processed then it is ignored.
|
||||
if (t.opt.hoverCursor !== 'e-resize') h.append("<style type='text/css'>.JCLRgrip .JColResizer:hover{cursor:"+ t.opt.hoverCursor +"!important}</style>"); //if hoverCursor has been set, append the style
|
||||
t.addClass(SIGNATURE).attr(ID, id).before('<div class="JCLRgrips"/>'); //the grips container object is added. Signature class forces table rendering in fixed-layout mode to prevent column's min-width
|
||||
t.g = []; t.c = []; t.w = t.width(); t.gc = t.prev(); t.f=t.opt.fixed; //t.c and t.g are arrays of columns and grips respectively
|
||||
if(options.marginLeft) t.gc.css("marginLeft", options.marginLeft); //if the table contains margins, it must be specified
|
||||
if(options.marginRight) t.gc.css("marginRight", options.marginRight); //since there is no (direct) way to obtain margin values in its original units (%, em, ...)
|
||||
t.cs = I(ie? tb.cellSpacing || tb.currentStyle.borderSpacing :t.css('border-spacing'))||2; //table cellspacing (not even jQuery is fully cross-browser)
|
||||
t.b = I(ie? tb.border || tb.currentStyle.borderLeftWidth :t.css('border-left-width'))||1; //outer border width (again cross-browser issues)
|
||||
// if(!(tb.style.width || tb.width)) t.width(t.width()); //I am not an IE fan at all, but it is a pity that only IE has the currentStyle attribute working as expected. For this reason I can not check easily if the table has an explicit width or if it is rendered as "auto"
|
||||
tables[id] = t; //the table object is stored using its id as key
|
||||
createGrips(t); //grips are created
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* This function allows to remove any enhancements performed by this plugin on a previously processed table.
|
||||
* @param {jQuery ref} t - table object
|
||||
*/
|
||||
var destroy = function(t){
|
||||
var id=t.attr(ID), t=tables[id]; //its table object is found
|
||||
if(!t||!t.is("table")) return; //if none, then it wasn't processed
|
||||
t.removeClass(SIGNATURE+" "+FLEX).gc.remove(); //class and grips are removed
|
||||
delete tables[id]; //clean up data
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Function to create all the grips associated with the table given by parameters
|
||||
* @param {jQuery ref} t - table object
|
||||
*/
|
||||
var createGrips = function(t){
|
||||
|
||||
var th = t.find(">thead>tr:first>th,>thead>tr:first>td"); //table headers are obtained
|
||||
if(!th.length) th = t.find(">tbody>tr:first>th,>tr:first>th,>tbody>tr:first>td, >tr:first>td"); //but headers can also be included in different ways
|
||||
th = th.filter(":visible"); //filter invisible columns
|
||||
t.cg = t.find("col"); //a table can also contain a colgroup with col elements
|
||||
t.ln = th.length; //table length is stored
|
||||
if(t.p && S && S[t.id])memento(t,th); //if 'postbackSafe' is enabled and there is data for the current table, its coloumn layout is restored
|
||||
th.each(function(i){ //iterate through the table column headers
|
||||
var c = $(this); //jquery wrap for the current column
|
||||
var dc = t.dc.indexOf(i)!=-1; //is this a disabled column?
|
||||
var g = $(t.gc.append('<div class="JCLRgrip"></div>')[0].lastChild); //add the visual node to be used as grip
|
||||
g.append(dc ? "": t.opt.gripInnerHtml).append('<div class="'+SIGNATURE+'"></div>');
|
||||
if(i == t.ln-1){ //if the current grip is the las one
|
||||
g.addClass("JCLRLastGrip"); //add a different css class to stlye it in a different way if needed
|
||||
if(t.f) g.html(""); //if the table resizing mode is set to fixed, the last grip is removed since table with can not change
|
||||
}
|
||||
g.bind('touchstart mousedown', onGripMouseDown); //bind the mousedown event to start dragging
|
||||
|
||||
if (!dc){
|
||||
//if normal column bind the mousedown event to start dragging, if disabled then apply its css class
|
||||
g.removeClass('JCLRdisabledGrip').bind('touchstart mousedown', onGripMouseDown);
|
||||
}else{
|
||||
g.addClass('JCLRdisabledGrip');
|
||||
}
|
||||
|
||||
g.t = t; g.i = i; g.c = c; c.w =c.width(); //some values are stored in the grip's node data as shortcut
|
||||
t.g.push(g); t.c.push(c); //the current grip and column are added to its table object
|
||||
c.width(c.w).removeAttr("width"); //the width of the column is converted into pixel-based measurements
|
||||
g.data(SIGNATURE, {i:i, t:t.attr(ID), last: i == t.ln-1}); //grip index and its table name are stored in the HTML
|
||||
});
|
||||
t.cg.removeAttr("width"); //remove the width attribute from elements in the colgroup
|
||||
|
||||
t.find('td, th').not(th).not('table th, table td').each(function(){
|
||||
$(this).removeAttr('width'); //the width attribute is removed from all table cells which are not nested in other tables and dont belong to the header
|
||||
});
|
||||
if(!t.f){
|
||||
t.removeAttr('width').addClass(FLEX); //if not fixed, let the table grow as needed
|
||||
}
|
||||
syncGrips(t); //the grips are positioned according to the current table layout
|
||||
//there is a small problem, some cells in the table could contain dimension values interfering with the
|
||||
//width value set by this plugin. Those values are removed
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Function to allow the persistence of columns dimensions after a browser postback. It is based in
|
||||
* the HTML5 sessionStorage object, which can be emulated for older browsers using sessionstorage.js
|
||||
* @param {jQuery ref} t - table object
|
||||
* @param {jQuery ref} th - reference to the first row elements (only set in deserialization)
|
||||
*/
|
||||
var memento = function(t, th){
|
||||
var w,m=0,i=0,aux =[],tw;
|
||||
if(th){ //in deserialization mode (after a postback)
|
||||
t.cg.removeAttr("width");
|
||||
if(t.opt.flush){ S[t.id] =""; return;} //if flush is activated, stored data is removed
|
||||
w = S[t.id].split(";"); //column widths is obtained
|
||||
tw = w[t.ln+1];
|
||||
if(!t.f && tw){ //if not fixed and table width data available its size is restored
|
||||
t.width(tw*=1);
|
||||
if(t.opt.overflow) { //if overfolw flag is set, restore table width also as table min-width
|
||||
t.css('min-width', tw + PX);
|
||||
t.w = tw;
|
||||
}
|
||||
}
|
||||
for(;i<t.ln;i++){ //for each column
|
||||
aux.push(100*w[i]/w[t.ln]+"%"); //width is stored in an array since it will be required again a couple of lines ahead
|
||||
th.eq(i).css("width", aux[i] ); //each column width in % is restored
|
||||
}
|
||||
for(i=0;i<t.ln;i++)
|
||||
t.cg.eq(i).css("width", aux[i]); //this code is required in order to create an inline CSS rule with higher precedence than an existing CSS class in the "col" elements
|
||||
}else{ //in serialization mode (after resizing a column)
|
||||
S[t.id] =""; //clean up previous data
|
||||
for(;i < t.c.length; i++){ //iterate through columns
|
||||
w = t.c[i].width(); //width is obtained
|
||||
S[t.id] += w+";"; //width is appended to the sessionStorage object using ID as key
|
||||
m+=w; //carriage is updated to obtain the full size used by columns
|
||||
}
|
||||
S[t.id]+=m; //the last item of the serialized string is the table's active area (width),
|
||||
//to be able to obtain % width value of each columns while deserializing
|
||||
if(!t.f) S[t.id] += ";"+t.width(); //if not fixed, table width is stored
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Function that places each grip in the correct position according to the current table layout
|
||||
* @param {jQuery ref} t - table object
|
||||
*/
|
||||
var syncGrips = function (t){
|
||||
t.gc.width(t.w); //the grip's container width is updated
|
||||
for(var i=0; i<t.ln; i++){ //for each column
|
||||
var c = t.c[i];
|
||||
t.g[i].css({ //height and position of the grip is updated according to the table layout
|
||||
left: c.offset().left - t.offset().left + c.outerWidth(false) + t.cs / 2 + PX,
|
||||
height: t.opt.headerOnly? t.c[0].outerHeight(false) : t.outerHeight(false)
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This function updates column's width according to the horizontal position increment of the grip being
|
||||
* dragged. The function can be called while dragging if liveDragging is enabled and also from the onGripDragOver
|
||||
* event handler to synchronize grip's position with their related columns.
|
||||
* @param {jQuery ref} t - table object
|
||||
* @param {number} i - index of the grip being dragged
|
||||
* @param {bool} isOver - to identify when the function is being called from the onGripDragOver event
|
||||
*/
|
||||
var syncCols = function(t,i,isOver){
|
||||
var inc = drag.x-drag.l, c = t.c[i], c2 = t.c[i+1];
|
||||
var w = c.w + inc; var w2= c2.w- inc; //their new width is obtained
|
||||
c.width( w + PX);
|
||||
t.cg.eq(i).width( w + PX);
|
||||
if(t.f){ //if fixed mode
|
||||
c2.width(w2 + PX);
|
||||
t.cg.eq(i+1).width( w2 + PX);
|
||||
}else if(t.opt.overflow) { //if overflow is set, incriment min-width to force overflow
|
||||
t.css('min-width', t.w + inc);
|
||||
}
|
||||
if(isOver){
|
||||
c.w=w;
|
||||
c2.w= t.f ? w2 : c2.w;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* This function updates all columns width according to its real width. It must be taken into account that the
|
||||
* sum of all columns can exceed the table width in some cases (if fixed is set to false and table has some kind
|
||||
* of max-width).
|
||||
* @param {jQuery ref} t - table object
|
||||
*/
|
||||
var applyBounds = function(t){
|
||||
var w = $.map(t.c, function(c){ //obtain real widths
|
||||
return c.width();
|
||||
});
|
||||
t.width(t.w = t.width()).removeClass(FLEX); //prevent table width changes
|
||||
$.each(t.c, function(i,c){
|
||||
c.width(w[i]).w = w[i]; //set column widths applying bounds (table's max-width)
|
||||
});
|
||||
t.addClass(FLEX); //allow table width changes
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Event handler used while dragging a grip. It checks if the next grip's position is valid and updates it.
|
||||
* @param {event} e - mousemove event binded to the window object
|
||||
*/
|
||||
var onGripDrag = function(e){
|
||||
if(!drag) return;
|
||||
var t = drag.t; //table object reference
|
||||
var oe = e.originalEvent.touches;
|
||||
var ox = oe ? oe[0].pageX : e.pageX; //original position (touch or mouse)
|
||||
var x = ox - drag.ox + drag.l; //next position according to horizontal mouse position increment
|
||||
var mw = t.opt.minWidth, i = drag.i ; //cell's min width
|
||||
var l = t.cs*1.5 + mw + t.b;
|
||||
var last = i == t.ln-1; //check if it is the last column's grip (usually hidden)
|
||||
var min = i? t.g[i-1].position().left+t.cs+mw: l; //min position according to the contiguous cells
|
||||
var max = t.f ? //fixed mode?
|
||||
i == t.ln-1?
|
||||
t.w-l:
|
||||
t.g[i+1].position().left-t.cs-mw:
|
||||
Infinity; //max position according to the contiguous cells
|
||||
x = M.max(min, M.min(max, x)); //apply bounding
|
||||
drag.x = x; drag.css("left", x + PX); //apply position increment
|
||||
if(last){ //if it is the last grip
|
||||
var c = t.c[drag.i]; //width of the last column is obtained
|
||||
drag.w = c.w + x- drag.l;
|
||||
}
|
||||
if(t.opt.liveDrag){ //if liveDrag is enabled
|
||||
if(last){
|
||||
c.width(drag.w);
|
||||
if(!t.f && t.opt.overflow){ //if overflow is set, incriment min-width to force overflow
|
||||
t.css('min-width', t.w + x - drag.l);
|
||||
}else {
|
||||
t.w = t.width();
|
||||
}
|
||||
}else{
|
||||
syncCols(t,i); //columns are synchronized
|
||||
}
|
||||
syncGrips(t);
|
||||
var cb = t.opt.onDrag; //check if there is an onDrag callback
|
||||
if (cb) { e.currentTarget = t[0]; cb(e); } //if any, it is fired
|
||||
}
|
||||
return false; //prevent text selection while dragging
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Event handler fired when the dragging is over, updating table layout
|
||||
* @param {event} e - grip's drag over event
|
||||
*/
|
||||
var onGripDragOver = function(e){
|
||||
|
||||
d.unbind('touchend.'+SIGNATURE+' mouseup.'+SIGNATURE).unbind('touchmove.'+SIGNATURE+' mousemove.'+SIGNATURE);
|
||||
$("head :last-child").remove(); //remove the dragging cursor style
|
||||
if(!drag) return;
|
||||
drag.removeClass(drag.t.opt.draggingClass); //remove the grip's dragging css-class
|
||||
if (!(drag.x - drag.l == 0)) {
|
||||
var t = drag.t;
|
||||
var cb = t.opt.onResize; //get some values
|
||||
var i = drag.i; //column index
|
||||
var last = i == t.ln-1; //check if it is the last column's grip (usually hidden)
|
||||
var c = t.g[i].c; //the column being dragged
|
||||
if(last){
|
||||
c.width(drag.w);
|
||||
c.w = drag.w;
|
||||
}else{
|
||||
syncCols(t, i, true); //the columns are updated
|
||||
}
|
||||
if(!t.f) applyBounds(t); //if not fixed mode, then apply bounds to obtain real width values
|
||||
syncGrips(t); //the grips are updated
|
||||
if (cb) { e.currentTarget = t[0]; cb(e); } //if there is a callback function, it is fired
|
||||
if(t.p && S) memento(t); //if postbackSafe is enabled and there is sessionStorage support, the new layout is serialized and stored
|
||||
}
|
||||
drag = null; //since the grip's dragging is over
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Event handler fired when the grip's dragging is about to start. Its main goal is to set up events
|
||||
* and store some values used while dragging.
|
||||
* @param {event} e - grip's mousedown event
|
||||
*/
|
||||
var onGripMouseDown = function(e){
|
||||
var o = $(this).data(SIGNATURE); //retrieve grip's data
|
||||
var t = tables[o.t], g = t.g[o.i]; //shortcuts for the table and grip objects
|
||||
var oe = e.originalEvent.touches; //touch or mouse event?
|
||||
g.ox = oe? oe[0].pageX: e.pageX; //the initial position is kept
|
||||
g.l = g.position().left;
|
||||
g.x = g.l;
|
||||
|
||||
d.bind('touchmove.'+SIGNATURE+' mousemove.'+SIGNATURE, onGripDrag ).bind('touchend.'+SIGNATURE+' mouseup.'+SIGNATURE, onGripDragOver); //mousemove and mouseup events are bound
|
||||
h.append("<style type='text/css'>*{cursor:"+ t.opt.dragCursor +"!important}</style>"); //change the mouse cursor
|
||||
g.addClass(t.opt.draggingClass); //add the dragging class (to allow some visual feedback)
|
||||
drag = g; //the current grip is stored as the current dragging object
|
||||
if(t.c[o.i].l) for(var i=0,c; i<t.ln; i++){ c=t.c[i]; c.l = false; c.w= c.width(); } //if the colum is locked (after browser resize), then c.w must be updated
|
||||
return false; //prevent text selection
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Event handler fired when the browser is resized. The main purpose of this function is to update
|
||||
* table layout according to the browser's size synchronizing related grips
|
||||
*/
|
||||
var onResize = function(){
|
||||
for(var t in tables){
|
||||
if( tables.hasOwnProperty( t ) ) {
|
||||
t = tables[t];
|
||||
var i, mw=0;
|
||||
t.removeClass(SIGNATURE); //firefox doesn't like layout-fixed in some cases
|
||||
if (t.f) { //in fixed mode
|
||||
t.w = t.width(); //its new width is kept
|
||||
for(i=0; i<t.ln; i++) mw+= t.c[i].w;
|
||||
//cell rendering is not as trivial as it might seem, and it is slightly different for
|
||||
//each browser. In the beginning i had a big switch for each browser, but since the code
|
||||
//was extremely ugly now I use a different approach with several re-flows. This works
|
||||
//pretty well but it's a bit slower. For now, lets keep things simple...
|
||||
for(i=0; i<t.ln; i++) t.c[i].css("width", M.round(1000*t.c[i].w/mw)/10 + "%").l=true;
|
||||
//c.l locks the column, telling us that its c.w is outdated
|
||||
}else{ //in non fixed-sized tables
|
||||
applyBounds(t); //apply the new bounds
|
||||
if(t.mode == 'flex' && t.p && S){ //if postbackSafe is enabled and there is sessionStorage support,
|
||||
memento(t); //the new layout is serialized and stored for 'flex' tables
|
||||
}
|
||||
}
|
||||
syncGrips(t.addClass(SIGNATURE));
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
//bind resize event, to update grips position
|
||||
$(window).bind('resize.'+SIGNATURE, onResize);
|
||||
|
||||
|
||||
/**
|
||||
* The plugin is added to the jQuery library
|
||||
* @param {Object} options - an object that holds some basic customization values
|
||||
*/
|
||||
$.fn.extend({
|
||||
colResizable: function(options) {
|
||||
var defaults = {
|
||||
|
||||
//attributes:
|
||||
|
||||
resizeMode: 'fit', //mode can be 'fit', 'flex' or 'overflow'
|
||||
draggingClass: 'JCLRgripDrag', //css-class used when a grip is being dragged (for visual feedback purposes)
|
||||
gripInnerHtml: '', //if it is required to use a custom grip it can be done using some custom HTML
|
||||
liveDrag: false, //enables table-layout updating while dragging
|
||||
minWidth: 15, //minimum width value in pixels allowed for a column
|
||||
headerOnly: false, //specifies that the size of the the column resizing anchors will be bounded to the size of the first row
|
||||
hoverCursor: "e-resize", //cursor to be used on grip hover
|
||||
dragCursor: "e-resize", //cursor to be used while dragging
|
||||
postbackSafe: false, //when it is enabled, table layout can persist after postback or page refresh. It requires browsers with sessionStorage support (it can be emulated with sessionStorage.js).
|
||||
flush: false, //when postbakSafe is enabled, and it is required to prevent layout restoration after postback, 'flush' will remove its associated layout data
|
||||
marginLeft: null, //in case the table contains any margins, colResizable needs to know the values used, e.g. "10%", "15em", "5px" ...
|
||||
marginRight: null, //in case the table contains any margins, colResizable needs to know the values used, e.g. "10%", "15em", "5px" ...
|
||||
disable: false, //disables all the enhancements performed in a previously colResized table
|
||||
partialRefresh: false, //can be used in combination with postbackSafe when the table is inside of an updatePanel,
|
||||
disabledColumns: [], //column indexes to be excluded
|
||||
|
||||
//events:
|
||||
onDrag: null, //callback function to be fired during the column resizing process if liveDrag is enabled
|
||||
onResize: null //callback function fired when the dragging process is over
|
||||
}
|
||||
var options = $.extend(defaults, options);
|
||||
|
||||
//since now there are 3 different ways of resizing columns, I changed the external interface to make it clear
|
||||
//calling it 'resizeMode' but also to remove the "fixed" attribute which was confusing for many people
|
||||
options.fixed = true;
|
||||
options.overflow = false;
|
||||
switch(options.resizeMode){
|
||||
case 'flex': options.fixed = false; break;
|
||||
case 'overflow': options.fixed = false; options.overflow = true; break;
|
||||
}
|
||||
|
||||
return this.each(function() {
|
||||
init( this, options);
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -32,9 +32,8 @@ export default [
|
||||
_source: {
|
||||
title: 'Top 5 rules',
|
||||
visState:
|
||||
'{"title":"Top 5 rules","type":"table","params":{"perPage":10,"showPartialRows":false,"showMetricsAtAllLevels":false,"sort":{"columnIndex":null,"direction":null},"showTotal":false,"totalFunc":"sum"},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"bucket","params":{"field":"rule.id","size":3,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing","customLabel":"Rule"}},{"id":"3","enabled":true,"type":"terms","schema":"bucket","params":{"field":"rule.description","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing","customLabel":"Description"}}]}',
|
||||
uiStateJSON:
|
||||
'{"vis":{"params":{"sort":{"columnIndex":null,"direction":null}}}}',
|
||||
'{"title":"Export rule distr","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true,"labels":{"show":false,"values":true,"last_level":true,"truncate":100}},"aggs":[{"id":"1","enabled":true,"type":"sum","schema":"metric","params":{"field":"rule.level"}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.description","size":5,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
|
||||
uiStateJSON: '{}',
|
||||
description: '',
|
||||
version: 1,
|
||||
kibanaSavedObjectMeta: {
|
||||
@ -91,6 +90,153 @@ export default [
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
_id: 'Wazuh-App-Agents-FIM-Files-added',
|
||||
_source: {
|
||||
title: 'Files added',
|
||||
visState:
|
||||
'{"title":"Files added","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"syscheck.path","size":5,"order":"desc","orderBy":"1"}}]}',
|
||||
uiStateJSON: '{}',
|
||||
description: '',
|
||||
version: 1,
|
||||
kibanaSavedObjectMeta: {
|
||||
searchSourceJSON: `{
|
||||
"index":"wazuh-alerts",
|
||||
"filter":[
|
||||
{
|
||||
"meta": {
|
||||
"index": "wazuh-alerts",
|
||||
"type": "phrases",
|
||||
"key": "syscheck.event",
|
||||
"value": "added, readded",
|
||||
"params": [
|
||||
"added",
|
||||
"readded"
|
||||
],
|
||||
"negate": false,
|
||||
"disabled": false,
|
||||
"alias": null
|
||||
},
|
||||
"query": {
|
||||
"bool": {
|
||||
"should": [
|
||||
{
|
||||
"match_phrase": {
|
||||
"syscheck.event": "added"
|
||||
}
|
||||
},
|
||||
{
|
||||
"match_phrase": {
|
||||
"syscheck.event": "readded"
|
||||
}
|
||||
}
|
||||
],
|
||||
"minimum_should_match": 1
|
||||
}
|
||||
},
|
||||
"$state": {
|
||||
"store": "appState"
|
||||
}
|
||||
}
|
||||
],
|
||||
"query":{"query":"","language":"lucene"}
|
||||
}`
|
||||
}
|
||||
},
|
||||
_type: 'visualization'
|
||||
},
|
||||
{
|
||||
_id: 'Wazuh-App-Agents-FIM-Files-modified',
|
||||
_source: {
|
||||
title: 'Files modified',
|
||||
visState:
|
||||
'{"title":"Files modified","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"syscheck.path","size":5,"order":"desc","orderBy":"1"}}]}',
|
||||
uiStateJSON: '{}',
|
||||
description: '',
|
||||
version: 1,
|
||||
kibanaSavedObjectMeta: {
|
||||
searchSourceJSON: `{
|
||||
"index":"wazuh-alerts",
|
||||
"filter":[
|
||||
{
|
||||
"meta": {
|
||||
"index": "wazuh-alerts",
|
||||
"negate": false,
|
||||
"disabled": false,
|
||||
"alias": null,
|
||||
"type": "phrase",
|
||||
"key": "syscheck.event",
|
||||
"value": "modified",
|
||||
"params": {
|
||||
"query": "modified",
|
||||
"type": "phrase"
|
||||
}
|
||||
},
|
||||
"query": {
|
||||
"match": {
|
||||
"syscheck.event": {
|
||||
"query": "modified",
|
||||
"type": "phrase"
|
||||
}
|
||||
}
|
||||
},
|
||||
"$state": {
|
||||
"store": "appState"
|
||||
}
|
||||
}
|
||||
],
|
||||
"query":{"query":"","language":"lucene"}
|
||||
}`
|
||||
}
|
||||
},
|
||||
_type: 'visualization'
|
||||
},
|
||||
{
|
||||
_id: 'Wazuh-App-Agents-FIM-Files-deleted',
|
||||
_source: {
|
||||
title: 'Files deleted',
|
||||
visState:
|
||||
'{"title":"Files deleted","type":"pie","params":{"type":"pie","addTooltip":true,"addLegend":true,"legendPosition":"right","isDonut":true},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"syscheck.path","size":5,"order":"desc","orderBy":"1"}}]}',
|
||||
uiStateJSON: '{}',
|
||||
description: '',
|
||||
version: 1,
|
||||
kibanaSavedObjectMeta: {
|
||||
searchSourceJSON: `{
|
||||
"index":"wazuh-alerts",
|
||||
"filter":[
|
||||
{
|
||||
"meta": {
|
||||
"index": "wazuh-alerts",
|
||||
"negate": false,
|
||||
"disabled": false,
|
||||
"alias": null,
|
||||
"type": "phrase",
|
||||
"key": "syscheck.event",
|
||||
"value": "deleted",
|
||||
"params": {
|
||||
"query": "deleted",
|
||||
"type": "phrase"
|
||||
}
|
||||
},
|
||||
"query": {
|
||||
"match": {
|
||||
"syscheck.event": {
|
||||
"query": "deleted",
|
||||
"type": "phrase"
|
||||
}
|
||||
}
|
||||
},
|
||||
"$state": {
|
||||
"store": "appState"
|
||||
}
|
||||
}
|
||||
],
|
||||
"query":{"query":"","language":"lucene"}
|
||||
}`
|
||||
}
|
||||
},
|
||||
_type: 'visualization'
|
||||
},
|
||||
{
|
||||
_id: 'Wazuh-App-Overview-FIM-added',
|
||||
_type: 'visualization',
|
||||
|
@ -204,6 +204,22 @@ export default [
|
||||
},
|
||||
_type: 'visualization'
|
||||
},
|
||||
{
|
||||
_id: 'Wazuh-App-Overview-General-Top-10-agent-alert',
|
||||
_source: {
|
||||
title: 'Top 10 Agent alerts',
|
||||
visState:
|
||||
'{"title":"Top 10 Agent alerts","type":"metrics","params":{"id":"61ca57f0-469d-11e7-af02-69e470af7417","type":"timeseries","series":[{"id":"0eba6ef0-41a1-11e9-b2ca-a3f8ee4d0e71","color":"rgba(0,156,224,1)","split_mode":"terms","metrics":[{"id":"0eba6ef1-41a1-11e9-b2ca-a3f8ee4d0e71","type":"count"}],"separate_axis":0,"axis_position":"right","formatter":"number","chart_type":"line","line_width":1,"point_size":1,"fill":0.5,"stacked":"none","terms_field":"agent.name","terms_size":"10"}],"time_field":"@timestamp","index_pattern":"wazuh-alerts","interval":"auto","axis_position":"left","axis_formatter":"number","axis_scale":"normal","show_legend":1,"show_grid":1,"legend_position":"left"},"aggs":[]}',
|
||||
uiStateJSON: '{}',
|
||||
description: '',
|
||||
version: 1,
|
||||
kibanaSavedObjectMeta: {
|
||||
searchSourceJSON:
|
||||
'{"index":"wazuh-alerts","filter":[],"query":{"query":"","language":"lucene"}}'
|
||||
}
|
||||
},
|
||||
_type: 'visualization'
|
||||
},
|
||||
{
|
||||
_id: 'Wazuh-App-Overview-General-Alert-level-evolution',
|
||||
_source: {
|
||||
@ -241,7 +257,7 @@ export default [
|
||||
_source: {
|
||||
title: 'Top 10 rule groups',
|
||||
visState:
|
||||
'{"title":"Top 10 rule groups","type":"tagcloud","params":{"scale":"linear","orientation":"single","minFontSize":11,"maxFontSize":24,"showLabel":false},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.groups","size":10,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
|
||||
'{"title":"Top 10 rule groups","type":"pie","params":{"scale":"linear","orientation":"single","minFontSize":11,"maxFontSize":24,"showLabel":false},"aggs":[{"id":"1","enabled":true,"type":"count","schema":"metric","params":{}},{"id":"2","enabled":true,"type":"terms","schema":"segment","params":{"field":"rule.groups","size":10,"order":"desc","orderBy":"1","otherBucket":false,"otherBucketLabel":"Other","missingBucket":false,"missingBucketLabel":"Missing"}}]}',
|
||||
uiStateJSON: '{}',
|
||||
description: '',
|
||||
version: 1,
|
||||
|
Loading…
Reference in New Issue
Block a user