mirror of
https://github.com/valitydev/wazuh-kibana-app.git
synced 2024-11-06 09:55:18 +00:00
Merge branch 'issue-1264-1'
This commit is contained in:
commit
cc89bda464
@ -167,7 +167,6 @@ service kibana restart
|
||||
| 6.6.0 | 3.8.2 | /usr/share/kibana/bin/kibana-plugin install <https://packages.wazuh.com/wazuhapp/wazuhapp-3.8.2_6.6.0.zip> |
|
||||
| 6.6.1 | 3.8.2 | /usr/share/kibana/bin/kibana-plugin install <https://packages.wazuh.com/wazuhapp/wazuhapp-3.8.2_6.6.1.zip> |
|
||||
|
||||
|
||||
## Contribute
|
||||
|
||||
If you want to contribute to our project please don't hesitate to send a pull request. You can also join our users [mailing list](https://groups.google.com/d/forum/wazuh), by sending an email to <mailto:wazuh+subscribe@googlegroups.com>, to ask questions and participate in discussions.
|
||||
|
@ -90,12 +90,12 @@ export class AgentsController {
|
||||
this.ignoredTabs = ['syscollector', 'welcome', 'configuration'];
|
||||
|
||||
this.$scope.showSyscheckFiles = false;
|
||||
this.$scope.showConfigurationAssessmentScan = false;
|
||||
this.$scope.showScaScan = false;
|
||||
|
||||
this.$scope.editGroup = false;
|
||||
this.$scope.addingGroupToAgent = false;
|
||||
|
||||
this.$scope.lookingAssessment = false;
|
||||
this.$scope.lookingSca = false;
|
||||
this.$scope.expandArray = [
|
||||
false,
|
||||
false,
|
||||
@ -159,7 +159,7 @@ export class AgentsController {
|
||||
this.tabVisualizations.assign('agents');
|
||||
|
||||
this.$scope.hostMonitoringTabs = ['general', 'fim', 'syscollector'];
|
||||
this.$scope.systemAuditTabs = ['pm', 'configuration-assessment', 'audit', 'oscap', 'ciscat'];
|
||||
this.$scope.systemAuditTabs = ['pm', 'sca', 'audit', 'oscap', 'ciscat'];
|
||||
this.$scope.securityTabs = ['vuls', 'virustotal', 'osquery'];
|
||||
this.$scope.complianceTabs = ['pci', 'gdpr'];
|
||||
|
||||
@ -364,10 +364,10 @@ export class AgentsController {
|
||||
if (!this.$scope.$$phase) this.$scope.$digest();
|
||||
};
|
||||
|
||||
this.$scope.switchConfigurationAssessmentScan = () => {
|
||||
this.$scope.lookingAssessment = false;
|
||||
this.$scope.showConfigurationAssessmentScan = !this.$scope.showConfigurationAssessmentScan;
|
||||
if (!this.$scope.showConfigurationAssessmentScan) {
|
||||
this.$scope.switchScaScan = () => {
|
||||
this.$scope.lookingSca = false;
|
||||
this.$scope.showScaScan = !this.$scope.showScaScan;
|
||||
if (!this.$scope.showScaScan) {
|
||||
this.$rootScope.$emit('changeTabView', {
|
||||
tabView: this.$scope.tabView
|
||||
});
|
||||
@ -394,8 +394,8 @@ export class AgentsController {
|
||||
|
||||
this.$scope.cancelAddGroup = () => (this.$scope.addingGroupToAgent = false);
|
||||
|
||||
this.$scope.loadAssessmentChecks = policy => this.$scope.lookingAssessment = { name: policy.name, id: policy.policy_id };
|
||||
this.$scope.closeAssessmentChecks = () => this.$scope.lookingAssessment = false;
|
||||
this.$scope.loadScaChecks = policy => this.$scope.lookingSca = { name: policy.name, id: policy.policy_id };
|
||||
this.$scope.closeScaChecks = () => this.$scope.lookingSca = false;
|
||||
|
||||
this.$scope.confirmAddGroup = group => {
|
||||
this.groupHandler
|
||||
@ -543,7 +543,7 @@ export class AgentsController {
|
||||
|
||||
try {
|
||||
this.$scope.showSyscheckFiles = false;
|
||||
this.$scope.showConfigurationAssessmentScan = false;
|
||||
this.$scope.showScaScan = false;
|
||||
if (tab === 'pci') {
|
||||
const pciTabs = await this.commonData.getPCI();
|
||||
this.$scope.pciTabs = pciTabs;
|
||||
@ -555,10 +555,10 @@ export class AgentsController {
|
||||
this.$scope.selectedGdprIndex = 0;
|
||||
}
|
||||
|
||||
if (tab === 'configuration-assessment') {
|
||||
if (tab === 'sca') {
|
||||
try {
|
||||
this.$scope.load = true;
|
||||
const policies = await this.apiReq.request('GET', `/configuration-assessment/${this.$scope.agent.id}`, {});
|
||||
const policies = await this.apiReq.request('GET', `/sca/${this.$scope.agent.id}`, {});
|
||||
this.$scope.policies = policies.data.data.items;
|
||||
} catch (error) { this.$scope.policies = []; }
|
||||
this.$scope.load = false;
|
||||
|
@ -17,7 +17,7 @@ import { checkGap } from '../wz-table/lib/check-gap';
|
||||
|
||||
const app = uiModules.get('app/wazuh', []);
|
||||
|
||||
app.directive('wzListManage', function() {
|
||||
app.directive('wzListManage', function () {
|
||||
return {
|
||||
restrict: 'E',
|
||||
scope: {
|
||||
@ -52,7 +52,7 @@ app.directive('wzListManage', function() {
|
||||
$scope.prevPage = () => pagination.prevPage($scope);
|
||||
$scope.nextPage = async currentPage =>
|
||||
pagination.nextPage(currentPage, $scope, errorHandler, null);
|
||||
$scope.setPage = function() {
|
||||
$scope.setPage = function () {
|
||||
$scope.currentPage = this.n;
|
||||
$scope.nextPage(this.n);
|
||||
};
|
||||
@ -62,7 +62,7 @@ app.directive('wzListManage', function() {
|
||||
*/
|
||||
$scope.filterTable = data => {
|
||||
const result = Object.keys(data || $scope.currentList.list).map(
|
||||
function(key) {
|
||||
function (key) {
|
||||
return [key, $scope.currentList.list[key]];
|
||||
}
|
||||
);
|
||||
@ -191,7 +191,7 @@ app.directive('wzListManage', function() {
|
||||
|
||||
const showRestartDialog = async (msg, target) => {
|
||||
const confirm = $mdDialog.confirm({
|
||||
controller: function(
|
||||
controller: function (
|
||||
$scope,
|
||||
scope,
|
||||
errorHandler,
|
||||
@ -261,7 +261,7 @@ app.directive('wzListManage', function() {
|
||||
'</md-dialog-content>' +
|
||||
'<md-dialog-actions>' +
|
||||
'<button class="md-primary md-cancel-button md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="closeDialog()">I will do it later</button>' +
|
||||
`<button class="md-primary md-confirm-button md-button md-ink-ripple md-default-theme" type="button" ng-click="confirmDialog()">Restart ${target}</button>` +
|
||||
`<button class="wz-button md-confirm-button md-button md-ink-ripple md-default-theme" type="button" ng-click="confirmDialog()">Restart ${target}</button>` +
|
||||
'</md-dialog-actions>' +
|
||||
'</md-dialog>',
|
||||
hasBackdrop: false,
|
||||
|
@ -385,7 +385,7 @@ app.directive('wzTable', function () {
|
||||
};
|
||||
|
||||
$scope.isPolicyMonitoring = () => {
|
||||
return instance.path.includes('configuration-assessment') && instance.path.includes('/checks')
|
||||
return instance.path.includes('sca') && instance.path.includes('/checks')
|
||||
}
|
||||
|
||||
$scope.expandPolicyMonitoringCheck = item => {
|
||||
|
@ -448,7 +448,7 @@ app.directive('wzXmlFileEditor', function () {
|
||||
'</md-dialog-content>' +
|
||||
'<md-dialog-actions>' +
|
||||
'<button class="md-primary md-cancel-button md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="closeDialog()">I will do it later</button>' +
|
||||
`<button class="md-primary md-confirm-button md-button md-ink-ripple md-default-theme" type="button" ng-click="confirmDialog()">Restart ${target}</button>` +
|
||||
`<button class="wz-button md-confirm-button md-button md-ink-ripple md-default-theme" type="button" ng-click="confirmDialog()">Restart ${target}</button>` +
|
||||
'</md-dialog-actions>' +
|
||||
'</md-dialog>',
|
||||
hasBackdrop: false,
|
||||
|
@ -28,7 +28,7 @@ export class TabVisualizations {
|
||||
pci: 6,
|
||||
virustotal: 6,
|
||||
configuration: 0,
|
||||
'configuration-assessment': 4,
|
||||
sca: 4,
|
||||
osquery: 5
|
||||
};
|
||||
|
||||
|
@ -131,7 +131,7 @@ export class CommonData {
|
||||
aws: { group: 'amazon' },
|
||||
virustotal: { group: 'virustotal' },
|
||||
osquery: { group: 'osquery' },
|
||||
'configurationAssessment': { group: 'configuration_assessment' }
|
||||
sca: { group: 'sca' }
|
||||
};
|
||||
|
||||
const filters = [];
|
||||
|
@ -97,7 +97,6 @@ export class VisFactoryService {
|
||||
*/
|
||||
async buildAgentsVisualizations(filterHandler, tab, subtab, localChange, id) {
|
||||
try {
|
||||
if (tab === 'configuration-assessment') tab = 'configurationAssessment';
|
||||
const data = await this.genericReq.request(
|
||||
'GET',
|
||||
`/elastic/visualizations/agents-${tab}/${this.appState.getCurrentPattern()}`
|
||||
|
@ -1,12 +1,12 @@
|
||||
<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">
|
||||
<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>
|
||||
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run
|
||||
scan</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>
|
||||
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i>
|
||||
Show state</span>
|
||||
<md-button ng-click="switchSyscheckFiles()" class="wz-button pull-right"><i class="fa fa-fw fa-database"></i>
|
||||
Show state</md-button>
|
||||
</div>
|
||||
<!-- View: Panels -->
|
||||
<div layout="row" class="height-300">
|
||||
@ -68,7 +68,8 @@
|
||||
<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-FIM-Files-modified" vis-id="'Wazuh-App-Agents-FIM-Files-modified'"></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="33" class="wz-md-card" ng-class="{'fullscreen': expandArray[5]}">
|
||||
@ -79,7 +80,8 @@
|
||||
<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-FIM-Files-deleted" vis-id="'Wazuh-App-Agents-FIM-Files-deleted'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-FIM-Files-deleted" vis-id="'Wazuh-App-Agents-FIM-Files-deleted'">
|
||||
</kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
@ -99,23 +101,28 @@
|
||||
</div>
|
||||
</md-content>
|
||||
|
||||
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels' && showSyscheckFiles" layout-align="start">
|
||||
<div layout="row" layout-padding>
|
||||
<md-content flex layout="column" ng-if="tab === 'fim' && tabView === 'panels' && showSyscheckFiles"
|
||||
layout-align="start">
|
||||
<div layout="row">
|
||||
<span flex></span>
|
||||
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i>
|
||||
Run scan</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>
|
||||
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-area-chart"></i>
|
||||
Show alerts</span>
|
||||
<md-button ng-click="switchSyscheckFiles()" class="wz-button pull-right"><i class="fa fa-fw fa-area-chart"></i>
|
||||
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>
|
||||
<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>
|
||||
@ -130,9 +137,12 @@
|
||||
<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>
|
||||
@ -143,7 +153,8 @@
|
||||
</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
|
||||
<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>
|
||||
@ -156,20 +167,24 @@
|
||||
<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','size','uname','perm','sha1','sha256','uid','mtime','md5']">
|
||||
</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
|
||||
<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>
|
||||
@ -182,20 +197,24 @@
|
||||
<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','size','inode','gname','uname','perm','sha1','sha256','uid','gid','mtime','md5']">
|
||||
</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
|
||||
<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>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<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-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>
|
||||
<md-button ng-click="launchRootcheckScan()" class="wz-button pull-right"><i class="fa fa-fw fa-play"></i> Run
|
||||
scan</md-button>
|
||||
</div>
|
||||
<div layout="row" class="height-240">
|
||||
<md-card flex="50" class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
@ -14,7 +14,8 @@
|
||||
<span class="wz-text-link" ng-click="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-Agents-PM-Alerts-over-time" vis-id="'Wazuh-App-Agents-PM-Alerts-over-time'"></kbn-vis>
|
||||
<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" ng-class="{'fullscreen': expandArray[1]}">
|
||||
@ -25,7 +26,8 @@
|
||||
<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-PM-Top-5-CIS-Requirements" vis-id="'Wazuh-App-Agents-PM-Top-5-CIS-Requirements'"></kbn-vis>
|
||||
<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" ng-class="{'fullscreen': expandArray[2]}">
|
||||
@ -36,7 +38,8 @@
|
||||
<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-PM-Top-5-PCI-DSS-Requirements" vis-id="'Wazuh-App-Agents-PM-Top-5-PCI-DSS-Requirements'"></kbn-vis>
|
||||
<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>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<md-content flex layout="column" ng-if="tab === 'configuration-assessment' && tabView === 'panels'" ng-show="!showConfigurationAssessmentScan"
|
||||
<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" layout-padding class="wz-padding-top-0">
|
||||
<div layout="row">
|
||||
<span flex></span>
|
||||
<span ng-click="switchConfigurationAssessmentScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i>
|
||||
Show state</span>
|
||||
<md-button ng-click="switchScaScan()" class="wz-button pull-right"><i class="fa fa-fw fa-database"></i>
|
||||
Show state</md-button>
|
||||
</div>
|
||||
<div layout="row" class="height-240">
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[0]}">
|
||||
@ -14,7 +14,8 @@
|
||||
<span class="wz-text-link" ng-click="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-Agents-CA-Top-5-CIS-Requirements" vis-id="'Wazuh-App-Agents-CA-Top-5-CIS-Requirements'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-CIS-Requirements"
|
||||
vis-id="'Wazuh-App-Agents-CA-Top-5-CIS-Requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[1]}">
|
||||
@ -25,7 +26,8 @@
|
||||
<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-PCI-DSS-Requirements" vis-id="'Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements"
|
||||
vis-id="'Wazuh-App-Agents-CA-Top-5-PCI-DSS-Requirements'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<md-card flex class="wz-md-card" ng-class="{'fullscreen': expandArray[4]}">
|
||||
@ -36,7 +38,8 @@
|
||||
<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-Result-distribution" vis-id="'Wazuh-App-Agents-CA-Result-distribution'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Result-distribution"
|
||||
vis-id="'Wazuh-App-Agents-CA-Result-distribution'"></kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
@ -50,7 +53,8 @@
|
||||
<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-Alerts-over-time" vis-id="'Wazuh-App-Agents-CA-Alerts-over-time'"></kbn-vis>
|
||||
<kbn-vis id="Wazuh-App-Agents-CA-Alerts-over-time" vis-id="'Wazuh-App-Agents-CA-Alerts-over-time'">
|
||||
</kbn-vis>
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
</div>
|
||||
@ -71,21 +75,24 @@
|
||||
|
||||
</md-content>
|
||||
|
||||
<md-content flex layout="column" ng-if="tab === 'configuration-assessment' && tabView === 'panels' && showConfigurationAssessmentScan"
|
||||
layout-align="start">
|
||||
<div layout="row" layout-padding>
|
||||
<md-content flex layout="column" ng-if="tab === 'sca' && tabView === 'panels' && showScaScan" layout-align="start">
|
||||
<div layout="row">
|
||||
<span flex></span>
|
||||
<span ng-click="switchConfigurationAssessmentScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-area-chart"></i>
|
||||
Show alerts</span>
|
||||
<md-button ng-click="switchScaScan()" class="wz-button pull-right"><i class="fa fa-fw fa-area-chart"></i>
|
||||
Show alerts</md-button>
|
||||
</div>
|
||||
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="showConfigurationAssessmentScan && (!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>
|
||||
<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>
|
||||
@ -94,11 +101,11 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div layout="row" layout-padding class="wz-padding-top-0" ng-show="agent && agent.os && !lookingAssessment">
|
||||
<div layout="row" layout-padding class="wz-padding-top-0" ng-show="agent && agent.os && !lookingSca">
|
||||
|
||||
<span class="wz-headline-title"><i class="fa fa-fw fa-shield"></i> Configuration assessment</span>
|
||||
</div>
|
||||
<div layout="row" class="md-padding" ng-show="agent && agent.os && !lookingAssessment">
|
||||
<div layout="row" class="md-padding" ng-show="agent && agent.os && !lookingSca">
|
||||
<table class="euiTable euiTable--responsive" ng-if="policies && policies.length">
|
||||
<thead>
|
||||
<tr>
|
||||
@ -106,7 +113,8 @@
|
||||
<div class="euiTableCellContent"><span class="euiTableCellContent__text">Policy</span></div>
|
||||
</th>
|
||||
<th class="euiTableHeaderCell padding-left-0 col-lg-5">
|
||||
<div class="euiTableCellContent"><span class="euiTableCellContent__text">Description</span></div>
|
||||
<div class="euiTableCellContent"><span class="euiTableCellContent__text">Description</span>
|
||||
</div>
|
||||
</th>
|
||||
<th class="euiTableHeaderCell padding-left-0">
|
||||
<div class="euiTableCellContent"><span class="euiTableCellContent__text">Last scan</span></div>
|
||||
@ -127,7 +135,8 @@
|
||||
<tr class="euiTableRow" ng-repeat="policy in policies">
|
||||
<td class="euiTableRowCell">
|
||||
<div class="euiTableCellContent euiTableCellContent--overflowingContent">
|
||||
<button ng-click="loadAssessmentChecks(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">
|
||||
@ -167,27 +176,31 @@
|
||||
|
||||
</div>
|
||||
|
||||
<div layout="row" class="wz-padding-top-0" ng-if="agent && agent.os && lookingAssessment">
|
||||
<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="closeAssessmentChecks()"></i>
|
||||
{{lookingAssessment.name}} checks</span>
|
||||
<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>
|
||||
<div layout="row" class="wz-margin-top-16 wz-margin-bottom-40-inv">
|
||||
<wz-table flex path="'/configuration-assessment/' + agent.id + '/checks/' + lookingAssessment.id"
|
||||
row-sizes="[13,11,9]" extra-limit="100" keys="['title','file','result']">
|
||||
<wz-table flex path="'/sca/' + agent.id + '/checks/' + lookingSca.id" 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('/configuration-assessment/' + agent.id + '/checks/' + lookingAssessment.id, lookingAssessment.id + '.csv')">Formatted
|
||||
<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>
|
@ -7,7 +7,8 @@
|
||||
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>
|
||||
@ -17,22 +18,23 @@
|
||||
<div layout="column" class="" layout-align="start stretch" ng-if="tab === 'welcome'" ng-show="!load && agent">
|
||||
|
||||
<!-- Headline -->
|
||||
<div layout="row" layout-padding class="wz-margin-right-8">
|
||||
<div layout="row" class="wz-margin-left-16 wz-margin-right-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>
|
||||
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>
|
||||
<button ng-show="!showConfirmRestartAgent" ng-disabled="restartingAgent" class="btn wz-button" ng-disabled="isRestarting"
|
||||
ng-click="showConfirmRestartAgent = true"><i class="fa fa-refresh"></i>
|
||||
<md-button ng-show="!showConfirmRestartAgent" ng-disabled="restartingAgent" class="wz-button"
|
||||
ng-disabled="isRestarting" ng-click="showConfirmRestartAgent = true"><i class="fa fa-refresh"></i>
|
||||
Restart agent
|
||||
</button>
|
||||
<div ng-show="showConfirmRestartAgent" class="confirmEmbedBubble confirmEmbedBubbleInline">
|
||||
</md-button>
|
||||
<div ng-show="showConfirmRestartAgent"
|
||||
class="confirmEmbedBubble confirmEmbedBubbleInline wz-margin-right-8 wz-margin-top-8">
|
||||
<div layout="row no-wrap">
|
||||
<span class="wz-padding-top-10 wz-padding-left-8">The agent will be restarted</span>
|
||||
</div>
|
||||
<div layout="row">
|
||||
<md-button class="cancelBtn btn-info" type="button" ng-click="showConfirmRestartAgent = false">Cancel</md-button>
|
||||
<md-button class="btn wz-button" type="button" ng-click="restartAgent(agent);showConfirmRestartAgent = false"><i
|
||||
<md-button class="cancelBtn btn-info" ng-click="showConfirmRestartAgent = false">Cancel</md-button>
|
||||
<md-button class="wz-button" ng-click="restartAgent(agent);showConfirmRestartAgent = false"><i
|
||||
aria-hidden='true' class='fa fa-fw fa-check'></i>
|
||||
Confirm</md-button>
|
||||
</div>
|
||||
@ -42,7 +44,8 @@
|
||||
<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">
|
||||
@ -99,7 +102,8 @@
|
||||
<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>
|
||||
@ -117,7 +121,8 @@
|
||||
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>
|
||||
@ -135,8 +140,9 @@
|
||||
<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">
|
||||
@ -144,12 +150,15 @@
|
||||
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>
|
||||
|
||||
@ -165,7 +174,8 @@
|
||||
</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>
|
||||
@ -183,13 +193,17 @@
|
||||
<div class="euiSpacer euiSpacer--m"></div>
|
||||
<div class="euiFlexGrid euiFlexGrid--gutterLarge euiFlexGrid--halves">
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_dashboard.svg'" 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'" title="'Integrity monitoring'"
|
||||
switch-tab="switchTab('fim')" current-tab="'fim'" description="TabDescription.fim.description"></wz-welcome-card>
|
||||
switch-tab="switchTab('general')" current-tab="'general'"
|
||||
description="TabDescription.general.description"></wz-welcome-card>
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_logging.svg'"
|
||||
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'" 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'" title="'Inventory data'"
|
||||
switch-tab="switchTab('syscollector')" current-tab="'syscollector'" description="TabDescription.syscollector.description"></wz-welcome-card>
|
||||
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'"
|
||||
title="'Inventory data'" switch-tab="switchTab('syscollector')" current-tab="'syscollector'"
|
||||
description="TabDescription.syscollector.description"></wz-welcome-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -198,17 +212,21 @@
|
||||
<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'" 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'" title="'Configuration assessment'"
|
||||
switch-tab="switchTab('configuration-assessment')" current-tab="'configuration-assessment'"
|
||||
description="TabDescription['configuration-assessment'].description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.audit && agent.isLinuxOS" class="euiFlexItem" logo="'icons/app_monitoring.svg'"
|
||||
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'"
|
||||
title="'OpenSCAP'" switch-tab="switchTab('oscap')" current-tab="'oscap'" description="TabDescription.oscap.description"></wz-welcome-card>
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_advanced_settings.svg'"
|
||||
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'"
|
||||
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'" 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'" 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'"
|
||||
title="'CIS-CAT'" switch-tab="switchTab('ciscat')" current-tab="'ciscat'" description="TabDescription.ciscat.description"></wz-welcome-card>
|
||||
title="'CIS-CAT'" switch-tab="switchTab('ciscat')" current-tab="'ciscat'"
|
||||
description="TabDescription.ciscat.description"></wz-welcome-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -223,13 +241,16 @@
|
||||
<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'" 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'"
|
||||
title="'VirusTotal'" switch-tab="switchTab('virustotal')" current-tab="'virustotal'"
|
||||
<wz-welcome-card class="euiFlexItem" logo="'icons/app_security.svg'"
|
||||
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'" 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'"
|
||||
title="'Osquery'" switch-tab="switchTab('osquery')" current-tab="'osquery'" description="TabDescription.osquery.description"></wz-welcome-card>
|
||||
title="'Osquery'" switch-tab="switchTab('osquery')" current-tab="'osquery'"
|
||||
description="TabDescription.osquery.description"></wz-welcome-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -239,10 +260,12 @@
|
||||
<h3 class="euiTitle wzEuiTitle">Regulatory Compliance</h3>
|
||||
<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'" title="'PCI DSS'"
|
||||
switch-tab="switchTab('pci')" current-tab="'pci'" description="TabDescription.pci.description"></wz-welcome-card>
|
||||
<wz-welcome-card ng-if="extensions.pci" class="euiFlexItem" logo="'icons/app_apm.svg'"
|
||||
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'"
|
||||
title="'GDPR'" switch-tab="switchTab('gdpr')" current-tab="'gdpr'" description="TabDescription.gdpr.description"></wz-welcome-card>
|
||||
title="'GDPR'" switch-tab="switchTab('gdpr')" current-tab="'gdpr'"
|
||||
description="TabDescription.gdpr.description"></wz-welcome-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -12,7 +12,8 @@
|
||||
<div ng-if="tab !== 'welcome' && tab !== 'configuration'">
|
||||
<a class="wz-text-link cursor-pointer" href="#/agents-preview">Agents</a>
|
||||
<span> / </span>
|
||||
<span class="wz-text-link cursor-pointer" ng-click="switchTab('welcome')">{{agent.name}} ({{agent.id}})</span>
|
||||
<span class="wz-text-link cursor-pointer" ng-click="switchTab('welcome')">{{agent.name}}
|
||||
({{agent.id}})</span>
|
||||
<span> / </span>
|
||||
<span>{{ tabNames[tab] }}</span>
|
||||
</div>
|
||||
@ -29,7 +30,8 @@
|
||||
<div ng-if="tab === 'configuration' && configurationTab === 'welcome'">
|
||||
<a class="wz-text-link cursor-pointer" href="#/agents-preview">Agents</a>
|
||||
<span> / </span>
|
||||
<span class="wz-text-link cursor-pointer" ng-click="switchTab('welcome')">{{agent.name}} ({{agent.id}})</span>
|
||||
<span class="wz-text-link cursor-pointer" ng-click="switchTab('welcome')">{{agent.name}}
|
||||
({{agent.id}})</span>
|
||||
<span> / </span>
|
||||
<span>{{ tabNames[tab] }}</span>
|
||||
</div>
|
||||
@ -37,7 +39,8 @@
|
||||
<div ng-if="tab === 'configuration' && configurationTab !== 'welcome'">
|
||||
<a class="wz-text-link cursor-pointer" href="#/agents-preview">Agents</a>
|
||||
<span> / </span>
|
||||
<span class="wz-text-link cursor-pointer" ng-click="switchTab('welcome')">{{agent.name}} ({{agent.id}})</span>
|
||||
<span class="wz-text-link cursor-pointer" ng-click="switchTab('welcome')">{{agent.name}}
|
||||
({{agent.id}})</span>
|
||||
<span> / </span>
|
||||
<span class="wz-text-link cursor-pointer" ng-click="switchConfigurationTab('welcome', true)">{{
|
||||
tabNames[tab] }}</span>
|
||||
@ -49,7 +52,8 @@
|
||||
|
||||
<!-- Agent status section -->
|
||||
<div ng-if="agent.status">
|
||||
<span class="wz-agent-status-indicator small" ng-class="getAgentStatusClass(agent.status)" aria-label="Agent status indicator">{{formatAgentStatus(agent.status)}}</span>
|
||||
<span class="wz-agent-status-indicator small" ng-class="getAgentStatusClass(agent.status)"
|
||||
aria-label="Agent status indicator">{{formatAgentStatus(agent.status)}}</span>
|
||||
</div>
|
||||
<!-- End agent status section -->
|
||||
<!-- Separator -->
|
||||
@ -60,7 +64,8 @@
|
||||
<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' || showSyscheckFiles || showConfigurationAssessmentScan) && tab !== 'syscollector'"
|
||||
tooltip-placement="bottom"
|
||||
ng-disabled="(!rendered || loading || resultState !== 'ready' || showSyscheckFiles || showScaScan) && tab !== 'syscollector'"
|
||||
ng-click="startVis2Png()" aria-label="Generate report button">
|
||||
<i class="fa fa-fw fa-print" aria-hidden="true"></i>
|
||||
</md-button>
|
||||
@ -76,7 +81,7 @@
|
||||
</md-button>
|
||||
|
||||
<!-- Discover button -->
|
||||
<md-button ng-if="tabView === 'panels' && !showSyscheckFiles && !showConfigurationAssessmentScan" class="wz-button-flat small"
|
||||
<md-button ng-if="tabView === 'panels' && !showSyscheckFiles && !showScaScan" class="wz-button-flat small"
|
||||
ng-click="switchSubtab('discover')" aria-label="Discover button">
|
||||
<i class="fa fa-fw fa-compass" aria-hidden="true"></i> Discover
|
||||
</md-button>
|
||||
@ -86,9 +91,10 @@
|
||||
<!-- Agent autocomplete selector section -->
|
||||
<div flex="30" class="wz-margin-8-no-left">
|
||||
<md-autocomplete flex class="wz-autocomplete wz-select-input" md-no-cache="true" md-select-on-match="false"
|
||||
md-selected-item="_swpagent" md-selected-item-change="getAgent(_swpagent.id,true)" md-search-text="searchTerm"
|
||||
md-items="agentAutoComplete in analyzeAgents(searchTerm)" md-item-text="agentAutoComplete.name"
|
||||
md-min-length="0" md-clear-button="true" md-no-asterisk="false" placeholder="Search by name, ID or IP address">
|
||||
md-selected-item="_swpagent" md-selected-item-change="getAgent(_swpagent.id,true)"
|
||||
md-search-text="searchTerm" md-items="agentAutoComplete in analyzeAgents(searchTerm)"
|
||||
md-item-text="agentAutoComplete.name" md-min-length="0" md-clear-button="true" md-no-asterisk="false"
|
||||
placeholder="Search by name, ID or IP address">
|
||||
<md-item-template>
|
||||
<span class="item-title">
|
||||
<span><strong md-highlight-text="search" md-highlight-flags="i"> {{agentAutoComplete.name}}
|
||||
@ -111,7 +117,8 @@
|
||||
<!-- Host monitoring navigation bar -->
|
||||
<md-nav-bar ng-if="inArray(tab, hostMonitoringTabs)" class="wz-nav-bar" ng-show="tab !== 'welcome'"
|
||||
md-selected-nav-item="tab" nav-bar-aria-label="Host monitoring navigation links">
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('general')" name="general">{{ tabNames['general'] }}</md-nav-item>
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('general')" name="general">{{ tabNames['general'] }}
|
||||
</md-nav-item>
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('fim')" name="fim">{{ tabNames['fim'] }}</md-nav-item>
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('syscollector')" name="syscollector">{{
|
||||
tabNames['syscollector'] }}</md-nav-item>
|
||||
@ -120,10 +127,11 @@
|
||||
|
||||
<!-- System audit navigation bar -->
|
||||
<md-nav-bar ng-if="inArray(tab, systemAuditTabs) && (extensions.audit || extensions.oscap || extensions.ciscat)"
|
||||
class="wz-nav-bar" ng-show="tab !== 'welcome'" md-selected-nav-item="tab" nav-bar-aria-label="System audit navigation links">
|
||||
class="wz-nav-bar" ng-show="tab !== 'welcome'" md-selected-nav-item="tab"
|
||||
nav-bar-aria-label="System audit navigation links">
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('pm')" name="pm">{{ tabNames['pm'] }}</md-nav-item>
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('configuration-assessment')" name="configuration-assessment">{{
|
||||
tabNames['configuration-assessment'] }}</md-nav-item>
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('sca')" name="sca">{{
|
||||
tabNames['sca'] }}</md-nav-item>
|
||||
<md-nav-item ng-show="extensions.audit" class="wz-nav-item" md-nav-click="switchTab('audit')" name="audit">{{
|
||||
tabNames['audit'] }}</md-nav-item>
|
||||
<md-nav-item ng-show="extensions.oscap" class="wz-nav-item" md-nav-click="switchTab('oscap')" name="oscap">{{
|
||||
@ -136,17 +144,20 @@
|
||||
<!-- Security navigation bar -->
|
||||
<md-nav-bar ng-if="inArray(tab, securityTabs) && (extensions.virustotal || extensions.osquery)" class="wz-nav-bar"
|
||||
ng-show="tab !== 'welcome'" md-selected-nav-item="tab" nav-bar-aria-label="Security navigation links">
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('vuls')" name="vuls">{{ tabNames['vuls'] }}</md-nav-item>
|
||||
<md-nav-item ng-show="extensions.virustotal" class="wz-nav-item" md-nav-click="switchTab('virustotal')" name="virustotal">{{
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchTab('vuls')" name="vuls">{{ tabNames['vuls'] }}
|
||||
</md-nav-item>
|
||||
<md-nav-item ng-show="extensions.virustotal" class="wz-nav-item" md-nav-click="switchTab('virustotal')"
|
||||
name="virustotal">{{
|
||||
tabNames['virustotal'] }}</md-nav-item>
|
||||
<md-nav-item ng-show="extensions.osquery" class="wz-nav-item" md-nav-click="switchTab('osquery')" name="osquery">{{
|
||||
<md-nav-item ng-show="extensions.osquery" class="wz-nav-item" md-nav-click="switchTab('osquery')"
|
||||
name="osquery">{{
|
||||
tabNames['osquery'] }}</md-nav-item>
|
||||
</md-nav-bar>
|
||||
<!-- End Security navigation bar -->
|
||||
|
||||
<!-- Compliance navigation bar -->
|
||||
<md-nav-bar ng-if="inArray(tab, complianceTabs) && extensions.pci && extensions.gdpr" class="wz-nav-bar" ng-show="tab !== 'welcome'"
|
||||
md-selected-nav-item="tab" nav-bar-aria-label="Compliance navigation links">
|
||||
<md-nav-bar ng-if="inArray(tab, complianceTabs) && extensions.pci && extensions.gdpr" class="wz-nav-bar"
|
||||
ng-show="tab !== 'welcome'" md-selected-nav-item="tab" nav-bar-aria-label="Compliance navigation links">
|
||||
<md-nav-item ng-show="extensions.pci" class="wz-nav-item" md-nav-click="switchTab('pci')" name="pci">{{
|
||||
tabNames['pci'] }}</md-nav-item>
|
||||
<md-nav-item ng-show="extensions.gdpr" class="wz-nav-item" md-nav-click="switchTab('gdpr')" name="gdpr">{{
|
||||
@ -155,11 +166,14 @@
|
||||
<!-- End Compliance navigation bar -->
|
||||
|
||||
<!-- Discover search bar section -->
|
||||
<kbn-dis ng-show="(tab !== 'welcome') && (tab !== 'configuration') && tab !== 'syscollector' && !showSyscheckFiles && !showConfigurationAssessmentScan"></kbn-dis>
|
||||
<kbn-dis
|
||||
ng-show="(tab !== 'welcome') && (tab !== 'configuration') && tab !== 'syscollector' && !showSyscheckFiles && !showScaScan">
|
||||
</kbn-dis>
|
||||
<!-- End Discover search bar section -->
|
||||
|
||||
<!-- Loading status section -->
|
||||
<div layout="column" layout-align="center center" ng-if="tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'"
|
||||
<div layout="column" layout-align="center center"
|
||||
ng-if="tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'"
|
||||
ng-show="resultState === 'ready' && tabView === 'panels' && !rendered">
|
||||
<div class="percentage"><i class="fa fa-fw fa-spin fa-spinner" aria-hidden="true"></i></div>
|
||||
<div class="percentage">{{loadingStatus}}</div>
|
||||
@ -167,42 +181,47 @@
|
||||
<!-- End loading status section -->
|
||||
|
||||
<!-- Report status section -->
|
||||
<div layout="column" layout-align="center center" class="wz-margin-top-8" ng-if="(tab !== 'welcome') && (tab !== 'configuration')"
|
||||
ng-show="reportBusy && reportStatus">
|
||||
<div layout="column" layout-align="center center" class="wz-margin-top-8"
|
||||
ng-if="(tab !== 'welcome') && (tab !== 'configuration')" ng-show="reportBusy && reportStatus">
|
||||
<div class="percentage"><i class="fa fa-fw fa-spin fa-spinner" aria-hidden="true"></i></div>
|
||||
<div class="percentage">{{reportStatus}}</div>
|
||||
</div>
|
||||
<!-- End report status section -->
|
||||
|
||||
<!-- No results section -->
|
||||
<div layout="row" ng-if="!showSyscheckFiles && !showConfigurationAssessmentScan && tab === 'fim' && resultState === 'none' && tabView === 'panels'"
|
||||
layout-padding class="wz-padding-top-0">
|
||||
<div layout="row"
|
||||
ng-if="!showSyscheckFiles && !showScaScan && tab === 'fim' && resultState === 'none' && tabView === 'panels'">
|
||||
<span flex></span>
|
||||
<span ng-click="launchSyscheckScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-play"></i> Run
|
||||
scan</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>
|
||||
<span ng-click="switchSyscheckFiles()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i>
|
||||
Show state</span>
|
||||
<md-button ng-click="switchSyscheckFiles()" class="wz-button pull-right"><i class="fa fa-fw fa-database"></i>
|
||||
Show state</md-button>
|
||||
</div>
|
||||
<div layout="row" ng-if="!showSyscheckFiles && !showConfigurationAssessmentScan && tab === 'configuration-assessment' && resultState === 'none' && tabView === 'panels'"
|
||||
layout-padding class="wz-padding-top-0">
|
||||
<div layout="row"
|
||||
ng-if="!showSyscheckFiles && !showScaScan && tab === 'sca' && resultState === 'none' && tabView === 'panels'">
|
||||
<span flex></span>
|
||||
<span ng-click="switchConfigurationAssessmentScan()" class="btn pull-right btn-primary"><i class="fa fa-fw fa-database"></i>
|
||||
<md-button ng-click="switchScaScan()" class="wz-button pull-right"><i class="fa fa-fw fa-database"></i>
|
||||
Show
|
||||
state</span>
|
||||
state</md-button>
|
||||
</div>
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-if="!showSyscheckFiles && !showConfigurationAssessmentScan && tab !== 'welcome' && tab !== 'configuration' && tab !== 'syscollector'"
|
||||
<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'"
|
||||
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">
|
||||
<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>
|
||||
<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">There are no results for selected time range. Try another one.</span>
|
||||
<span class="euiCallOutHeader__title">There are no results for selected time range. Try another
|
||||
one.</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -12,6 +12,6 @@ include ./agents-gdpr.html
|
||||
include ./agents-virustotal.html
|
||||
include ./agents-syscollector.html
|
||||
include ./agents-osquery.html
|
||||
include ./agents-configuration-assessment.html
|
||||
include ./agents-sca.html
|
||||
include ../management/configuration/agent-configuration.pug
|
||||
include ../footer.foot
|
||||
|
@ -1,31 +1,37 @@
|
||||
<!-- No configuration section -->
|
||||
<wz-no-config flex error="'not-present'" ng-if="configurationSubTab === 'pm-configuration-assessment' && !currentConfig['wmodules-wmodules'].wmodules[4]['configuration-assessment']"></wz-no-config>
|
||||
<wz-no-config flex error="'not-present'"
|
||||
ng-if="configurationSubTab === 'pm-sca' && !currentConfig['wmodules-wmodules'].wmodules[4]['sca']"></wz-no-config>
|
||||
<!-- End no configuration section -->
|
||||
|
||||
<!-- The main card will all the settings -->
|
||||
<md-card class="wz-md-card" ng-if="!JSONContent && !XMLContent && configurationSubTab === 'pm-configuration-assessment' && currentConfig['wmodules-wmodules'].wmodules[4]['configuration-assessment']">
|
||||
<md-card class="wz-md-card"
|
||||
ng-if="!JSONContent && !XMLContent && configurationSubTab === 'pm-sca' && currentConfig['wmodules-wmodules'].wmodules[4]['sca']">
|
||||
<md-card-content>
|
||||
<div layout="row" layout-align="start center">
|
||||
<div>
|
||||
<span class="font-size-16">Configuration assessment</span>
|
||||
</div>
|
||||
<span flex></span>
|
||||
<span ng-class="JSONContent ? 'wz-text-active' : ''" class="wz-text-link small" ng-click="getJSON()">JSON</span>
|
||||
<span ng-class="JSONContent ? 'wz-text-active' : ''" class="wz-text-link small"
|
||||
ng-click="getJSON()">JSON</span>
|
||||
<span class="small"> · </span>
|
||||
<span ng-class="XMLContent ? 'wz-text-active' : ''" class="wz-text-link small" ng-click="getXML()">XML</span>
|
||||
<span ng-class="XMLContent ? 'wz-text-active' : ''" class="wz-text-link small"
|
||||
ng-click="getXML()">XML</span>
|
||||
</div>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<!-- Configuration block -->
|
||||
<div class="wz-padding-top-10">
|
||||
<!-- content -->
|
||||
<wz-config-item label="Configuration assessment status" value="currentConfig['wmodules-wmodules'].wmodules[4]['configuration-assessment'].enabled === 'yes' ? 'enabled' : 'disabled'">
|
||||
<wz-config-item label="Configuration assessment status"
|
||||
value="currentConfig['wmodules-wmodules'].wmodules[4]['sca'].enabled === 'yes' ? 'enabled' : 'disabled'">
|
||||
</wz-config-item>
|
||||
<wz-config-item label="Interval" value="currentConfig['wmodules-wmodules'].wmodules[4]['configuration-assessment'].interval">
|
||||
<wz-config-item label="Interval" value="currentConfig['wmodules-wmodules'].wmodules[4]['sca'].interval">
|
||||
</wz-config-item>
|
||||
<wz-config-item label="Scan on start" value="currentConfig['wmodules-wmodules'].wmodules[4]['configuration-assessment'].scan_on_start">
|
||||
<wz-config-item label="Scan on start"
|
||||
value="currentConfig['wmodules-wmodules'].wmodules[4]['sca'].scan_on_start">
|
||||
</wz-config-item>
|
||||
<wz-config-item label="Skip nfs" value="currentConfig['wmodules-wmodules'].wmodules[4]['configuration-assessment'].skip_nfs">
|
||||
<wz-config-item label="Skip nfs" value="currentConfig['wmodules-wmodules'].wmodules[4]['sca'].skip_nfs">
|
||||
</wz-config-item>
|
||||
<!-- end content -->
|
||||
</div>
|
||||
@ -44,7 +50,7 @@
|
||||
<th class="wz-text-left">Name</th>
|
||||
</thead>
|
||||
<tbody class="wz-word-wrap">
|
||||
<tr ng-repeat="policy in currentConfig['wmodules-wmodules'].wmodules[4]['configuration-assessment'].policies">
|
||||
<tr ng-repeat="policy in currentConfig['wmodules-wmodules'].wmodules[4]['sca'].policies">
|
||||
<td>{{policy}}</td>
|
||||
</tr>
|
||||
</tbody>
|
@ -1,57 +1,57 @@
|
||||
<div flex="auto" layout="column" ng-if="configurationTab === 'policy-monitoring'" ng-init="switchConfigurationSubTab('pm-general')">
|
||||
<div flex="auto" layout="column" ng-if="configurationTab === 'policy-monitoring'"
|
||||
ng-init="switchConfigurationSubTab('pm-general')">
|
||||
|
||||
<!-- Headline -->
|
||||
<div layout="column" layout-padding>
|
||||
<div>
|
||||
<span class="font-size-18">Policy monitoring</span>
|
||||
<span
|
||||
ng-if="currentConfig['syscheck-rootcheck']
|
||||
<!-- Headline -->
|
||||
<div layout="column" layout-padding>
|
||||
<div>
|
||||
<span class="font-size-18">Policy monitoring</span>
|
||||
<span ng-if="currentConfig['syscheck-rootcheck']
|
||||
&& currentConfig['syscheck-rootcheck'].rootcheck
|
||||
&& currentConfig['syscheck-rootcheck'].rootcheck.disabled
|
||||
&& currentConfig['syscheck-rootcheck'].rootcheck.disabled === 'no'"
|
||||
class="wz-agent-status-indicator small teal">Enabled</span>
|
||||
<span
|
||||
ng-if="(currentConfig['syscheck-rootcheck']
|
||||
class="wz-agent-status-indicator small teal">Enabled</span>
|
||||
<span ng-if="(currentConfig['syscheck-rootcheck']
|
||||
&& currentConfig['syscheck-rootcheck'].rootcheck
|
||||
&& currentConfig['syscheck-rootcheck'].rootcheck.disabled
|
||||
&& currentConfig['syscheck-rootcheck'].rootcheck.disabled === 'yes')
|
||||
||
|
||||
(currentConfig['syscheck-rootcheck']
|
||||
&& isString(currentConfig['syscheck-rootcheck']))" class="wz-agent-status-indicator small red">Disabled</span>
|
||||
</div>
|
||||
<span class="md-subheader">Configuration to ensure compliance with security policies, standards and hardening guides</span>
|
||||
&& isString(currentConfig['syscheck-rootcheck']))"
|
||||
class="wz-agent-status-indicator small red">Disabled</span>
|
||||
</div>
|
||||
<!-- End headline -->
|
||||
<span class="md-subheader">Configuration to ensure compliance with security policies, standards and hardening
|
||||
guides</span>
|
||||
</div>
|
||||
<!-- End headline -->
|
||||
|
||||
<!-- Policy monitoring navigation bar -->
|
||||
<md-nav-bar
|
||||
class="wz-nav-bar"
|
||||
md-selected-nav-item="configurationSubTab"
|
||||
nav-bar-aria-label="Policy monitoring navigation links">
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchConfigurationSubTab('pm-general')" name="pm-general">General</md-nav-item>
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchConfigurationSubTab('pm-unix')" name="pm-unix">System audit</md-nav-item>
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchConfigurationSubTab('pm-configuration-assessment')" name="pm-configuration-assessment">Configuration assessment</md-nav-item>
|
||||
</md-nav-bar>
|
||||
<!-- End Policy monitoring navigation bar -->
|
||||
<!-- Policy monitoring navigation bar -->
|
||||
<md-nav-bar class="wz-nav-bar" md-selected-nav-item="configurationSubTab"
|
||||
nav-bar-aria-label="Policy monitoring navigation links">
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchConfigurationSubTab('pm-general')" name="pm-general">General
|
||||
</md-nav-item>
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchConfigurationSubTab('pm-unix')" name="pm-unix">System audit
|
||||
</md-nav-item>
|
||||
<md-nav-item class="wz-nav-item" md-nav-click="switchConfigurationSubTab('pm-sca')" name="pm-sca">Configuration
|
||||
assessment</md-nav-item>
|
||||
</md-nav-bar>
|
||||
<!-- End Policy monitoring navigation bar -->
|
||||
|
||||
<!-- Loading ring -->
|
||||
<div class='uil-ring-css' ng-show="load">
|
||||
<div></div>
|
||||
</div>
|
||||
<!-- Loading ring -->
|
||||
<div class='uil-ring-css' ng-show="load">
|
||||
<div></div>
|
||||
</div>
|
||||
|
||||
<!-- This section contains the main content and the right sidenav -->
|
||||
<div flex="auto" layout="row" ng-if="!load">
|
||||
<!-- This section contains the main content and the right sidenav -->
|
||||
<div flex="auto" layout="row" ng-if="!load">
|
||||
|
||||
<!-- No configuration section -->
|
||||
<wz-no-config
|
||||
flex
|
||||
error="currentConfig['syscheck-rootcheck']"
|
||||
ng-if="currentConfig['syscheck-rootcheck'] && isString(currentConfig['syscheck-rootcheck'])"></wz-no-config>
|
||||
<wz-no-config
|
||||
flex
|
||||
error="'not-present'"
|
||||
ng-if="currentConfig['syscheck-rootcheck'] && !isString(currentConfig['syscheck-rootcheck']) && !currentConfig['syscheck-rootcheck'].rootcheck"></wz-no-config>
|
||||
<!-- End no configuration section -->
|
||||
<!-- No configuration section -->
|
||||
<wz-no-config flex error="currentConfig['syscheck-rootcheck']"
|
||||
ng-if="currentConfig['syscheck-rootcheck'] && isString(currentConfig['syscheck-rootcheck'])"></wz-no-config>
|
||||
<wz-no-config flex error="'not-present'"
|
||||
ng-if="currentConfig['syscheck-rootcheck'] && !isString(currentConfig['syscheck-rootcheck']) && !currentConfig['syscheck-rootcheck'].rootcheck">
|
||||
</wz-no-config>
|
||||
<!-- End no configuration section -->
|
||||
|
||||
<!-- This section is the main content -->
|
||||
<div flex layout="column" ng-if="currentConfig['syscheck-rootcheck'] && !isString(currentConfig['syscheck-rootcheck']) && currentConfig['syscheck-rootcheck'].rootcheck">
|
||||
<!-- This section is the main content -->
|
||||
<div flex layout="column"
|
||||
ng-if="currentConfig['syscheck-rootcheck'] && !isString(currentConfig['syscheck-rootcheck']) && currentConfig['syscheck-rootcheck'].rootcheck">
|
@ -1,6 +1,6 @@
|
||||
include ./policy-monitoring.head
|
||||
include ./pm-general.html
|
||||
include ./pm-unix.html
|
||||
include ./pm-configuration-assessment.html
|
||||
include ./pm-sca.html
|
||||
include ./policy-monitoring.foot
|
||||
include ../../../footer.foot
|
||||
|
@ -1,4 +1,5 @@
|
||||
<div layout="column" class="mozilla-table-size-85" ng-controller="managerLogController as ctrl" ng-if="!ctrl.loading && mctrl.tab == 'logs'">
|
||||
<div layout="column" class="mozilla-table-size-85" ng-controller="managerLogController as ctrl"
|
||||
ng-if="!ctrl.loading && mctrl.tab == 'logs'">
|
||||
|
||||
<!-- Headline -->
|
||||
<div ng-show="!ctrl.loading" layout="column" layout-padding>
|
||||
@ -11,19 +12,21 @@
|
||||
<div ng-show="!ctrl.loading" layout="row" layout-align="start center" class="md-padding">
|
||||
<!-- Daemon selector -->
|
||||
<div flex="20" layout="column" layout-align="center" class="height-40 wz-margin-right-15 wz-select-input">
|
||||
<select flex class="kuiSelect wz-border-none cursor-pointer max-height-35" ng-disabled="ctrl.realtime || !ctrl.daemons.length"
|
||||
id="categoryBox" ng-model="ctrl.category" ng-change="ctrl.filter({name:'category',value:ctrl.category})"
|
||||
aria-label="Logs category">
|
||||
<select flex class="kuiSelect wz-border-none cursor-pointer max-height-35"
|
||||
ng-disabled="ctrl.realtime || !ctrl.daemons.length" id="categoryBox" ng-model="ctrl.category"
|
||||
ng-change="ctrl.filter({name:'category',value:ctrl.category})" aria-label="Logs category">
|
||||
<option value="all">All daemons</option>
|
||||
<option ng-repeat="daemon in ctrl.daemons | orderObjectBy: 'title'" value="{{daemon.title}}">{{daemon.title}}</option>
|
||||
<option ng-repeat="daemon in ctrl.daemons | orderObjectBy: 'title'" value="{{daemon.title}}">
|
||||
{{daemon.title}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<!-- End daemon selector -->
|
||||
|
||||
<!-- Level selector -->
|
||||
<div flex="20" layout="column" layout-align="center" class="height-40 wz-select-input wz-margin-right-15">
|
||||
<select flex class="kuiSelect wz-border-none cursor-pointer max-height-35" ng-disabled="ctrl.realtime" id="levelBox"
|
||||
ng-model="ctrl.type_log" ng-change="ctrl.filter({name:'type_log',value:ctrl.type_log})" aria-label="Logs level">
|
||||
<select flex class="kuiSelect wz-border-none cursor-pointer max-height-35" ng-disabled="ctrl.realtime"
|
||||
id="levelBox" ng-model="ctrl.type_log" ng-change="ctrl.filter({name:'type_log',value:ctrl.type_log})"
|
||||
aria-label="Logs level">
|
||||
<option value="all">All log levels</option>
|
||||
<option value="info">Info</option>
|
||||
<option value="error">Error</option>
|
||||
@ -34,8 +37,9 @@
|
||||
</div>
|
||||
|
||||
<div flex="20" layout="column" ng-show="ctrl.nodeList" layout-align="center" class="height-40 wz-select-input">
|
||||
<select flex class="kuiSelect wz-border-none cursor-pointer max-height-35" ng-disabled="ctrl.realtime" id="categoryBox"
|
||||
ng-model="ctrl.selectedNode" ng-change="ctrl.changeNode(ctrl.selectedNode)" aria-label="Logs category">
|
||||
<select flex class="kuiSelect wz-border-none cursor-pointer max-height-35" ng-disabled="ctrl.realtime"
|
||||
id="categoryBox" ng-model="ctrl.selectedNode" ng-change="ctrl.changeNode(ctrl.selectedNode)"
|
||||
aria-label="Logs category">
|
||||
<option ng-repeat="node in ctrl.nodeList" value="{{node}}">{{node}}</option>
|
||||
</select>
|
||||
</div>
|
||||
@ -44,12 +48,12 @@
|
||||
<!-- White space between filters and Realtime button -->
|
||||
<span flex></span>
|
||||
|
||||
<md-button ng-if="!ctrl.realtime" class="wz-button md-raised md-primary no-margin-right" ng-click="ctrl.playRealtime()"
|
||||
<md-button ng-if="!ctrl.realtime" class="wz-button md-raised 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 md-primary no-margin-right" ng-click="ctrl.stopRealtime()"
|
||||
<md-button ng-if="ctrl.realtime" class="wz-button md-raised 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
|
||||
@ -58,9 +62,11 @@
|
||||
<!-- End Filters and Realtime button section -->
|
||||
|
||||
<div layout="row" flex class="md-padding" ng-if="ctrl.logsPath">
|
||||
<input placeholder="Filter logs..." ng-model="ctrl.custom_search" type="text" class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid"
|
||||
aria-invalid="false" wz-enter="ctrl.search(ctrl.custom_search)">
|
||||
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-40" ng-click="ctrl.search(ctrl.custom_search)">
|
||||
<input placeholder="Filter logs..." ng-model="ctrl.custom_search" type="text"
|
||||
class="kuiLocalSearchInput ng-empty ng-pristine ng-scope ng-touched ng-valid" aria-invalid="false"
|
||||
wz-enter="ctrl.search(ctrl.custom_search)">
|
||||
<button type="submit" aria-label="Search" class="kuiLocalSearchButton height-40"
|
||||
ng-click="ctrl.search(ctrl.custom_search)">
|
||||
<span class="fa fa-search" aria-hidden="true"></span>
|
||||
</button>
|
||||
</div>
|
||||
@ -75,6 +81,7 @@
|
||||
|
||||
<div layout="row" layout-padding>
|
||||
<span flex></span>
|
||||
<a class="small" id="btnDownload" ng-click="ctrl.downloadCsv()">Formatted <i aria-hidden="true" class="fa fa-fw fa-download"></i></a>
|
||||
<a class="small" id="btnDownload" ng-click="ctrl.downloadCsv()">Formatted <i aria-hidden="true"
|
||||
class="fa fa-fw fa-download"></i></a>
|
||||
</div>
|
||||
</div>
|
@ -1,5 +1,5 @@
|
||||
<div layout="column" layout-align="start stretch" ng-controller="managerStatusController as ctrl" ng-if="mctrl.tab === 'status'"
|
||||
class="">
|
||||
<div layout="column" layout-align="start stretch" ng-controller="managerStatusController as ctrl"
|
||||
ng-if="mctrl.tab === 'status'" class="">
|
||||
|
||||
<!-- Loading ring -->
|
||||
<div class='uil-ring-css' ng-show="ctrl.load">
|
||||
@ -9,24 +9,27 @@
|
||||
<!-- Headline -->
|
||||
<div ng-show="!ctrl.load" layout="column" layout-padding>
|
||||
<span class="font-size-18"><i class="fa fa-fw fa-heartbeat" aria-hidden="true"></i> Status</span>
|
||||
<span class="md-subheader">Check the status of all Wazuh manager daemons <span ng-show="ctrl.selectedNode">({{ctrl.selectedNode}})</span></span>
|
||||
<span class="md-subheader">Check the status of all Wazuh manager daemons <span
|
||||
ng-show="ctrl.selectedNode">({{ctrl.selectedNode}})</span></span>
|
||||
</div>
|
||||
|
||||
<div ng-show="!ctrl.load" layout="row" layout-padding>
|
||||
<div ng-show="ctrl.selectedNode" layout="column" layout-align="center" class="height-40 wz-select-input">
|
||||
<select class="kuiSelect wz-border-none cursor-pointer max-height-35" id="categoryBox" ng-model="ctrl.selectedNode"
|
||||
ng-change="ctrl.changeNode(ctrl.selectedNode)" aria-label="Select node">
|
||||
<select class="kuiSelect wz-border-none cursor-pointer max-height-35" id="categoryBox"
|
||||
ng-model="ctrl.selectedNode" ng-change="ctrl.changeNode(ctrl.selectedNode)" aria-label="Select node">
|
||||
<option ng-repeat="node in ctrl.nodes" value="{{node.name}}">{{node.name}}</option>
|
||||
</select>
|
||||
</div>
|
||||
<div flex></div>
|
||||
<div layout="column" class="height-40 wz-no-padding">
|
||||
<button ng-if="mctrl.clusterInfo.status === 'enabled' && !mctrl.showConfirmRestart" class="btn wz-button height-35"
|
||||
ng-disabled="mctrl.isRestarting" ng-click="mctrl.showConfirmRestart = true"><i class="fa fa-refresh"></i>
|
||||
<button ng-if="mctrl.clusterInfo.status === 'enabled' && !mctrl.showConfirmRestart"
|
||||
class="btn wz-button height-35" ng-disabled="mctrl.isRestarting"
|
||||
ng-click="mctrl.showConfirmRestart = true"><i class="fa fa-refresh"></i>
|
||||
Restart cluster
|
||||
</button>
|
||||
<button ng-if="mctrl.clusterInfo.status !== 'enabled' && !mctrl.showConfirmRestart" class="btn wz-button height-35"
|
||||
ng-disabled="mctrl.isRestarting" ng-click="mctrl.showConfirmRestart = true"><i class="fa fa-refresh"></i>
|
||||
<button ng-if="mctrl.clusterInfo.status !== 'enabled' && !mctrl.showConfirmRestart"
|
||||
class="btn wz-button height-35" ng-disabled="mctrl.isRestarting"
|
||||
ng-click="mctrl.showConfirmRestart = true"><i class="fa fa-refresh"></i>
|
||||
Restart manager
|
||||
</button>
|
||||
<div ng-show="mctrl.showConfirmRestart" class="confirmEmbedBubble confirmEmbedBubbleInline">
|
||||
@ -37,12 +40,15 @@
|
||||
manager will be restarted </span>
|
||||
</div>
|
||||
<div layout="row">
|
||||
<md-button class="cancelBtn btn-info" type="button" ng-click="mctrl.showConfirmRestart = false">Cancel</md-button>
|
||||
<md-button class="cancelBtn btn-info" type="button" ng-click="mctrl.showConfirmRestart = false">
|
||||
Cancel</md-button>
|
||||
<md-button ng-if="mctrl.clusterInfo.status === 'enabled'" class="btn wz-button" type="button"
|
||||
ng-click="mctrl.restartCluster();mctrl.showConfirmRestart = false"><i aria-hidden='true' class='fa fa-fw fa-check'></i>
|
||||
ng-click="mctrl.restartCluster();mctrl.showConfirmRestart = false"><i aria-hidden='true'
|
||||
class='fa fa-fw fa-check'></i>
|
||||
Confirm</md-button>
|
||||
<md-button ng-if="mctrl.clusterInfo.status !== 'enabled'" class="btn wz-button" type="button"
|
||||
ng-click="mctrl.restartManager();mctrl.showConfirmRestart = false"><i aria-hidden='true' class='fa fa-fw fa-check'></i>
|
||||
ng-click="mctrl.restartManager();mctrl.showConfirmRestart = false"><i aria-hidden='true'
|
||||
class='fa fa-fw fa-check'></i>
|
||||
Confirm</md-button>
|
||||
</div>
|
||||
</div>
|
||||
@ -50,13 +56,17 @@
|
||||
</div>
|
||||
<!-- End headline -->
|
||||
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8" ng-show="ctrl.clusterError && !ctrl.load">
|
||||
<div layout="row" class="wz-margin-top-10 wz-margin-right-8 wz-margin-left-8"
|
||||
ng-show="ctrl.clusterError && !ctrl.load">
|
||||
<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>
|
||||
<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>
|
||||
@ -91,7 +101,8 @@
|
||||
<div flex class="wz-text-truncatable">Disconnected:
|
||||
<span class="wz-text-bold">{{ctrl.agentsCountDisconnected}}</span>
|
||||
</div>
|
||||
<div flex class="wz-text-truncatable">Never connected: <span class="wz-text-bold">{{ctrl.agentsCountNeverConnected}}</span>
|
||||
<div flex class="wz-text-truncatable">Never connected: <span
|
||||
class="wz-text-bold">{{ctrl.agentsCountNeverConnected}}</span>
|
||||
</div>
|
||||
<div flex class="wz-text-truncatable">Agents coverage:
|
||||
<span class="wz-text-bold">{{(ctrl.agentsCoverity | number:2)}}%</span>
|
||||
@ -105,8 +116,10 @@
|
||||
<!-- Manager information section -->
|
||||
<md-card flex class="wz-md-card">
|
||||
<md-card-content>
|
||||
<i class="fa fa-fw fa-server" aria-hidden="true"></i> <span ng-if="ctrl.selectedNode" class="wz-headline-title">{{ctrl.selectedNode}}
|
||||
information</span> <span ng-if="!ctrl.selectedNode" class="wz-headline-title">Manager information</span>
|
||||
<i class="fa fa-fw fa-server" aria-hidden="true"></i> <span ng-if="ctrl.selectedNode"
|
||||
class="wz-headline-title">{{ctrl.selectedNode}}
|
||||
information</span> <span ng-if="!ctrl.selectedNode" class="wz-headline-title">Manager
|
||||
information</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<span flex="25">Version</span>
|
||||
@ -120,11 +133,13 @@
|
||||
</div>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<span flex="25">Installation path</span>
|
||||
<span class="wz-text-right color-grey">{{ctrl.managerInfo.path ? ctrl.managerInfo.path : '-'}}</span>
|
||||
<span
|
||||
class="wz-text-right color-grey">{{ctrl.managerInfo.path ? ctrl.managerInfo.path : '-'}}</span>
|
||||
</div>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<span flex="25">Installation type</span>
|
||||
<span class="wz-text-right color-grey">{{ctrl.managerInfo.type ? ctrl.managerInfo.type : '-'}}</span>
|
||||
<span
|
||||
class="wz-text-right color-grey">{{ctrl.managerInfo.type ? ctrl.managerInfo.type : '-'}}</span>
|
||||
</div>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<span flex="25">Agents limit</span>
|
||||
@ -144,7 +159,8 @@
|
||||
<!-- Last registered agent section -->
|
||||
<md-card flex class="wz-md-card" ng-show="ctrl.agentInfo && ctrl.agentInfo.id !== '000'">
|
||||
<md-card-content>
|
||||
<i class="fa fa-fw fa-tv" aria-hidden="true"></i> <span class="wz-headline-title">Last registered agent</span>
|
||||
<i class="fa fa-fw fa-tv" aria-hidden="true"></i> <span class="wz-headline-title">Last registered
|
||||
agent</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<span flex="25">Name</span>
|
||||
@ -156,7 +172,8 @@
|
||||
</div>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<span flex="25">Status</span>
|
||||
<span class="wz-text-right color-grey">{{ctrl.agentInfo.status ? ctrl.agentInfo.status : '-'}}</span>
|
||||
<span
|
||||
class="wz-text-right color-grey">{{ctrl.agentInfo.status ? ctrl.agentInfo.status : '-'}}</span>
|
||||
</div>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<span flex="25">IP Address</span>
|
||||
@ -164,11 +181,13 @@
|
||||
</div>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<span flex="25">Date add</span>
|
||||
<span class="wz-text-right color-grey">{{ctrl.agentInfo.dateAdd ? ctrl.agentInfo.dateAdd : '-'}}</span>
|
||||
<span
|
||||
class="wz-text-right color-grey">{{ctrl.agentInfo.dateAdd ? ctrl.agentInfo.dateAdd : '-'}}</span>
|
||||
</div>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<span flex="25">Version</span>
|
||||
<span class="wz-text-right color-grey">{{ctrl.agentInfo.version ? ctrl.agentInfo.version : '-'}}</span>
|
||||
<span
|
||||
class="wz-text-right color-grey">{{ctrl.agentInfo.version ? ctrl.agentInfo.version : '-'}}</span>
|
||||
</div>
|
||||
<div layout="row" class="wz-padding-top-10" ng-if="ctrl.agentInfo.id !== '000'">
|
||||
<span flex="25">Last keep alive</span>
|
||||
|
@ -210,7 +210,7 @@
|
||||
<span flex></span>
|
||||
<div layout="row" class="wz-padding-top-10">
|
||||
<wz-kbn-switch aria-label="VirusTotal extension switch" switch-model="ctrl.extensions.virustotal"
|
||||
switch-change="ctrl.toggleExtension('virustotal',ctrl.extensions.virustotal)"></wz-kbn-switch>
|
||||
switch-change="ctrl.toggleExtension('virustotal', !ctrl.extensions.virustotal)"></wz-kbn-switch>
|
||||
</div>
|
||||
</md-card-content>
|
||||
<md-card-actions layout="row" layout-align="end center" class="wz-card-actions">
|
||||
|
@ -59,5 +59,5 @@ export const TabNames = {
|
||||
client: 'Client configuration',
|
||||
edition: 'Edit node configuration',
|
||||
'client-buffer': 'Anti-flooding settings',
|
||||
'configuration-assessment': 'Configuration assessment'
|
||||
sca: 'Configuration assessment'
|
||||
};
|
||||
|
@ -20,7 +20,7 @@ import pm from './agents-pm';
|
||||
import virustotal from './agents-virustotal';
|
||||
import vuls from './agents-vuls';
|
||||
import osquery from './agents-osquery';
|
||||
import configurationAssessment from './agents-configuration-assessment';
|
||||
import sca from './agents-sca';
|
||||
|
||||
export {
|
||||
audit,
|
||||
@ -34,5 +34,5 @@ export {
|
||||
virustotal,
|
||||
vuls,
|
||||
osquery,
|
||||
configurationAssessment
|
||||
sca
|
||||
};
|
||||
|
@ -80,7 +80,7 @@ export const TabDescription = {
|
||||
description:
|
||||
'Osquery can be used to expose an operating system as a high-performance relational database.'
|
||||
},
|
||||
'configuration-assessment': {
|
||||
'sca': {
|
||||
title: 'Configuration assessment',
|
||||
description:
|
||||
'Lorem ipsum.'
|
||||
|
@ -471,7 +471,7 @@ export const apiRequestList = [
|
||||
args: []
|
||||
},
|
||||
{
|
||||
name: '/configuration_assessment/:agent_id',
|
||||
name: '/sca/:agent_id',
|
||||
args: [
|
||||
{
|
||||
name: ':agent_id'
|
||||
@ -479,7 +479,7 @@ export const apiRequestList = [
|
||||
]
|
||||
},
|
||||
{
|
||||
name: '/configuration_assessment/:agent_id/checks/:policy_id',
|
||||
name: '/sca/:agent_id/checks/:policy_id',
|
||||
args: [
|
||||
{
|
||||
name: ':agent_id'
|
||||
|
Loading…
Reference in New Issue
Block a user