mirror of
https://github.com/valitydev/wazuh-kibana-app.git
synced 2024-11-06 18:05:20 +00:00
Edit node configuration
This commit is contained in:
parent
5bba4dd07f
commit
d23718289c
@ -19,14 +19,12 @@ export class ConfigurationController {
|
||||
* @param {*} errorHandler
|
||||
* @param {*} apiReq
|
||||
* @param {*} appState
|
||||
* @param {*} wazuhConfig
|
||||
*/
|
||||
constructor($scope, $location, errorHandler, apiReq, appState, wazuhConfig) {
|
||||
constructor($scope, $location, errorHandler, apiReq, appState) {
|
||||
this.$scope = $scope;
|
||||
this.errorHandler = errorHandler;
|
||||
this.apiReq = apiReq;
|
||||
this.appState = appState;
|
||||
this.wazuhConfig = wazuhConfig;
|
||||
this.$location = $location;
|
||||
this.$scope.load = false;
|
||||
this.$scope.isArray = Array.isArray;
|
||||
@ -36,20 +34,12 @@ export class ConfigurationController {
|
||||
this.$scope.configurationSubTab = '';
|
||||
this.$scope.integrations = {};
|
||||
this.$scope.selectedItem = 0;
|
||||
this.$scope.selectedNode = false;
|
||||
this.$scope.nodes = [];
|
||||
this.$scope.editingFile = false;
|
||||
this.$scope.fetchedXML = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* When controller loads
|
||||
*/
|
||||
$onInit() {
|
||||
|
||||
this.init();
|
||||
const configuration = this.wazuhConfig.getConfig();
|
||||
this.$scope.adminMode = !!(configuration || {}).admin;
|
||||
this.$scope.getXML = () => this.configurationHandler.getXML(this.$scope);
|
||||
this.$scope.getJSON = () => this.configurationHandler.getJSON(this.$scope);
|
||||
this.$scope.isString = item => typeof item === 'string';
|
||||
@ -83,60 +73,6 @@ export class ConfigurationController {
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Edit node configuration
|
||||
*/
|
||||
const fetchFile = async () => {
|
||||
try {
|
||||
const data = await this.apiReq.request(
|
||||
'GET',
|
||||
`/cluster/${this.$scope.selectedNode}/configuration`,
|
||||
{}
|
||||
);
|
||||
const json = ((data || {}).data || {}).data || false;
|
||||
if (!json) {
|
||||
throw new Error('Could not fetch configuration file');
|
||||
}
|
||||
const xml = this.configurationHandler.json2xml(json);
|
||||
return xml;
|
||||
} catch (error) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
};
|
||||
|
||||
this.$scope.closeEditingFile = () => {
|
||||
this.$scope.editingFile = false;
|
||||
}
|
||||
|
||||
this.$scope.editConf = async () => {
|
||||
this.$scope.editingFile = true;
|
||||
try {
|
||||
this.$scope.fetchedXML = await fetchFile();
|
||||
this.$scope.$broadcast('fetchedFile', { data: this.$scope.fetchedXML });
|
||||
} catch (error) {
|
||||
this.$scope.fetchedXML = null;
|
||||
this.errorHandler.handle(error, 'Fetch file error');
|
||||
}
|
||||
if (!this.$scope.$$phase) this.$scope.$digest();
|
||||
};
|
||||
|
||||
this.$scope.saveConfiguration = async () => {
|
||||
try{
|
||||
this.$scope.editingFile = false;
|
||||
this.$scope.$broadcast('saveXmlFile', { node: this.$scope.selectedNode});
|
||||
}catch( error ) {
|
||||
this.$scope.fetchedXML = null;
|
||||
this.errorHandler.handle(error, 'Save file error');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.$scope.xmlIsValid = valid => {
|
||||
this.$scope.xmlHasErrors = valid;
|
||||
if (!this.$scope.$$phase) this.$scope.$digest();
|
||||
};
|
||||
|
||||
/**
|
||||
* Navigate to woodle
|
||||
*/
|
||||
@ -200,27 +136,5 @@ export class ConfigurationController {
|
||||
this.$scope.$on('$routeChangeStart', () =>
|
||||
this.appState.removeSessionStorageItem('configSubTab')
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
async init() {
|
||||
try {
|
||||
this.$scope.clusterStatus = await this.apiReq.request('GET', '/cluster/status', {});
|
||||
if (
|
||||
this.$scope.clusterStatus &&
|
||||
this.$scope.clusterStatus.data.data.enabled === 'yes' &&
|
||||
this.$scope.clusterStatus.data.data.running === 'yes'
|
||||
) {
|
||||
const nodes = await this.apiReq.request('GET', '/cluster/nodes', {});
|
||||
this.$scope.nodes = nodes.data.data.items.reverse();
|
||||
const masterNode = nodes.data.data.items.filter(
|
||||
item => item.type === 'master'
|
||||
)[0];
|
||||
this.$scope.selectedNode = masterNode.name;
|
||||
}
|
||||
} catch (error) {
|
||||
this.errorHandler.handle(error, 'Error getting cluster status');
|
||||
}
|
||||
if (!this.$scope.$$phase) this.$scope.$digest();
|
||||
}
|
||||
}
|
||||
}
|
133
public/controllers/management/edition.js
Normal file
133
public/controllers/management/edition.js
Normal file
@ -0,0 +1,133 @@
|
||||
/*
|
||||
* Wazuh app - Management configuration controller
|
||||
* Copyright (C) 2015-2019 Wazuh, Inc.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Find more information about this on the LICENSE file.
|
||||
*/
|
||||
import { ConfigurationHandler } from '../../utils/config-handler';
|
||||
|
||||
export class EditionController {
|
||||
/**
|
||||
* Constructor
|
||||
* @param {*} $scope
|
||||
* @param {*} $location
|
||||
* @param {*} errorHandler
|
||||
* @param {*} apiReq
|
||||
* @param {*} appState
|
||||
* @param {*} wazuhConfig
|
||||
*/
|
||||
constructor($scope, $location, errorHandler, apiReq, appState, wazuhConfig) {
|
||||
this.$scope = $scope;
|
||||
this.errorHandler = errorHandler;
|
||||
this.apiReq = apiReq;
|
||||
this.appState = appState;
|
||||
this.wazuhConfig = wazuhConfig;
|
||||
this.$location = $location;
|
||||
this.$scope.load = false;
|
||||
this.configurationHandler = new ConfigurationHandler(apiReq, errorHandler);
|
||||
this.$scope.selectedNode = false;
|
||||
this.$scope.nodes = [];
|
||||
this.$scope.editingFile = false;
|
||||
this.$scope.fetchedXML = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* When controller loads
|
||||
*/
|
||||
$onInit() {
|
||||
|
||||
this.init();
|
||||
const configuration = this.wazuhConfig.getConfig();
|
||||
this.$scope.adminMode = !!(configuration || {}).admin;
|
||||
|
||||
/**
|
||||
* Edit node configuration
|
||||
*/
|
||||
const fetchFile = async () => {
|
||||
try {
|
||||
const data = await this.apiReq.request(
|
||||
'GET',
|
||||
`/cluster/${this.$scope.selectedNode}/configuration`,
|
||||
{}
|
||||
);
|
||||
const json = ((data || {}).data || {}).data || false;
|
||||
if (!json) {
|
||||
throw new Error('Could not fetch configuration file');
|
||||
}
|
||||
const xml = this.configurationHandler.json2xml(json);
|
||||
return xml;
|
||||
} catch (error) {
|
||||
return Promise.reject(error);
|
||||
}
|
||||
};
|
||||
|
||||
this.$scope.closeEditingFile = () => {
|
||||
this.$scope.editingFile = false;
|
||||
}
|
||||
|
||||
this.$scope.editConf = async () => {
|
||||
this.$scope.editingFile = true;
|
||||
try {
|
||||
this.$scope.fetchedXML = await fetchFile();
|
||||
this.$scope.$broadcast('fetchedFile', { data: this.$scope.fetchedXML });
|
||||
} catch (error) {
|
||||
this.$scope.fetchedXML = null;
|
||||
this.errorHandler.handle(error, 'Fetch file error');
|
||||
}
|
||||
if (!this.$scope.$$phase) this.$scope.$digest();
|
||||
};
|
||||
|
||||
this.$scope.saveConfiguration = async () => {
|
||||
try{
|
||||
this.$scope.editingFile = false;
|
||||
this.$scope.$broadcast('saveXmlFile', { node: this.$scope.selectedNode});
|
||||
}catch( error ) {
|
||||
this.$scope.fetchedXML = null;
|
||||
this.errorHandler.handle(error, 'Save file error');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
this.$scope.xmlIsValid = valid => {
|
||||
this.$scope.xmlHasErrors = valid;
|
||||
if (!this.$scope.$$phase) this.$scope.$digest();
|
||||
};
|
||||
|
||||
this.$scope.edit = (node) => {
|
||||
this.$scope.selectedNode = node.name;
|
||||
return this.$scope.editConf();
|
||||
};
|
||||
|
||||
//listeners
|
||||
this.$scope.$on('wazuhShowNode', (event, parameters) => {
|
||||
return this.$scope.edit(parameters.node);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
async init() {
|
||||
try {
|
||||
this.$scope.clusterStatus = await this.apiReq.request('GET', '/cluster/status', {});
|
||||
if (
|
||||
this.$scope.clusterStatus &&
|
||||
this.$scope.clusterStatus.data.data.enabled === 'yes' &&
|
||||
this.$scope.clusterStatus.data.data.running === 'yes'
|
||||
) {
|
||||
const nodes = await this.apiReq.request('GET', '/cluster/nodes', {});
|
||||
this.$scope.nodes = nodes.data.data.items.reverse();
|
||||
const masterNode = nodes.data.data.items.filter(
|
||||
item => item.type === 'master'
|
||||
)[0];
|
||||
this.$scope.selectedNode = masterNode.name;
|
||||
}
|
||||
} catch (error) {
|
||||
this.errorHandler.handle(error, 'Error getting cluster status');
|
||||
}
|
||||
if (!this.$scope.$$phase) this.$scope.$digest();
|
||||
}
|
||||
}
|
@ -19,6 +19,7 @@ import { ManagementController } from './management';
|
||||
import { RulesController } from './rules';
|
||||
import { StatusController } from './status';
|
||||
import { ClusterController } from './monitoring';
|
||||
import { EditionController } from './edition';
|
||||
|
||||
const app = uiModules.get('app/wazuh', []);
|
||||
|
||||
@ -30,4 +31,5 @@ app
|
||||
.controller('managerLogController', LogsController)
|
||||
.controller('rulesController', RulesController)
|
||||
.controller('managerStatusController', StatusController)
|
||||
.controller('clusterController', ClusterController);
|
||||
.controller('clusterController', ClusterController)
|
||||
.controller('editionController', EditionController);
|
||||
|
@ -48,6 +48,8 @@ export function clickAction(
|
||||
$location.path('/agents');
|
||||
} else if (instance.path === '/agents/groups') {
|
||||
$scope.$emit('wazuhShowGroup', { group: item });
|
||||
} else if (instance.path === '/cluster/nodes') {
|
||||
$scope.$emit('wazuhShowNode', { node: item });
|
||||
} else if (
|
||||
new RegExp(/^\/agents\/groups\/[a-zA-Z0-9_\-.]*\/files$/).test(
|
||||
instance.path
|
||||
|
@ -1,300 +1,266 @@
|
||||
<div flex="auto" layout="column" ng-if="configurationTab === 'welcome'">
|
||||
|
||||
<!-- Headline -->
|
||||
<div layout="column" layout-padding>
|
||||
<div ng-show="agent && agent.id !== '000'">
|
||||
<span class="font-size-18"> <i class="fa fa-fw fa-cog" aria-hidden="true"></i> Configuration</span>
|
||||
<span ng-if="isSynchronized" class="wz-agent-status-indicator small teal">SYNCHRONIZED</span>
|
||||
<span ng-if="!isSynchronized" class="wz-agent-status-indicator small red">NOT SYNCHRONIZED</span>
|
||||
</div>
|
||||
<span class="font-size-18" ng-show="!agent || agent.id === '000'">
|
||||
<i class="fa fa-fw fa-cog" aria-hidden="true"></i> Configuration
|
||||
</span>
|
||||
|
||||
<div ng-show="selectedNode" ng-if="adminMode" layout="row" layout-padding style="position: absolute;right: calc(0% + 228px);margin-top: -10px;">
|
||||
<div 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="selectedNode"
|
||||
ng-change="changeNode(selectedNode)" aria-label="Select node">
|
||||
<option ng-repeat="node in nodes" value="{{node.name}}">{{node.name}} ({{node.type}})</option>
|
||||
</select>
|
||||
</div>
|
||||
<div layout="column" layout-align="center" class="wz-padding-top-0 wz-margin-right-15">
|
||||
<button type='button' class='height-40 btn btn-primary'
|
||||
ng-click='editConf()'>Edit {{selectedNode}} configuration
|
||||
</button>
|
||||
<!-- Headline -->
|
||||
<div layout="column" layout-padding>
|
||||
<div ng-show="agent && agent.id !== '000'">
|
||||
<span class="font-size-18"> <i class="fa fa-fw fa-cog" aria-hidden="true"></i> Configuration</span>
|
||||
<span ng-if="isSynchronized" class="wz-agent-status-indicator small teal">SYNCHRONIZED</span>
|
||||
<span ng-if="!isSynchronized" class="wz-agent-status-indicator small red">NOT SYNCHRONIZED</span>
|
||||
</div>
|
||||
<span class="font-size-18" ng-show="!agent || agent.id === '000'">
|
||||
<i class="fa fa-fw fa-cog" aria-hidden="true"></i> Configuration</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End headline -->
|
||||
|
||||
|
||||
<!-- End headline -->
|
||||
|
||||
<!-- Configuration section cards and right sidenav -->
|
||||
<div flex="auto" layout="row">
|
||||
|
||||
<!-- This section has the configuration cards -->
|
||||
<div flex layout="column">
|
||||
|
||||
<!-- Main configurations card -->
|
||||
<md-card class="wz-md-card">
|
||||
<md-card-content>
|
||||
<span class="font-size-16">Main configurations</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<!-- Manager sections -->
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('global-configuration', [{component:'analysis',configuration:'global'},{component:'request',configuration:'remote'},{component:'com',configuration:'logging'}])">Global configuration</h3>
|
||||
<p>Global and remote settings</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('cluster', [{component:'com',configuration:'cluster'}])">Cluster</h3>
|
||||
<p>Master node configuration</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('registration-service', [{component:'auth',configuration:'auth'}])">Registration service</h3>
|
||||
<p>Automatic agent registration service</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<!-- <md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('ruleset')">Ruleset</h3>
|
||||
<p>Current rules, decoders and CDB lists loaded in the cluster</p>
|
||||
</div>
|
||||
</md-list-item> -->
|
||||
<!-- End manager sections -->
|
||||
<!-- Agent sections -->
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="agent && agent.id !== '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('global-configuration', [{component:'com',configuration:'logging'}])">Global configuration</h3>
|
||||
<p>Logging settings that apply to the agent</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="agent && agent.id !== '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('client', [{component:'agent',configuration:'client'}])">Communication</h3>
|
||||
<p>Settings related to the connection with the manager</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="agent && agent.id !== '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('client-buffer', [{component:'agent',configuration:'buffer'}])">Anti-flooding settings</h3>
|
||||
<p>Agent bucket parameters to avoid event flooding</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="agent && agent.id !== '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('alerts',[{component:'agent',configuration:'labels'}])">Labels</h3>
|
||||
<p>User-defined information about the agent included in alerts</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<!-- End agent sections -->
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End main configurations card -->
|
||||
|
||||
<!-- Alerts and output management card -->
|
||||
<md-card class="wz-md-card" ng-if="!agent || agent.id === '000'">
|
||||
<md-card-content>
|
||||
<span class="font-size-16" ng-if="!agent || agent.id === '000'">Alerts and output management</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('alerts',[{component:'analysis',configuration:'alerts'},{component:'analysis',configuration:'labels'},{component:'mail',configuration:'alerts'},{component:'monitor',configuration:'reports'}, {component:'csyslog',configuration:'csyslog'}])">Alerts</h3>
|
||||
<p>Settings related to the alerts and their format</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('integrations',[{component:'integrator',configuration:'integration'}])">Integrations</h3>
|
||||
<p>Slack, VirusTotal and PagerDuty integrations with external APIs</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<!-- <md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('database-output')">Database output</h3>
|
||||
<p>MySQL and PostgreSQL database output configuration</p>
|
||||
</div>
|
||||
</md-list-item> -->
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End alerts and output management card -->
|
||||
|
||||
<!-- Auditing and policy monitoring card -->
|
||||
<md-card class="wz-md-card">
|
||||
<md-card-content>
|
||||
<span class="font-size-16">Auditing and policy monitoring</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('policy-monitoring', [{component:'syscheck',configuration:'rootcheck'}])">Policy monitoring</h3>
|
||||
<p>Configuration to ensure compliance with security policies, standards and hardening guides</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('open-scap')">OpenSCAP</h3>
|
||||
<p>Configuration assessment and automation of compliance monitoring using SCAP checks</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('cis-cat')">CIS-CAT</h3>
|
||||
<p>Configuration assessment using CIS scanner and SCAP checks</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End auditing and policy monitoring card -->
|
||||
|
||||
<!-- System, threats and incident response card -->
|
||||
<md-card class="wz-md-card">
|
||||
<md-card-content>
|
||||
<span class="font-size-16">System threats and incident response</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('vulnerability-detector')">Vulnerabilities</h3>
|
||||
<p>Discover what applications are affected by well-known vulnerabilities</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('osquery')">Osquery</h3>
|
||||
<p>Expose an operating system as a high-performance relational database</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('syscollector')">Inventory data</h3>
|
||||
<p>Gather relevant information about system OS, hardware, networking and packages</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('active-response',[{component:'analysis',configuration:'command'},{component:'analysis',configuration:'active_response'}])">Active response</h3>
|
||||
<p>Active threat addressing by inmmediate response</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="agent && agent.id !== '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('active-response',[{component:'com',configuration:'active-response'}])">Active response</h3>
|
||||
<p>Active threat addressing by inmmediate response</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('command')">Commands</h3>
|
||||
<p>Configuration options of the Command wodle</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End system, threats and incident response card -->
|
||||
|
||||
<!-- Log data analysis card -->
|
||||
<md-card class="wz-md-card">
|
||||
<md-card-content>
|
||||
<span class="font-size-16">Log data analysis</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('log-collection',[{component:'logcollector',configuration:'localfile'},{component:'logcollector',configuration:'socket'}])">Log collection</h3>
|
||||
<p>Log analysis from text files, Windows events or syslog outputs</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('integrity-monitoring',[{component:'syscheck',configuration:'syscheck'}])">Integrity monitoring</h3>
|
||||
<p>Identify changes in content, permissions, ownership, and attributes of files</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('agentless',[{component:'agentless',configuration:'agentless'}])">Agentless</h3>
|
||||
<p>Run integrity checks on devices such as routers, firewalls and switches</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End log data analysis card -->
|
||||
|
||||
<!-- Cloud security monitoring card -->
|
||||
<md-card class="wz-md-card" ng-if="!agent || agent.id === '000'">
|
||||
<md-card-content>
|
||||
<span class="font-size-16">Cloud security monitoring</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('aws-s3')">Amazon S3</h3>
|
||||
<p>Security events related to Amazon AWS services, collected directly via AWS API</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End cloud security monitoring card -->
|
||||
|
||||
<!-- Configuration section cards and right sidenav -->
|
||||
<div flex="auto" layout="row">
|
||||
|
||||
<!-- XML editor for node configuration -->
|
||||
<div flex layout="column" ng-show="editingFile">
|
||||
<div layout="row" class="md-padding">
|
||||
<span ng-click='closeEditingFile()' class='btn btn-info'>Cancel</span>
|
||||
<button ng-disabled='xmlHasErrors' ng-click='saveConfiguration()' class='btn btn-primary pull-right wz-margin-left-8'>
|
||||
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save file</span>
|
||||
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
|
||||
XML format error</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="md-padding md-padding-top-10" ng-if="fetchedXML">
|
||||
<wz-xml-file-editor file-name='ossec.conf' data="fetchedXML" target-name="selectedNode"
|
||||
valid-fn='xmlIsValid(valid)'>
|
||||
</wz-xml-file-editor>
|
||||
</div>
|
||||
<!-- End configuration cards section -->
|
||||
|
||||
<!-- This section is the right sidenav content -->
|
||||
<md-sidenav
|
||||
class="md-sidenav-right"
|
||||
md-is-locked-open="true">
|
||||
<md-list>
|
||||
<md-subheader>More info about this section</md-subheader>
|
||||
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/index.html">Wazuh administration documentation</md-list-item>
|
||||
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/index.html">Wazuh capabilities documentation</md-list-item>
|
||||
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/index.html">Local configuration reference</md-list-item>
|
||||
</md-list>
|
||||
</md-sidenav>
|
||||
<!-- End right sidenav section -->
|
||||
|
||||
</div>
|
||||
|
||||
<!-- This section has the configuration cards -->
|
||||
<div ng-if="!editingFile" flex layout="column">
|
||||
|
||||
<!-- Main configurations card -->
|
||||
<md-card class="wz-md-card">
|
||||
<md-card-content>
|
||||
<span class="font-size-16">Main configurations</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<!-- Manager sections -->
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('global-configuration', [{component:'analysis',configuration:'global'},{component:'request',configuration:'remote'},{component:'com',configuration:'logging'}])">Global configuration</h3>
|
||||
<p>Global and remote settings</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('cluster', [{component:'com',configuration:'cluster'}])">Cluster</h3>
|
||||
<p>Master node configuration</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('registration-service', [{component:'auth',configuration:'auth'}])">Registration service</h3>
|
||||
<p>Automatic agent registration service</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<!-- <md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('ruleset')">Ruleset</h3>
|
||||
<p>Current rules, decoders and CDB lists loaded in the cluster</p>
|
||||
</div>
|
||||
</md-list-item> -->
|
||||
<!-- End manager sections -->
|
||||
<!-- Agent sections -->
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="agent && agent.id !== '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('global-configuration', [{component:'com',configuration:'logging'}])">Global configuration</h3>
|
||||
<p>Logging settings that apply to the agent</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="agent && agent.id !== '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('client', [{component:'agent',configuration:'client'}])">Communication</h3>
|
||||
<p>Settings related to the connection with the manager</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="agent && agent.id !== '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('client-buffer', [{component:'agent',configuration:'buffer'}])">Anti-flooding settings</h3>
|
||||
<p>Agent bucket parameters to avoid event flooding</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="agent && agent.id !== '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('alerts',[{component:'agent',configuration:'labels'}])">Labels</h3>
|
||||
<p>User-defined information about the agent included in alerts</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<!-- End agent sections -->
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End main configurations card -->
|
||||
|
||||
<!-- Alerts and output management card -->
|
||||
<md-card class="wz-md-card" ng-if="!agent || agent.id === '000'">
|
||||
<md-card-content>
|
||||
<span class="font-size-16" ng-if="!agent || agent.id === '000'">Alerts and output management</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('alerts',[{component:'analysis',configuration:'alerts'},{component:'analysis',configuration:'labels'},{component:'mail',configuration:'alerts'},{component:'monitor',configuration:'reports'}, {component:'csyslog',configuration:'csyslog'}])">Alerts</h3>
|
||||
<p>Settings related to the alerts and their format</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('integrations',[{component:'integrator',configuration:'integration'}])">Integrations</h3>
|
||||
<p>Slack, VirusTotal and PagerDuty integrations with external APIs</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<!-- <md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('database-output')">Database output</h3>
|
||||
<p>MySQL and PostgreSQL database output configuration</p>
|
||||
</div>
|
||||
</md-list-item> -->
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End alerts and output management card -->
|
||||
|
||||
<!-- Auditing and policy monitoring card -->
|
||||
<md-card class="wz-md-card">
|
||||
<md-card-content>
|
||||
<span class="font-size-16">Auditing and policy monitoring</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('policy-monitoring', [{component:'syscheck',configuration:'rootcheck'}])">Policy monitoring</h3>
|
||||
<p>Configuration to ensure compliance with security policies, standards and hardening guides</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('open-scap')">OpenSCAP</h3>
|
||||
<p>Configuration assessment and automation of compliance monitoring using SCAP checks</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('cis-cat')">CIS-CAT</h3>
|
||||
<p>Configuration assessment using CIS scanner and SCAP checks</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End auditing and policy monitoring card -->
|
||||
|
||||
<!-- System, threats and incident response card -->
|
||||
<md-card class="wz-md-card">
|
||||
<md-card-content>
|
||||
<span class="font-size-16">System threats and incident response</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('vulnerability-detector')">Vulnerabilities</h3>
|
||||
<p>Discover what applications are affected by well-known vulnerabilities</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('osquery')">Osquery</h3>
|
||||
<p>Expose an operating system as a high-performance relational database</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('syscollector')">Inventory data</h3>
|
||||
<p>Gather relevant information about system OS, hardware, networking and packages</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('active-response',[{component:'analysis',configuration:'command'},{component:'analysis',configuration:'active_response'}])">Active response</h3>
|
||||
<p>Active threat addressing by inmmediate response</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="agent && agent.id !== '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('active-response',[{component:'com',configuration:'active-response'}])">Active response</h3>
|
||||
<p>Active threat addressing by inmmediate response</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('command')">Commands</h3>
|
||||
<p>Configuration options of the Command wodle</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End system, threats and incident response card -->
|
||||
|
||||
<!-- Log data analysis card -->
|
||||
<md-card class="wz-md-card">
|
||||
<md-card-content>
|
||||
<span class="font-size-16">Log data analysis</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('log-collection',[{component:'logcollector',configuration:'localfile'},{component:'logcollector',configuration:'socket'}])">Log collection</h3>
|
||||
<p>Log analysis from text files, Windows events or syslog outputs</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('integrity-monitoring',[{component:'syscheck',configuration:'syscheck'}])">Integrity monitoring</h3>
|
||||
<p>Identify changes in content, permissions, ownership, and attributes of files</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line" ng-if="!agent || agent.id === '000'">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchConfigTab('agentless',[{component:'agentless',configuration:'agentless'}])">Agentless</h3>
|
||||
<p>Run integrity checks on devices such as routers, firewalls and switches</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End log data analysis card -->
|
||||
|
||||
<!-- Cloud security monitoring card -->
|
||||
<md-card class="wz-md-card" ng-if="!agent || agent.id === '000'">
|
||||
<md-card-content>
|
||||
<span class="font-size-16">Cloud security monitoring</span>
|
||||
<md-divider class="wz-margin-top-10"></md-divider>
|
||||
|
||||
<md-list layout="row" layout-wrap>
|
||||
<md-list-item flex="100" flex-gt-md="50" flex-gt-lg="33" class="md-2-line">
|
||||
<div class="md-list-item-text">
|
||||
<h3 class="wz-text-link" ng-click="switchWodle('aws-s3')">Amazon S3</h3>
|
||||
<p>Security events related to Amazon AWS services, collected directly via AWS API</p>
|
||||
</div>
|
||||
</md-list-item>
|
||||
</md-list>
|
||||
|
||||
</md-card-content>
|
||||
</md-card>
|
||||
<!-- End cloud security monitoring card -->
|
||||
|
||||
</div>
|
||||
<!-- End configuration cards section -->
|
||||
|
||||
<!-- This section is the right sidenav content -->
|
||||
<md-sidenav
|
||||
class="md-sidenav-right"
|
||||
md-is-locked-open="true">
|
||||
<md-list>
|
||||
<md-subheader>More info about this section</md-subheader>
|
||||
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/index.html">Wazuh administration documentation</md-list-item>
|
||||
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/index.html">Wazuh capabilities documentation</md-list-item>
|
||||
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/index.html">Local configuration reference</md-list-item>
|
||||
</md-list>
|
||||
</md-sidenav>
|
||||
<!-- End right sidenav section -->
|
||||
|
||||
</div>
|
||||
<!-- End configuration section cards and right sidenav -->
|
||||
|
||||
</div>
|
||||
<!-- End configuration section cards and right sidenav -->
|
||||
|
||||
</div>
|
80
public/templates/management/edition.html
Normal file
80
public/templates/management/edition.html
Normal file
@ -0,0 +1,80 @@
|
||||
<div flex="auto" layout="column" ng-controller="editionController" ng-if="mctrl.tab === 'edition'">
|
||||
|
||||
<!-- Loading ring -->
|
||||
<div class='uil-ring-css' ng-show="load">
|
||||
<div></div>
|
||||
</div>
|
||||
|
||||
<!-- Headline -->
|
||||
<div ng-show="!load" layout="column" layout-padding>
|
||||
<div layout="row">
|
||||
<span class="font-size-18">
|
||||
<i class="fa fa-fw fa-edit" aria-hidden="true"></i> Node configuration</span>
|
||||
</div>
|
||||
<div layout="row">
|
||||
<span class="md-subheader">Edit master/worker node configuration</span>
|
||||
</div>
|
||||
|
||||
<div ng-show="selectedNode" ng-if="adminMode" layout="row" layout-padding style="position: absolute;right: calc(0% + 228px);margin-top: -10px;">
|
||||
<div 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="selectedNode"
|
||||
ng-change="changeNode(selectedNode)" aria-label="Select node">
|
||||
<option ng-repeat="node in nodes" value="{{node.name}}">{{node.name}} ({{node.type}})</option>
|
||||
</select>
|
||||
</div>
|
||||
<div layout="column" layout-align="center" class="wz-padding-top-0 wz-margin-right-15">
|
||||
<button type='button' class='height-40 btn btn-primary'
|
||||
ng-click='editConf()'>Edit {{selectedNode}} configuration
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End headline -->
|
||||
|
||||
|
||||
|
||||
<!-- Configuration section cards and right sidenav -->
|
||||
<div flex="auto" class="wz-padding-top-50" layout="row">
|
||||
|
||||
<!-- XML editor for node configuration -->
|
||||
<div flex layout="column" ng-show="editingFile">
|
||||
<div layout="row" class="md-padding">
|
||||
<span ng-click='closeEditingFile()' class='btn btn-info'>Cancel</span>
|
||||
<button ng-disabled='xmlHasErrors' ng-click='saveConfiguration()' class='btn btn-primary pull-right wz-margin-left-8'>
|
||||
<span ng-show='!xmlHasErrors'><i aria-hidden='true' class='fa fa-fw fa-save'></i>Save file</span>
|
||||
<span ng-show='xmlHasErrors' class='btn-danger'><i aria-hidden='true' class='fa fa-fw fa-exclamation-triangle'></i>
|
||||
XML format error</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="md-padding md-padding-top-10" ng-if="fetchedXML">
|
||||
<wz-xml-file-editor file-name='ossec.conf' data="fetchedXML" target-name="selectedNode" valid-fn='xmlIsValid(valid)'>
|
||||
</wz-xml-file-editor>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div flex layout="column" class="md-padding" ng-show="!editingFile">
|
||||
<wz-table flex extra-limit="true" path="'/cluster/nodes'" keys="['name','type','ip','version']" allow-click="true"
|
||||
row-sizes="[14,12,10]">
|
||||
</wz-table>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- This section is the right sidenav content -->
|
||||
<md-sidenav class="md-sidenav-right" md-is-locked-open="true">
|
||||
<md-list>
|
||||
<md-subheader>More info about this section</md-subheader>
|
||||
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/manager/index.html">Wazuh
|
||||
administration documentation</md-list-item>
|
||||
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/capabilities/index.html">Wazuh
|
||||
capabilities documentation</md-list-item>
|
||||
<md-list-item target="_blank" class="wz-text-link" ng-href="https://documentation.wazuh.com/current/user-manual/reference/ossec-conf/index.html">Local
|
||||
configuration reference</md-list-item>
|
||||
</md-list>
|
||||
</md-sidenav>
|
||||
<!-- End right sidenav section -->
|
||||
|
||||
</div>
|
||||
<!-- End configuration section cards and right sidenav -->
|
||||
|
||||
</div>
|
@ -6,5 +6,6 @@ include ./monitoring/monitoring.pug
|
||||
include ./logs.html
|
||||
include ./reporting.html
|
||||
include ./groups/groups.html
|
||||
include ./edition.html
|
||||
include ./ruleset/ruleset.pug
|
||||
include ../footer.foot
|
||||
|
@ -30,6 +30,11 @@
|
||||
title="'Configuration'" switch-tab="mctrl.switchTab('configuration')" current-tab="'configuration'"
|
||||
description="'Check your Wazuh cluster configuration.'"
|
||||
></wz-welcome-card>
|
||||
<wz-welcome-card
|
||||
class="euiFlexItem" logo="'icons/app_devtools.svg'"
|
||||
title="'Edition'" switch-tab="mctrl.switchTab('edition')" current-tab="'edition'"
|
||||
description="'Edit master/worker node configuration.'"
|
||||
></wz-welcome-card>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -57,5 +57,6 @@ export const TabNames = {
|
||||
'aws-s3': 'Amazon S3',
|
||||
command: 'Wazuh commands',
|
||||
client: 'Client configuration',
|
||||
edition: 'Edit node configuration',
|
||||
'client-buffer': 'Anti-flooding settings'
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user