mirror of
https://github.com/valitydev/wazuh-kibana-app.git
synced 2024-11-06 18:05:20 +00:00
Merge branch 'issue-1164'
This commit is contained in:
commit
985233245f
@ -90,8 +90,9 @@ export class AgentsController {
|
||||
this.ignoredTabs = ['syscollector', 'welcome', 'configuration'];
|
||||
|
||||
this.$scope.showSyscheckFiles = false;
|
||||
this.$scope.editGroup = false;
|
||||
this.$scope.showRootcheckScan = false;
|
||||
|
||||
this.$scope.editGroup = false;
|
||||
this.$scope.addingGroupToAgent = false;
|
||||
}
|
||||
|
||||
@ -183,6 +184,12 @@ export class AgentsController {
|
||||
this.$scope.searchSyscheckFile = (term, specificFilter) =>
|
||||
this.$scope.$broadcast('wazuhSearch', { term, specificFilter });
|
||||
|
||||
this.$scope.searchRootcheck = (term, specificFilter) =>
|
||||
this.$scope.$broadcast('wazuhSearch', { term, specificFilter });
|
||||
|
||||
this.$scope.launchRootcheckScan = () => this.launchRootcheckScan();
|
||||
this.$scope.launchSyscheckScan = () => this.launchSyscheckScan();
|
||||
|
||||
this.$scope.startVis2Png = () => this.startVis2Png();
|
||||
|
||||
this.$scope.$on('$destroy', () => {
|
||||
@ -309,6 +316,16 @@ export class AgentsController {
|
||||
if (!this.$scope.$$phase) this.$scope.$digest();
|
||||
};
|
||||
|
||||
this.$scope.switchRootcheckScan = () => {
|
||||
this.$scope.showRootcheckScan = !this.$scope.showRootcheckScan;
|
||||
if (!this.$scope.showRootcheckScan) {
|
||||
this.$rootScope.$emit('changeTabView', {
|
||||
tabView: this.$scope.tabView
|
||||
});
|
||||
}
|
||||
if (!this.$scope.$$phase) this.$scope.$digest();
|
||||
};
|
||||
|
||||
this.$scope.goDiscover = () => this.goDiscover();
|
||||
|
||||
this.$scope.$on('$routeChangeStart', () =>
|
||||
@ -468,10 +485,11 @@ export class AgentsController {
|
||||
(((agentInfo || {}).data || {}).data || {}).status ||
|
||||
this.$scope.agent.status;
|
||||
}
|
||||
} catch (error) {} // eslint-disable-line
|
||||
} catch (error) { } // eslint-disable-line
|
||||
|
||||
try {
|
||||
this.$scope.showSyscheckFiles = false;
|
||||
this.$scope.showRootcheckScan = false;
|
||||
if (tab === 'pci') {
|
||||
const pciTabs = await this.commonData.getPCI();
|
||||
this.$scope.pciTabs = pciTabs;
|
||||
@ -485,7 +503,7 @@ export class AgentsController {
|
||||
if (tab === 'syscollector')
|
||||
try {
|
||||
await this.loadSyscollector(this.$scope.agent.id);
|
||||
} catch (error) {} // eslint-disable-line
|
||||
} catch (error) { } // eslint-disable-line
|
||||
if (tab === 'configuration') {
|
||||
const isSync = await this.apiReq.request(
|
||||
'GET',
|
||||
@ -603,7 +621,7 @@ export class AgentsController {
|
||||
{}
|
||||
);
|
||||
netifaceResponse = ((resultNetiface || {}).data || {}).data || false;
|
||||
} catch (error) {} // eslint-disable-line
|
||||
} catch (error) { } // eslint-disable-line
|
||||
|
||||
// This API call may fail so we put it out of Promise.all
|
||||
let netaddrResponse = false;
|
||||
@ -615,7 +633,7 @@ export class AgentsController {
|
||||
);
|
||||
netaddrResponse =
|
||||
((resultNetaddrResponse || {}).data || {}).data || false;
|
||||
} catch (error) {} // eslint-disable-line
|
||||
} catch (error) { } // eslint-disable-line
|
||||
|
||||
// Before proceeding, syscollector data is an empty object
|
||||
this.$scope.syscollector = {};
|
||||
@ -631,7 +649,7 @@ export class AgentsController {
|
||||
this.$scope.syscollector = {
|
||||
hardware:
|
||||
typeof hardwareResponse === 'object' &&
|
||||
Object.keys(hardwareResponse).length
|
||||
Object.keys(hardwareResponse).length
|
||||
? { ...hardwareResponse }
|
||||
: false,
|
||||
os:
|
||||
@ -815,4 +833,44 @@ export class AgentsController {
|
||||
syscollectorFilters.length ? syscollectorFilters : null
|
||||
);
|
||||
}
|
||||
|
||||
async launchRootcheckScan() {
|
||||
try {
|
||||
const isActive = ((this.$scope.agent || {}).status || '') === 'Active';
|
||||
if (!isActive) {
|
||||
throw new Error('Agent is not active')
|
||||
}
|
||||
await this.apiReq.request(
|
||||
'PUT',
|
||||
`/rootcheck/${this.$scope.agent.id}`,
|
||||
{}
|
||||
);
|
||||
this.errorHandler.info(
|
||||
`Policy monitoring scan launched successfully on agent ${
|
||||
this.$scope.agent.id
|
||||
}`,
|
||||
''
|
||||
);
|
||||
} catch (error) {
|
||||
this.errorHandler.handle(error, '');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
async launchSyscheckScan() {
|
||||
try {
|
||||
const isActive = ((this.$scope.agent || {}).status || '') === 'Active';
|
||||
if (!isActive) {
|
||||
throw new Error('Agent is not active')
|
||||
}
|
||||
await this.apiReq.request('PUT', `/syscheck/${this.$scope.agent.id}`, {});
|
||||
this.errorHandler.info(
|
||||
`FIM scan launched successfully on agent ${this.$scope.agent.id}`,
|
||||
''
|
||||
);
|
||||
} catch (error) {
|
||||
this.errorHandler.handle(error, '');
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -62,8 +62,6 @@ class WzConfigViewer {
|
||||
);
|
||||
};
|
||||
|
||||
const init = () => {};
|
||||
|
||||
const refreshJsonBox = json => {
|
||||
$scope.jsoncontent = json;
|
||||
if (!$scope.jsonCodeBox) {
|
||||
@ -102,7 +100,6 @@ class WzConfigViewer {
|
||||
refreshXmlBox(params.data);
|
||||
});
|
||||
|
||||
init();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -19,12 +19,13 @@ import { checkGap } from '../wz-table/lib/check-gap';
|
||||
|
||||
const app = uiModules.get('app/wazuh', []);
|
||||
|
||||
app.directive('wzDataTable', function() {
|
||||
app.directive('wzDataTable', function () {
|
||||
return {
|
||||
restrict: 'E',
|
||||
scope: {
|
||||
rowSizes: '=rowSizes',
|
||||
data: '='
|
||||
data: '=',
|
||||
keys: '='
|
||||
},
|
||||
controller($scope, $filter, errorHandler, $window) {
|
||||
/**
|
||||
@ -61,8 +62,6 @@ app.directive('wzDataTable', function() {
|
||||
const fetch = () => {
|
||||
try {
|
||||
$scope.filterTable();
|
||||
$scope.keys = Object.keys(items[0]);
|
||||
return;
|
||||
} catch (error) {
|
||||
errorHandler.handle(error, 'Error loading table');
|
||||
}
|
||||
@ -121,7 +120,7 @@ app.directive('wzDataTable', function() {
|
||||
$scope.prevPage = () => pagination.prevPage($scope);
|
||||
$scope.nextPage = async currentPage =>
|
||||
pagination.nextPage(currentPage, $scope, errorHandler, fetch);
|
||||
$scope.setPage = function() {
|
||||
$scope.setPage = function () {
|
||||
$scope.currentPage = this.n;
|
||||
$scope.nextPage(this.n);
|
||||
};
|
||||
|
@ -26,7 +26,28 @@ const checkIfArray = item => {
|
||||
return typeof item === 'object' ? splitArray(item) : item === 0 ? '0' : item;
|
||||
};
|
||||
|
||||
export function parseValue(key, item, instancePath) {
|
||||
export function parseValue(key, item, instancePath, $sce = null) {
|
||||
if (
|
||||
(key === 'event' || (key.value && key.value === 'event')) &&
|
||||
instancePath.includes('rootcheck') &&
|
||||
$sce
|
||||
) {
|
||||
if (typeof (item || {}).event === 'string') {
|
||||
const urlRegex = new RegExp(
|
||||
/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/,
|
||||
'g'
|
||||
);
|
||||
|
||||
const matched = item.event.match(urlRegex);
|
||||
if (matched) {
|
||||
item.event = item.event.replace(
|
||||
matched,
|
||||
`<a href="${matched}">${matched}</a>`
|
||||
);
|
||||
item.event = $sce.trustAsHtml(item.event);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (key === 'state' && instancePath.includes('processes')) {
|
||||
return ProcessEquivalence[item.state] || 'Unknown';
|
||||
}
|
||||
|
@ -50,7 +50,8 @@ app.directive('wzTable', function() {
|
||||
appState,
|
||||
globalState,
|
||||
groupHandler,
|
||||
wazuhConfig
|
||||
wazuhConfig,
|
||||
$sce
|
||||
) {
|
||||
/**
|
||||
* Init variables
|
||||
@ -205,7 +206,8 @@ app.directive('wzTable', function() {
|
||||
return;
|
||||
};
|
||||
|
||||
$scope.parseValue = (key, item) => parseValue(key, item, instance.path);
|
||||
$scope.parseValue = (key, item) =>
|
||||
parseValue(key, item, instance.path, $sce);
|
||||
|
||||
/**
|
||||
* On controller loads
|
||||
|
@ -20,11 +20,9 @@
|
||||
<tr ng-class="allowClick ? 'cursor-pointer' : ''" class="wz-word-wrap" ng-repeat="item in pagedItems[currentPage] | filter:{item:'!'}"
|
||||
ng-click="clickAction(item)">
|
||||
<td ng-repeat="key in keys">
|
||||
{{
|
||||
parseValue(key,item) | limitTo: extraLimit ? 100 : 25
|
||||
}}
|
||||
<span ng-if="parseValue(key,item).length > (extraLimit ? 100 : 25)">...</span>
|
||||
<md-tooltip ng-if="parseValue(key,item).length > (extraLimit ? 100 : 25)" md-direction="bottom"
|
||||
<span ng-bind-html="parseValue(key,item) | limitTo: extraLimit || 25"></span>
|
||||
<span ng-if="parseValue(key,item).length > (extraLimit || 25)">...</span>
|
||||
<md-tooltip ng-if="parseValue(key,item).length > (extraLimit || 25)" md-direction="bottom"
|
||||
class="wz-tooltip">
|
||||
{{ parseValue(key,item) }}
|
||||
</md-tooltip>
|
||||
|
@ -1,7 +1,9 @@
|
||||
<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" layout-padding class="wz-padding-top-0">
|
||||
<span flex></span>
|
||||
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary">Show files</span>
|
||||
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run scan</span>
|
||||
<span></span>
|
||||
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i> Show state</span>
|
||||
</div>
|
||||
<!-- View: Panels -->
|
||||
<div layout="row" class="height-300">
|
||||
@ -69,7 +71,9 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels' && showSyscheckFiles" layout-align="start">
|
||||
<div layout="row" layout-padding class="wz-padding-top-0">
|
||||
<span flex></span>
|
||||
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary">Show alerts</span>
|
||||
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run scan</span>
|
||||
<span></span>
|
||||
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-area-chart"></i> Show alerts</span>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="showSyscheckFiles && (!agent || !agent.os)">
|
||||
@ -94,7 +98,7 @@
|
||||
</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="true" keys="['file','sha1','md5']">
|
||||
<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']">
|
||||
</wz-table>
|
||||
</div>
|
||||
<div layout="row" layout-padding>
|
||||
@ -118,7 +122,7 @@
|
||||
</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="true" keys="['file','size','uname','perm','sha1','sha256','uid','mtime','md5']">
|
||||
<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']">
|
||||
</wz-table>
|
||||
</div>
|
||||
<div layout="row" layout-padding>
|
||||
@ -142,7 +146,7 @@
|
||||
</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" row-sizes="[12,10,8]" extra-limit="true" keys="['file','size','inode','gname','uname','perm','sha1','sha256','uid','gid','mtime','md5']">
|
||||
<wz-table 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']">
|
||||
</wz-table>
|
||||
</div>
|
||||
<div layout="row" layout-padding>
|
||||
|
@ -1,42 +1,86 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'pm' && tabView === 'panels'" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}" layout-align="start">
|
||||
<md-content flex layout="column" ng-if="tab === 'pm' && tabView === 'panels'" ng-show="!showRootcheckScan" ng-class="{'no-opacity': resultState !== 'ready' || !rendered}"
|
||||
layout-align="start">
|
||||
<div layout="row" layout-padding class="wz-padding-top-0">
|
||||
<span flex></span>
|
||||
<span ng-click="launchRootcheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run
|
||||
scan</span>
|
||||
<span></span>
|
||||
<span ng-click="switchRootcheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i>
|
||||
Show state</span>
|
||||
</div>
|
||||
<div layout="row" class="height-240">
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-PM-Alerts-over-time" vis-id="'Wazuh-App-Agents-PM-Alerts-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 5 CIS Requirements</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-PM-Top-5-CIS-Requirements" vis-id="'Wazuh-App-Agents-PM-Top-5-CIS-Requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 5 PCI DSS Requirements</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-PM-Top-5-PCI-DSS-Requirements" vis-id="'Wazuh-App-Agents-PM-Top-5-PCI-DSS-Requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<!-- View: Panels -->
|
||||
|
||||
|
||||
<div layout="row" class="height-240">
|
||||
<md-card flex="50" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts over time</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-PM-Alerts-over-time" vis-id="'Wazuh-App-Agents-PM-Alerts-over-time'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 5 CIS Requirements</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-PM-Top-5-CIS-Requirements" vis-id="'Wazuh-App-Agents-PM-Top-5-CIS-Requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex="25" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Top 5 PCI DSS Requirements</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis id="Wazuh-App-Agents-PM-Top-5-PCI-DSS-Requirements" vis-id="'Wazuh-App-Agents-PM-Top-5-PCI-DSS-Requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-align="space-between stretch" class="height-570">
|
||||
<md-card flex="100" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Agents-PM-Alerts-summary'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
<div layout="row" layout-align="space-between stretch" class="height-570">
|
||||
<md-card flex="100" class="wz-md-card">
|
||||
<md-card-content class="wazuh-column">
|
||||
<span class="wz-headline-title">Alerts summary</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<kbn-vis vis-id="'Wazuh-App-Agents-PM-Alerts-summary'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</md-content>
|
||||
|
||||
|
||||
<md-content flex layout="column" ng-if="tab === 'pm' && tabView === 'panels' && showRootcheckScan" layout-align="start">
|
||||
<div layout="row" layout-padding class="wz-padding-top-0">
|
||||
<span flex></span>
|
||||
<span ng-click="launchRootcheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run
|
||||
scan</span>
|
||||
<span></span>
|
||||
<span ng-click="switchRootcheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-area-chart"></i>
|
||||
Show alerts</span>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="showRootcheckScan && (!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">
|
||||
<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>
|
||||
</defs>
|
||||
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#help-a" fill-rule="evenodd"></use>
|
||||
</svg>
|
||||
<span class="euiCallOutHeader__title">This agent is never connected.</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="wz-padding-top-0" ng-if="agent && agent.os">
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content>
|
||||
<span class="wz-headline-title"><i class="fa fa-fw fa-shield"></i> Configuration assessment</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<div layout="row" class="wz-margin-top-10">
|
||||
|
||||
</div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
</md-content>
|
@ -56,9 +56,9 @@
|
||||
|
||||
<div layout="row" ng-if="agent && syscollector && !load" class="wz-margin-top-10 wz-margin-bottom-40-inv">
|
||||
<wz-table flex ng-if="agent && agent.os && agent.os.platform !== 'windows'" path="'/syscollector/' + agent.id + '/packages'"
|
||||
row-sizes="[10,8,6]" extra-limit="true" keys="[{value:'name',size:2},'architecture','version',{value:'vendor',size:2},{value:'description',size:3}]" />
|
||||
row-sizes="[10,8,6]" extra-limit="100" keys="[{value:'name',size:2},'architecture','version',{value:'vendor',size:2},{value:'description',size:3}]" />
|
||||
<wz-table flex ng-if="agent && agent.os && agent.os.platform === 'windows'" path="'/syscollector/' + agent.id + '/packages'"
|
||||
row-sizes="[10,8,6]" extra-limit="true" keys="[{value:'name',size:3},'architecture','version',{value:'vendor',size:2}]" />
|
||||
row-sizes="[10,8,6]" extra-limit="100" keys="[{value:'name',size:3},'architecture','version',{value:'vendor',size:2}]" />
|
||||
</div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
@ -79,9 +79,9 @@
|
||||
</div>
|
||||
<div layout="row" ng-if="agent && syscollector && !load" class="wz-margin-top-10 wz-margin-bottom-40-inv">
|
||||
<wz-table flex ng-if="agent && agent.os && agent.os.platform === 'windows'" path="'/syscollector/' + agent.id + '/processes'"
|
||||
row-sizes="[10,8,6]" extra-limit="true" keys="['name','cmd','priority','nlwp']" />
|
||||
row-sizes="[10,8,6]" extra-limit="100" keys="['name','cmd','priority','nlwp']" />
|
||||
<wz-table flex ng-if="agent && agent.os && agent.os.platform !== 'windows'" path="'/syscollector/' + agent.id + '/processes'"
|
||||
row-sizes="[10,8,6]" extra-limit="true" keys="['name','euser','nice','state']" />
|
||||
row-sizes="[10,8,6]" extra-limit="100" keys="['name','euser','nice','state']" />
|
||||
</div>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
|
@ -59,7 +59,7 @@
|
||||
<!-- Reporting button section -->
|
||||
<div ng-show="tab !== 'welcome' && tab !== 'configuration' && tabView === 'panels'">
|
||||
<!-- Report button -->
|
||||
<md-button md-no-ink class="md-icon-button small wz-no-margin-padding" tooltip="Generate report" tooltip-placement="bottom" ng-disabled="(!rendered || loading || resultState !== 'ready') && tab !== 'syscollector'" ng-click="startVis2Png()" aria-label="Generate report button">
|
||||
<md-button md-no-ink class="md-icon-button small wz-no-margin-padding" tooltip="Generate report" tooltip-placement="bottom" ng-disabled="(!rendered || loading || resultState !== 'ready' || showSyscheckFiles || showRootcheckScan) && tab !== 'syscollector'" ng-click="startVis2Png()" aria-label="Generate report button">
|
||||
<i class="fa fa-fw fa-print" aria-hidden="true"></i>
|
||||
</md-button>
|
||||
</div>
|
||||
@ -188,11 +188,19 @@
|
||||
<!-- End report status section -->
|
||||
|
||||
<!-- No results section -->
|
||||
<div layout="row" ng-if="!showSyscheckFiles && tab === 'fim' && resultState === 'none' && tabView === 'panels'" layout-padding class="wz-padding-top-0">
|
||||
<div layout="row" ng-if="!showSyscheckFiles && !showRootcheckScan && tab === 'fim' && resultState === 'none' && tabView === 'panels'" layout-padding class="wz-padding-top-0">
|
||||
<span flex></span>
|
||||
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary">Show files</span>
|
||||
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run scan</span>
|
||||
<span></span>
|
||||
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i> Show state</span>
|
||||
</div>
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="!showSyscheckFiles && tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'" ng-show="resultState === 'none' && tabView === 'panels'">
|
||||
<div layout="row" ng-if="!showSyscheckFiles && !showRootcheckScan && tab === 'pm' && resultState === 'none' && tabView === 'panels'" layout-padding class="wz-padding-top-0">
|
||||
<span flex></span>
|
||||
<span ng-click="launchRootcheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run scan</span>
|
||||
<span></span>
|
||||
<span ng-click="switchRootcheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i> Show state</span>
|
||||
</div>
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="!showSyscheckFiles && !showRootcheckScan && tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'" ng-show="resultState === 'none' && tabView === 'panels'">
|
||||
<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"><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></defs><use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#help-a" fill-rule="evenodd"></use></svg>
|
||||
|
@ -119,7 +119,7 @@
|
||||
<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="true" path="'/agents/groups'" keys="['name','count','mergedSum']"
|
||||
<wz-table flex extra-limit="100" path="'/agents/groups'" keys="['name','count','mergedSum']"
|
||||
allow-click="true" row-sizes="[14,12,10]">
|
||||
</wz-table>
|
||||
</div>
|
||||
@ -161,7 +161,7 @@
|
||||
<md-card flex class="wz-md-card _md flex md-margin-h" ng-if="lookingGroup && groupsSelectedTab==='files' && !fileViewer && currentGroup">
|
||||
<md-card-content>
|
||||
<div layout="row">
|
||||
<wz-table extra-limit="true" flex path="'/agents/groups/' + currentGroup.name + '/files'"
|
||||
<wz-table extra-limit="100" flex path="'/agents/groups/' + currentGroup.name + '/files'"
|
||||
keys="[{value:'filename',size:2},{value:'hash',size:6}]" allow-click="true"
|
||||
row-sizes="[10,8,6,4]">
|
||||
</wz-table>
|
||||
|
@ -66,7 +66,7 @@
|
||||
<div layout="row" layout-padding ng-if="ctrl.logsPath">
|
||||
<wz-table
|
||||
flex
|
||||
extra-limit="true"
|
||||
extra-limit="100"
|
||||
path="ctrl.logsPath"
|
||||
keys="['timestamp',{value:'tag',size:2},'level',{value:'description',size:4,nosortable:true}]"
|
||||
row-sizes="[12,10,7]">
|
||||
|
@ -466,6 +466,22 @@ export const apiRequestList = [
|
||||
name: '/manager/status',
|
||||
args: []
|
||||
},
|
||||
{
|
||||
name: '/policy-monitoring/:agent_id',
|
||||
args: [
|
||||
{
|
||||
name: ':agent_id'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: '/policy-monitoring/:agent_id/checks',
|
||||
args: [
|
||||
{
|
||||
name: ':agent_id'
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
name: '/rootcheck/:agent_id',
|
||||
args: [
|
||||
|
@ -29,6 +29,8 @@ export const KeyEquivalenece = {
|
||||
file: 'File',
|
||||
gdpr: 'GDPR',
|
||||
pci: 'PCI',
|
||||
cis: 'CIS',
|
||||
event: 'Event',
|
||||
groups: 'Groups',
|
||||
name: 'Name',
|
||||
count: 'Count',
|
||||
@ -79,5 +81,8 @@ export const KeyEquivalenece = {
|
||||
priority: 'Priority',
|
||||
cmd: 'CMD',
|
||||
nlwp: 'NLWP',
|
||||
process: 'Process'
|
||||
process: 'Process',
|
||||
md5: 'MD5',
|
||||
sha1: 'SHA1',
|
||||
sha256: 'SHA256'
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user